13 #include "../geometry/Geom.h"
15 #include "../scene_graph/FrsMaterial.h"
17 #include "../system/FreestyleConfig.h"
21 #ifdef WITH_CXX_GUARDEDALLOC
106 inline void setEdges(
const vector<WEdge *> &iEdgeList)
108 _EdgeList = iEdgeList;
137 void AddEdge(
WEdge *iEdge);
176 _vertex = iBrother._vertex;
177 _begin = iBrother._begin;
178 _current = iBrother._current;
201 return ((_current) != (
b._current));
206 return ((_current) == (
b._current));
213 virtual void increment();
215 #ifdef WITH_CXX_GUARDEDALLOC
216 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WVertex:incoming_edge_iterator")
245 _edge_it = iBrother._edge_it;
268 return ((_edge_it) != (
b._edge_it));
273 return ((_edge_it) == (
b._edge_it));
286 #ifdef WITH_CXX_GUARDEDALLOC
287 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WVertex:face_iterator")
293 virtual incoming_edge_iterator incoming_edges_begin();
294 virtual incoming_edge_iterator incoming_edges_end();
306 #ifdef WITH_CXX_GUARDEDALLOC
307 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WVertex")
362 virtual WOEdge *duplicate();
366 inline WOEdge *GetaCWEdge()
371 inline WOEdge *GetbCWEdge()
376 inline WOEdge *GetaCCWEdge()
381 inline WOEdge *GetbCCWEdge()
424 inline void SetaCWEdge(
WOEdge *pe)
429 inline void SetbCWEdge(WOEdge *pe)
434 inline void SetaCCWEdge(WOEdge *pe)
439 inline void SetbCCCWEdge(WOEdge *pe)
445 inline void setVecAndAngle();
477 inline void RetrieveCWOrderedEdges(vector<WEdge *> &oEdges);
487 #ifdef WITH_CXX_GUARDEDALLOC
488 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WOEdge")
537 virtual WEdge *duplicate();
557 if (!iEdge1 || !iEdge2) {
566 if ((wv1 == wv3) || (wv1 == wv4)) {
569 else if ((wv2 == wv3) || (wv2 == wv4)) {
623 if (iOEdge == _paOEdge) {
676 #ifdef WITH_CXX_GUARDEDALLOC
677 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WEdge")
707 _FrsMaterialIndex = 0;
712 virtual WFace *duplicate();
725 return _OEdgeList[i];
740 return _FrsMaterialIndex;
754 if (index >= _OEdgeList.size()) {
758 return _OEdgeList[index]->GetaVertex();
767 for (vector<WOEdge *>::iterator woe = _OEdgeList.begin(), woend = _OEdgeList.end();
770 if ((*woe)->GetaVertex() == iVertex) {
780 for (vector<WOEdge *>::iterator woe = _OEdgeList.begin(), woend = _OEdgeList.end();
783 oVertices.push_back((*woe)->GetaVertex());
789 for (vector<WOEdge *>::iterator woe = _OEdgeList.begin(), woend = _OEdgeList.end();
793 if ((af = (*woe)->GetaFace())) {
794 oWFaces.push_back(af);
802 if (index >= _OEdgeList.size()) {
806 return _OEdgeList[index]->GetaFace();
816 return _VerticesNormals;
821 return _VerticesTexCoords;
827 return _VerticesNormals[index];
833 return _VerticesTexCoords[index];
841 for (vector<WOEdge *>::const_iterator woe = _OEdgeList.begin(), woend = _OEdgeList.end();
844 if ((*woe)->GetaVertex() == iVertex) {
851 return _VerticesNormals[index];
857 vector<WOEdge *>::iterator woe, woend, woefirst;
858 woefirst = _OEdgeList.begin();
859 for (woe = woefirst, woend = _OEdgeList.end(); woe != woend; ++woe) {
864 if ((*woe) == iOEdge) {
881 return _OEdgeList.size();
886 return _OEdgeList.size();
892 for (vector<WOEdge *>::const_iterator woe = _OEdgeList.begin(), woeend = _OEdgeList.end();
895 if ((*woe)->GetOwner()->GetbOEdge() == 0) {
905 _OEdgeList = iEdgeList;
915 _VerticesNormals = iNormalsList;
920 _VerticesTexCoords = iTexCoordsList;
930 _FrsMaterialIndex = iMaterialIndex;
955 _OEdgeList.push_back(iEdge);
972 #ifdef WITH_CXX_GUARDEDALLOC
973 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WFace")
1000 float _meanEdgeSize;
1009 _Id = _SceneCurrentId;
1015 virtual WShape *duplicate();
1019 if (_EdgeList.size() != 0) {
1020 vector<WEdge *>::iterator
e;
1021 for (
e = _EdgeList.begin();
e != _EdgeList.end(); ++
e) {
1027 if (_VertexList.size() != 0) {
1028 vector<WVertex *>::iterator
v;
1029 for (
v = _VertexList.begin();
v != _VertexList.end(); ++
v) {
1032 _VertexList.clear();
1035 if (_FaceList.size() != 0) {
1036 vector<WFace *>::iterator f;
1037 for (f = _FaceList.begin(); f != _FaceList.end(); ++f) {
1075 return _FrsMaterials[i];
1080 return _FrsMaterials;
1084 inline const float getMeanEdgeSize()
const
1086 return _meanEdgeSize;
1097 return _LibraryPath;
1103 _SceneCurrentId =
id;
1108 _EdgeList = iEdgeList;
1113 _VertexList = iVertexList;
1118 _FaceList = iFaceList;
1136 _FrsMaterials[i] = frs_material;
1141 _FrsMaterials = iMaterials;
1151 _LibraryPath = path;
1169 virtual WFace *MakeFace(vector<WVertex *> &iVertexList,
1171 unsigned iMaterialIndex);
1184 virtual WFace *MakeFace(vector<WVertex *> &iVertexList,
1185 vector<Vec3f> &iNormalsList,
1186 vector<Vec2f> &iTexCoordsList,
1188 unsigned iMaterialIndex);
1192 _EdgeList.push_back(iEdge);
1197 _FaceList.push_back(iFace);
1203 _VertexList.push_back(iVertex);
1208 for (vector<WVertex *>::iterator
v = _VertexList.begin(), vend = _VertexList.end();
v != vend;
1210 (*v)->ResetUserData();
1213 for (vector<WEdge *>::iterator
e = _EdgeList.begin(), eend = _EdgeList.end();
e != eend;
e++) {
1214 (*e)->ResetUserData();
1216 WOEdge *oe = (*e)->GetaOEdge();
1220 oe = (*e)->GetbOEdge();
1226 for (vector<WFace *>::iterator f = _FaceList.begin(), fend = _FaceList.end(); f != fend; f++) {
1227 (*f)->ResetUserData();
1232 inline void ComputeBBox()
1234 _min = _VertexList[0]->GetVertex();
1235 _max = _VertexList[0]->GetVertex();
1238 for (vector<WVertex *>::iterator wv = _VertexList.begin(), wvend = _VertexList.end();
1241 for (
unsigned int i = 0; i < 3; i++) {
1242 v = (*wv)->GetVertex();
1243 if (
v[i] < _min[i]) {
1246 if (
v[i] > _max[i]) {
1255 inline float ComputeMeanEdgeSize()
1257 _meanEdgeSize = _meanEdgeSize / _EdgeList.size();
1258 return _meanEdgeSize;
1261 real ComputeMeanEdgeSize()
const;
1277 virtual WFace *MakeFace(vector<WVertex *> &iVertexList,
1279 unsigned iMaterialIndex,
1282 #ifdef WITH_CXX_GUARDEDALLOC
1283 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WShape")
1309 for (vector<WShape *>::iterator it = _wshapes.begin(); it != _wshapes.end(); it++) {
1318 _wshapes.push_back(wshape);
1333 vector<WShape *> _wshapes;
1336 #ifdef WITH_CXX_GUARDEDALLOC
1337 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WingedEdge")
1353 void WOEdge::RetrieveCWOrderedEdges(vector<WEdge *> &oEdges)
1355 WOEdge *currentOEdge =
this;
1358 oEdges.push_back(nextOEdge->
GetOwner());
1360 }
while (currentOEdge && (currentOEdge->
GetOwner() != GetOwner()));
1363 inline void WOEdge::setVecAndAngle()
1365 if (_paVertex && _pbVertex) {
1367 if (_paFace && _pbFace) {
_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 v1
Read Guarded memory(de)allocation.
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
short GetNumberOfOEdges()
static WVertex * CommonVertex(WEdge *iEdge1, WEdge *iEdge2)
WEdge(WOEdge *iaOEdge, WOEdge *ibOEdge)
WOEdge * GetOtherOEdge(WOEdge *iOEdge)
virtual void ResetUserData()
void setaOEdge(WOEdge *iEdge)
void setbOEdge(WOEdge *iEdge)
void setNumberOfOEdges(short n)
void AddOEdge(WOEdge *iEdge)
unsigned frs_materialIndex() const
Vec3f & GetVertexNormal(WVertex *iVertex)
vector< Vec3f > & GetPerVertexNormals()
Vec3f & GetVertexNormal(int index)
vector< Vec2f > _VerticesTexCoords
Vec2f & GetVertexTexCoords(int index)
void RetrieveBorderFaces(vector< const WFace * > &oWFaces)
void setNormal(const Vec3f &iNormal)
void setFrsMaterialIndex(unsigned iMaterialIndex)
virtual WEdge * instanciateEdge() const
void AddEdge(WOEdge *iEdge)
int numberOfEdges() const
vector< WOEdge * > _OEdgeList
unsigned _FrsMaterialIndex
int numberOfVertices() const
void setEdgeList(const vector< WOEdge * > &iEdgeList)
virtual void ResetUserData()
WOEdge * GetNextOEdge(WOEdge *iOEdge)
WVertex * GetVertex(unsigned int index)
void setNormalList(const vector< Vec3f > &iNormalsList)
void setTexCoordsList(const vector< Vec2f > &iTexCoordsList)
vector< Vec2f > & GetPerVertexTexCoords()
WFace * GetBordingFace(WOEdge *iOEdge)
const vector< WOEdge * > & getEdgeList()
WFace * GetBordingFace(int index)
void RetrieveVertexList(vector< WVertex * > &oVertices)
vector< Vec3f > _VerticesNormals
int GetIndex(WVertex *iVertex)
void setbVertex(WVertex *pv)
void setaVertex(WVertex *pv)
virtual void ResetUserData()
vector< WEdge * > & getEdgeList()
void setFrsMaterials(const vector< FrsMaterial > &iMaterials)
void setVertexList(const vector< WVertex * > &iVertexList)
vector< FrsMaterial > _FrsMaterials
void setEdgeList(const vector< WEdge * > &iEdgeList)
virtual WFace * instanciateFace() const
static void setCurrentId(const unsigned id)
void setName(const string &name)
const string & getLibraryPath() const
static unsigned _SceneCurrentId
void setLibraryPath(const string &path)
const string & getName() const
void setFaceList(const vector< WFace * > &iFaceList)
void AddVertex(WVertex *iVertex)
vector< WFace * > _FaceList
vector< WVertex * > _VertexList
const vector< FrsMaterial > & frs_materials() const
void AddEdge(WEdge *iEdge)
void AddFace(WFace *iFace)
vector< WVertex * > & getVertexList()
void setFrsMaterial(const FrsMaterial &frs_material, unsigned i)
vector< WFace * > & GetFaceList()
vector< WEdge * > _EdgeList
const FrsMaterial & frs_material(unsigned i) const
face_iterator(incoming_edge_iterator it)
face_iterator(const face_iterator &iBrother)
virtual bool operator!=(const face_iterator &b) const
ptrdiff_t difference_type
virtual ~face_iterator()=default
virtual face_iterator operator++(int)
input_iterator_tag iterator_category
virtual bool operator==(const face_iterator &b) const
virtual face_iterator & operator++()
input_iterator_tag iterator_category
virtual bool operator!=(const incoming_edge_iterator &b) const
virtual bool operator==(const incoming_edge_iterator &b) const
virtual incoming_edge_iterator operator++(int)
incoming_edge_iterator(WVertex *iVertex, WOEdge *iBegin, WOEdge *iCurrent)
incoming_edge_iterator()=default
virtual ~incoming_edge_iterator()=default
incoming_edge_iterator(const incoming_edge_iterator &iBrother)
virtual incoming_edge_iterator & operator++()
ptrdiff_t difference_type
void setVertex(const Vec3f &v)
vector< WEdge * > & GetEdges()
virtual face_iterator faces_end()
virtual void ResetUserData()
vector< WEdge * > _EdgeList
void setEdges(const vector< WEdge * > &iEdgeList)
virtual face_iterator faces_begin()
void setShape(WShape *iShape)
vector< WShape * > & getWShapes()
void addWShape(WShape *wshape)
#define pf(_x, _i)
Prefetch 64.
static void clear(Message *msg)
Vec< T, N > operator*(const typename Vec< T, N >::value_type r, const Vec< T, N > &v)
INLINE Rall1d< T, V, S > asin(const Rall1d< T, V, S > &x)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)