38 _curvatures =
nullptr;
63 _curvatures->Kr = 0.0;
79 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WXVertex")
125 _nature = iBrother.
nature();
126 _front = iBrother._front;
127 _order = iBrother._order;
140 _nature = _nature &
~Nature::SILHOUETTE;
141 _nature = _nature &
~Nature::SUGGESTIVE_CONTOUR;
173 _nature = _nature | iNature;
181 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WXEdge")
239 inline float ta()
const
244 inline float tb()
const
290 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WXSmoothEdge")
345 if (!
_DotP.empty()) {
409 if (!
_DotP.empty()) {
433 inline void setDotP(
const vector<float> &iDotP)
440 _DotP.push_back(iDotP);
451 _DotP[index] = newDotP;
459 for (vector<float>::iterator d =
_DotP.begin(), dend =
_DotP.end(); d != dend; ++d) {
469 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WXFaceLayer")
495 for (vector<WXFaceLayer *>::iterator wxf = iBrother.
_SmoothLayers.begin(),
500 _SmoothLayers.push_back(new WXFaceLayer(**wxf));
513 for (vector<WXFaceLayer *>::iterator wxf =
_SmoothLayers.begin(),
553 for (vector<WXFaceLayer *>::const_iterator wxf =
_SmoothLayers.begin(),
558 if ((*wxf)->hasSmoothEdge()) {
577 if ((*wxf)->hasSmoothEdge() && ((*wxf)->_Nature & iNature)) {
578 oSmoothEdges.push_back((*wxf)->_pSmoothEdge);
589 if ((*wxf)->hasSmoothEdge() && ((*wxf)->_Nature & iNature)) {
590 oSmoothEdgesLayers.push_back((*wxf));
601 if ((*wxf)->_Nature & iNature) {
602 oSmoothLayers.push_back(*wxf);
643 vector<WXFaceLayer *> layersToKeep;
648 if ((*wxf)->isViewDependant()) {
652 layersToKeep.push_back(*wxf);
677 (*wxf)->userdata =
nullptr;
681 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WXFace")
747 vector<bool> &iFaceEdgeMarksList,
748 uint iMaterialIndex);
769 vector<Vec3f> &iNormalsList,
770 vector<Vec2f> &iTexCoordsList,
771 vector<bool> &iFaceEdgeMarksList,
772 uint iMaterialIndex);
779 for (vector<WEdge *>::iterator we = wedges.begin(), weend = wedges.end(); we != weend; ++we) {
780 ((
WXEdge *)(*we))->Reset();
785 for (vector<WFace *>::iterator wf = wfaces.begin(), wfend = wfaces.end(); wf != wfend; ++wf) {
786 ((
WXFace *)(*wf))->Reset();
791 MEM_CXX_CLASS_ALLOC_FUNCS(
"Freestyle:WXShape")
810 vector<WEdge *> &vedges =
GetEdges();
811 for (vector<WEdge *>::iterator ve = vedges.begin(), vend = vedges.end(); ve != vend; ++ve) {
817 if ((counter == 1) || (counter > 2)) {
GTS - Library for the manipulation of triangulated surfaces.
Read Guarded memory(de)allocation.
Different natures for both vertices and edges.
Classes to define a Winged Edge data structure.
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
virtual void ResetUserData()
vector< WEdge * > & getEdgeList()
vector< WFace * > & GetFaceList()
vector< WEdge * > & GetEdges()
WXEdge(WOEdge *iaOEdge, WOEdge *ibOEdge)
void setNature(WXNature iNature)
void AddNature(WXNature iNature)
virtual WEdge * duplicate()
void setFront(bool iFront)
bool hasSmoothEdge() const
void setClosestPointIndex(int iIndex)
WXFaceLayer(const WXFaceLayer &iBrother)
void ReplaceDotP(uint index, float newDotP)
WXSmoothEdge * getSmoothEdge()
void PushDotP(float iDotP)
WXFaceLayer(WXFace *iFace, WXNature iNature, bool viewDependant)
void setDotP(const vector< float > &iDotP)
void RetrieveCuspEdgesIndices(vector< int > &oCuspEdges)
uint Get0VertexIndex() const
int closestPointIndex() const
uint GetSmoothEdgeIndex() const
bool isViewDependant() const
WXSmoothEdge * BuildSmoothEdge()
WXSmoothEdge * _pSmoothEdge
void setDotP(float iDotP)
virtual void ResetUserData()
vector< WXFaceLayer * > _SmoothLayers
void retrieveSmoothLayers(WXNature iNature, vector< WXFaceLayer * > &oSmoothLayers)
virtual WFace * duplicate()
void setFront(bool iFront)
void setCenter(const Vec3f &iCenter)
virtual WEdge * instanciateEdge() const
void retrieveSmoothEdgesLayers(WXNature iNature, vector< WXFaceLayer * > &oSmoothEdgesLayers)
void AddSmoothLayer(WXFaceLayer *iLayer)
bool hasSmoothEdges() const
void retrieveSmoothEdges(WXNature iNature, vector< WXSmoothEdge * > &oSmoothEdges)
vector< WXFaceLayer * > & getSmoothLayers()
bool _computeViewIndependent
bool getComputeViewIndependentFlag() const
virtual WFace * instanciateFace() const
virtual WFace * MakeFace(vector< WVertex * > &iVertexList, vector< bool > &iFaceEdgeMarksList, uint iMaterialIndex)
virtual WShape * duplicate()
WXShape(WXShape &iBrother)
void setComputeViewIndependentFlag(bool iFlag)
void setWOeA(WOEdge *iwoea)
void setWOeB(WOEdge *iwoeb)
Configuration configuration() const
WXSmoothEdge(const WXSmoothEdge &iBrother)
static const Configuration VERTEX_EDGE
void setConfiguration(Configuration iConf)
void setFront(bool iFront)
static const Configuration EDGE_VERTEX
static const Configuration EDGE_EDGE
virtual WVertex * duplicate()
void setCurvatures(CurvatureInfo *ci)
WXVertex(WXVertex &iBrother)
CurvatureInfo * curvatures()
VecMat::Vec3< float > Vec3f
static const EdgeNature NO_FEATURE
Nature::EdgeNature WXNature