From 877a7b9ceaca158b10d3df1deef94e5d919c2781 Mon Sep 17 00:00:00 2001 From: David Rose Date: Tue, 4 May 2004 21:04:20 +0000 Subject: [PATCH] add dxf2egg --- pandatool/src/dxf/Sources.pp | 7 +-- pandatool/src/dxf/dxfFile.cxx | 2 +- .../src/dxf/{dxfVertexMap.h => dxfLayer.cxx} | 33 +++++++------ pandatool/src/dxf/dxfLayer.h | 16 ++----- pandatool/src/dxf/dxfVertexMap.cxx | 48 ------------------- pandatool/src/dxfprogs/Sources.pp | 15 ++++++ pandatool/src/ptloader/Sources.pp | 2 +- pandatool/src/ptloader/config_ptloader.cxx | 8 +++- 8 files changed, 47 insertions(+), 84 deletions(-) rename pandatool/src/dxf/{dxfVertexMap.h => dxfLayer.cxx} (59%) delete mode 100644 pandatool/src/dxf/dxfVertexMap.cxx diff --git a/pandatool/src/dxf/Sources.pp b/pandatool/src/dxf/Sources.pp index 66434b28ad..d666cc5db6 100644 --- a/pandatool/src/dxf/Sources.pp +++ b/pandatool/src/dxf/Sources.pp @@ -8,10 +8,11 @@ #define UNIX_SYS_LIBS m #define SOURCES \ - dxfFile.cxx dxfFile.h dxfLayer.h dxfLayerMap.cxx dxfLayerMap.h \ - dxfVertex.cxx dxfVertex.h dxfVertexMap.cxx dxfVertexMap.h + dxfFile.cxx dxfFile.h dxfLayer.h dxfLayer.cxx \ + dxfLayerMap.cxx dxfLayerMap.h \ + dxfVertex.cxx dxfVertex.h #define INSTALL_HEADERS \ - dxfFile.h dxfLayer.h dxfLayerMap.h dxfVertex.h dxfVertexMap.h + dxfFile.h dxfLayer.h dxfLayerMap.h dxfVertex.h #end ss_lib_target diff --git a/pandatool/src/dxf/dxfFile.cxx b/pandatool/src/dxf/dxfFile.cxx index ee364f05e5..57959dc53a 100644 --- a/pandatool/src/dxf/dxfFile.cxx +++ b/pandatool/src/dxf/dxfFile.cxx @@ -656,7 +656,7 @@ change_section(Section new_section) { //////////////////////////////////////////////////////////////////// void DXFFile:: change_layer(const string &layer_name) { - if (_layer == NULL || _layer->_name != layer_name) { + if (_layer == NULL || _layer->get_name() != layer_name) { _layer = _layers.get_layer(layer_name, this); } } diff --git a/pandatool/src/dxf/dxfVertexMap.h b/pandatool/src/dxf/dxfLayer.cxx similarity index 59% rename from pandatool/src/dxf/dxfVertexMap.h rename to pandatool/src/dxf/dxfLayer.cxx index d956084188..2874eadef1 100644 --- a/pandatool/src/dxf/dxfVertexMap.h +++ b/pandatool/src/dxf/dxfLayer.cxx @@ -1,4 +1,4 @@ -// Filename: dxfVertexMap.h +// Filename: dxfLayer.cxx // Created by: drose (04May04) // //////////////////////////////////////////////////////////////////// @@ -16,24 +16,23 @@ // //////////////////////////////////////////////////////////////////// -#ifndef DXFVERTEXMAP_H -#define DXFVERTEXMAP_H +#include "dxfLayer.h" -#include "pandatoolbase.h" - -#include "dxfVertex.h" -#include "pmap.h" //////////////////////////////////////////////////////////////////// -// Class : DXFVertexMap -// Description : This is a map of DXFVertex to an integer index -// number. It is intended to be used to collapse -// together identical vertices, since the DXF file has -// no inherent notion of shared vertices. +// Function: DXFLayer::Constructor +// Access: Public +// Description: //////////////////////////////////////////////////////////////////// -class DXFVertexMap : public pmap { -public: - int get_vertex_index(const DXFVertex &vert); -}; +DXFLayer:: +DXFLayer(const string &name) : Namable(name) { +} -#endif +//////////////////////////////////////////////////////////////////// +// Function: DXFLayer::Destructor +// Access: Public, Virtual +// Description: +//////////////////////////////////////////////////////////////////// +DXFLayer:: +~DXFLayer() { +} diff --git a/pandatool/src/dxf/dxfLayer.h b/pandatool/src/dxf/dxfLayer.h index 3f5912bd42..25ed3456a9 100644 --- a/pandatool/src/dxf/dxfLayer.h +++ b/pandatool/src/dxf/dxfLayer.h @@ -20,7 +20,7 @@ #define DXFLAYER_H #include "pandatoolbase.h" -#include "dxfVertexMap.h" +#include "namable.h" //////////////////////////////////////////////////////////////////// // Class : DXFLayer @@ -29,21 +29,13 @@ // the file, or it may be implicitly defined by an // entity's having referenced it. // -// The DXFLayer class provides a facility for collapsing -// identical vertices, via the _vmap member; however, -// this is not automatic and must be done explicitly by -// user code. -// // User code may derive from DXFLayer to associate // private data with each layer, if desired. //////////////////////////////////////////////////////////////////// -class DXFLayer { +class DXFLayer : public Namable { public: - DXFLayer(const string &name) : _name(name) { } - virtual ~DXFLayer() { } - - string _name; - DXFVertexMap _vmap; + DXFLayer(const string &name); + virtual ~DXFLayer(); }; #endif diff --git a/pandatool/src/dxf/dxfVertexMap.cxx b/pandatool/src/dxf/dxfVertexMap.cxx deleted file mode 100644 index 1570e0c2cc..0000000000 --- a/pandatool/src/dxf/dxfVertexMap.cxx +++ /dev/null @@ -1,48 +0,0 @@ -// Filename: dxfVertexMap.cxx -// Created by: drose (04May04) -// -//////////////////////////////////////////////////////////////////// -// -// PANDA 3D SOFTWARE -// Copyright (c) 2001 - 2004, Disney Enterprises, Inc. All rights reserved -// -// All use of this software is subject to the terms of the Panda 3d -// Software license. You should have received a copy of this license -// along with this source code; you will also find a current copy of -// the license at http://etc.cmu.edu/panda3d/docs/license/ . -// -// To contact the maintainers of this program write to -// panda3d-general@lists.sourceforge.net . -// -//////////////////////////////////////////////////////////////////// - -#include "dxfVertexMap.h" - -//////////////////////////////////////////////////////////////////// -// Function: DXFVertexMap::get_vertex_index -// Access: Public -// Description: Looks up the vertex in the map, and returns an index -// unique to that vertex. If the vertex has been used -// before, returns the index used previously; otherwise, -// assigns a new, unique index to the vertex and returns -// that. -//////////////////////////////////////////////////////////////////// -int DXFVertexMap:: -get_vertex_index(const DXFVertex &vert) { - iterator vmi; - vmi = find(vert); - if (vmi != end()) { - // The vertex was already here. - return (*vmi).second; - } - - // Nope, need a new vertex. - int index = size(); - (*this)[vert] = index; - - // That should have added one to the map. - nassertr((int)size() == index+1, index); - - return index; -} - diff --git a/pandatool/src/dxfprogs/Sources.pp b/pandatool/src/dxfprogs/Sources.pp index bdbd472322..38274c59f6 100644 --- a/pandatool/src/dxfprogs/Sources.pp +++ b/pandatool/src/dxfprogs/Sources.pp @@ -13,3 +13,18 @@ dxfPoints.cxx dxfPoints.h #end bin_target + +#begin bin_target + #define TARGET dxf2egg + #define LOCAL_LIBS dxf dxfegg eggbase progbase + + #define OTHER_LIBS \ + egg:c pandaegg:m \ + linmath:c pnmimagetypes:c pnmimage:c putil:c mathutil:c event:c panda:m \ + express:c pandaexpress:m \ + dtoolutil:c dtoolbase:c dconfig:c dtoolconfig:m dtool:m pystub + + #define SOURCES \ + dxfToEgg.cxx dxfToEgg.h + +#end bin_target diff --git a/pandatool/src/ptloader/Sources.pp b/pandatool/src/ptloader/Sources.pp index 04bf713a3d..40e8e8ad60 100644 --- a/pandatool/src/ptloader/Sources.pp +++ b/pandatool/src/ptloader/Sources.pp @@ -2,7 +2,7 @@ #define TARGET ptloader #define BUILDING_DLL BUILDING_PTLOADER #define LOCAL_LIBS \ - fltegg flt lwoegg lwo converter pandatoolbase + fltegg flt lwoegg lwo dxfegg dxf converter pandatoolbase #define OTHER_LIBS \ egg2pg:c builder:c egg:c pandaegg:m \ mathutil:c linmath:c putil:c \ diff --git a/pandatool/src/ptloader/config_ptloader.cxx b/pandatool/src/ptloader/config_ptloader.cxx index 0a33ab7447..cc037d684c 100644 --- a/pandatool/src/ptloader/config_ptloader.cxx +++ b/pandatool/src/ptloader/config_ptloader.cxx @@ -19,10 +19,11 @@ #include "config_ptloader.h" #include "loaderFileTypePandatool.h" -#include "config_lwo.h" -#include "fltToEggConverter.h" #include "config_flt.h" +#include "fltToEggConverter.h" +#include "config_lwo.h" #include "lwoToEggConverter.h" +#include "dxfToEggConverter.h" /* #ifdef HAVE_DX @@ -81,6 +82,9 @@ init_libptloader() { LwoToEggConverter *lwo = new LwoToEggConverter; reg->register_type(new LoaderFileTypePandatool(lwo)); + DXFToEggConverter *dxf = new DXFToEggConverter; + reg->register_type(new LoaderFileTypePandatool(dxf)); + /* #ifdef HAVE_DX init_libxfile();