30 #include "../geometry/GeomUtils.h"
32 #include "../system/BaseIterator.h"
33 #include "../system/FreestyleConfig.h"
35 #ifdef WITH_CXX_GUARDEDALLOC
143 return _VEdges.begin();
148 return _VEdges.end();
153 return _VEdges.size();
160 return _shapeIdToIndex;
174 _VEdges.push_back(iVEdge);
179 _VVertices.push_back(iVVertex);
184 _FEdges.push_back(iFEdge);
189 _SVertices.push_back(iSVertex);
235 virtual void Clean();
237 #ifdef WITH_CXX_GUARDEDALLOC
238 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:ViewMap")
253 namespace ViewVertexInternal {
315 _Nature = iBrother._Nature;
374 #ifdef WITH_CXX_GUARDEDALLOC
375 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:ViewVertex")
408 cerr <<
"Warning: getX() undefined for this point" << endl;
409 return _FrontSVertex->
point3D().
x();
414 cerr <<
"Warning: getX() undefined for this point" << endl;
415 return _FrontSVertex->
point3D().
y();
420 cerr <<
"Warning: getX() undefined for this point" << endl;
421 return _FrontSVertex->
point3D().
z();
427 cerr <<
"Warning: getPoint3D() undefined for this point" << endl;
434 return _FrontSVertex->
point2D().
x();
440 return _FrontSVertex->
point2D().
y();
445 return _FrontSVertex->
point2D().
z();
489 _FrontSVertex =
NULL;
491 _FrontEdgeA.first = 0;
492 _FrontEdgeB.first = 0;
493 _BackEdgeA.first = 0;
494 _BackEdgeB.first = 0;
499 _FrontSVertex = svFront;
500 _BackSVertex = svBack;
501 _FrontEdgeA.first = 0;
502 _FrontEdgeB.first = 0;
503 _BackEdgeA.first = 0;
504 _BackEdgeB.first = 0;
513 _FrontSVertex = iBrother._FrontSVertex;
514 _BackSVertex = iBrother._BackSVertex;
515 _FrontEdgeA = iBrother._FrontEdgeA;
516 _FrontEdgeB = iBrother._FrontEdgeB;
517 _BackEdgeA = iBrother._BackEdgeA;
518 _BackEdgeB = iBrother._BackEdgeB;
519 _sortedEdges = iBrother._sortedEdges;
534 return _FrontSVertex;
567 _FrontSVertex = iFrontSVertex;
574 _BackSVertex = iBackSVertex;
592 const vector<FEdge *> &vfEdges = _FrontSVertex->
fedges();
593 vector<FEdge *>::const_iterator fe, fend;
594 for (fe = vfEdges.begin(), fend = vfEdges.end(); fe != fend; fe++) {
595 if ((*fe) == iFEdge) {
596 return _FrontSVertex;
600 const vector<FEdge *> &vbEdges = _BackSVertex->
fedges();
601 for (fe = vbEdges.begin(), fend = vbEdges.end(); fe != fend; fe++) {
602 if ((*fe) == iFEdge) {
617 if (iEdgeA == _FrontEdgeA.first) {
618 return _FrontEdgeB.first;
620 if (iEdgeA == _FrontEdgeB.first) {
621 return _FrontEdgeA.first;
623 if (iEdgeA == _BackEdgeA.first) {
624 return _BackEdgeB.first;
626 if (iEdgeA == _BackEdgeB.first) {
627 return _BackEdgeA.first;
654 #ifdef WITH_CXX_GUARDEDALLOC
655 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:TVertex")
735 return _SVertex->
getId();
778 _SVertex = iBrother._SVertex;
780 _ViewEdges = iBrother._ViewEdges;
818 _ViewEdges = iViewEdges;
837 edges_container::iterator insertedve;
838 for (edges_container::iterator ve = _ViewEdges.begin(), vend = _ViewEdges.end(); ve != vend;
840 if ((ve)->first == iOld) {
841 insertedve = _ViewEdges.insert(
846 _ViewEdges.erase(insertedve);
874 #ifdef WITH_CXX_GUARDEDALLOC
875 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:NonTVertex")
897 namespace ViewEdgeInternal {
950 unsigned _ChainingTimeStamp;
956 vector<ViewShape *> _Occluders;
975 _ChainingTimeStamp = 0;
990 _ChainingTimeStamp = 0;
1005 _ChainingTimeStamp = 0;
1009 _splittingId =
NULL;
1021 _ChainingTimeStamp = 0;
1025 _splittingId =
NULL;
1036 _FEdgeA = iBrother._FEdgeA;
1037 _FEdgeB = iBrother._FEdgeB;
1038 _Nature = iBrother._Nature;
1041 _ChainingTimeStamp = iBrother._ChainingTimeStamp;
1042 _aShape = iBrother._aShape;
1044 _splittingId =
NULL;
1045 _isInImage = iBrother._isInImage;
1069 if (*_splittingId == _Id) {
1070 delete _splittingId;
1126 return _ChainingTimeStamp;
1146 return _splittingId;
1215 _ChainingTimeStamp = ts;
1220 _Occluders.push_back(iShape);
1237 FEdge *current = _FEdgeA;
1247 }
while ((current != 0) && (current != _FEdgeA));
1255 FEdge *current = _FEdgeA;
1266 }
while ((current != 0) && (current != _FEdgeA));
1279 float viewedge_length()
const;
1299 return _Occluders.begin();
1304 return _Occluders.end();
1309 return _Occluders.size();
1314 return _Occluders.empty();
1319 return (_FEdgeA->
aFace());
1393 #ifdef WITH_CXX_GUARDEDALLOC
1394 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:ViewEdge")
1410 vector<ViewVertex *> _Vertices;
1411 vector<ViewEdge *> _Edges;
1439 vector<ViewVertex *>::iterator vv, vvend;
1440 vector<ViewEdge *>::iterator ve, veend;
1442 _SShape = iBrother._SShape;
1444 vector<ViewVertex *> &vvertices = iBrother.
vertices();
1446 for (vv = vvertices.begin(), vvend = vvertices.end(); vv != vvend; vv++) {
1451 vector<ViewEdge *> &vvedges = iBrother.
edges();
1453 for (ve = vvedges.begin(), veend = vvedges.end(); ve != veend; ve++) {
1461 for (vv = _Vertices.begin(), vvend = _Vertices.end(); vv != vvend; vv++) {
1462 switch ((*vv)->getNature()) {
1470 v->setFrontEdgeA(veFrontA,
v->frontEdgeA().second);
1471 v->setFrontEdgeB(veFrontB,
v->frontEdgeB().second);
1472 v->setBackEdgeA(veBackA,
v->backEdgeA().second);
1473 v->setBackEdgeB(veBackB,
v->backEdgeB().second);
1477 vector<ViewVertex::directedViewEdge> &vedges = (
v)->viewedges();
1478 vector<ViewVertex::directedViewEdge> newEdges;
1479 for (vector<ViewVertex::directedViewEdge>::iterator ve = vedges.begin(),
1480 veend = vedges.end();
1486 (
v)->setViewEdges(newEdges);
1496 for (ve = _Edges.begin(), veend = _Edges.end(); ve != veend; ve++) {
1497 (*ve)->setA((
ViewVertex *)((*ve)->A()->userdata));
1498 (*ve)->setB((
ViewVertex *)((*ve)->B()->userdata));
1502 (*ve)->UpdateFEdges();
1510 for (vv = vvertices.begin(), vvend = vvertices.end(); vv != vvend; vv++) {
1511 (*vv)->userdata =
NULL;
1517 for (ve = vvedges.begin(), veend = vvedges.end(); ve != veend; ve++) {
1518 (*ve)->userdata =
NULL;
1543 const vector<TVertex *> &iViewVertices,
1544 vector<FEdge *> &ioNewEdges,
1545 vector<ViewEdge *> &ioNewViewEdges);
1575 return _SShape->
getId();
1600 _Vertices = iVertices;
1612 _Vertices.push_back(iVertex);
1619 _Edges.push_back(iEdge);
1632 #ifdef WITH_CXX_GUARDEDALLOC
1633 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:ViewShape")
1651 const vector<TVertex *> &iViewVertices,
1652 vector<FEdge *> &ioNewEdges,
1653 vector<ViewEdge *> &ioNewViewEdges)
1660 vector<TVertex *>::const_iterator vv, vvend;
1661 for (vv = iViewVertices.begin(), vvend = iViewVertices.end(); vv != vvend; vv++) {
1667 sv = (*vv)->frontSVertex();
1668 sv2 = (*vv)->backSVertex();
1671 if (sv->
shape() != _SShape) {
1696 ioNewEdges.push_back(newEdge);
1699 if ((vva == 0) || (vvb == 0)) {
1715 newVEdge =
new ViewEdge((*vv), vvb);
1729 newId =
new Id(vEdge->
getId());
1733 newVEdge->
setId(*newId);
1744 ioNewViewEdges.push_back(newVEdge);
1747 vvb->
Replace((vEdge), newVEdge);
1758 if (sv == (*vv)->frontSVertex()) {
1760 (*vv)->setFrontEdgeA(vEdge,
true);
1761 (*vv)->setFrontEdgeB(newVEdge,
false);
1765 (*vv)->setBackEdgeA(vEdge,
true);
1766 (*vv)->setBackEdgeB(newVEdge,
false);
1780 inline Vec3r ViewEdge::orientation2d(
int iCombination)
const
1782 return edge_orientation2d_function<ViewEdge>(*
this, iCombination);
1785 inline Vec3r ViewEdge::orientation3d(
int iCombination)
const
1787 return edge_orientation3d_function<ViewEdge>(*
this, iCombination);
1790 inline real ViewEdge::z_discontinuity(
int iCombination)
const
1792 return z_discontinuity_edge_function<ViewEdge>(*
this, iCombination);
1795 inline float ViewEdge::local_average_depth(
int iCombination)
const
1797 return local_average_depth_edge_function<ViewEdge>(*
this, iCombination);
1800 inline float ViewEdge::local_depth_variance(
int iCombination)
const
1802 return local_depth_variance_edge_function<ViewEdge>(*
this, iCombination);
1805 inline real ViewEdge::local_average_density(
float sigma,
int iCombination)
const
1807 return density_edge_function<ViewEdge>(*
this, iCombination);
1816 return _aShape->
sshape();
1820 inline Vec3r ViewEdge::curvature2d_as_vector(
int iCombination)
const
1822 return curvature2d_as_vector_edge_function<ViewEdge>(*
this, iCombination);
1825 inline real ViewEdge::curvature2d_as_angle(
int iCombination)
const
1827 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