Commit Graph

58 Commits

Author SHA1 Message Date
alemuntoni 0b99eaa7b2 first complex.h files made self-sufficient 2021-03-24 14:53:00 +01:00
alemuntoni 3bfe5793f6 SimpleTempData DataBegin and const DataBegin 2021-03-23 13:15:24 +01:00
alemuntoni bf6c48f9be fix VectorNBW bool specialization with const 2021-03-23 12:59:45 +01:00
alemuntoni 0a2ed11ac2 (partial) ply const correctness 2021-03-18 18:21:59 +01:00
T.Alderighi a78a51e650 handling non trivially copyable types in the attribute copy when appending meshes.
https://en.cppreference.com/w/cpp/types/is_trivially_copyable
2020-02-20 20:31:47 +01:00
Luigi Malomo 303c4d14b5 minor changes 2019-11-21 17:08:15 +01:00
Andrea Maggiordomo 011764d5b2 Added delete[] to VectorNBW<bool> destructor 2019-03-25 13:01:44 +01:00
T.Alderighi b662f747a0 bootstrapping tetra as trimesh component 2018-05-04 12:08:32 +02:00
T.Alderighi b0384f68d1 stable allocate and tetra complex 2018-05-03 15:05:42 +02:00
Paolo Cignoni c4d97c2c03 Huge reordering of header file inclusion order 2017-03-14 07:48:48 +01:00
Paolo Cignoni 32333eba24 Huge copyright sanitization of the header files of vcg folder. 2016-06-13 05:29:25 +00:00
giorgiomarcias 24fe5cb6a0 Deallocating a dynamically allocated array of data must be done with delete[] instead of delete 2016-03-23 13:02:35 +00:00
granzuglia b806f2c7d9 simple_temporary_data.h:
- removed Visual Studio warnings
2014-08-09 10:05:20 +00:00
Federico Ponchio 030d966b4a added #include <string.h> for memcpy 2013-12-11 14:20:17 +00:00
Paolo Cignoni f2bbdb787a Include header cleaning and reordering. 2013-11-25 10:31:30 +00:00
Nico Pietroni e3a8a50bc5 added #include <assert.h> 2013-09-21 00:54:53 +00:00
ganovelli cedf5fb284 bug fixing:
- mixup of nomes Edge and Face on the components.
- possibly use of empty vector in import_obj.h
Thanks to nagaokagetora for showing them
2011-10-25 10:03:10 +00:00
Paolo Cignoni 2fe129645b Rolled back 2011-10-05 15:04:40 +00:00
granzuglia 1318e29cb0 added several missing include file 2011-06-07 14:36:33 +00:00
ganovelli 11adfa2aff Changes for supporting copying of PerVertex,PerEdge and PerFace attributes in the vcg::tri::Append (append.h)
- useless template paramtere in SimpleTempData_Base removed (simple_temporary_data.h)
- Attribute is now derived by SimpleTempData_Base
- SimpleTempData_Base defines a void * At(unsigned int i) function that returns a pointer to the i-th element of the vector withouth knowing the type
- removed the useless member _typeid from the PointerToAttribute. It was used to store the rtti, useless itself.

NOTE: the copy of attributes is done with a memcpy! This means that if you defined a operator = in your attribute this WILL NOT be used in the append.
2011-06-01 13:39:31 +00:00
ganovelli ad0a3daf01 version that should work with synamic linked libraries (to be tested) 2010-06-21 15:52:18 +00:00
ganovelli 9026213628 removed unused classes for allocation of temporary data 2010-06-19 15:39:06 +00:00
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