23#ifndef FMSLICECONTOURBUILDER_H_INCLUDED
24#define FMSLICECONTOURBUILDER_H_INCLUDED
47 std::list<T> m_lstValues;
48 std::set<T> m_setValues;
61 return m_lstValues.front();
66 return m_lstValues.back();
71 m_lstValues.push_back(aVal);
72 m_setValues.insert(aVal);
77 return m_lstValues.size();
91 const T& aVal = m_lstValues.back();
92 m_setValues.erase(aVal);
93 m_lstValues.pop_back();
98 return (m_setValues.find(aVal) != m_setValues.end());
103 return (m_lstValues == t2.m_lstValues);
174 typedef std::set<OdUInt32> AssignedEdges;
175 AssignedEdges m_assignedEdges;
186 bool IsEdgeAssigned(
OdUInt32 edgeIdx) {
return m_assignedEdges.find(edgeIdx) != m_assignedEdges.end(); }
187 void SetEdgeAssigned(
OdUInt32 edgeIdx) { m_assignedEdges.insert(edgeIdx); }
190 void AddPoint2dToExtents(
const OdGePoint2d& ptVertex2d);
195 void MarkDuplicatedEdges();
199 void MakeClosedContour(
Contour2D& rResult );
237 typedef std::vector<SliceEdge> Edges;
239 void DebugDrawEdgeGraph();
240 void DebugDrawEdge(
OdUInt32 uEdgeIdx, Edges& drawnEdges,
OdInt16 edgeBaseColor = 0);
242 bool HasCoincidentEdge(
OdUInt32 uEdgeIdx,
const Edges& drawnEdges);
243 bool HasCoincidentOppositeEdge(
OdUInt32 uEdgeIdx,
const Edges& drawnEdges);
246 void DebugCheckForDuplicatedNodes();
void FindSliceContours(SliceContourCollection &aSliceContours)
void BuildSliceProfile2(const OdGePlane &rCutPlane, Profile2D &rResult)
bool FindContour(std::vector< OdUInt32 > &aContour)
bool IsContourClosed(const SliceContour &aContour)
void BuildSliceProfile(const OdGePlane &rCutPlane, Profile2D &rResult)
OdArray< const Edge * > * m_sourceEdges
SliceContourBuilder(EdgeGraph &aGraph)
bool HasContour(const SliceContour &aContour) const
SliceContoursMap & GetContours()
bool AddContour(const SliceContour &aContour)
const SliceContoursMap & GetContours() const
friend bool operator==(const SliceContour &c1, const SliceContour &c2)
OdUInt32 GetFirstEdge() const
std::list< OdUInt32 > TContour
OdUInt32 GetLastEdge() const
void AddEdge(OdUInt32 iEdge)
bool HasEdge(OdUInt32 iEdge) const
const TContour & GetContour() const
bool is_equal(const TListSet< T > &t2) const
bool has_value(const T &aVal) const
void push_back(const T &aVal)
const std::list< T > & get_list() const
std::vector< OdUInt32 > SliceNodes
std::multimap< OdUInt32, SliceContour > SliceContoursMap