MEPP2 Project
properties.h
Go to the documentation of this file.
1 // Copyright (c) 2012-2019 University of Lyon and CNRS (France).
2 // All rights reserved.
3 //
4 // This file is part of MEPP2; you can redistribute it and/or modify
5 // it under the terms of the GNU Lesser General Public License as
6 // published by the Free Software Foundation; either version 3 of
7 // the License, or (at your option) any later version.
8 //
9 // This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
10 // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11 #pragma once
12 
13 #include <CGAL/boost/graph/properties.h>
14 #include <boost/shared_ptr.hpp>
15 #include <boost/any.hpp>
16 
17 #include "FEVV/Types/Material.h"
20 
28 namespace FEVV {
29 
30 //---------------------------------------------------------
31 // list of the defaulty supported properties
32 
36 
40 
44 
48 // warning: boost::vertex_color_t is already
49 // defined in /usr/include/boost/graph/properties.hpp
50 
54 
58 
62 
66 
70 
74 
78 
82 
86 
90 
94 
95 
96 //---------------------------------------------------------
97 // property map container and related functions
98 
99 typedef std::map< std::string, boost::any > PMapsContainer;
100 
102 inline bool
103 has_map(const PMapsContainer &pmaps, const std::string &map_name)
104 {
105  return (pmaps.count(map_name) > 0);
106 }
107 
109 template< typename PropertyT >
110 bool
111 has_map(const PMapsContainer &pmaps, PropertyT p)
112 {
113  return has_map(pmaps, get_property_map_name(p));
114 }
115 
116 
117 //---------------------------------------------------------
118 // associate a string to each property type in order to store
119 // the property maps in the container which use a string key
120 
123 {
124  return std::string("v:normal");
125 }
126 
129 {
130  return std::string("v:tangent");
131 }
132 
135 {
136  return std::string("v:texcoord");
137 }
138 
141 {
142  return std::string("v:color");
143 }
144 
147 {
148  return std::string("v:custom_vector");
149 }
150 
153 {
154  return std::string("v:custom_vector_color");
155 }
156 
159 {
160  return std::string("v:custom_vector_param");
161 }
162 
165 {
166  return std::string("h:normal");
167 }
168 
171 {
172  return std::string("h:texcoord");
173 }
174 
177 {
178  return std::string("e:color");
179 }
180 
183 {
184  return std::string("f:normal");
185 }
186 
189 {
190  return std::string("f:color");
191 }
192 
195 {
196  return std::string("f:material");
197 }
198 
201 {
202  return std::string("m:materials");
203 }
204 
207 {
208  return std::string("m:guiproperties");
209 }
210 
211 
212 //---------------------------------------------------------
213 // Associative property map type
214 
215 /*
216  * An associative property map, needed for example for CGAL::Polyhedron
217  * which does not manage vertex/halfedge/face indices natively.
218  * Notes:
219  * 1) boost::associative_property_map is an adaptor that converts an
220  * associative container such as std::map into property map ; the adaptor only
221  * retains a reference to the container, so the lifetime of the container must
222  * encompass the use of the adaptor ; see the description of
223  * boost::associative_property_map for more details. 2) the present class
224  * completes boost::associative_property_map by also storing the underlying
225  * associative container. 3) the present class mimics the behavior of
226  * boost::vector_property_map (see
227  * http://www.boost.org/doc/libs/1_37_0/boost/vector_property_map.hpp), aka the
228  * copy constructor and the assignment operator do a shallow copy of the
229  * underlying std::map container ; as a consequence, like with get(vertex_point,
230  * g), get(property_t, g) will return a 'shared copy' of the associative
231  * property map.
232  */
233 template< typename KeyType, typename ValueType >
235  : public boost::associative_property_map< std::map< KeyType, ValueType > >
236 {
237 public:
238  // default constructor
239  Assoc_property_map(void) : map_ptr(new std::map< KeyType, ValueType >)
240  {
241  // at Assoc_property_map creation, the boost::associative_property_map part
242  // of the object does not point to a valid associative container because
243  // none has been provided to boost::associative_property_map constructor;
244  // so the following line initializes the boost::associative_property_map
245  // part of the object with the container stored in the Assoc_property_map
246  // object
247  boost::associative_property_map< std::map< KeyType, ValueType > >::
248  operator=(boost::associative_property_map< std::map< KeyType, ValueType > >(
249  *map_ptr));
250  // DBG std::cout << __FUNCTION__ << " " << this << std::endl;
251  }
252 
253  // copy constructor (shallow copy !)
255  boost::associative_property_map< std::map< KeyType, ValueType > >(other)
256  {
257  // DBG std::cout << __FUNCTION__ << " " << this << " <- copy(" << &other <<
258  // ")" << std::endl;
259  map_ptr = other.map_ptr;
260  boost::associative_property_map< std::map< KeyType, ValueType > >::
261  operator=(boost::associative_property_map< std::map< KeyType, ValueType > >(
262  *map_ptr));
263  }
264 
265  // destructor
267  {
268  // DBG std::cout << __FUNCTION__ << " " << this << std::endl;
269  }
270 
271  // assignment operator (shallow copy !)
273  {
274  // DBG std::cout << __FUNCTION__ << " " << this << " <- operator=(" <<
275  // &other << ")" << std::endl;
276  map_ptr = other.map_ptr;
277  boost::associative_property_map< std::map< KeyType, ValueType > >::
278  operator=(boost::associative_property_map< std::map< KeyType, ValueType > >(
279  *map_ptr));
280 
281  return *this;
282  }
283 
284  // debugging informations
285  void infos(void)
286  {
287  std::cout << "this=" << this << " map.size()=" << (*map_ptr).size()
288  << std::endl;
289  }
290 
291 private:
292  boost::shared_ptr< std::map< KeyType, ValueType > >
293  map_ptr; // the real associative container
294 };
295 
296 
297 //---------------------------------------------------------
298 // property map traits and its specializations
299 //
300 // The property maps traits make it possible to deduce the
301 // kind of property map (associative, vector...) to use with
302 // the mesh type.
303 // It also make it possible to deduce the full property map type
304 // from the property type (vertex_normal, vertex_texcoord,
305 // face_normal...) and the mesh type (CGAL::Polyhedron,
306 // OpenMesh...).
307 
308 
309 // define default property map type (associative property map,
310 // vector property map...) for each cell type (vertex, face...) ;
311 
312 // default vertex property map
313 template< typename MeshT, typename ValueT >
315 {
316  typedef
320 
321  static pmap_type create(const MeshT &/*m*/)
322  {
323  pmap_type pmap;
324  return pmap;
325  }
326 };
327 
328 // default face property map
329 template< typename MeshT, typename ValueT >
331 {
332  typedef typename boost::graph_traits< MeshT >::face_descriptor face_key_type;
334 
335  static pmap_type create(const MeshT &/*m*/)
336  {
337  pmap_type pmap;
338  return pmap;
339  }
340 };
341 
342 // default edge property map
343 template< typename MeshT, typename ValueT >
345 {
346  typedef typename boost::graph_traits< MeshT >::edge_descriptor edge_key_type;
348 
349  static pmap_type create(const MeshT &/*m*/)
350  {
351  pmap_type pmap;
352  return pmap;
353  }
354 };
355 
356 // default halfedge property map
357 template< typename MeshT, typename ValueT >
359 {
360  typedef typename boost::graph_traits< MeshT >::halfedge_descriptor
364 
365  static pmap_type create(const MeshT &m)
366  {
367  pmap_type pmap;
368  return pmap;
369  }
370 };
371 
372 
373 // define standard property map types for (property,cell) pair,
374 // for example vertex-normal
375 template< typename MeshT, typename PropertyT >
377 
378 // specialize the property maps traits for vertex-normal
379 template< typename MeshT >
381 {
384 
385  static pmap_type create(const MeshT &/*m*/)
386  {
387  pmap_type pmap;
388  return pmap;
389  }
390 };
391 
392 // specialize the property maps traits for vertex-tangent
393 template< typename MeshT >
395 {
398 
399  static pmap_type create(const MeshT &/*m*/)
400  {
401  pmap_type pmap;
402  return pmap;
403  }
404 };
405 
406 // specialize the property maps traits for vertex-texcoord
407 template< typename MeshT >
409 {
412 
413  static pmap_type create(const MeshT &/*m*/)
414  {
415  pmap_type pmap;
416  return pmap;
417  }
418 };
419 
420 // specialize the standard property map for vertex-color
421 template< typename MeshT >
423 {
426 
427  static pmap_type create(const MeshT &/*m*/)
428  {
429  pmap_type pmap;
430  return pmap;
431  }
432 };
433 
434 // specialize the property maps traits for vertex-custom_vector
435 template< typename MeshT >
437 {
440 
441  static pmap_type create(const MeshT &/*m*/)
442  {
443  pmap_type pmap;
444  return pmap;
445  }
446 };
447 
448 // specialize the property maps traits for vertex-custom_vector_color
449 template< typename MeshT >
451 {
454 
455  static pmap_type create(const MeshT &/*m*/)
456  {
457  pmap_type pmap;
458  return pmap;
459  }
460 };
461 
462 // specialize the property maps traits for vertex-custom_vector_param
463 template< typename MeshT >
465 {
468 
469  static pmap_type create(const MeshT &/*m*/)
470  {
471  pmap_type pmap;
472  return pmap;
473  }
474 };
475 
476 // specialize the property maps traits for halfedge-normal
477 template< typename MeshT >
479 {
481  typedef
483 
484  static pmap_type create(const MeshT &m)
485  {
486  pmap_type pmap;
487  return pmap;
488  }
489 };
490 
491 // specialize the property maps traits for halfedge-texcoord
492 template< typename MeshT >
494 {
496  typedef
498 
499  static pmap_type create(const MeshT &/*m*/)
500  {
501  pmap_type pmap;
502  return pmap;
503  }
504 };
505 
506 // specialize the property maps traits for edge-color
507 template< typename MeshT >
509 {
512 
513  static pmap_type create(const MeshT &/*m*/)
514  {
515  pmap_type pmap;
516  return pmap;
517  }
518 };
519 
520 // specialize the property maps traits for face-normal
521 template< typename MeshT >
523 {
526 
527  static pmap_type create(const MeshT &/*m*/)
528  {
529  pmap_type pmap;
530  return pmap;
531  }
532 };
533 
534 // specialize the property maps traits for face-color
535 template< typename MeshT >
537 {
540 
541  static pmap_type create(const MeshT &/*m*/)
542  {
543  pmap_type pmap;
544  return pmap;
545  }
546 };
547 
548 // specialize the property maps traits for face-material
549 template< typename MeshT >
551 {
552  typedef size_t value_type;
554 
555  static pmap_type create(const MeshT &/*m*/)
556  {
557  pmap_type pmap;
558  return pmap;
559  }
560 };
561 
562 // specialize the property maps traits for mesh materials
563 // beware: the mesh materials case is very specific,
564 // don't use it as a model
565 template< typename MeshT >
567 {
569  typedef typename boost::identity_property_map index_map_type;
570  typedef typename boost::vector_property_map< value_type, index_map_type >
572 
573  static pmap_type create(const MeshT &/*m*/)
574  {
575  pmap_type pmap;
576  return pmap;
577  }
578 };
579 
580 // specialize the property maps traits for mesh gui properties
581 // beware: this case is very specific, don't use it as a model
582 template< typename MeshT >
584 {
586  typedef typename boost::identity_property_map index_map_type;
587  typedef typename boost::vector_property_map< value_type, index_map_type >
589 
590  static pmap_type create(const MeshT &/*m*/)
591  {
592  pmap_type pmap;
593  return pmap;
594  }
595 };
596 
597 
598 // below is the interface to use property maps
599 
600 // some shortcuts to make it easier to use property maps
601 
602 // TODO-elo-fixit-> template<typename MeshT, typename PropertyT>
603 template< typename PropertyT, typename MeshT >
605 
606 template< typename MeshT, typename ValueT >
608 
609 template< typename MeshT, typename ValueT >
611 
612 template< typename MeshT, typename ValueT >
614 
615 template< typename MeshT, typename ValueT >
617 
618 
619 //---------------------------------------------------------
620 //---------------------------------------------------------
621 // Using the property maps traits, the functions that
622 // manage the property maps can be written in a generic way.
623 
624 // --- property maps bag management ---
625 
628 template< typename PropertyT, typename MeshT >
630 make_property_map(PropertyT /*p*/, const MeshT &m)
631 {
632 #if 0
633  // DBG
634  std::string map_name = get_property_map_name(p);
635  std::cout << "make_property_map<PropertyT, MeshT>" << ", map name = " << map_name << std::endl;
636 #endif
637 
639 }
640 
641 
644 template< typename PropertyT, typename MeshT >
645 typename PMap_traits< PropertyT, MeshT >::pmap_type
646 get_property_map(PropertyT p, const MeshT &, const PMapsContainer &pmaps)
647 {
648 #if 0
649  // DBG
650  std::cout << "get_property_map<PropertyT, MeshT>" << ", map name = " << get_property_map_name(p) << std::endl;
651 #endif
652 
653  std::string map_name = get_property_map_name(p);
654 
655  return boost::any_cast< typename PMap_traits< PropertyT, MeshT >::pmap_type >(
656  pmaps.at(map_name));
657 }
658 
659 
662 template< typename PropertyT, typename MeshT >
663 void
665  PropertyT p,
666  const MeshT &,
667  PMapsContainer &pmaps,
668  const typename PMap_traits< PropertyT, MeshT >::pmap_type &pmap)
669 {
670 #if 0
671  // DBG
672  std::cout << "put_property_map<PropertyT, MeshT>" << ", map name = " << get_property_map_name(p) << std::endl;
673 #endif
674 
675  std::string map_name = get_property_map_name(p);
676 
677  pmaps[map_name] = pmap;
678 }
679 
680 
684 inline
685 void
686 remove_property_map_by_name(const std::string &name, PMapsContainer &pmaps)
687 {
688  pmaps.erase(name);
689 }
690 
691 
695 template< typename PropertyT >
696 void
698 {
699  std::string map_name = get_property_map_name(p);
700  remove_property_map_by_name(map_name, pmaps);
701 }
702 
703 
706 inline
707 std::vector< std::string >
709 {
710  std::vector< std::string > names;
711  for(auto it = pmaps.begin(); it != pmaps.end(); ++it)
712  names.push_back(it->first);
713 
714  return names;
715 }
716 
717 
720 inline
721 void
723 {
724  std::vector< std::string > names = list_property_maps(pmaps);
725  for(auto it = names.begin(); it != names.end(); ++it)
726  std::cout << *it << std::endl;
727 }
728 
729 
730 // --- easy property maps creation ---
731 
734 template< typename MeshT, typename ValueT >
737 {
739 }
740 
741 
744 template< typename MeshT, typename ValueT >
747 {
749 }
750 
751 
754 template< typename MeshT, typename ValueT >
757 {
759 }
760 
761 
764 template< typename MeshT, typename ValueT >
767 {
769 }
770 
771 
772 } // namespace FEVV
773 
FEVV::_PMap_traits< MeshT, FEVV::vertex_texcoord_t >::pmap_type
Vertex_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:411
FEVV::Assoc_property_map::infos
void infos(void)
Definition: properties.h:285
FEVV::_PMap_traits< MeshT, FEVV::vertex_texcoord_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:410
FEVV::vertex_custom_vector_param
@ vertex_custom_vector_param
Definition: properties.h:61
FEVV::remove_property_map
void remove_property_map(PropertyT p, PMapsContainer &pmaps)
Definition: properties.h:697
FEVV::put_property_map
void put_property_map(PropertyT p, const MeshT &, PMapsContainer &pmaps, const typename PMap_traits< PropertyT, MeshT >::pmap_type &pmap)
Definition: properties.h:664
FEVV::_PMap_traits< MeshT, FEVV::vertex_texcoord_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:413
FEVV::face_normal_t
face_normal_t
Definition: properties.h:77
FEVV::_PMap_traits< MeshT, FEVV::halfedge_normal_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:480
FEVV::Assoc_property_map::operator=
Assoc_property_map & operator=(const Assoc_property_map &other)
Definition: properties.h:272
FEVV::mesh_materials_t
mesh_materials_t
Definition: properties.h:89
FEVV::make_edge_property_map
Edge_pmap_traits< MeshT, ValueT >::pmap_type make_edge_property_map(const MeshT &m)
Definition: properties.h:756
FEVV::get_property_map
PMap_traits< PropertyT, MeshT >::pmap_type get_property_map(PropertyT p, const MeshT &, const PMapsContainer &pmaps)
Definition: properties.h:646
FEVV::print_property_maps
void print_property_maps(const PMapsContainer &pmaps)
Definition: properties.h:722
FEVV::vertex_texcoord
@ vertex_texcoord
Definition: properties.h:43
FEVV::remove_property_map_by_name
void remove_property_map_by_name(const std::string &name, PMapsContainer &pmaps)
Definition: properties.h:686
FEVV::Halfedge_pmap_traits::create
static pmap_type create(const MeshT &m)
Definition: properties.h:365
Gui_properties.h
FEVV::_PMap_traits< MeshT, FEVV::face_color_t >::pmap_type
Face_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:539
FEVV::face_color_t
face_color_t
Definition: properties.h:81
FEVV::mesh_materials
@ mesh_materials
Definition: properties.h:89
FEVV::Edge_pmap_traits
Definition: properties.h:345
FEVV::edge_color_t
edge_color_t
Definition: properties.h:73
FEVV::has_map
bool has_map(const PMapsContainer &pmaps, const std::string &map_name)
(refer to Property Maps API)
Definition: properties.h:103
FEVV::_PMap_traits< MeshT, FEVV::vertex_custom_vector_t >::pmap_type
Vertex_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:439
FEVV::get_property_map_name
std::string get_property_map_name(FEVV::vertex_normal_t)
(refer to Property Maps API)
Definition: properties.h:122
FEVV::Edge_pmap_traits::create
static pmap_type create(const MeshT &)
Definition: properties.h:349
FEVV::vertex_tangent
@ vertex_tangent
Definition: properties.h:39
FEVV::_PMap_traits< MeshT, FEVV::mesh_guiproperties_t >::index_map_type
boost::identity_property_map index_map_type
Definition: properties.h:586
FEVV::_PMap_traits< MeshT, FEVV::edge_color_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:510
FEVV::_PMap_traits< MeshT, FEVV::halfedge_normal_t >::pmap_type
Halfedge_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:482
FEVV::make_halfedge_property_map
Halfedge_pmap_traits< MeshT, ValueT >::pmap_type make_halfedge_property_map(const MeshT &m)
Definition: properties.h:766
FEVV::_PMap_traits< MeshT, FEVV::vertex_custom_vector_color_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:452
FEVV::Geometry_traits
Refer to Geometry_traits_documentation_dummy for further documentation on provided types and algorith...
Definition: Geometry_traits.h:162
boost
Definition: Graph_properties_aif.h:48
FEVV::Assoc_property_map::map_ptr
boost::shared_ptr< std::map< KeyType, ValueType > > map_ptr
Definition: properties.h:293
Material.h
FEVV::vertex_custom_vector_color_t
vertex_custom_vector_color_t
Definition: properties.h:57
FEVV::_PMap_traits< MeshT, FEVV::vertex_custom_vector_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:438
FEVV::face_material_t
face_material_t
Definition: properties.h:85
FEVV::Vertex_pmap_traits::pmap_type
FEVV::Assoc_property_map< vertex_key_type, ValueT > pmap_type
Definition: properties.h:319
FEVV::Vertex_pmap_traits::create
static pmap_type create(const MeshT &)
Definition: properties.h:321
FEVV::Face_pmap
typename Face_pmap_traits< MeshT, ValueT >::pmap_type Face_pmap
Definition: properties.h:610
FEVV::_PMap_traits< MeshT, FEVV::vertex_custom_vector_param_t >::pmap_type
Vertex_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:467
FEVV::PMapsContainer
std::map< std::string, boost::any > PMapsContainer
Definition: properties.h:99
FEVV::_PMap_traits< MeshT, FEVV::vertex_normal_t >::pmap_type
Vertex_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:383
FEVV::_PMap_traits< MeshT, FEVV::mesh_materials_t >::value_type
FEVV::Types::Material value_type
Definition: properties.h:568
FEVV::_PMap_traits< MeshT, FEVV::halfedge_texcoord_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:499
FEVV::vertex_normal_t
vertex_normal_t
Definition: properties.h:35
FEVV::halfedge_texcoord_t
halfedge_texcoord_t
Definition: properties.h:69
FEVV::Assoc_property_map
Definition: properties.h:236
FEVV::_PMap_traits< MeshT, FEVV::face_color_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:538
FEVV::_PMap_traits< MeshT, FEVV::mesh_guiproperties_t >::value_type
FEVV::Types::GuiProperties value_type
Definition: properties.h:585
FEVV::vertex_tangent_t
vertex_tangent_t
Definition: properties.h:39
FEVV::Face_pmap_traits
Definition: properties.h:331
FEVV::_PMap_traits< MeshT, FEVV::vertex_custom_vector_param_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:466
FEVV::_PMap_traits< MeshT, FEVV::edge_color_t >::pmap_type
Edge_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:511
FEVV::vertex_color_t
vertex_color_t
Definition: properties.h:47
FEVV
Interfaces for plugins These interfaces will be used for different plugins.
Definition: Assert.h:16
FEVV::Edge_pmap_traits::pmap_type
FEVV::Assoc_property_map< edge_key_type, ValueT > pmap_type
Definition: properties.h:347
FEVV::_PMap_traits< MeshT, FEVV::vertex_normal_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:382
FEVV::_PMap_traits< MeshT, FEVV::mesh_materials_t >::pmap_type
boost::vector_property_map< value_type, index_map_type > pmap_type
Definition: properties.h:571
FEVV::halfedge_normal
@ halfedge_normal
Definition: properties.h:65
FEVV::Vertex_pmap_traits
Definition: properties.h:315
FEVV::vertex_custom_vector_color
@ vertex_custom_vector_color
Definition: properties.h:57
FEVV::_PMap_traits< MeshT, FEVV::vertex_normal_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:385
FEVV::Edge_pmap_traits::edge_key_type
boost::graph_traits< MeshT >::edge_descriptor edge_key_type
Definition: properties.h:346
FEVV::_PMap_traits< MeshT, FEVV::vertex_custom_vector_color_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:455
FEVV::_PMap_traits< MeshT, FEVV::vertex_color_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:424
FEVV::Halfedge_pmap
typename Halfedge_pmap_traits< MeshT, ValueT >::pmap_type Halfedge_pmap
Definition: properties.h:616
FEVV::vertex_custom_vector_param_t
vertex_custom_vector_param_t
Definition: properties.h:61
FEVV::Assoc_property_map::Assoc_property_map
Assoc_property_map(void)
Definition: properties.h:239
FEVV::edge_color
@ edge_color
Definition: properties.h:73
FEVV::Vertex_pmap_traits::vertex_key_type
boost::graph_traits< MeshT >::vertex_descriptor vertex_key_type
Definition: properties.h:317
FEVV::_PMap_traits< MeshT, FEVV::vertex_custom_vector_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:441
FEVV::_PMap_traits< MeshT, FEVV::halfedge_texcoord_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:495
FEVV::vertex_color
@ vertex_color
Definition: properties.h:47
FEVV::face_material
@ face_material
Definition: properties.h:85
Geometry_traits.h
FEVV::Face_pmap_traits::face_key_type
boost::graph_traits< MeshT >::face_descriptor face_key_type
Definition: properties.h:332
FEVV::_PMap_traits< MeshT, FEVV::mesh_materials_t >::index_map_type
boost::identity_property_map index_map_type
Definition: properties.h:569
FEVV::_PMap_traits< MeshT, FEVV::vertex_tangent_t >::pmap_type
Vertex_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:397
FEVV::list_property_maps
std::vector< std::string > list_property_maps(const PMapsContainer &pmaps)
Definition: properties.h:708
FEVV::Halfedge_pmap_traits::pmap_type
FEVV::Assoc_property_map< halfedge_key_type, ValueT > pmap_type
Definition: properties.h:363
FEVV::vertex_custom_vector_t
vertex_custom_vector_t
Definition: properties.h:53
FEVV::make_vertex_property_map
Vertex_pmap_traits< MeshT, ValueT >::pmap_type make_vertex_property_map(const MeshT &m)
Definition: properties.h:736
FEVV::_PMap_traits< MeshT, FEVV::face_material_t >::pmap_type
Face_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:553
FEVV::_PMap_traits< MeshT, FEVV::mesh_guiproperties_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:590
FEVV::Halfedge_pmap_traits::halfedge_key_type
boost::graph_traits< MeshT >::halfedge_descriptor halfedge_key_type
Definition: properties.h:361
FEVV::_PMap_traits< MeshT, FEVV::halfedge_normal_t >::create
static pmap_type create(const MeshT &m)
Definition: properties.h:484
FEVV::_PMap_traits< MeshT, FEVV::edge_color_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:513
FEVV::Assoc_property_map::~Assoc_property_map
~Assoc_property_map()
Definition: properties.h:266
FEVV::_PMap_traits< MeshT, FEVV::face_material_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:555
FEVV::_PMap_traits< MeshT, FEVV::vertex_custom_vector_color_t >::pmap_type
Vertex_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:453
FEVV::Vertex_pmap
typename Vertex_pmap_traits< MeshT, ValueT >::pmap_type Vertex_pmap
Definition: properties.h:607
FEVV::_PMap_traits< MeshT, FEVV::face_normal_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:524
FEVV::Types::Material
Definition: Material.h:66
FEVV::Assoc_property_map::Assoc_property_map
Assoc_property_map(const Assoc_property_map &other)
Definition: properties.h:254
msdm2::vertex_descriptor
boost::graph_traits< MeshT >::vertex_descriptor vertex_descriptor
Definition: msdm2_surfacemesh.h:33
FEVV::Face_pmap_traits::create
static pmap_type create(const MeshT &)
Definition: properties.h:335
FEVV::_PMap_traits< MeshT, FEVV::vertex_color_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:427
FEVV::face_color
@ face_color
Definition: properties.h:81
FEVV::DataStructures::AIF::AIFMesh
This class represents an AIF structure. AIF structure can deal with both manifold and non-manifold su...
Definition: AIFMesh.hpp:47
FEVV::Edge_pmap
typename Edge_pmap_traits< MeshT, ValueT >::pmap_type Edge_pmap
Definition: properties.h:613
FEVV::Face_pmap_traits::pmap_type
FEVV::Assoc_property_map< face_key_type, ValueT > pmap_type
Definition: properties.h:333
FEVV::Types::GuiProperties
Definition: Gui_properties.h:27
FEVV::Halfedge_pmap_traits
Definition: properties.h:359
FEVV::vertex_custom_vector
@ vertex_custom_vector
Definition: properties.h:53
FEVV::mesh_guiproperties_t
mesh_guiproperties_t
Definition: properties.h:93
FEVV::_PMap_traits< MeshT, FEVV::vertex_tangent_t >::value_type
FEVV::Geometry_traits< MeshT >::Vector value_type
Definition: properties.h:396
FEVV::_PMap_traits
Definition: properties.h:376
FEVV::_PMap_traits< MeshT, FEVV::face_color_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:541
FEVV::_PMap_traits< MeshT, FEVV::vertex_color_t >::pmap_type
Vertex_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:425
FEVV::_PMap_traits< MeshT, FEVV::face_material_t >::value_type
size_t value_type
Definition: properties.h:552
FEVV::halfedge_texcoord
@ halfedge_texcoord
Definition: properties.h:69
FEVV::_PMap_traits< MeshT, FEVV::face_normal_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:527
FEVV::_PMap_traits< MeshT, FEVV::vertex_custom_vector_param_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:469
FEVV::vertex_normal
@ vertex_normal
Definition: properties.h:35
FEVV::_PMap_traits< MeshT, FEVV::halfedge_texcoord_t >::pmap_type
Halfedge_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:497
FEVV::_PMap_traits< MeshT, FEVV::vertex_tangent_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:399
FEVV::vertex_texcoord_t
vertex_texcoord_t
Definition: properties.h:43
FEVV::_PMap_traits< MeshT, FEVV::mesh_guiproperties_t >::pmap_type
boost::vector_property_map< value_type, index_map_type > pmap_type
Definition: properties.h:588
FEVV::make_property_map
PMap_traits< PropertyT, MeshT >::pmap_type make_property_map(PropertyT, const MeshT &m)
Definition: properties.h:630
FEVV::make_face_property_map
Face_pmap_traits< MeshT, ValueT >::pmap_type make_face_property_map(const MeshT &m)
Definition: properties.h:746
FEVV::_PMap_traits< MeshT, FEVV::face_normal_t >::pmap_type
Face_pmap_traits< MeshT, value_type >::pmap_type pmap_type
Definition: properties.h:525
FEVV::mesh_guiproperties
@ mesh_guiproperties
Definition: properties.h:93
FEVV::halfedge_normal_t
halfedge_normal_t
Definition: properties.h:65
FEVV::face_normal
@ face_normal
Definition: properties.h:77
FEVV::_PMap_traits< MeshT, FEVV::mesh_materials_t >::create
static pmap_type create(const MeshT &)
Definition: properties.h:573