6 #ifndef _INC_cPolygon_H
7 #define _INC_cPolygon_H
17 template <
typename TYPE,
class TYPE_RECT = cRectNT<TYPE> >
41 m_rectUnion.SetRectEmptyX();
54 return(m_aPoints.
GetSize() <= 0);
77 if (nCount <= 0 || nCount > k_MAX_VERTS)
80 if (pPoints !=
nullptr)
84 m_aPoints.
SetAt(i, pPoints[i]);
85 m_rectUnion.UnionPoint(pPoints[i].x, pPoints[i].y);
93 m_rectUnion.SetRectEmptyX();
102 m_rectUnion.UnionPoint(pt.
x, pt.
y);
107 m_rectUnion.UnionPoint(pt.
x, pt.
y);
108 return m_aPoints.
Add(pt);
123 rect.UnionPoint(m_aPoints[i].x, m_aPoints[i].y);
145 put_PolyRect(TYPE_RECT(0, 0, fSizeX, fSizeY));
153 m_aPoints[i].x += dx;
154 m_aPoints[i].y += dy;
156 m_rectUnion.OffsetRect(dx, dy);
160 template <
typename TYPE =
float,
class TYPE_RECT = cRectFT<TYPE> >
183 bool PtInPoly(DVALUE_t x, DVALUE_t y)
const;
186 return PtInPoly(pt.
x, pt.
y);
190 void v_GetPoly(
cVariant& vVal)
const;
192 bool IsRectIntersect(
const RECT_t&
rect)
const;
196 ITERATE_t FindClosestVert(
const POINT_t& pt)
const;
210 bool PtInPoly(DVALUE_t x, DVALUE_t y)
const;
213 return PtInPoly(pt.
x, pt.
y);
#define GRAYLIB_LINK
Definition: GrayLibBase.h:35
#define TYPE
Definition: StrT.cpp:38
INT32 HRESULT
_WIN32 style error codes. INT32
Definition: SysTypes.h:465
Definition: cPolygon.h:162
SUPER_t::RECT_t RECT_t
Definition: cPolygon.h:170
SUPER_t::DVALUE_t DVALUE_t
Definition: cPolygon.h:168
cPolygonT< TYPE, TYPE_RECT > SUPER_t
Definition: cPolygon.h:167
bool PtInPoly(const POINT_t &pt) const
Definition: cPolygon.h:184
~cPolygonFT()
Definition: cPolygon.h:176
cPolygonFT()
Definition: cPolygon.h:173
SUPER_t::POINT_t POINT_t
Definition: cPolygon.h:169
Definition: cPolygon.h:19
void OffsetPoly(TYPE dx, TYPE dy)
Definition: cPolygon.h:148
TYPE DVALUE_t
Dimension value type.
Definition: cPolygon.h:28
void InsertVert(ITERATE_t i, const POINT_t &pt)
Definition: cPolygon.h:100
TYPE_RECT RECT_t
cRectNT<TYPE>
Definition: cPolygon.h:30
ITERATE_t get_NumVerts() const
Definition: cPolygon.h:48
bool IsEqual(const THIS_t &p) const
Definition: cPolygon.h:65
const POINT_t & GetVert(ITERATE_t i) const
Definition: cPolygon.h:56
cPolygonT()
Definition: cPolygon.h:39
void put_PolyRect(const TYPE_RECT &rect)
Definition: cPolygon.h:133
void SetCopy(const THIS_t &poly)
Definition: cPolygon.h:127
ITERATE_t CreatePolygonPoints(const POINT_t *pPoints, ITERATE_t nCount)
Definition: cPolygon.h:74
cVecT2< TYPE > POINT_t
Definition: cPolygon.h:29
ITERATE_t AddVert(TYPE x, TYPE y)
Definition: cPolygon.h:110
void put_PolyRect(TYPE fSizeX, TYPE fSizeY)
Definition: cPolygon.h:143
void SetEmpty()
Definition: cPolygon.h:91
const TYPE_RECT & get_BoundingRect(void) const
Definition: cPolygon.h:44
void UnionPolyRect(TYPE_RECT &rect) const
Definition: cPolygon.h:115
POINT_t & RefVert(ITERATE_t i)
Definition: cPolygon.h:60
bool isPolyEmpty() const
Definition: cPolygon.h:52
ITERATE_t AddVert(const POINT_t &pt)
Definition: cPolygon.h:105
cArrayStruct< POINT_t > m_aPoints
k_MAX_VERTS
Definition: cPolygon.h:36
TYPE_RECT m_rectUnion
The union rectangle m_aPoints. inclusive if float, non-inclusive if int.
Definition: cPolygon.h:35
void DeleteVert(ITERATE_t i)
Definition: cPolygon.h:96
Definition: cPolygon.h:200
bool PtInPoly(const POINT_t &pt) const
Definition: cPolygon.h:211
Definition: cVariant.h:26
TYPE x
Definition: cVecT.h:490
TYPE y
Definition: cVecT.h:490
void RemoveAll()
Clean up.
Definition: cArray.h:230
void SetAt(ITERATE_t nIndex, ARG_TYPE newElement)
Definition: cArray.h:173
TYPE & ElementAt(ITERATE_t nIndex)
Definition: cArray.h:167
void InsertAt(ITERATE_t nIndex, ARG_TYPE newElement)
Definition: cArray.h:341
ITERATE_t Add(ARG_TYPE newElement)
Definition: cArray.h:199
ITERATE_t GetSize() const noexcept
Definition: cArray.h:137
void RemoveAt(ITERATE_t nIndex)
Definition: cArray.h:367
void SetSize(ITERATE_t nNewSize)
Definition: cArray.h:248
REF_t ConstElementAt(ITERATE_t nIndex) const
Definition: cArray.h:534
void SetCopy(const cArrayTyped< TYPE, ARG_TYPE > &aValues)
Definition: cArray.h:598
cPolygonFT< float, cRectf > cPolygonf
Definition: cPolygon.h:217
interface const RECTQ_t & rect
Definition: cQuadtree.h:44
cPolygonFT< double, cRectd > cPolygond
Definition: cPolygon.h:218
int ITERATE_t
like size_t but signed
Definition: Index.h:28