10 #ifndef smtk_session_polygon_internal_edge_h
11 #define smtk_session_polygon_internal_edge_h
13 #include "smtk/SharedPtr.h"
14 #include "smtk/session/polygon/internal/Entity.h"
17 #include <sys/types.h>
20 typedef SSIZE_T ssize_t;
21 #if defined(_MSC_VER) && _MSC_VER < 1900
22 typedef SIZE_T size_t;
43 ~
edge()
override =
default;
45 std::size_t pointsSize()
const {
return m_points.size(); }
47 PointSeq::const_iterator pointsBegin()
const {
return m_points.begin(); }
48 PointSeq::iterator pointsBegin() {
return m_points.begin(); }
50 PointSeq::const_iterator pointsEnd()
const {
return m_points.end(); }
51 PointSeq::iterator pointsEnd() {
return m_points.end(); }
53 PointSeq::const_reverse_iterator pointsRBegin()
const {
return m_points.rbegin(); }
54 PointSeq::reverse_iterator pointsRBegin() {
return m_points.rbegin(); }
56 PointSeq::const_reverse_iterator pointsREnd()
const {
return m_points.rend(); }
57 PointSeq::reverse_iterator pointsREnd() {
return m_points.rend(); }
59 bool pointsOfSegment(ssize_t idx, Point& lo, Point& hi)
const
61 if (idx < 0 || idx >=
static_cast<ssize_t
>(m_points.size()))
64 PointSeq::const_iterator it = this->pointsBegin();
65 for (ssize_t i = 0; i <= idx && it != this->pointsEnd(); ++i, ++it, lo = hi)
71 PointSeq& points() {
return m_points; }
72 const PointSeq& points()
const {
return m_points; }
87 #endif // smtk_session_polygon_internal_edge_h