Commit Graph

68 Commits

Author SHA1 Message Date
Paolo Cignoni d784bebe07 Added guards to avoid useless (and sometime dangerous) inclusion of internal file of the vcglib 2012-10-25 21:29:10 +00:00
Paolo Cignoni cfda5a3eca Removed all the UberXXX members from the various components. No more needed since many years. Still there just because we are quite lazy... 2012-10-25 13:07:25 +00:00
Paolo Cignoni 2577210a54 **** SIGNIFICANT CHANGES *****
- Cleaned up include order: Now you only need to include <vcg/complex/complex.h> (no more vertex/base.h etc) 
- Added official VN() EN() FN() const members for knowing number of vertexes etc...
- Added exceptions (at last!)
    Now instead of:
       assert(HasPerVertexNormal(m)) 
    you should write:
      if(!HasPerFaceNormal(m)) throw vcg::MissingComponentException();
2012-10-04 11:10:25 +00:00
Paolo Cignoni 45b0deb7eb Important Change: ** LastBitFlag ** now is named ** FirstUnusedBitFlag **
Corrected the name of the function allocating a user bit among the flags of the simplexes. 
Changed in ALL the simplexes (vertex, edge, face, etc) and updating functions. 
Note that the LastBitFlag should never be used by common users...
2012-07-18 09:37:32 +00:00
Paolo Cignoni ea701b39b3 Restructured Face component in order to follow the unique emptycore approach that avoid an endless derivation chain in the type definition 2012-04-04 10:04:46 +00:00
ganovelli bbcfbfabc2 added CurvatureDir to Face 2012-03-28 12:39:22 +00:00
Nico Pietroni 4f166fbd95 added Crease Flag access functions 2012-03-16 13:49:04 +00:00
ganovelli 585f0462e8 ImportLocal to ImportData. Adjacencies are no more handle by ImportData, but
by speficic functions in append.h (ImportPerxxxAdj(..))
2010-06-16 16:24:26 +00:00
ganovelli de851eb29e inclusion of alltypes.h 2010-05-19 17:16:58 +00:00
ganovelli 21dd8aa179 Simplified reflection typedefs:
added type traits to support the mod 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:19:51 +00:00
Paolo Cignoni cf872a327c Doh! Forgot a const in the getbbox of Face Base 2010-03-18 10:28:10 +00:00
Paolo Cignoni 63e21f15cb Disambiguated the origin of the ScalarType and CoordType in the simplex class. Now it derives from the type specified by the vertexRef component for the faces and from the Coord component for the vertexes. To be sure the ScalarType and CoordTypes are initialized to weird point3<bool> and char just to detect easisly when the wrong types shallow... 2010-03-18 10:02:32 +00:00
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
Paolo Cignoni 302a7725fa removed harmless warnings 2009-11-17 23:34:46 +00:00
Paolo Cignoni 69004410e3 Corrected a wrong function to clear border face flag (and added BORDER012 to the enums of the flags) 2009-06-04 08:15:59 +00:00
Federico Ponchio e888ef1560 removed some useless consts 2009-06-03 12:23:20 +00:00
Paolo Cignoni b96d693960 bool ClearAllF() -> void ClearAllF() (no reason it is a bool returning function) 2009-05-26 22:35:57 +00:00
mtarini ac017fffb6 added few shortcuts to handle faux flags together: IsAnyF, ClearAllF (and a bit-mask FAUX012). 2009-05-26 17:57:24 +00:00
Paolo Cignoni 291c2790af Removed harmless warnings 2009-05-22 07:54:42 +00:00
mtarini 77f5129ac9 Aggiunto i flags Faux che identificano gli edge dentro una faccia poligonale. 2009-04-20 22:49:33 +00:00
ganovelli 698f6cbd7e [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:30:51 +00:00
ganovelli 76eefc7fb8 added unsupported to deprecated in the warning 2008-12-12 18:10:36 +00:00
ganovelli b5bca977a7 added pragma message to deprecate this way to define the simplex 2008-09-28 14:30:09 +00:00
Paolo Cignoni d3debc41e4 Changed the SetFF IsFF, ClearFF flag functions to the new names SetF IsF, ClearF 2008-06-30 09:58:43 +00:00
ganovelli c2e2b2cd0a changes to comply "plus" types 2007-05-04 16:44:06 +00:00
mtarini 22fd220c6f Texture coord name change! "TCoord" and "Texture" are BAD. "TexCoord" is GOOD. 2007-03-12 15:37:19 +00:00
ganovelli 142880a279 added QualityType to comply faceplus type 2007-02-20 14:07:53 +00:00
Paolo Cignoni bcc7bb0c83 Added #ifdefs to guarantee that ComputeNormal would be defined only once 2007-01-13 00:25:36 +00:00
Paolo Cignoni d72aabbe64 Rewrote the template of ComputeNormal functions to a more readable form. 2007-01-11 10:13:11 +00:00
Paolo Cignoni ec2e478c4a changes for compilation on linux. Not sure about using either SphereOfTriangle or SphereOfTetra, please check. 2006-07-12 12:14:31 +00:00
ganovelli 67d370e4f4 added SmallestEnclosingSphere 2006-07-06 12:45:08 +00:00
Paolo Cignoni 92c21e838d Very Important Change: Area->DoubleArea (and no more Area function) 2006-01-22 10:00:56 +00:00
Massimiliano Corsini c334cebb47 Add some user bit 2005-12-16 11:42:23 +00:00
Paolo Cignoni 2587a22c49 Added HasFlags 2005-12-01 23:54:29 +00:00
Nico Pietroni 7629e40b53 added cFFi function 2005-11-23 14:40:09 +00:00
Paolo Cignoni dbc5a559c4 Moved ComputeNormal and ComputeNormalizedNormal out of the face class (no more a member function!) 2005-11-22 15:47:35 +00:00
Paolo Cignoni fab34558d7 Added dummy static member for avoiding annoying warning in empty functions... 2005-11-12 18:39:54 +00:00
Paolo Cignoni 9df077d22f Added intialization of _flags to zero in the default constructor of face 2005-11-01 18:16:36 +00:00
Paolo Cignoni ff83bb3a24 Added cFFp and cVFp const member functions 2005-10-13 09:25:43 +00:00
Marco Di Benedetto 3a76ce3a01 Added const qualifier in GetBBox method. 2005-09-28 19:32:09 +00:00
Paolo Cignoni d481f58234 Added a named typedef for the per wedge TexCoordinate 2005-06-17 00:43:34 +00:00
Paolo Cignoni eda550ba49 minor changes to comply gcc compiler 2005-03-18 16:35:53 +00:00
ganovelli eed72fadc4 _ffi was a 4 for positions vector (only 3 used) 2005-03-11 14:14:14 +00:00
Nico Pietroni 1ecdcebd59 added HasEdgePlane function 2005-01-28 17:53:13 +00:00
Paolo Cignoni 5bd4d8b2b1 Better Doxygen documentation 2004-10-28 00:56:44 +00:00
ganovelli 124e8402ba IsBOrder (typecast on return type) 2004-10-25 08:22:40 +00:00
Paolo Cignoni c8b9c96f29 Added constant access function FFp and renamed F1 F2 to FFp1 FFp2 2004-10-20 08:28:31 +00:00
ganovelli 22c677246e added ::IsBorder 2004-10-18 17:13:50 +00:00
ganovelli de4b5c1d43 changed P() to cP() 2004-09-15 11:20:15 +00:00
ganovelli 6b328610fa removed "&" in FFp 2004-09-14 19:47:02 +00:00