Commit Graph

17 Commits

Author SHA1 Message Date
ganovelli c40a6c3d97 [ 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:42:52 +00:00
Federico Ponchio e888ef1560 removed some useless consts 2009-06-03 12:23:20 +00:00
ganovelli 49b4970452 [SIMPLEXplus promotion]
This modification removes the old way to define simplexes (already deprecated and unsupported).
In the following SIMPLEX = [vertex|edge|face|tetrahedron]

All the stuff that was in vcg/simplex/SIMPLEXplus/ has now been promoted to vcg/simplex/

Details:
- the folder vcg/simplex/SIMPLEX/with has been removed
- the file vcg/simplex/SIMPLEX/base.h has been renamed into  vcg/simplex/SIMPLEX/base_old.h 
- the content of vcg/simplex/SIMPLEXplus/ has been moved into vcg/simplex/SIMPLEX/
- the folder vcg/simplex/SIMPLEXplus/ has been removed

Actions the update the  code using vcglib:
replace <vcg/simplex/SIMPLEXplus/*> with  <vcg/simplex/SIMPLEX/*> in every include
for MESHLAB users: already done along with this commit
2008-12-19 10:32:32 +00:00
ganovelli ca3f973398 added unsupported to deprecated in the warning 2008-12-12 18:11:42 +00:00
ganovelli 5d1bd20c33 added warning for deprecation of this way to define the simplex 2008-09-30 10:38:04 +00:00
mtarini 22fd220c6f Texture coord name change! "TCoord" and "Texture" are BAD. "TexCoord" is GOOD. 2007-03-12 15:37:19 +00:00
Paolo Cignoni a3ba09a069 Added missing typename for interp.parameters 2006-10-07 10:02:16 +00:00
Federico Ponchio 7f2aac509e Fixed some UberZ fuynctions and non defined _flags 2005-11-30 14:05:04 +00:00
Paolo Cignoni 4be15d81cd Added ordered constructor that build a edge with unique ordering
among vertices (useful for edge-collapse simplification)
2005-10-14 12:34:55 +00:00
Paolo Cignoni 957255b9a8 Major rewriting of the whole class edge. Removed default flags and nonsense attibutes. Given consistent naming to defines. 2005-10-01 09:22:51 +00:00
ganovelli 8ca165bb98 template parametere Scalar removed 2005-07-15 15:45:51 +00:00
Federico Ponchio 2328e5b1e4 *** empty log message *** 2005-04-14 11:35:09 +00:00
Federico Ponchio 8ca8327f5d inline Set(...) -> inline void Set(...) 2004-10-25 16:25:12 +00:00
ganovelli 4f9a67327e added: constructor,Set and some minor changes. 2004-10-25 08:21:17 +00:00
ganovelli b8463d106f name of adhacency function updated 2004-05-10 14:41:45 +00:00
ganovelli 7ca3eb884f created 2004-05-10 14:02:29 +00:00
ganovelli 0fe71a6e69 created 2004-04-26 19:04:23 +00:00