Commit Graph

36 Commits

Author SHA1 Message Date
ganovelli 1428a1cc3c added a derivation chain to support the modification to the trimesh definition (below)
[ Changes in definition of  TriMesh: PART II ]

Note: No changes to existing code need be the done, this mod
should be fully backward compatible

Old way to define a TriMesh ==============
struct MyMesh: public vcg::tri::TriMesh< vector<MyVertex> , vector <MyFace> >{};

new  ways to define a TriMesh ==============

struct MyMesh: public vcg::tri::TriMesh< CONT1 >{};
struct MyMesh: public vcg::tri::TriMesh< CONT1 , CONT2>{};
struct MyMesh: public vcg::tri::TriMesh< CONT1 , CONT2, CONT3>{};

where CONT[i] can be vector< [MyVertex | MyEdge | MyFace ] > 
(the order is unimportant)
2010-03-19 17:17:06 +00:00
ganovelli 01bb1ff921 [ Changes in definition of TriMesh: PART I ]
Note for the developers: the change to make to existing projects is very little 
but strictly necessary to compile. This change IS NOT backward compliant.


==== OLD ==== way to define a TriMesh:

// forward declarations
class MyVertex;
class MyEdge;
class MyFace;

class MyVertex: public VertexSimp2 < MyVertex, MyEdge, MyFace, vertex::Coord3f,...other components>{};
class MyFace: public FaceSimp2 < MyVertex, MyEdge, MyFace, face::VertexRef,...other components>{};
class MyMesh: public TriMesh<vector<MyVertex>,vector<MyFace> >{};


==== NEW ==== way to define a TriMesh:
// forward declarations
class MyVertex;
class MyEdge;
class MyFace;

// declaration of which types is used as VertexType, which type is used as FaceType and so on...
class MyUsedTypes: public vcg::UsedType < vcg::Use<MyVertex>::AsVertexType,
                                          vcg::Use<MyFace>::AsFaceType>{};

class MyVertex: public Vertex < MyUsedTypes, vertex::Coord3f,...other components>{};
class MyFace: public Face < MyUsedTypes, face::VertexRef,...other components>{};
class MyMesh: public TriMesh<vector<MyVertex>,vector<MyFace> >{};

                                 
===== classes introduced          
[vcg::UsedType] : it is a class containing all the types that must be passed to the definition of Vertex, Face, Edge... This
class replaces the list of typenames to pass as first templates and the need to specify the maximal simplicial. So 

<MyVertex, MyEdge, MyFace  becomes <MyUsedTypes<

and 

VertexSimp2 becomes Vertex

[vcg::Use] : an auxiliary class to give a simple way to specify the role of a type

Note 2: the order of templates parameters to vcg::UsedTypes is unimportant, e.g:

class MyUsedTypes: public vcg::UsedType <vcg::Use<MyVertex>::AsVertexType,
                                         vcg::Use<MyEdge>::AsEdgeType,
                                         vcg::Use<MyFace>::AsFaceType>{};

is the same as:
class MyUsedTypes: public vcg::UsedType <vcg::Use<MyFace>::AsFaceType,
                                         vcg::Use<MyEdge>::AsEdgeType,
                                         vcg::Use<MyVertex>::AsVertexType>{};

