104 inline void setEdges(
const vector<WEdge *> &iEdgeList)
174 _vertex = iBrother._vertex;
175 _begin = iBrother._begin;
176 _current = iBrother._current;
199 return ((_current) != (
b._current));
204 return ((_current) == (
b._current));
213 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WVertex:incoming_edge_iterator")
241 _edge_it = iBrother._edge_it;
264 return ((_edge_it) != (
b._edge_it));
269 return ((_edge_it) == (
b._edge_it));
282 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WVertex:face_iterator")
300 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WVertex")
339 _paCCWEdge =
nullptr;
340 _pbCCWEdge =
nullptr;
358 inline WOEdge *GetaCWEdge()
363 inline WOEdge *GetbCWEdge()
368 inline WOEdge *GetaCCWEdge()
373 inline WOEdge *GetbCCWEdge()
416 inline void SetaCWEdge(
WOEdge *pe)
421 inline void SetbCWEdge(
WOEdge *pe)
426 inline void SetaCCWEdge(
WOEdge *pe)
431 inline void SetbCCCWEdge(
WOEdge *pe)
479 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WOEdge")
547 if (!iEdge1 || !iEdge2) {
556 if ((wv1 == wv3) || (wv1 == wv4)) {
559 else if ((wv2 == wv3) || (wv2 == wv4)) {
666 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WEdge")
757 if ((*woe)->GetaVertex() == iVertex) {
771 oVertices.push_back((*woe)->GetaVertex());
782 if ((af = (*woe)->GetaFace())) {
783 oWFaces.push_back(af);
834 if ((*woe)->GetaVertex() == iVertex) {
847 vector<WOEdge *>::iterator woe, woend, woefirst;
849 for (woe = woefirst, woend =
_OEdgeList.end(); woe != woend; ++woe) {
854 if ((*woe) == iOEdge) {
886 if ((*woe)->GetOwner()->GetbOEdge() == 0) {
963 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WFace")
1009 vector<WEdge *>::iterator
e;
1017 vector<WVertex *>::iterator
v;
1025 vector<WFace *>::iterator f;
1073 inline const float getMeanEdgeSize()
const
1075 return _meanEdgeSize;
1159 vector<bool> &iFaceEdgeMarksList,
1160 uint iMaterialIndex);
1174 vector<Vec3f> &iNormalsList,
1175 vector<Vec2f> &iTexCoordsList,
1176 vector<bool> &iFaceEdgeMarksList,
1177 uint iMaterialIndex);
1200 (*v)->ResetUserData();
1204 (*e)->ResetUserData();
1206 WOEdge *oe = (*e)->GetaOEdge();
1210 oe = (*e)->GetbOEdge();
1216 for (vector<WFace *>::iterator f =
_FaceList.begin(), fend =
_FaceList.end(); f != fend; f++) {
1217 (*f)->ResetUserData();
1222 inline void ComputeBBox()
1232 for (
uint i = 0;
i < 3;
i++) {
1233 v = (*wv)->GetVertex();
1234 if (
v[
i] < _min[
i]) {
1237 if (
v[
i] > _max[
i]) {
1248 _meanEdgeSize = _meanEdgeSize /
_EdgeList.size();
1249 return _meanEdgeSize;
1268 virtual WFace *
MakeFace(vector<WVertex *> &iVertexList,
1269 vector<bool> &iFaceEdgeMarksList,
1270 uint iMaterialIndex,
1273 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WShape")
1298 for (vector<WShape *>::iterator it = _wshapes.begin(); it != _wshapes.end(); it++) {
1307 _wshapes.push_back(wshape);
1322 vector<WShape *> _wshapes;
1325 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WingedEdge")
1342 WOEdge *currentOEdge =
this;
1345 oEdges.push_back(nextOEdge->
GetOwner());
Configuration definitions.
Class used to handle materials.
Vectors and Matrices (useful type definitions).
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()
WEdge(WOEdge *iaOEdge, WOEdge *ibOEdge)
virtual void ResetUserData()
WOEdge * GetOtherOEdge(WOEdge *iOEdge)
void setaOEdge(WOEdge *iEdge)
virtual WEdge * duplicate()
void setbOEdge(WOEdge *iEdge)
void setNumberOfOEdges(short n)
void AddOEdge(WOEdge *iEdge)
static WVertex * CommonVertex(WEdge *iEdge1, WEdge *iEdge2)
const vector< WOEdge * > & getEdgeList()
vector< Vec2f > _VerticesTexCoords
vector< Vec2f > & GetPerVertexTexCoords()
void RetrieveBorderFaces(vector< const WFace * > &oWFaces)
void setNormal(const Vec3f &iNormal)
WFace * GetBordingFace(int index)
void AddEdge(WOEdge *iEdge)
int numberOfEdges() const
const FrsMaterial & frs_material()
WOEdge * GetNextOEdge(WOEdge *iOEdge)
vector< WOEdge * > _OEdgeList
Vec3f & GetVertexNormal(WVertex *iVertex)
WOEdge * GetPrevOEdge(WOEdge *iOEdge)
virtual WOEdge * MakeEdge(WVertex *v1, WVertex *v2)
int numberOfVertices() const
virtual WFace * duplicate()
void setEdgeList(const vector< WOEdge * > &iEdgeList)
Vec2f & GetVertexTexCoords(int index)
virtual void ResetUserData()
bool getOppositeEdge(const WVertex *v, WOEdge *&e)
Vec3f & GetVertexNormal(int index)
WFace * GetBordingFace(WOEdge *iOEdge)
void setNormalList(const vector< Vec3f > &iNormalsList)
void setFrsMaterialIndex(uint iMaterialIndex)
virtual WEdge * instanciateEdge() const
void setTexCoordsList(const vector< Vec2f > &iTexCoordsList)
vector< Vec3f > & GetPerVertexNormals()
uint frs_materialIndex() const
void RetrieveVertexList(vector< WVertex * > &oVertices)
vector< Vec3f > _VerticesNormals
WVertex * GetVertex(uint index)
int GetIndex(WVertex *iVertex)
void setbVertex(WVertex *pv)
void RetrieveCWOrderedEdges(vector< WEdge * > &oEdges)
virtual WOEdge * duplicate()
void setaVertex(WVertex *pv)
virtual void ResetUserData()
void setFrsMaterials(const vector< FrsMaterial > &iMaterials)
vector< WVertex * > & getVertexList()
real ComputeMeanEdgeSize() const
void setVertexList(const vector< WVertex * > &iVertexList)
vector< FrsMaterial > _FrsMaterials
void setEdgeList(const vector< WEdge * > &iEdgeList)
void setFrsMaterial(const FrsMaterial &frs_material, uint i)
vector< WEdge * > & getEdgeList()
const string & getLibraryPath() const
void setName(const string &name)
virtual WShape * duplicate()
const string & getName() const
void setLibraryPath(const string &path)
static void setCurrentId(const uint id)
virtual WFace * MakeFace(vector< WVertex * > &iVertexList, vector< bool > &iFaceEdgeMarksList, uint iMaterialIndex)
void setFaceList(const vector< WFace * > &iFaceList)
void AddVertex(WVertex *iVertex)
vector< WFace * > _FaceList
const FrsMaterial & frs_material(uint i) const
vector< WVertex * > _VertexList
void AddEdge(WEdge *iEdge)
void AddFace(WFace *iFace)
vector< WFace * > & GetFaceList()
static uint _SceneCurrentId
const vector< FrsMaterial > & frs_materials() const
vector< WEdge * > _EdgeList
virtual WFace * instanciateFace() const
face_iterator(incoming_edge_iterator it)
virtual WFace * operator*()
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++()
virtual face_iterator operator++(int)
input_iterator_tag iterator_category
virtual bool operator==(const face_iterator &b) const
virtual incoming_edge_iterator & operator++()
input_iterator_tag iterator_category
virtual WOEdge * operator*()
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)
ptrdiff_t difference_type
void setVertex(const Vec3f &v)
vector< WEdge * > & GetEdges()
virtual incoming_edge_iterator incoming_edges_begin()
virtual face_iterator faces_end()
virtual void ResetUserData()
vector< WEdge * > _EdgeList
virtual incoming_edge_iterator incoming_edges_end()
void setEdges(const vector< WEdge * > &iEdgeList)
virtual face_iterator faces_begin()
void setShape(WShape *iShape)
void AddEdge(WEdge *iEdge)
virtual WVertex * duplicate()
vector< WShape * > & getWShapes()
void addWShape(WShape *wshape)
#define pf(_x, _i)
Prefetch 64.
VecMat::Vec3< float > Vec3f
VecMat::Vec2< float > Vec2f