OpenMesh
Loading...
Searching...
No Matches
MeshKernel.hh
1/* ========================================================================= *
2 * *
3 * OpenMesh *
4 * Copyright (c) 2001-2015, RWTH-Aachen University *
5 * Department of Computer Graphics and Multimedia *
6 * All rights reserved. *
7 * www.openmesh.org *
8 * *
9 *---------------------------------------------------------------------------*
10 * This file is part of OpenMesh. *
11 *---------------------------------------------------------------------------*
12 * *
13 * Redistribution and use in source and binary forms, with or without *
14 * modification, are permitted provided that the following conditions *
15 * are met: *
16 * *
17 * 1. Redistributions of source code must retain the above copyright notice, *
18 * this list of conditions and the following disclaimer. *
19 * *
20 * 2. Redistributions in binary form must reproduce the above copyright *
21 * notice, this list of conditions and the following disclaimer in the *
22 * documentation and/or other materials provided with the distribution. *
23 * *
24 * 3. Neither the name of the copyright holder nor the names of its *
25 * contributors may be used to endorse or promote products derived from *
26 * this software without specific prior written permission. *
27 * *
28 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS *
29 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED *
30 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A *
31 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER *
32 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, *
33 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, *
34 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR *
35 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF *
36 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING *
37 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS *
38 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *
39 * *
40 * ========================================================================= */
41
42
43/*===========================================================================*\
44 * *
45 * $Revision$ *
46 * $Date$ *
47 * *
48\*===========================================================================*/
49
50
51//=============================================================================
52//
53// Kernel Concept
54//
55//=============================================================================
56
57
58#error this file is for documentation purposes only
59
60
61//== NAMESPACES ===============================================================
62
63
64namespace OpenMesh {
65namespace Concepts {
66
67
68//== CLASS DEFINITION =========================================================
69
70
83template <class FinalMeshItems> class KernelT
84{
85public:
86
88
89
91 typedef typename FinalMeshItems::Vertex Vertex;
92 typedef typename FinalMeshItems::Halfedge Halfedge;
93 typedef typename FinalMeshItems::Edge Edge;
94 typedef typename FinalMeshItems::Face Face;
95 typedef typename FinalMeshItems::Point Point;
96 typedef typename FinalMeshItems::Scalar Scalar;
97 typedef typename FinalMeshItems::Normal Normal;
98 typedef typename FinalMeshItems::Color Color;
99 typedef typename FinalMeshItems::TexCoord TexCoord;
100 typedef typename FinalMeshItems::VertexHandle VertexHandle;
101 typedef typename FinalMeshItems::HalfedgeHandle HalfedgeHandle;
102 typedef typename FinalMeshItems::EdgeHandle EdgeHandle;
103 typedef typename FinalMeshItems::FaceHandle FaceHandle;
104
106
107
109
110
111 typedef SomeIterator KernelVertexIter;
112 typedef SomeIterator KernelConstVertexIter;
113 typedef SomeIterator KernelEdgeIter;
114 typedef SomeIterator KernelConstEdgeIter;
115 typedef SomeIterator KernelFaceIter;
116 typedef SomeIterator KernelConstFaceIter;
118
120
121
123
127
129 KernelT& operator=(const KernelT& _rhs);
130
131
144 void reserve( size_t _n_vertices,
145 size_t _n_edges,
146 size_t _n_faces );
147
148
150
151
152 const Vertex& vertex(VertexHandle _h) const { return deref(_h); }
153 Vertex& vertex(VertexHandle _h) { return deref(_h); }
154 const Halfedge& halfedge(HalfedgeHandle _h) const { return deref(_h); }
155 Halfedge& halfedge(HalfedgeHandle _h) { return deref(_h); }
156 const Edge& edge(EdgeHandle _h) const { return deref(_h); }
157 Edge& edge(EdgeHandle _h) { return deref(_h); }
158 const Face& face(FaceHandle _h) const { return deref(_h); }
159 Face& face(FaceHandle _h) { return deref(_h); }
161
162
164
165
166 VertexHandle handle(const Vertex& _v) const;
167 HalfedgeHandle handle(const Halfedge& _he) const;
168 EdgeHandle handle(const Edge& _e) const;
169 FaceHandle handle(const Face& _f) const;
171
172
174
175
176 VertexHandle vertex_handle(unsigned int _i) const;
177 HalfedgeHandle halfedge_handle(unsigned int _i) const;
178 EdgeHandle edge_handle(unsigned int _i) const;
179 FaceHandle face_handle(unsigned int _i) const;
181
182
184
185
188 void clear();
189
193 void clean();
194
205
209 void remove_last_vertex() { vertices_.pop_back(); }
213 void remove_last_edge() { edges_.pop_back(); }
217 void remove_last_face() { faces_.pop_back(); }
218
220
221
222
223
225
226
227 size_t n_vertices() const;
229 size_t n_halfedges() const;
231 size_t n_edges() const;
233 size_t n_faces() const;
235 bool vertices_empty() const;
237 bool halfedges_empty() const;
239 bool edges_empty() const;
241 bool faces_empty() const;
243
244
245
247
248
253 const Point& point(VertexHandle _vh) const;
255 const Point& point(const Vertex& _v) const;
257 void set_point(VertexHandle _vh, const Point& _p);
259 void set_point(Vertex& _v, const Point& _p);
261
262
263
264
266
267
298
299
300
302
303
304 HalfedgeHandle halfedge_handle(EdgeHandle _eh, unsigned int _i) const;
306
307
308
310
311
316
317
318public: // Standard Property Management
319
321
322
323 // vertex
324 const Point& point(VertexHandle _vh) const;
325 void set_point(VertexHandle _vh, const Point& _p);
327
328 const Normal& normal(VertexHandle _vh) const;
329 void set_normal(VertexHandle _vh, const Normal& _n);
330
331 const Normal& normal(HalfedgeHandle _heh) const;
332 void set_normal(HalfedgeHandle _heh, const Normal& _n);
333
334 const Color& color(VertexHandle _vh) const;
335 void set_color(VertexHandle _vh, const Color& _c);
336
337 const TexCoord1D& texcoord1D(VertexHandle _vh) const;
338 void set_texcoord1D(VertexHandle _vh, const TexCoord1D& _t);
339
340 const TexCoord2D& texcoord2D(VertexHandle _vh) const;
341 void set_texcoord2D(VertexHandle _vh, const TexCoord2D& _t);
342
343 const TexCoord3D& texcoord3D(VertexHandle _vh) const;
344 void set_texcoord3D(VertexHandle _vh, const TexCoord3D& _t);
345
346 const TexCoord1D& texcoord1D(HalfedgeHandle _hh) const;
347 void set_texcoord1D(HalfedgeHandle _hh, const TexCoord1D& _t);
348
349 const TexCoord2D& texcoord2D(HalfedgeHandle _hh) const;
350 void set_texcoord2D(HalfedgeHandle _hh, const TexCoord2D& _t);
351
352 const TexCoord3D& texcoord3D(HalfedgeHandle _hh) const;
353 void set_texcoord3D(HalfedgeHandle _hh, const TexCoord3D& _t);
354
355 const StatusInfo& status(VertexHandle _vh) const;
356 StatusInfo& status(VertexHandle _vh);
357
358 // halfedge
359 const StatusInfo& status(HalfedgeHandle _vh) const;
360 StatusInfo& status(HalfedgeHandle _vh);
361
362 const Color& color(HalfedgeHandle _heh) const;
363 void set_color(HalfedgeHandle _heh, const Color& _c);
364
365 // edge
366 const Color& color(EdgeHandle _eh) const;
367 void set_color(EdgeHandle _eh, const Color& _c);
368
369
370 const StatusInfo& status(EdgeHandle _vh) const;
371 StatusInfo& status(EdgeHandle _vh);
372
373 // face
374 const Normal& normal(FaceHandle _fh) const;
375 void set_normal(FaceHandle _fh, const Normal& _n);
376
377 const Color& color(FaceHandle _fh) const;
378 void set_color(FaceHandle _fh, const Color& _c);
379
380 const StatusInfo& status(FaceHandle _vh) const;
381 StatusInfo& status(FaceHandle _vh);
382
384
386
387
394
401
404
410
412
413
420
427
430
436
438
439
440 bool has_vertex_normals() const;
441 bool has_vertex_colors() const;
445 bool has_vertex_status() const;
446
453
454 bool has_edge_status() const;
455 bool has_edge_colors() const;
456
457 bool has_face_normals() const;
458 bool has_face_colors() const;
459 bool has_face_status() const;
462
463public: // Property Management
464
466
468
469
471 template <typename T> void add_property( [VEHFM]PropHandleT<T>& _ph,
472 const std::string& _name = "" );
474
476
477
478 template <typename T> void remove_property( [VEHFM]PropHandleT<T>& );
480
482
483
484 template <typename T>
485 bool get_property_handle( [VEHFM]PropHandleT<T>& ph, const std::string& _n ) const;
487
489
490
491 template <typename T> PropertyT<T>& property( [VEHF]PropHandleT<T> _ph );
492 template <typename T> const PropertyT<T>& property( [VEHF]PropHandleT<T> _ph ) const;
493 template <typename T> PropertyT<T>& mproperty( MPropHandleT<T> _ph );
494 template <typename T> const PropertyT<T>& mproperty( MPropHandleT<T> _ph ) const;
496
498
499
501 template <typename T>
503 template <typename T>
504 const T& property( VPropHandleT<T> _ph, VertexHandle _vh ) const;
505
506 template <typename T>
508 template <typename T>
509 const T& property( EPropHandleT<T> _ph, EdgeHandle _vh ) const;
510
511 template <typename T>
513 template <typename T>
514 const T& property( HPropHandleT<T> _ph, HalfedgeHandle _vh ) const;
515
516 template <typename T>
518 template <typename T>
519 const T& property( FPropHandleT<T> _ph, FaceHandle _vh ) const;
520
521 template <typename T>
523 template <typename T>
524 const T& property( MPropHandleT<T> _ph ) const;
525
527
528public:
529
530
532
533
548 VertexHandle _end_vertex_handle);
549
558
559
560 // --- iterators ---
561
563
564
579
580
581
582private:
583
584
585 // --- private functions ---
586
588 KernelT(const KernelT& _rhs);
589};
590};
591
592
593//=============================================================================
594} // namespace Concepts
595} // namespace OpenMesh
596//=============================================================================
Contains all the mesh ingredients like the polygonal mesh, the triangle mesh, different mesh kernels ...
Definition MeshItems.hh:64
This class describes the minimum interface a mesh kernel has to implement (because the resulting mesh...
Definition MeshKernel.hh:84
HalfedgeHandle prev_halfedge_handle(HalfedgeHandle _heh) const
Get the previous halfedge of the given halfedge.
SomeIterator KernelConstVertexIter
This type depends on the container type in use.
Definition MeshKernel.hh:112
bool has_halfedge_colors() const
Is property available?
FinalMeshItems::Halfedge Halfedge
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:92
void set_color(FaceHandle _fh, const Color &_c)
Set color.
FinalMeshItems::Normal Normal
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:97
void request_vertex_texcoords2D()
Request property.
void set_halfedge_handle(FaceHandle _fh, HalfedgeHandle _heh)
Set one halfedge of the face.
void request_halfedge_texcoords3D()
Request property.
bool has_face_normals() const
Is property available?
HalfedgeHandle halfedge_handle(VertexHandle _vh) const
Get an outgoing halfedge of a given vertex.
const TexCoord2D & texcoord2D(HalfedgeHandle _hh) const
Get texture coordinate of the to vertex for the current face (per face per vertex texcoords)
void request_halfedge_colors()
Request property.
void remove_last_face()
Remove the last face imidiately, i.e.
Definition MeshKernel.hh:217
void request_vertex_normals()
Request property.
void set_normal(HalfedgeHandle _heh, const Normal &_n)
Set normal of the to vertex of the given Halfedge (per face per vertex normals)
void release_halfedge_colors()
Remove property.
FinalMeshItems::Vertex Vertex
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:91
const Normal & normal(FaceHandle _fh) const
Get normal.
T & property(MPropHandleT< T > _ph)
Get value for item represented by the handle.
void set_point(Vertex &_v, const Point &_p)
Set the coordinate of a vertex.
size_t n_edges() const
Returns number of edges.
PropertyT< T > & property([VEHF]PropHandleT< T > _ph)
Get property.
FinalMeshItems::TexCoord TexCoord
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:99
const TexCoord2D & texcoord2D(VertexHandle _vh) const
Get texture coordinate.
void request_halfedge_status()
Request property.
void set_texcoord3D(HalfedgeHandle _hh, const TexCoord3D &_t)
Set texture coordinate of the to vertex of the given Halfedge (per face per vertex texcoords)
VertexHandle vertex_handle(unsigned int _i) const
Get the i'th item.
SomeIterator KernelConstEdgeIter
This type depends on the container type in use.
Definition MeshKernel.hh:114
HalfedgeHandle ccw_rotated_halfedge_handle(HalfedgeHandle _heh) const
Counter-clockwise rotate the given halfedge around its from vertex.
const Normal & normal(HalfedgeHandle _heh) const
Get normal of the to vertex of the given Halfedge (per face per vertex normals)
KernelFaceIter faces_begin()
Kernel item iterator.
void release_halfedge_texcoords3D()
Remove property.
bool has_edge_colors() const
Is property available?
void request_edge_status()
Request property.
void clear()
Delete all items, i.e.
KernelConstFaceIter faces_end() const
Kernel item iterator.
void release_vertex_colors()
Remove property.
const TexCoord3D & texcoord3D(HalfedgeHandle _hh) const
Get texture coordinate of the to vertex for the current face (per face per vertex texcoords)
void remove_last_vertex()
Remove the last vertex imidiately, i.e.
Definition MeshKernel.hh:209
FaceHandle new_face()
Adding a new face.
void set_texcoord2D(HalfedgeHandle _hh, const TexCoord2D &_t)
Set texture coordinate of the to vertex of the given Halfedge (per face per vertex texcoords)
FinalMeshItems::Scalar Scalar
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:96
void release_face_texture_index()
Remove property.
const StatusInfo & status(FaceHandle _vh) const
Get status.
void release_face_normals()
Remove property.
bool vertices_empty() const
Is the vertex container empty?
void release_vertex_normals()
Remove property.
void set_color(VertexHandle _vh, const Color &_c)
Set color.
FaceHandle face_handle(unsigned int _i) const
Get the i'th item.
void request_face_colors()
Request property.
const Color & color(HalfedgeHandle _heh) const
Get color.
SomeIterator KernelConstFaceIter
This type depends on the container type in use.
Definition MeshKernel.hh:116
void release_halfedge_texcoords2D()
Remove property.
const Edge & edge(EdgeHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition MeshKernel.hh:156
void request_face_texture_index()
Request property.
FinalMeshItems::Point Point
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:95
KernelConstFaceIter faces_begin() const
Kernel item iterator.
HalfedgeHandle new_edge(VertexHandle _start_vertex_handle, VertexHandle _end_vertex_handle)
Add a new edge from _start_vertex_handle to _end_vertex_handle.
void set_texcoord1D(VertexHandle _vh, const TexCoord1D &_t)
Set texture coordinate.
FinalMeshItems::Face Face
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:94
KernelVertexIter vertices_end()
Kernel item iterator.
void request_halfedge_texcoords2D()
Request property.
SomeIterator KernelFaceIter
This type depends on the container type in use.
Definition MeshKernel.hh:115
const Color & color(VertexHandle _vh) const
Get color.
void request_vertex_status()
Request property.
HalfedgeHandle halfedge_handle(EdgeHandle _eh, unsigned int _i) const
Get the first or second halfedge of the given edge.
void add_property([VEHFM]PropHandleT< T > &_ph, const std::string &_name="")
Add property.
const Point & point(VertexHandle _vh) const
Get the coordinate of a vertex.
HalfedgeHandle halfedge_handle(FaceHandle _fh) const
Get a halfedge belonging to the face.
void request_vertex_colors()
Request property.
VertexHandle new_vertex(const Vertex &_v)
Add a new vertex (copied from the given one).
T & property(HPropHandleT< T > _ph, HalfedgeHandle _vh)
Get value for item represented by the handle.
const PropertyT< T > & property([VEHF]PropHandleT< T > _ph) const
Get property.
EdgeHandle edge_handle(HalfedgeHandle _heh) const
Get the edge the current halfedge it contained in.
const T & property(HPropHandleT< T > _ph, HalfedgeHandle _vh) const
Get value for item represented by the handle.
T & property(EPropHandleT< T > _ph, EdgeHandle _vh)
Get value for item represented by the handle.
const StatusInfo & status(HalfedgeHandle _vh) const
Get status.
SomeIterator KernelVertexIter
This type depends on the container type in use.
Definition MeshKernel.hh:111
bool get_property_handle([VEHFM]PropHandleT< T > &ph, const std::string &_n) const
Get property handle by name.
VertexHandle new_vertex(const Point &_p)
Add a new vertex with a given point coordinate.
void release_vertex_texcoords1D()
Remove property.
StatusInfo & status(VertexHandle _vh)
Get status.
const Halfedge & halfedge(HalfedgeHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition MeshKernel.hh:154
FaceHandle face_handle(HalfedgeHandle _heh) const
Get the face the halfedge belongs to.
void release_vertex_status()
Remove property.
HalfedgeHandle halfedge_handle(unsigned int _i) const
Get the i'th item.
HalfedgeHandle opposite_halfedge_handle(HalfedgeHandle _heh) const
Get the opposite halfedge.
StatusInfo & status(FaceHandle _vh)
Get status.
HalfedgeHandle handle(const Halfedge &_he) const
Translate item to handle.
KernelConstVertexIter vertices_begin() const
Kernel item iterator.
const StatusInfo & status(VertexHandle _vh) const
Get status.
void garbage_collection()
Remove all items that are marked as deleted from the corresponding containers.
void set_halfedge_handle(VertexHandle _vh, HalfedgeHandle _heh)
Set the outgoing halfedge handle of a given vertex.
void release_edge_colors()
Remove property.
bool has_face_texture_index() const
Is property available?
FaceHandle handle(const Face &_f) const
Translate item to handle.
size_t n_vertices() const
Returns number of vertices.
KernelT()
Default constructor.
Definition MeshKernel.hh:122
FaceHandle new_face(const Face &_f)
Adding a new face (copied from a _f).
KernelFaceIter faces_end()
Kernel item iterator.
bool has_vertex_colors() const
Is property available?
bool has_halfedge_status() const
Is property available?
KernelConstEdgeIter edges_begin() const
Kernel item iterator.
HalfedgeHandle cw_rotated_halfedge_handle(HalfedgeHandle _heh) const
Clockwise rotate the given halfedge around its from vertex.
FinalMeshItems::VertexHandle VertexHandle
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:100
KernelT & operator=(const KernelT &_rhs)
Assignment operator.
const TexCoord1D & texcoord1D(VertexHandle _vh) const
Get texture coordinate.
void release_face_status()
Remove property.
StatusInfo & status(EdgeHandle _vh)
Get status.
SomeIterator KernelEdgeIter
This type depends on the container type in use.
Definition MeshKernel.hh:113
KernelConstVertexIter vertices_end() const
Kernel item iterator.
VertexHandle new_vertex()
Add a new (default) vertex.
KernelEdgeIter edges_begin()
Kernel item iterator.
void request_vertex_texcoords1D()
Request property.
void set_texcoord1D(HalfedgeHandle _hh, const TexCoord1D &_t)
Set texture coordinate of the to vertex of the given Halfedge (per face per vertex texcoords)
void release_halfedge_normals()
Remove property.
void request_vertex_texcoords3D()
Request property.
T & property(VPropHandleT< T > _ph, VertexHandle _vh)
Get value for item represented by the handle.
KernelConstEdgeIter edges_end() const
Kernel item iterator.
bool has_vertex_normals() const
Is property available?
EdgeHandle edge_handle(unsigned int _i) const
Get the i'th item.
bool has_face_status() const
Is property available?
void release_face_colors()
Remove property.
Halfedge & halfedge(HalfedgeHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition MeshKernel.hh:155
StatusInfo & status(HalfedgeHandle _vh)
Get status.
T & property(FPropHandleT< T > _ph, FaceHandle _vh)
Get value for item represented by the handle.
PropertyT< T > & mproperty(MPropHandleT< T > _ph)
Get property.
bool has_halfedge_normals() const
Is property available?
void release_edge_status()
Remove property.
void set_vertex_handle(HalfedgeHandle _heh, VertexHandle _vh)
Set the to-vertex-handle of the halfedge.
FinalMeshItems::Edge Edge
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:93
void set_face_handle(HalfedgeHandle _heh, FaceHandle _fh)
Set the face the halfedge belongs to.
FinalMeshItems::EdgeHandle EdgeHandle
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:102
bool has_halfedge_texcoords1D() const
Is property available?
void set_next_halfedge_handle(HalfedgeHandle _heh, HalfedgeHandle _nheh)
Set the next halfedge handle.
bool has_edge_status() const
Is property available?
const TexCoord3D & texcoord3D(VertexHandle _vh) const
Get texture coordinate.
void set_normal(FaceHandle _fh, const Normal &_n)
Set normal.
void set_point(VertexHandle _vh, const Point &_p)
Set the coordinate of a vertex.
FinalMeshItems::FaceHandle FaceHandle
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:103
bool edges_empty() const
Is the edge container empty?
FinalMeshItems::HalfedgeHandle HalfedgeHandle
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:101
Point & point(VertexHandle _vh)
Convenience function.
void release_halfedge_status()
Remove property.
void request_face_status()
Request property.
void set_normal(VertexHandle _vh, const Normal &_n)
Set normal.
void release_halfedge_texcoords1D()
Remove property.
void reserve(size_t _n_vertices, size_t _n_edges, size_t _n_faces)
Reserve memory for vertices, edges, faces.
void clean()
Delete all items, i.e.
KernelVertexIter vertices_begin()
Kernel item iterator.
VertexHandle handle(const Vertex &_v) const
Translate item to handle.
bool has_face_colors() const
Is property available?
Vertex & vertex(VertexHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition MeshKernel.hh:153
const Point & point(const Vertex &_v) const
Get the coordinate of a vertex.
bool has_halfedge_texcoords3D() const
Is property available?
const Vertex & vertex(VertexHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition MeshKernel.hh:152
const Face & face(FaceHandle _h) const
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition MeshKernel.hh:158
const T & property(VPropHandleT< T > _ph, VertexHandle _vh) const
Get value for item represented by the handle.
void release_vertex_texcoords3D()
Remove property.
void set_color(EdgeHandle _eh, const Color &_c)
Set color.
HalfedgeHandle next_halfedge_handle(HalfedgeHandle _heh) const
Get the next halfedge handle.
FinalMeshItems::Color Color
Derive this type from the FinalMeshItems.
Definition MeshKernel.hh:98
EdgeHandle handle(const Edge &_e) const
Translate item to handle.
bool has_vertex_texcoords1D() const
Is property available?
bool has_vertex_status() const
Is property available?
bool halfedges_empty() const
Is the halfedge container empty (should be the same as edges_empty()).
VertexHandle from_vertex_handle(HalfedgeHandle _heh) const
Get the vertex the halfedge starts from (implemented as to-handle of the opposite halfedge,...
const T & property(EPropHandleT< T > _ph, EdgeHandle _vh) const
Get value for item represented by the handle.
void remove_last_edge()
Remove the last edge imidiately, i.e.
Definition MeshKernel.hh:213
bool has_vertex_texcoords2D() const
Is property available?
void remove_property([VEHFM]PropHandleT< T > &)
Remove property.
const Color & color(EdgeHandle _eh) const
Get color.
void set_texcoord2D(VertexHandle _vh, const TexCoord2D &_t)
Set texture coordinate.
void set_color(HalfedgeHandle _heh, const Color &_c)
Set color.
const StatusInfo & status(EdgeHandle _vh) const
Get status.
Face & face(FaceHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition MeshKernel.hh:159
void release_vertex_texcoords2D()
Remove property.
bool faces_empty() const
Is the face container empty?
void request_halfedge_normals()
Request property.
bool has_halfedge_texcoords2D() const
Is property available?
Edge & edge(EdgeHandle _h)
Translate handle to item (see also OpenMesh::PolyMeshT::deref())
Definition MeshKernel.hh:157
size_t n_faces() const
Returns number of faces.
const T & property(FPropHandleT< T > _ph, FaceHandle _vh) const
Get value for item represented by the handle.
const Normal & normal(VertexHandle _vh) const
Get normal.
KernelEdgeIter edges_end()
Kernel item iterator.
void request_edge_colors()
Request property.
const TexCoord1D & texcoord1D(HalfedgeHandle _hh) const
Get texture coordinate of the to vertex for the current face (per face per vertex texcoords)
void request_halfedge_texcoords1D()
Request property.
size_t n_halfedges() const
Returns number of halfedges (should be 2*n_edges())
const PropertyT< T > & mproperty(MPropHandleT< T > _ph) const
Get property.
const Color & color(FaceHandle _fh) const
Get color.
void request_face_normals()
Request property.
bool has_vertex_texcoords3D() const
Is property available?
const T & property(MPropHandleT< T > _ph) const
Get value for item represented by the handle.
VertexHandle to_vertex_handle(HalfedgeHandle _heh) const
Get the vertex the halfedge points to.
void set_texcoord3D(VertexHandle _vh, const TexCoord3D &_t)
Set texture coordinate.
Default property class for any type T.
Definition Property.hh:95
Handle representing a vertex property.
Definition Property.hh:488
Handle representing a halfedge property.
Definition Property.hh:502
Handle representing an edge property.
Definition Property.hh:516
Handle representing a face property.
Definition Property.hh:530
Handle representing a mesh property.
Definition Property.hh:544

Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .