19 #include "../geometry/BBox.h"
20 #include "../geometry/Geom.h"
21 #include "../geometry/Polygon.h"
23 #include "../scene_graph/FrsMaterial.h"
25 #include "../system/Exception.h"
26 #include "../system/FreestyleConfig.h"
28 #include "../winged_edge/Curvature.h"
30 #ifdef WITH_CXX_GUARDEDALLOC
110 return Vec2r(_Point2D.x(), _Point2D.y());
126 virtual SVertex *castToSVertex();
135 virtual TVertex *castToTVertex();
145 vector<FEdge *> _FEdges;
149 real _curvatureFredo;
150 Vec2r _directionFredo;
187 _Normals = iBrother._Normals;
188 _FEdges = iBrother.
fedges();
189 _Shape = iBrother.
shape();
190 _pViewVertex = iBrother._pViewVertex;
191 if (!(iBrother._curvature_info)) {
195 _curvature_info =
new CurvatureInfo(*(iBrother._curvature_info));
204 if (_curvature_info) {
205 delete _curvature_info;
219 return ((_Point2D == iBrother._Point2D) && (_Point3D == iBrother._Point3D));
245 return _Normals.size();
255 return _FEdges.begin();
260 return _FEdges.end();
298 _Normals.insert(iNormal);
303 if (_curvature_info) {
304 delete _curvature_info;
306 _curvature_info = ci;
311 return _curvature_info;
316 void setCurvatureFredo(
real c)
321 void setDirectionFredo(
Vec2r d)
326 real curvatureFredo()
328 return _curvatureFredo;
331 const Vec2r directionFredo()
333 return _directionFredo;
355 _pViewVertex = iViewVertex;
361 _FEdges.push_back(iFEdge);
367 for (vector<FEdge *>::iterator fe = _FEdges.begin(), fend = _FEdges.end(); fe != fend; fe++) {
368 if (iFEdge == (*fe)) {
378 vector<FEdge *>::iterator insertedfe;
379 for (vector<FEdge *>::iterator fe = _FEdges.begin(), fend = _FEdges.end(); fe != fend; fe++) {
381 insertedfe = _FEdges.insert(fe, e2);
385 _FEdges.erase(insertedfe);
407 if (_Normals.size() == 1) {
408 return (*(_Normals.begin()));
410 Exception::raiseException();
411 return *(_Normals.begin());
416 const SShape *shape()
const;
417 float shape_importance()
const;
420 occluder_container::const_iterator occluders_begin()
const;
421 occluder_container::const_iterator occluders_end()
const;
422 bool occluders_empty()
const;
423 int occluders_size()
const;
425 const SShape *occluded_shape()
const;
426 bool occludee_empty()
const;
427 real z_discontinuity()
const;
429 inline float local_average_depth()
const;
430 inline float local_depth_variance()
const;
431 inline real local_average_density(
float sigma = 2.3f)
const;
432 inline Vec3r shaded_color()
const;
433 inline Vec3r orientation2d()
const;
434 inline Vec3r orientation3d()
const;
435 inline Vec3r curvature2d_as_vector()
const;
437 inline real curvature2d_as_angle()
const;
440 #ifdef WITH_CXX_GUARDEDALLOC
441 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:SVertex")
476 if (!_VertexA || !_VertexB) {
479 return (_VertexB->getPoint2D() - _VertexA->getPoint2D()).norm();
535 _PreviousEdge =
NULL;
538 _occludeeEmpty =
true;
541 _isTemporary =
false;
552 _PreviousEdge =
NULL;
555 _occludeeEmpty =
true;
558 _isTemporary =
false;
611 return (i % 2 == 0) ? _VertexA : _VertexB;
633 return _PreviousEdge;
638 return _VertexA->
shape();
642 inline int invisibility()
const
644 return _Occluders.size();
648 int invisibility()
const;
651 inline const vector<Polygon3r> &occluders()
const
674 inline bool hasVisibilityPoint()
const
676 return _hasVisibilityPoint;
679 inline Vec3r visibilityPointA()
const
681 return _VisibilityPointA;
684 inline Vec3r visibilityPointB()
const
686 return _VisibilityPointB;
697 return _occludeeIntersection;
702 return _occludeeEmpty;
749 _PreviousEdge = iEdge;
759 inline void AddOccluder(
Polygon3r &iPolygon)
761 _Occluders.push_back(iPolygon);
768 _ViewEdge = iViewEdge;
772 inline void setHasVisibilityPoint(
bool iBool)
774 _hasVisibilityPoint = iBool;
777 inline void setVisibilityPointA(
const Vec3r &iPoint)
779 _VisibilityPointA = iPoint;
782 inline void setVisibilityPointB(
const Vec3r &iPoint)
784 _VisibilityPointB = iPoint;
795 _occludeeIntersection = iPoint;
800 _occludeeEmpty = iempty;
818 _isTemporary = iFlag;
826 if ((
NULL == iEdge1) || (
NULL == iEdge2)) {
835 if ((sv1 == sv3) || (sv1 == sv4)) {
838 else if ((sv2 == sv3) || (sv2 == sv4)) {
869 const SShape *shape()
const;
870 float shape_importance()
const;
872 inline const int qi()
const
874 return invisibility();
877 occluder_container::const_iterator occluders_begin()
const;
878 occluder_container::const_iterator occluders_end()
const;
879 bool occluders_empty()
const;
880 int occluders_size()
const;
887 const SShape *occluded_shape()
const;
890 inline const bool occludee_empty()
const
892 return _occludeeEmpty;
896 bool occludee_empty()
const;
897 real z_discontinuity()
const;
900 inline float local_average_depth(
int iCombination = 0)
const;
901 inline float local_depth_variance(
int iCombination = 0)
const;
902 inline real local_average_density(
float sigma = 2.3f,
int iCombination = 0)
const;
903 inline Vec3r shaded_color(
int iCombination = 0)
const
908 int viewedge_nature()
const;
923 inline real curvature2d()
const
925 return viewedge()->curvature2d((_VertexA->
point2d() + _VertexB->
point2d()) / 2.0);
928 inline Vec3r curvature2d_as_vector(
int iCombination = 0)
const;
931 inline real curvature2d_as_angle(
int iCombination = 0)
const;
936 virtual inline Interface0DIterator verticesBegin();
939 virtual inline Interface0DIterator verticesEnd();
947 virtual inline Interface0DIterator pointsBegin(
float t = 0.0f);
955 virtual inline Interface0DIterator pointsEnd(
float t = 0.0f);
957 #ifdef WITH_CXX_GUARDEDALLOC
958 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:FEdge")
967 namespace FEdgeInternal {
979 _vertex = vi._vertex;
991 _vertex = vi._vertex;
998 return "SVertexIterator";
1039 if (_vertex == _edge->vertexB()) {
1043 _vertex = _edge->vertexB();
1049 if (_vertex == _edge->vertexA()) {
1053 _vertex = _edge->vertexA();
1059 return _vertex == _edge->vertexA();
1064 return _vertex == _edge->vertexB();
1073 return ((_vertex == it_exact->_vertex) && (_edge == it_exact->_edge));
1076 virtual float t()
const
1078 if (_vertex == _edge->vertexA()) {
1081 return ((
float)_edge->getLength2D());
1083 virtual float u()
const
1085 if (_vertex == _edge->vertexA()) {
1119 return verticesBegin();
1124 return verticesEnd();
1145 return "FEdgeSharp";
1151 _aFrsMaterialIndex = _bFrsMaterialIndex = 0;
1152 _aFaceMark = _bFaceMark =
false;
1158 _aFrsMaterialIndex = _bFrsMaterialIndex = 0;
1159 _aFaceMark = _bFaceMark =
false;
1205 return _aFrsMaterialIndex;
1216 return _bFrsMaterialIndex;
1251 _aFrsMaterialIndex = i;
1257 _bFrsMaterialIndex = i;
1263 _aFaceMark = iFaceMark;
1269 _bFaceMark = iFaceMark;
1272 #ifdef WITH_CXX_GUARDEDALLOC
1273 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:FEdgeSharp")
1285 bool _hasVisibilityPoint;
1286 Vec3r _VisibilityPointA;
1287 Vec3r _VisibilityPointB;
1297 return "FEdgeSmooth";
1305 _FrsMaterialIndex = 0;
1314 _FrsMaterialIndex = 0;
1322 _Face = iBrother.
_Face;
1360 return _FrsMaterialIndex;
1374 _FaceMark = iFaceMark;
1386 _FrsMaterialIndex = i;
1389 #ifdef WITH_CXX_GUARDEDALLOC
1390 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:FEdgeSmooth")
1406 vector<FEdge *> _chains;
1407 vector<SVertex *> _verticesList;
1408 vector<FEdge *> _edgesList;
1411 string _LibraryPath;
1413 vector<FrsMaterial> _FrsMaterials;
1438 _Name = iBrother._Name;
1439 _LibraryPath = iBrother._LibraryPath;
1440 _BBox = iBrother.
bbox();
1441 _FrsMaterials = iBrother._FrsMaterials;
1442 _importance = iBrother._importance;
1443 _ViewShape = iBrother._ViewShape;
1448 vector<SVertex *>::iterator sv, svend;
1450 for (sv = verticesList.begin(), svend = verticesList.end(); sv != svend; sv++) {
1453 _verticesList.push_back(newv);
1459 vector<FEdge *>::iterator
e, eend;
1460 vector<FEdge *> &edgesList = iBrother.
getEdgeList();
1461 for (
e = edgesList.begin(), eend = edgesList.end();
e != eend;
e++) {
1463 _edgesList.push_back(newe);
1469 vector<FEdge *>::iterator fe, fend;
1470 vector<FEdge *> &fedges = iBrother.
getChains();
1471 for (fe = fedges.begin(), fend = fedges.end(); fe != fend; fe++) {
1472 _chains.push_back((
FEdge *)((*fe)->userdata));
1478 for (sv = _verticesList.begin(), svend = _verticesList.end(); sv != svend; sv++) {
1479 const vector<FEdge *> &fedgeList = (*sv)->fedges();
1480 vector<FEdge *> newfedgelist;
1481 for (vector<FEdge *>::const_iterator fed = fedgeList.begin(), fedend = fedgeList.end();
1484 FEdge *current = *fed;
1487 (*sv)->setFEdges(newfedgelist);
1493 for (
e = _edgesList.begin(), eend = _edgesList.end();
e != eend;
e++) {
1495 (*e)->setVertexB((
SVertex *)((*e)->vertexB()->userdata));
1496 (*e)->setNextEdge((
FEdge *)((*e)->nextEdge()->userdata));
1497 (*e)->setPreviousEdge((
FEdge *)((*e)->previousEdge()->userdata));
1505 for (sv = _verticesList.begin(), svend = _verticesList.end(); sv != svend; sv++) {
1506 (*sv)->userdata =
NULL;
1512 for (
e = _edgesList.begin(), eend = _edgesList.end();
e != eend;
e++) {
1513 (*e)->userdata =
NULL;
1527 vector<SVertex *>::iterator sv, svend;
1528 vector<FEdge *>::iterator
e, eend;
1529 if (0 != _verticesList.size()) {
1530 for (sv = _verticesList.begin(), svend = _verticesList.end(); sv != svend; sv++) {
1533 _verticesList.clear();
1536 if (0 != _edgesList.size()) {
1537 for (
e = _edgesList.begin(), eend = _edgesList.end();
e != eend;
e++) {
1545 if (0 != _chains.size()) {
1553 _edgesList.push_back(iEdge);
1562 _verticesList.push_back(iv);
1567 _chains.push_back(iEdge);
1596 inline void SplitEdge(
FEdge *fe,
const vector<Vec2r> &iParameters, vector<FEdge *> &ioNewEdges)
1605 Vec3r newpoint3d, newpoint2d;
1606 vector<SVertex *> intersections;
1608 for (vector<Vec2r>::const_iterator p = iParameters.begin(), pend = iParameters.end();
1614 if ((
t < 0) || (
t > 1)) {
1615 cerr <<
"Warning: Intersection out of range for edge " << ioA->
getId() <<
" - "
1616 << ioB->
getId() << endl;
1629 intersections.push_back(newVertex);
1632 AddNewVertex(newVertex);
1635 for (vector<SVertex *>::iterator sv = intersections.begin(), svend = intersections.end();
1645 (fe)->setVertexB((*sv));
1669 ioNewEdges.push_back(newEdge);
1680 (fe)->setNextEdge(
NULL);
1686 (*sv)->AddFEdge((fe));
1687 (*sv)->AddFEdge(newEdge);
1743 B->Replace(ioEdge, newEdge);
1771 if (0 == _verticesList.size()) {
1775 Vec3r firstVertex = _verticesList[0]->point3D();
1776 real XMax = firstVertex[0];
1777 real YMax = firstVertex[1];
1778 real ZMax = firstVertex[2];
1780 real XMin = firstVertex[0];
1781 real YMin = firstVertex[1];
1782 real ZMin = firstVertex[2];
1784 vector<SVertex *>::iterator
v, vend;
1786 for (
v = _verticesList.begin(), vend = _verticesList.end();
v != vend;
v++) {
1787 Vec3r vertex = (*v)->point3D();
1793 else if (
x < XMin) {
1802 else if (
y < YMin) {
1811 else if (
z < ZMin) {
1821 for (vector<FEdge *>::iterator fe = _chains.begin(), feend = _chains.end(); fe != feend;
1823 if (iEdge == (*fe)) {
1832 for (vector<FEdge *>::iterator fe = _edgesList.begin(), feend = _edgesList.end(); fe != feend;
1834 if (iEdge == (*fe)) {
1835 _edgesList.erase(fe);
1845 return _verticesList;
1868 return _FrsMaterials[i];
1874 return _FrsMaterials;
1902 return _LibraryPath;
1921 _LibraryPath = path;
1927 _FrsMaterials = iMaterials;
1932 _ViewShape = iShape;
1937 _importance = importance;
1940 #ifdef WITH_CXX_GUARDEDALLOC
1941 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
static const pxr::TfToken b("b", pxr::TfToken::Immortal)