72 int ContainsPoint(
const VECTOR2I& aP,
int aClearance = 0 );
74 const BOX2I& BBox()
const
86 using EDGE_LIST = std::vector<int>;
89 inline void hash_combine( std::size_t& seed,
const T& v )
92 seed ^= hasher( v ) + 0x9e3779b9 + (seed << 6) + (seed >> 2);
97 bool operator()(
const SEG& a,
const SEG& b )
const
99 return (a.A == b.A && a.B == b.B) || (a.A == b.B && a.B == b.A);
105 std::size_t operator()(
const SEG& a )
const
107 return a.A.x + a.B.x + a.A.y + a.B.y;
111 int containsPoint(
const VECTOR2I& aP,
bool debug =
false )
const;
113 bool checkClearance(
const VECTOR2I& aP,
int aClearance );
115 int rescale_trunc(
int aNumerator,
int aValue,
int aDenominator )
const;
120 int grid2polyX(
int x )
const;
122 int grid2polyY(
int y )
const;
126 int poly2gridX(
int x )
const;
128 int poly2gridY(
int y )
const;
132 bool inRange(
int v1,
int v2,
int x )
const;
150 void scanCell( SCAN_STATE& state,
const EDGE_LIST& cell,
const VECTOR2I& aP,
int cx,
157 std::vector<int> m_flags;
158 std::vector<EDGE_LIST> m_grid;