Note 3: you only need to specify the type  you use. If you do not have edges you do not need 
to include vcg::Use<MyEdge>::AsEdgeType in the template list of UsedTypes.
==== the Part II will be a tiny change to the class TriMesh it self.
2010-03-15 10:43:27 +00:00
ganovelli fa287ce0ab added support for dump of attributes (see wrap/io_trimesh/[import | export]_VMI.h ) 2009-07-29 15:45:56 +00:00
Marco Di Benedetto caa076ea1c fixed comment warning. 2009-06-28 03:13:56 +00:00
Marco Di Benedetto a437f80563 fixed comment warning. 2009-06-28 03:13:39 +00:00
Federico Ponchio e888ef1560 removed some useless consts 2009-06-03 12:23:20 +00:00
Paolo Cignoni 3447c82e88 Removed a few harmless warnings 2009-03-30 20:58:18 +00:00
Paolo Cignoni 928c8dd997 Removed harmless warnings 2008-11-28 14:55:45 +00:00
ganovelli b6f21780dc added workaround for std::vector<bool> bitwise implementation.
The workaround is a rough reimplementation of std::vector. 
If you can, use "char" as temporary data and cast it when you need.
2008-11-12 16:10:04 +00:00
Paolo Cignoni fc98a34972 Add an optional per vertex radius property in occ, ocf, and IO mask.
Extend derivation_chain from 10 to 12
2008-10-14 14:58:09 +00:00
Paolo Cignoni d83de7eef4 Small modifications to compile with gcc >4.3 (thanks to Carlo Casta!) 2008-07-05 23:35:06 +00:00
Paolo Cignoni 3af17fab9a added initializer and passed the init value as const reference 2008-07-04 00:31:54 +00:00
ganovelli d70efb4573 added. Derivation_chain.h contains the inheritance mechanism used to define the (vertex and face) component 2008-06-23 16:30:17 +00:00
ganovelli 006b7df1b8 added type Attribute 2008-06-23 14:19:56 +00:00
ganovelli 42430a1318 added virtual destructor 2008-05-16 10:09:26 +00:00
ganovelli 69a35e8912 Enable() and Disable() removed. The memory is allocated by the contructor 2008-05-16 08:48:49 +00:00
ganovelli bd7f2980c5 Start() Stop() removed. Allocation on creation, disallocaiton on distruction 2008-05-15 16:35:17 +00:00
ganovelli 84adadf680 adding of Curvature, compilation with GCC 2008-03-17 11:25:27 +00:00
mtarini 351d7e3e2f overloaded operator "[]" (once more) to make it possible to index the temp. structure with an iterator 2007-02-02 00:01:54 +00:00
Paolo Cignoni ace923ea0f Many small syntax changes for mac compiling 2007-01-18 01:31:12 +00:00
ganovelli be32d9ab13 add const to IsEnabledAttribute 2006-12-04 11:11:07 +00:00
ganovelli 5765847abe versione compliant vs2005 2006-12-03 18:01:01 +00:00
ganovelli 9597853459 aggiunto qualche const sui parametri 2006-06-08 20:28:57 +00:00
ganovelli 000874da30 Corretto IsEnabledAttribute 2006-06-08 20:28:38 +00:00
ganovelli 351bebdf50 *** empty log message *** 2005-10-15 16:22:22 +00:00
ganovelli 4f6abd65d7 Working release (compilata solo su MSVC), vector_occ è migrato da component_opt 2005-10-15 16:21:49 +00:00
Paolo Cignoni 44eb40324f small gcc-related compiling issues (typenames,ending cr, initialization order) 2005-07-11 13:16:34 +00:00
ganovelli b8ef9d77a9 some comment 2005-07-07 13:33:52 +00:00
ganovelli 21bac43cd8 aggiornamento di alcuni path 2005-07-06 15:28:11 +00:00
ganovelli f2fde4de52 added one more [], now it is polymorphic, added typenames 2004-12-11 15:37:47 +00:00
ganovelli 13a9005367 Aggiunto typename
Eliminata bug di ricorsione nell'istanzazione dei template
2004-04-05 18:20:50 +00:00
ganovelli a1a41a9718 Aggiunto typename 2004-04-05 18:20:08 +00:00
ganovelli ad6d5c2bed Aggiunto typename 2004-04-05 13:53:37 +00:00
ganovelli c3dc8c46e4 First Working Release (with this comment) 2004-03-31 22:36:44 +00:00
ganovelli c121ea989e one bug corrected and other minor changes 2004-03-31 22:33:38 +00:00
ganovelli 48d93d6339 Data structure to handle temporary attributes. First version 2004-03-31 12:40:42 +00:00