33 #include "../geometry/BBox.h"
34 #include "../geometry/Geom.h"
35 #include "../geometry/Polygon.h"
37 #include "../scene_graph/FrsMaterial.h"
39 #include "../system/Exception.h"
40 #include "../system/FreestyleConfig.h"
42 #include "../winged_edge/Curvature.h"
44 #ifdef WITH_CXX_GUARDEDALLOC
124 return Vec2r(_Point2D.x(), _Point2D.y());
140 virtual SVertex *castToSVertex();
149 virtual TVertex *castToTVertex();
159 vector<FEdge *> _FEdges;
163 real _curvatureFredo;
164 Vec2r _directionFredo;
201 _Normals = iBrother._Normals;
202 _FEdges = iBrother.
fedges();
203 _Shape = iBrother.
shape();
204 _pViewVertex = iBrother._pViewVertex;
205 if (!(iBrother._curvature_info)) {
209 _curvature_info =
new CurvatureInfo(*(iBrother._curvature_info));
218 if (_curvature_info) {
219 delete _curvature_info;
233 return ((_Point2D == iBrother._Point2D) && (_Point3D == iBrother._Point3D));
259 return _Normals.size();
269 return _FEdges.begin();
274 return _FEdges.end();
312 _Normals.insert(iNormal);
317 if (_curvature_info) {
318 delete _curvature_info;
320 _curvature_info = ci;
325 return _curvature_info;
330 void setCurvatureFredo(
real c)
335 void setDirectionFredo(
Vec2r d)
340 real curvatureFredo()
342 return _curvatureFredo;
345 const Vec2r directionFredo()
347 return _directionFredo;
369 _pViewVertex = iViewVertex;
375 _FEdges.push_back(iFEdge);
381 for (vector<FEdge *>::iterator fe = _FEdges.begin(), fend = _FEdges.end(); fe != fend; fe++) {
382 if (iFEdge == (*fe)) {
392 vector<FEdge *>::iterator insertedfe;
393 for (vector<FEdge *>::iterator fe = _FEdges.begin(), fend = _FEdges.end(); fe != fend; fe++) {
395 insertedfe = _FEdges.insert(fe, e2);
399 _FEdges.erase(insertedfe);
421 if (_Normals.size() == 1) {
422 return (*(_Normals.begin()));
424 Exception::raiseException();
425 return *(_Normals.begin());
430 const SShape *shape()
const;
431 float shape_importance()
const;
434 occluder_container::const_iterator occluders_begin()
const;
435 occluder_container::const_iterator occluders_end()
const;
436 bool occluders_empty()
const;
437 int occluders_size()
const;
439 const SShape *occluded_shape()
const;
440 bool occludee_empty()
const;
441 real z_discontinuity()
const;
443 inline float local_average_depth()
const;
444 inline float local_depth_variance()
const;
445 inline real local_average_density(
float sigma = 2.3f)
const;
446 inline Vec3r shaded_color()
const;
447 inline Vec3r orientation2d()
const;
448 inline Vec3r orientation3d()
const;
449 inline Vec3r curvature2d_as_vector()
const;
451 inline real curvature2d_as_angle()
const;
454 #ifdef WITH_CXX_GUARDEDALLOC
455 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:SVertex")
490 if (!_VertexA || !_VertexB) {
493 return (_VertexB->getPoint2D() - _VertexA->getPoint2D()).norm();
549 _PreviousEdge =
NULL;
552 _occludeeEmpty =
true;
555 _isTemporary =
false;
566 _PreviousEdge =
NULL;
569 _occludeeEmpty =
true;
572 _isTemporary =
false;
625 return (i % 2 == 0) ? _VertexA : _VertexB;
647 return _PreviousEdge;
652 return _VertexA->
shape();
656 inline int invisibility()
const
658 return _Occluders.size();
662 int invisibility()
const;
665 inline const vector<Polygon3r> &occluders()
const
688 inline bool hasVisibilityPoint()
const
690 return _hasVisibilityPoint;
693 inline Vec3r visibilityPointA()
const
695 return _VisibilityPointA;
698 inline Vec3r visibilityPointB()
const
700 return _VisibilityPointB;
711 return _occludeeIntersection;
716 return _occludeeEmpty;
763 _PreviousEdge = iEdge;
773 inline void AddOccluder(
Polygon3r &iPolygon)
775 _Occluders.push_back(iPolygon);
782 _ViewEdge = iViewEdge;
786 inline void setHasVisibilityPoint(
bool iBool)
788 _hasVisibilityPoint = iBool;
791 inline void setVisibilityPointA(
const Vec3r &iPoint)
793 _VisibilityPointA = iPoint;
796 inline void setVisibilityPointB(
const Vec3r &iPoint)
798 _VisibilityPointB = iPoint;
809 _occludeeIntersection = iPoint;
814 _occludeeEmpty = iempty;
832 _isTemporary = iFlag;
840 if ((
NULL == iEdge1) || (
NULL == iEdge2)) {
849 if ((sv1 == sv3) || (sv1 == sv4)) {
852 else if ((sv2 == sv3) || (sv2 == sv4)) {
883 const SShape *shape()
const;
884 float shape_importance()
const;
886 inline const int qi()
const
888 return invisibility();
891 occluder_container::const_iterator occluders_begin()
const;
892 occluder_container::const_iterator occluders_end()
const;
893 bool occluders_empty()
const;
894 int occluders_size()
const;
901 const SShape *occluded_shape()
const;
904 inline const bool occludee_empty()
const
906 return _occludeeEmpty;
910 bool occludee_empty()
const;
911 real z_discontinuity()
const;
914 inline float local_average_depth(
int iCombination = 0)
const;
915 inline float local_depth_variance(
int iCombination = 0)
const;
916 inline real local_average_density(
float sigma = 2.3f,
int iCombination = 0)
const;
917 inline Vec3r shaded_color(
int iCombination = 0)
const
922 int viewedge_nature()
const;
937 inline real curvature2d()
const
939 return viewedge()->curvature2d((_VertexA->
point2d() + _VertexB->
point2d()) / 2.0);
942 inline Vec3r curvature2d_as_vector(
int iCombination = 0)
const;
945 inline real curvature2d_as_angle(
int iCombination = 0)
const;
950 virtual inline Interface0DIterator verticesBegin();
953 virtual inline Interface0DIterator verticesEnd();
961 virtual inline Interface0DIterator pointsBegin(
float t = 0.0f);
969 virtual inline Interface0DIterator pointsEnd(
float t = 0.0f);
971 #ifdef WITH_CXX_GUARDEDALLOC
972 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:FEdge")
981 namespace FEdgeInternal {
993 _vertex = vi._vertex;
1005 _vertex = vi._vertex;
1012 return "SVertexIterator";
1053 if (_vertex == _edge->vertexB()) {
1057 _vertex = _edge->vertexB();
1063 if (_vertex == _edge->vertexA()) {
1067 _vertex = _edge->vertexA();
1073 return _vertex == _edge->vertexA();
1078 return _vertex == _edge->vertexB();
1087 return ((_vertex == it_exact->_vertex) && (_edge == it_exact->_edge));
1090 virtual float t()
const
1092 if (_vertex == _edge->vertexA()) {
1095 return ((
float)_edge->getLength2D());
1097 virtual float u()
const
1099 if (_vertex == _edge->vertexA()) {
1133 return verticesBegin();
1138 return verticesEnd();
1159 return "FEdgeSharp";
1165 _aFrsMaterialIndex = _bFrsMaterialIndex = 0;
1166 _aFaceMark = _bFaceMark =
false;
1172 _aFrsMaterialIndex = _bFrsMaterialIndex = 0;
1173 _aFaceMark = _bFaceMark =
false;
1219 return _aFrsMaterialIndex;
1230 return _bFrsMaterialIndex;
1265 _aFrsMaterialIndex = i;
1271 _bFrsMaterialIndex = i;
1277 _aFaceMark = iFaceMark;
1283 _bFaceMark = iFaceMark;
1286 #ifdef WITH_CXX_GUARDEDALLOC
1287 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:FEdgeSharp")
1299 bool _hasVisibilityPoint;
1300 Vec3r _VisibilityPointA;
1301 Vec3r _VisibilityPointB;
1311 return "FEdgeSmooth";
1319 _FrsMaterialIndex = 0;
1328 _FrsMaterialIndex = 0;
1336 _Face = iBrother.
_Face;
1374 return _FrsMaterialIndex;
1388 _FaceMark = iFaceMark;
1400 _FrsMaterialIndex = i;
1403 #ifdef WITH_CXX_GUARDEDALLOC
1404 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:FEdgeSmooth")
1420 vector<FEdge *> _chains;
1421 vector<SVertex *> _verticesList;
1422 vector<FEdge *> _edgesList;
1425 string _LibraryPath;
1427 vector<FrsMaterial> _FrsMaterials;
1452 _Name = iBrother._Name;
1453 _LibraryPath = iBrother._LibraryPath;
1454 _BBox = iBrother.
bbox();
1455 _FrsMaterials = iBrother._FrsMaterials;
1456 _importance = iBrother._importance;
1457 _ViewShape = iBrother._ViewShape;
1462 vector<SVertex *>::iterator sv, svend;
1464 for (sv = verticesList.begin(), svend = verticesList.end(); sv != svend; sv++) {
1467 _verticesList.push_back(newv);
1473 vector<FEdge *>::iterator
e, eend;
1474 vector<FEdge *> &edgesList = iBrother.
getEdgeList();
1475 for (
e = edgesList.begin(), eend = edgesList.end();
e != eend;
e++) {
1477 _edgesList.push_back(newe);
1483 vector<FEdge *>::iterator fe, fend;
1484 vector<FEdge *> &fedges = iBrother.
getChains();
1485 for (fe = fedges.begin(), fend = fedges.end(); fe != fend; fe++) {
1486 _chains.push_back((
FEdge *)((*fe)->userdata));
1492 for (sv = _verticesList.begin(), svend = _verticesList.end(); sv != svend; sv++) {
1493 const vector<FEdge *> &fedgeList = (*sv)->fedges();
1494 vector<FEdge *> newfedgelist;
1495 for (vector<FEdge *>::const_iterator fed = fedgeList.begin(), fedend = fedgeList.end();
1498 FEdge *current = *fed;
1501 (*sv)->setFEdges(newfedgelist);
1507 for (
e = _edgesList.begin(), eend = _edgesList.end();
e != eend;
e++) {
1509 (*e)->setVertexB((
SVertex *)((*e)->vertexB()->userdata));
1510 (*e)->setNextEdge((
FEdge *)((*e)->nextEdge()->userdata));
1511 (*e)->setPreviousEdge((
FEdge *)((*e)->previousEdge()->userdata));
1519 for (sv = _verticesList.begin(), svend = _verticesList.end(); sv != svend; sv++) {
1520 (*sv)->userdata =
NULL;
1526 for (
e = _edgesList.begin(), eend = _edgesList.end();
e != eend;
e++) {
1527 (*e)->userdata =
NULL;
1541 vector<SVertex *>::iterator sv, svend;
1542 vector<FEdge *>::iterator
e, eend;
1543 if (0 != _verticesList.size()) {
1544 for (sv = _verticesList.begin(), svend = _verticesList.end(); sv != svend; sv++) {
1547 _verticesList.clear();
1550 if (0 != _edgesList.size()) {
1551 for (
e = _edgesList.begin(), eend = _edgesList.end();
e != eend;
e++) {
1559 if (0 != _chains.size()) {
1567 _edgesList.push_back(iEdge);
1576 _verticesList.push_back(iv);
1581 _chains.push_back(iEdge);
1610 inline void SplitEdge(
FEdge *fe,
const vector<Vec2r> &iParameters, vector<FEdge *> &ioNewEdges)
1619 Vec3r newpoint3d, newpoint2d;
1620 vector<SVertex *> intersections;
1622 for (vector<Vec2r>::const_iterator p = iParameters.begin(), pend = iParameters.end();
1628 if ((
t < 0) || (
t > 1)) {
1629 cerr <<
"Warning: Intersection out of range for edge " << ioA->
getId() <<
" - "
1630 << ioB->
getId() << endl;
1635 newpoint2d =
Vec3r(
a +
t * (b -
a));
1643 intersections.push_back(newVertex);
1646 AddNewVertex(newVertex);
1649 for (vector<SVertex *>::iterator sv = intersections.begin(), svend = intersections.end();
1659 (fe)->setVertexB((*sv));
1683 ioNewEdges.push_back(newEdge);
1694 (fe)->setNextEdge(
NULL);
1700 (*sv)->AddFEdge((fe));
1701 (*sv)->AddFEdge(newEdge);
1757 B->Replace(ioEdge, newEdge);
1785 if (0 == _verticesList.size()) {
1789 Vec3r firstVertex = _verticesList[0]->point3D();
1790 real XMax = firstVertex[0];
1791 real YMax = firstVertex[1];
1792 real ZMax = firstVertex[2];
1794 real XMin = firstVertex[0];
1795 real YMin = firstVertex[1];
1796 real ZMin = firstVertex[2];
1798 vector<SVertex *>::iterator
v, vend;
1800 for (
v = _verticesList.begin(), vend = _verticesList.end();
v != vend;
v++) {
1801 Vec3r vertex = (*v)->point3D();
1807 else if (
x < XMin) {
1816 else if (
y < YMin) {
1825 else if (
z < ZMin) {
1835 for (vector<FEdge *>::iterator fe = _chains.begin(), feend = _chains.end(); fe != feend;
1837 if (iEdge == (*fe)) {
1846 for (vector<FEdge *>::iterator fe = _edgesList.begin(), feend = _edgesList.end(); fe != feend;
1848 if (iEdge == (*fe)) {
1849 _edgesList.erase(fe);
1859 return _verticesList;
1882 return _FrsMaterials[i];
1888 return _FrsMaterials;
1916 return _LibraryPath;
1935 _LibraryPath = path;
1941 _FrsMaterials = iMaterials;
1946 _ViewShape = iShape;
1951 _importance = importance;
1954 #ifdef WITH_CXX_GUARDEDALLOC
1955 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:SShape")
_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 z
_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.
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
virtual SVertexIterator & operator++()
virtual bool isEnd() const
virtual bool operator==(const Interface0DIteratorNested &it) const
virtual string getExactTypeName() const
virtual bool isBegin() const
virtual SVertexIterator & operator--()
SVertexIterator(const SVertexIterator &vi)
virtual SVertex * operator->()
SVertexIterator & operator=(const SVertexIterator &vi)
virtual SVertexIterator * copy() const
virtual SVertexIterator operator--(int)
SVertexIterator(SVertex *v, FEdge *edge)
virtual SVertex & operator*()
virtual SVertexIterator operator++(int)
unsigned aFrsMaterialIndex() const
void setbFrsMaterialIndex(unsigned i)
void setaFaceMark(bool iFaceMark)
virtual string getExactTypeName() const
unsigned bFrsMaterialIndex() const
virtual FEdge * duplicate()
unsigned _aFrsMaterialIndex
FEdgeSharp(FEdgeSharp &iBrother)
void setNormalB(const Vec3r &iNormal)
void setaFrsMaterialIndex(unsigned i)
FEdgeSharp(SVertex *vA, SVertex *vB)
void setbFaceMark(bool iFaceMark)
void setNormalA(const Vec3r &iNormal)
unsigned _bFrsMaterialIndex
unsigned _FrsMaterialIndex
virtual string getExactTypeName() const
unsigned frs_materialIndex() const
void setNormal(const Vec3r &iNormal)
virtual FEdge * duplicate()
FEdgeSmooth(FEdgeSmooth &iBrother)
FEdgeSmooth(SVertex *vA, SVertex *vB)
void setFaceMark(bool iFaceMark)
void setFrsMaterialIndex(unsigned i)
void setFace(void *iFace)
void setOccludeeEmpty(bool iempty)
void setTemporary(bool iFlag)
const Vec3r & getOccludeeIntersection()
const Polygon3r & aFace() const
void setVertexB(SVertex *vB)
static SVertex * CommonVertex(FEdge *iEdge1, FEdge *iEdge2)
SVertex * operator[](const unsigned short int &i) const
const SVertex * max2d() const
virtual FEdge * duplicate()
ViewEdge * viewedge() const
Vec3r orientation2d() const
const SVertex * min2d() const
void setViewEdge(ViewEdge *iViewEdge)
void setNextEdge(FEdge *iEdge)
FEdge(SVertex *vA, SVertex *vB)
virtual real getLength2D() const
void setNature(Nature::EdgeNature iNature)
Vec3r _occludeeIntersection
const Polygon3r & occludee() const
void setSmooth(bool iFlag)
void setPreviousEdge(FEdge *iEdge)
void setIsInImage(bool iFlag)
virtual string getExactTypeName() const
void setaFace(Polygon3r &iFace)
Vec3r orientation3d() const
void setVertexA(SVertex *vA)
Nature::EdgeNature getNature() const
void setOccludeeIntersection(const Vec3r &iPoint)
Nature::EdgeNature _Nature
id_type getSecond() const
void RemoveEdgeFromChain(FEdge *iEdge)
vector< SVertex * > & getVertexList()
const string & getName() const
virtual SShape * duplicate()
SVertex * CreateSVertex(const Vec3r &P3D, const Vec3r &P2D, const Id &id)
void AddChain(FEdge *iEdge)
const vector< FrsMaterial > & frs_materials() const
void setFrsMaterials(const vector< FrsMaterial > &iMaterials)
void setImportance(float importance)
void setViewShape(ViewShape *iShape)
const BBox< Vec3r > & bbox()
vector< FEdge * > & getEdgeList()
FEdge * SplitEdgeIn2(FEdge *ioEdge, SVertex *ioNewVertex)
void setLibraryPath(const string &path)
void SplitEdge(FEdge *fe, const vector< Vec2r > &iParameters, vector< FEdge * > &ioNewEdges)
const string & getLibraryPath() const
void RemoveEdge(FEdge *iEdge)
void setBBox(const BBox< Vec3r > &iBBox)
const FrsMaterial & frs_material(unsigned i) const
void AddNewVertex(SVertex *iv)
void setName(const string &name)
vector< FEdge * > & getChains()
void AddEdge(FEdge *iEdge)
const vector< FEdge * > & fedges()
virtual bool operator==(const SVertex &iBrother)
ViewVertex * viewvertex()
const Vec3r & point2d() const
virtual real getY() const
void setPoint2D(const Vec3r &iPoint2D)
void setViewVertex(ViewVertex *iViewVertex)
void setShape(SShape *iShape)
fedges_container::iterator fedges_begin()
virtual Vec3r getPoint3D() const
void setCurvatureInfo(CurvatureInfo *ci)
virtual real getX() const
fedges_container::iterator fedges_end()
void AddNormal(const Vec3r &iNormal)
virtual Vec2r getPoint2D() const
virtual string getExactTypeName() const
const Vec3r & point3D() const
void setPoint3D(const Vec3r &iPoint3D)
const CurvatureInfo * getCurvatureInfo() const
void AddFEdge(FEdge *iFEdge)
virtual real getProjectedZ() const
unsigned normalsSize() const
virtual real getZ() const
const Vec3r & point2D() const
const Vec3r & point3d() const
void RemoveFEdge(FEdge *iFEdge)
virtual real getProjectedY() const
vector< FEdge * > fedges_container
SVertex(const Vec3r &iPoint3D, const Id &id)
void setFEdges(const vector< FEdge * > &iFEdges)
virtual real getProjectedX() const
virtual SVertex * duplicate()
SVertex(SVertex &iBrother)
void Replace(FEdge *e1, FEdge *e2)
FEdge * getFEdge(Interface0D &it1, Interface0D &it2)
VecMat::Vec2< real > Vec2r
VecMat::Vec3< real > Vec3r
static const EdgeNature NO_FEATURE
unsigned short VertexNature
unsigned short EdgeNature
Vec< T, N > operator*(const typename Vec< T, N >::value_type r, const Vec< T, N > &v)
vector< ViewShape * > occluder_container