16 #include "../geometry/GeomUtils.h"
18 #include "../system/BaseIterator.h"
19 #include "../system/FreestyleConfig.h"
21 #ifdef WITH_CXX_GUARDEDALLOC
129 return _VEdges.begin();
134 return _VEdges.end();
139 return _VEdges.size();
146 return _shapeIdToIndex;
160 _VEdges.push_back(iVEdge);
165 _VVertices.push_back(iVVertex);
170 _FEdges.push_back(iFEdge);
175 _SVertices.push_back(iSVertex);
221 virtual void Clean();
223 #ifdef WITH_CXX_GUARDEDALLOC
224 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:ViewMap")
239 namespace ViewVertexInternal {
301 _Nature = iBrother._Nature;
360 #ifdef WITH_CXX_GUARDEDALLOC
361 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:ViewVertex")
394 cerr <<
"Warning: getX() undefined for this point" << endl;
395 return _FrontSVertex->
point3D().
x();
400 cerr <<
"Warning: getX() undefined for this point" << endl;
401 return _FrontSVertex->
point3D().
y();
406 cerr <<
"Warning: getX() undefined for this point" << endl;
407 return _FrontSVertex->
point3D().
z();
413 cerr <<
"Warning: getPoint3D() undefined for this point" << endl;
420 return _FrontSVertex->
point2D().
x();
426 return _FrontSVertex->
point2D().
y();
431 return _FrontSVertex->
point2D().
z();
479 _FrontSVertex =
NULL;
481 _FrontEdgeA.first = 0;
482 _FrontEdgeB.first = 0;
483 _BackEdgeA.first = 0;
484 _BackEdgeB.first = 0;
489 _FrontSVertex = svFront;
490 _BackSVertex = svBack;
491 _FrontEdgeA.first = 0;
492 _FrontEdgeB.first = 0;
493 _BackEdgeA.first = 0;
494 _BackEdgeB.first = 0;
503 _FrontSVertex = iBrother._FrontSVertex;
504 _BackSVertex = iBrother._BackSVertex;
505 _FrontEdgeA = iBrother._FrontEdgeA;
506 _FrontEdgeB = iBrother._FrontEdgeB;
507 _BackEdgeA = iBrother._BackEdgeA;
508 _BackEdgeB = iBrother._BackEdgeB;
509 _sortedEdges = iBrother._sortedEdges;
524 return _FrontSVertex;
557 _FrontSVertex = iFrontSVertex;
564 _BackSVertex = iBackSVertex;
582 const vector<FEdge *> &vfEdges = _FrontSVertex->
fedges();
583 vector<FEdge *>::const_iterator fe, fend;
584 for (fe = vfEdges.begin(), fend = vfEdges.end(); fe != fend; fe++) {
585 if ((*fe) == iFEdge) {
586 return _FrontSVertex;
590 const vector<FEdge *> &vbEdges = _BackSVertex->
fedges();
591 for (fe = vbEdges.begin(), fend = vbEdges.end(); fe != fend; fe++) {
592 if ((*fe) == iFEdge) {
607 if (iEdgeA == _FrontEdgeA.first) {
608 return _FrontEdgeB.first;
610 if (iEdgeA == _FrontEdgeB.first) {
611 return _FrontEdgeA.first;
613 if (iEdgeA == _BackEdgeA.first) {
614 return _BackEdgeB.first;
616 if (iEdgeA == _BackEdgeB.first) {
617 return _BackEdgeA.first;
644 #ifdef WITH_CXX_GUARDEDALLOC
645 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:TVertex")
725 return _SVertex->
getId();
768 _SVertex = iBrother._SVertex;
770 _ViewEdges = iBrother._ViewEdges;
808 _ViewEdges = iViewEdges;
827 edges_container::iterator insertedve;
828 for (edges_container::iterator ve = _ViewEdges.begin(), vend = _ViewEdges.end(); ve != vend;
830 if ((ve)->first == iOld) {
831 insertedve = _ViewEdges.insert(
836 _ViewEdges.erase(insertedve);
864 #ifdef WITH_CXX_GUARDEDALLOC
865 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:NonTVertex")
887 namespace ViewEdgeInternal {
940 unsigned _ChainingTimeStamp;
946 vector<ViewShape *> _Occluders;
965 _ChainingTimeStamp = 0;
980 _ChainingTimeStamp = 0;
995 _ChainingTimeStamp = 0;
1011 _ChainingTimeStamp = 0;
1015 _splittingId =
NULL;
1026 _FEdgeA = iBrother._FEdgeA;
1027 _FEdgeB = iBrother._FEdgeB;
1028 _Nature = iBrother._Nature;
1031 _ChainingTimeStamp = iBrother._ChainingTimeStamp;
1032 _aShape = iBrother._aShape;
1034 _splittingId =
NULL;
1035 _isInImage = iBrother._isInImage;
1059 if (*_splittingId == _Id) {
1060 delete _splittingId;
1116 return _ChainingTimeStamp;
1136 return _splittingId;
1205 _ChainingTimeStamp = ts;
1210 _Occluders.push_back(iShape);
1227 FEdge *current = _FEdgeA;
1237 }
while ((current != 0) && (current != _FEdgeA));
1245 FEdge *current = _FEdgeA;
1256 }
while ((current != 0) && (current != _FEdgeA));
1269 float viewedge_length()
const;
1289 return _Occluders.begin();
1294 return _Occluders.end();
1299 return _Occluders.size();
1304 return _Occluders.empty();
1309 return (_FEdgeA->
aFace());
1383 #ifdef WITH_CXX_GUARDEDALLOC
1384 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:ViewEdge")
1400 vector<ViewVertex *> _Vertices;
1401 vector<ViewEdge *> _Edges;
1429 vector<ViewVertex *>::iterator vv, vvend;
1430 vector<ViewEdge *>::iterator ve, veend;
1432 _SShape = iBrother._SShape;
1434 vector<ViewVertex *> &vvertices = iBrother.
vertices();
1436 for (vv = vvertices.begin(), vvend = vvertices.end(); vv != vvend; vv++) {
1441 vector<ViewEdge *> &vvedges = iBrother.
edges();
1443 for (ve = vvedges.begin(), veend = vvedges.end(); ve != veend; ve++) {
1451 for (vv = _Vertices.begin(), vvend = _Vertices.end(); vv != vvend; vv++) {
1452 switch ((*vv)->getNature()) {
1460 v->setFrontEdgeA(veFrontA,
v->frontEdgeA().second);
1461 v->setFrontEdgeB(veFrontB,
v->frontEdgeB().second);
1462 v->setBackEdgeA(veBackA,
v->backEdgeA().second);
1463 v->setBackEdgeB(veBackB,
v->backEdgeB().second);
1467 vector<ViewVertex::directedViewEdge> &vedges = (
v)->viewedges();
1468 vector<ViewVertex::directedViewEdge> newEdges;
1469 for (vector<ViewVertex::directedViewEdge>::iterator ve = vedges.begin(),
1470 veend = vedges.end();
1476 (
v)->setViewEdges(newEdges);
1486 for (ve = _Edges.begin(), veend = _Edges.end(); ve != veend; ve++) {
1487 (*ve)->setA((
ViewVertex *)((*ve)->A()->userdata));
1488 (*ve)->setB((
ViewVertex *)((*ve)->B()->userdata));
1492 (*ve)->UpdateFEdges();
1500 for (vv = vvertices.begin(), vvend = vvertices.end(); vv != vvend; vv++) {
1501 (*vv)->userdata =
NULL;
1507 for (ve = vvedges.begin(), veend = vvedges.end(); ve != veend; ve++) {
1508 (*ve)->userdata =
NULL;
1533 const vector<TVertex *> &iViewVertices,
1534 vector<FEdge *> &ioNewEdges,
1535 vector<ViewEdge *> &ioNewViewEdges);
1565 return _SShape->
getId();
1590 _Vertices = iVertices;
1602 _Vertices.push_back(iVertex);
1609 _Edges.push_back(iEdge);
1622 #ifdef WITH_CXX_GUARDEDALLOC
1623 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:ViewShape")
1641 const vector<TVertex *> &iViewVertices,
1642 vector<FEdge *> &ioNewEdges,
1643 vector<ViewEdge *> &ioNewViewEdges)
1650 vector<TVertex *>::const_iterator vv, vvend;
1651 for (vv = iViewVertices.begin(), vvend = iViewVertices.end(); vv != vvend; vv++) {
1657 sv = (*vv)->frontSVertex();
1658 sv2 = (*vv)->backSVertex();
1661 if (sv->
shape() != _SShape) {
1686 ioNewEdges.push_back(newEdge);
1689 if ((vva == 0) || (vvb == 0)) {
1705 newVEdge =
new ViewEdge((*vv), vvb);
1719 newId =
new Id(vEdge->
getId());
1723 newVEdge->
setId(*newId);
1734 ioNewViewEdges.push_back(newVEdge);
1737 vvb->
Replace((vEdge), newVEdge);
1748 if (sv == (*vv)->frontSVertex()) {
1750 (*vv)->setFrontEdgeA(vEdge,
true);
1751 (*vv)->setFrontEdgeB(newVEdge,
false);
1755 (*vv)->setBackEdgeA(vEdge,
true);
1756 (*vv)->setBackEdgeB(newVEdge,
false);
1770 inline Vec3r ViewEdge::orientation2d(
int iCombination)
const
1772 return edge_orientation2d_function<ViewEdge>(*
this, iCombination);
1775 inline Vec3r ViewEdge::orientation3d(
int iCombination)
const
1777 return edge_orientation3d_function<ViewEdge>(*
this, iCombination);
1780 inline real ViewEdge::z_discontinuity(
int iCombination)
const
1782 return z_discontinuity_edge_function<ViewEdge>(*
this, iCombination);
1785 inline float ViewEdge::local_average_depth(
int iCombination)
const
1787 return local_average_depth_edge_function<ViewEdge>(*
this, iCombination);
1790 inline float ViewEdge::local_depth_variance(
int iCombination)
const
1792 return local_depth_variance_edge_function<ViewEdge>(*
this, iCombination);
1795 inline real ViewEdge::local_average_density(
float sigma,
int iCombination)
const
1797 return density_edge_function<ViewEdge>(*
this, iCombination);
1806 return _aShape->
sshape();
1810 inline Vec3r ViewEdge::curvature2d_as_vector(
int iCombination)
const
1812 return curvature2d_as_vector_edge_function<ViewEdge>(*
this, iCombination);
1815 inline real ViewEdge::curvature2d_as_angle(
int iCombination)
const
1817 return curvature2d_as_angle_edge_function<ViewEdge>(*
this, iCombination);
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t
Interface 1D and related tools definitions.
Read Guarded memory(de)allocation.
Classes to define a silhouette structure.
ATTR_WARN_UNUSED_RESULT const BMVert * v
const Polygon3r & aFace() const
ViewEdge * viewedge() const
void setViewEdge(ViewEdge *iViewEdge)
float shape_importance() const
id_type getSecond() const
void setSecond(id_type second)
virtual void Replace(ViewEdge *iOld, ViewEdge *iNew)
void AddIncomingViewEdge(ViewEdge *iVEdge)
virtual Vec3r getPoint3D() const
virtual real getProjectedX() const
virtual string getExactTypeName() const
vector< directedViewEdge > edges_container
virtual ViewVertexInternal::orientedViewEdgeIterator edgesBegin()
NonTVertex(NonTVertex &iBrother)
virtual edge_iterator edges_iterator(ViewEdge *iEdge)
virtual real getZ() const
edges_container & viewedges()
virtual edge_iterator edges_begin()
virtual real getProjectedY() const
void AddViewEdge(ViewEdge *iVEdge, bool incoming=true)
void AddOutgoingViewEdge(ViewEdge *iVEdge)
virtual real getProjectedZ() const
virtual ViewVertexInternal::orientedViewEdgeIterator edgesEnd()
void setViewEdges(const vector< directedViewEdge > &iViewEdges)
virtual Vec2r getPoint2D() const
void setSVertex(SVertex *iSVertex)
virtual real getY() const
virtual ViewVertex * castToViewVertex()
virtual real getX() const
virtual NonTVertex * castToNonTVertex()
virtual ViewVertexInternal::orientedViewEdgeIterator edgesIterator(ViewEdge *iEdge)
virtual edge_iterator edges_end()
NonTVertex(SVertex *iSVertex)
virtual SVertex * castToSVertex()
virtual ViewVertex * duplicate()
void RemoveEdgeFromChain(FEdge *iEdge)
const string & getName() const
FEdge * SplitEdgeIn2(FEdge *ioEdge, SVertex *ioNewVertex)
const string & getLibraryPath() const
const vector< FEdge * > & fedges()
void setViewVertex(ViewVertex *iViewVertex)
virtual Vec3r getPoint3D() const
virtual Vec2r getPoint2D() const
const Vec3r & point3D() const
const Vec3r & point2D() const
virtual real getProjectedY() const
void setId(const Id &iId)
directedViewEdge & frontEdgeB()
directedViewEdge & frontEdgeA()
void setBackEdgeA(ViewEdge *iBackEdgeA, bool incoming=true)
virtual edge_iterator edges_iterator(ViewEdge *iEdge)
directedViewEdge & backEdgeB()
virtual string getExactTypeName() const
virtual Vec2r getPoint2D() const
virtual ViewVertexInternal::orientedViewEdgeIterator edgesIterator(ViewEdge *iEdge)
virtual edge_iterator edges_begin()
void setBackEdgeB(ViewEdge *iBackEdgeB, bool incoming=true)
virtual Vec3r getPoint3D() const
virtual real getProjectedZ() const
void setBackSVertex(SVertex *iBackSVertex)
virtual real getX() const
virtual edge_iterator edges_end()
void setFrontEdgeB(ViewEdge *iFrontEdgeB, bool incoming=true)
virtual ViewEdge * mate(ViewEdge *iEdgeA)
virtual real getProjectedX() const
TVertex(TVertex &iBrother)
virtual void Replace(ViewEdge *iOld, ViewEdge *iNew)
virtual ViewVertex * duplicate()
directedViewEdge & backEdgeA()
virtual real getZ() const
virtual ViewVertex * castToViewVertex()
virtual TVertex * castToTVertex()
void setFrontSVertex(SVertex *iFrontSVertex)
void setFrontEdgeA(ViewEdge *iFrontEdgeA, bool incoming=true)
TVertex(SVertex *svFront, SVertex *svBack)
virtual real getY() const
SVertex * getSVertex(FEdge *iFEdge)
virtual ViewVertexInternal::orientedViewEdgeIterator edgesBegin()
virtual ViewVertexInternal::orientedViewEdgeIterator edgesEnd()
vector< directedViewEdge * > edge_pointers_container
const_vertex_iterator vertices_end() const
virtual string getExactTypeName() const
void setaShape(ViewShape *iShape)
virtual Nature::EdgeNature getNature() const
ViewEdge(ViewVertex *iA, ViewVertex *iB, FEdge *iFEdgeA, FEdge *iFEdgeB, ViewShape *iShape)
vector< ViewShape * > & occluders()
ViewEdge(ViewVertex *iA, ViewVertex *iB)
ViewEdge(ViewVertex *iA, ViewVertex *iB, FEdge *iFEdgeA)
void setFEdgeB(FEdge *iFEdge)
fedge_iterator fedge_iterator_last()
fedge_iterator fedge_iterator_end()
ViewEdgeInternal::edge_iterator_base< Const_traits< ViewEdge * > > const_edge_iterator
void setA(ViewVertex *iA)
occluder_container::const_iterator occluders_begin() const
const ViewShape * bShape() const
bool include_in_2d_area(const Vec2r &iMin, const Vec2r &iMax) const
edge_iterator ViewEdge_iterator()
view edge iterator
float shape_importance() const
bool intersect_2d_area(const Vec2r &iMin, const Vec2r &iMax) const
ViewEdgeInternal::fedge_iterator_base< Const_traits< FEdge * > > const_fedge_iterator
void setFEdgeA(FEdge *iFEdge)
const_vertex_iterator vertices_last() const
void setShape(ViewShape *iVShape)
virtual Interface0DIterator pointsBegin(float t=0.0f)
const bool occludee_empty() const
ViewEdgeInternal::vertex_iterator_base< Nonconst_traits< SVertex * > > vertex_iterator
virtual Interface0DIterator pointsEnd(float t=0.0f)
bool occluders_empty() const
int occluders_size() const
ViewEdgeInternal::edge_iterator_base< Nonconst_traits< ViewEdge * > > edge_iterator
const_vertex_iterator vertices_begin() const
embedding vertex iterator
fedge_iterator fedge_iterator_begin()
feature edge iterator
void setChainingTimeStamp(unsigned ts)
void setSplittingId(Id *id)
virtual ViewEdge * duplicate()
virtual Interface0DIterator verticesBegin()
const SShape * shape() const
void AddOccluder(ViewShape *iShape)
ViewEdgeInternal::vertex_iterator_base< Const_traits< SVertex * > > const_vertex_iterator
void setIsInImage(bool iFlag)
virtual Interface0DIterator verticesEnd()
void setNature(Nature::EdgeNature iNature)
const SShape * occluded_shape() const
const Polygon3r & occludee() const
unsigned getChainingTimeStamp()
occluder_container::const_iterator occluders_end() const
ViewEdgeInternal::fedge_iterator_base< Nonconst_traits< FEdge * > > fedge_iterator
ViewEdge(ViewEdge &iBrother)
void setB(ViewVertex *iB)
const ViewShape * aShape() const
vector< FEdge * > fedges_container
ViewShape * viewShape(unsigned id)
vector< SVertex * > svertices_container
const FEdge * getClosestFEdge(real x, real y) const
void AddViewShape(ViewShape *iVShape)
vector< ViewVertex * > viewvertices_container
viewedges_container::iterator viewedges_begin()
vector< ViewShape * > viewshapes_container
const ViewEdge * getClosestViewEdge(real x, real y) const
void AddSVertex(SVertex *iSVertex)
vector< ViewEdge * > viewedges_container
viewshapes_container & ViewShapes()
TVertex * CreateTVertex(const Vec3r &iA3D, const Vec3r &iA2D, FEdge *iFEdgeA, const Vec3r &iB3D, const Vec3r &iB2D, FEdge *iFEdgeB, const Id &id)
svertices_container & SVertices()
viewedges_container::iterator viewedges_end()
BBox< Vec3r > getScene3dBBox() const
viewvertices_container & ViewVertices()
void setScene3dBBox(const BBox< Vec3r > &bbox)
fedges_container & FEdges()
void AddFEdge(FEdge *iFEdge)
id_to_index_map & shapeIdToIndexMap()
ViewVertex * InsertViewVertex(SVertex *iVertex, vector< ViewEdge * > &newViewEdges)
void AddViewVertex(ViewVertex *iVVertex)
void AddViewEdge(ViewEdge *iVEdge)
static ViewMap * getInstance()
map< int, int > id_to_index_map
viewedges_container & ViewEdges()
const string & getName() const
vector< ViewEdge * > & edges()
void setVertices(const vector< ViewVertex * > &iVertices)
ViewShape(SShape *iSShape)
const SShape * sshape() const
void AddVertex(ViewVertex *iVertex)
vector< ViewVertex * > & vertices()
void SplitEdge(FEdge *fe, const vector< TVertex * > &iViewVertices, vector< FEdge * > &ioNewEdges, vector< ViewEdge * > &ioNewViewEdges)
void setSShape(SShape *iSShape)
const string & getLibraryPath() const
void RemoveVertex(ViewVertex *iViewVertex)
void setEdges(const vector< ViewEdge * > &iEdges)
void RemoveEdge(ViewEdge *iViewEdge)
void AddEdge(ViewEdge *iEdge)
ViewShape(ViewShape &iBrother)
virtual ViewShape * duplicate()
ViewVertexInternal::edge_iterator_base< ViewVertexInternal::edge_const_traits > const_edge_iterator
pair< ViewEdge *, bool > directedViewEdge
virtual Nature::VertexNature getNature() const
virtual ViewVertexInternal::orientedViewEdgeIterator edgesBegin()=0
virtual const_edge_iterator edges_begin() const =0
virtual const_edge_iterator edges_end() const =0
virtual const_edge_iterator edges_iterator(ViewEdge *iEdge) const =0
ViewVertex(ViewVertex &iBrother)
virtual edge_iterator edges_end()=0
virtual ViewVertexInternal::orientedViewEdgeIterator edgesIterator(ViewEdge *iEdge)=0
virtual string getExactTypeName() const
ViewVertex(Nature::VertexNature nature)
virtual ViewVertex * duplicate()=0
virtual edge_iterator edges_begin()=0
virtual edge_iterator edges_iterator(ViewEdge *iEdge)=0
vector< directedViewEdge > edges_container
virtual void Replace(ViewEdge *, ViewEdge *)
virtual ViewVertexInternal::orientedViewEdgeIterator edgesEnd()=0
ViewVertexInternal::edge_iterator_base< ViewVertexInternal::edge_nonconst_traits > edge_iterator
void setNature(Nature::VertexNature iNature)
bool intersect2dSeg2dArea(const Vec2r &min, const Vec2r &max, const Vec2r &A, const Vec2r &B)
bool include2dSeg2dArea(const Vec2r &min, const Vec2r &max, const Vec2r &A, const Vec2r &B)
VecMat::Vec2< real > Vec2r
VecMat::Vec3< real > Vec3r
unsigned short VertexNature
unsigned short EdgeNature
static const VertexNature VIEW_VERTEX
static const VertexNature T_VERTEX
static const VertexNature NON_T_VERTEX