/////////////////////////////////////////////////////////////////////////////
-// Name: src/generic/region.cpp
+// Name: src/generic/regiong.cpp
// Purpose: generic wxRegion class
// Author: David Elliott
// Modified by:
// wxRegionRefData
// ========================================================================
-class wxRegionRefData : public wxObjectRefData,
+class wxRegionRefData : public wxGDIRefData,
public REGION
{
public:
wxRegionRefData()
- : wxObjectRefData(),
+ : wxGDIRefData(),
REGION()
{
size = 1;
}
wxRegionRefData(const wxPoint& topLeft, const wxPoint& bottomRight)
- : wxObjectRefData(),
+ : wxGDIRefData(),
REGION()
{
rects = (BOX*)malloc(sizeof(BOX));
}
wxRegionRefData(const wxRect& rect)
- : wxObjectRefData(),
+ : wxGDIRefData(),
REGION(rect)
{
rects = (BOX*)malloc(sizeof(BOX));
}
wxRegionRefData(const wxRegionRefData& refData)
- : wxObjectRefData(),
+ : wxGDIRefData(),
REGION()
{
size = refData.size;
m_refData = new wxRegionRefData(topLeft, bottomRight);
}
+wxRegionGeneric::wxRegionGeneric(const wxBitmap& bmp)
+{
+ wxFAIL_MSG("NOT IMPLEMENTED: wxRegionGeneric::wxRegionGeneric(const wxBitmap& bmp)");
+}
+
+wxRegionGeneric::wxRegionGeneric(size_t n, const wxPoint *points, wxPolygonFillMode fillStyle)
+{
+ wxFAIL_MSG("NOT IMPLEMENTED: wxRegionGeneric::wxRegionGeneric(size_t n, const wxPoint *points, wxPolygonFillMode fillStyle)");
+}
+
+wxRegionGeneric::wxRegionGeneric(const wxBitmap& bmp, const wxColour& transp, int tolerance)
+{
+ wxFAIL_MSG("NOT IMPLEMENTED: wxRegionGeneric::wxRegionGeneric(const wxBitmap& bmp, const wxColour& transp, int tolerance)");
+}
+
void wxRegionGeneric::Clear()
{
UnRef();
+ if (!m_refData)
+ m_refData = new wxRegionRefData(wxRect(0,0,0,0));
}
-wxObjectRefData *wxRegionGeneric::CreateRefData() const
+wxGDIRefData *wxRegionGeneric::CreateGDIRefData() const
{
return new wxRegionRefData;
}
-wxObjectRefData *wxRegionGeneric::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegionGeneric::CloneGDIRefData(const wxGDIRefData *data) const
{
return new wxRegionRefData(*(wxRegionRefData *)data);
}
return REGION::XUnionRegion(®ion,M_REGIONDATA,M_REGIONDATA);
}
-bool wxRegionGeneric::DoUnionWithRegion(const wxRegionGeneric& region)
+bool wxRegionGeneric::DoUnionWithRegion(const wxRegion& region)
{
AllocExclusive();
return REGION::XUnionRegion(M_REGIONDATA_OF(region),M_REGIONDATA,M_REGIONDATA);
}
-bool wxRegionGeneric::DoIntersect(const wxRegionGeneric& region)
+bool wxRegionGeneric::DoIntersect(const wxRegion& region)
{
AllocExclusive();
return REGION::XIntersectRegion(M_REGIONDATA_OF(region),M_REGIONDATA,M_REGIONDATA);
}
-bool wxRegionGeneric::DoSubtract(const wxRegionGeneric& region)
+bool wxRegionGeneric::DoSubtract(const wxRegion& region)
{
if ( region.IsEmpty() )
{
return REGION::XSubtractRegion(M_REGIONDATA_OF(region),M_REGIONDATA,M_REGIONDATA);
}
-bool wxRegionGeneric::DoXor(const wxRegionGeneric& region)
+bool wxRegionGeneric::DoXor(const wxRegion& region)
{
AllocExclusive();
return REGION::XXorRegion(M_REGIONDATA_OF(region),M_REGIONDATA,M_REGIONDATA);
}
// Does the region contain the point (x,y)?
-wxRegionContain wxRegionGeneric::DoContainsPoint(long x, long y) const
+wxRegionContain wxRegionGeneric::DoContainsPoint(wxCoord x, wxCoord y) const
{
wxASSERT(m_refData);
return REGION::XPointInRegion(M_REGIONDATA,x,y) ? wxInRegion : wxOutRegion;
if (!temp->rects)
{
- free((char *) temp);
+ delete temp;
return (Region) NULL;
}
temp->numRects = 0;
pExtents->x2 = pBoxEnd->x2;
pExtents->y2 = pBoxEnd->y2;
- assert(pExtents->y1 < pExtents->y2);
+ wxASSERT_LEVEL_2(pExtents->y1 < pExtents->y2);
while (pBox <= pBoxEnd)
{
if (pBox->x1 < pExtents->x1)
}
pBox++;
}
- assert(pExtents->x1 < pExtents->x2);
+ wxASSERT_LEVEL_2(pExtents->x1 < pExtents->x2);
}
bool REGION::
*/
if (x1 < x2)
{
- assert(y1<y2);
+ wxASSERT_LEVEL_2(y1<y2);
MEMCHECK(pReg, pNextRect, pReg->rects);
pNextRect->x1 = x1;
pNextRect->y2 = y2;
pReg->numRects += 1;
pNextRect++;
- assert(pReg->numRects <= pReg->size);
+ wxASSERT_LEVEL_2(pReg->numRects <= pReg->size);
}
/*
pNextRect = &pReg->rects[pReg->numRects];
- assert(y1 < y2);
+ wxASSERT_LEVEL_2(y1 < y2);
while (r != rEnd)
{
- assert(r->x1 < r->x2);
+ wxASSERT_LEVEL_2(r->x1 < r->x2);
MEMCHECK(pReg, pNextRect, pReg->rects);
pNextRect->x1 = r->x1;
pNextRect->y1 = y1;
pReg->numRects += 1;
pNextRect++;
- assert(pReg->numRects<=pReg->size);
+ wxASSERT_LEVEL_2(pReg->numRects<=pReg->size);
r++;
}
return 0; /* lint */
if (pNextRect[-1].x2 < r->x2) \
{ \
pNextRect[-1].x2 = r->x2; \
- assert(pNextRect[-1].x1<pNextRect[-1].x2); \
+ wxASSERT_LEVEL_2(pNextRect[-1].x1<pNextRect[-1].x2); \
} \
} \
else \
pReg->numRects += 1; \
pNextRect += 1; \
} \
- assert(pReg->numRects<=pReg->size);\
+ wxASSERT_LEVEL_2(pReg->numRects<=pReg->size);\
r++;
- assert (y1<y2);
+ wxASSERT_LEVEL_2 (y1<y2);
while ((r1 != r1End) && (r2 != r2End))
{
if (r1->x1 < r2->x1)
pNextRect = &pReg->rects[pReg->numRects];
- assert(y1<y2);
+ wxASSERT_LEVEL_2(y1<y2);
while (r != rEnd)
{
- assert(r->x1<r->x2);
+ wxASSERT_LEVEL_2(r->x1<r->x2);
MEMCHECK(pReg, pNextRect, pReg->rects);
pNextRect->x1 = r->x1;
pNextRect->y1 = y1;
pReg->numRects += 1;
pNextRect++;
- assert(pReg->numRects <= pReg->size);
+ wxASSERT_LEVEL_2(pReg->numRects <= pReg->size);
r++;
}
x1 = r1->x1;
- assert(y1<y2);
+ wxASSERT_LEVEL_2(y1<y2);
pNextRect = &pReg->rects[pReg->numRects];
while ((r1 != r1End) && (r2 != r2End))
else if (r2->x1 <= x1)
{
/*
- * Subtrahend preceeds minuend: nuke left edge of minuend.
+ * Subtrahend precedes minuend: nuke left edge of minuend.
*/
x1 = r2->x2;
if (x1 >= r1->x2)
* Left part of subtrahend covers part of minuend: add uncovered
* part of minuend to region and skip to next subtrahend.
*/
- assert(x1<r2->x1);
+ wxASSERT_LEVEL_2(x1<r2->x1);
MEMCHECK(pReg, pNextRect, pReg->rects);
pNextRect->x1 = x1;
pNextRect->y1 = y1;
pReg->numRects += 1;
pNextRect++;
- assert(pReg->numRects<=pReg->size);
+ wxASSERT_LEVEL_2(pReg->numRects<=pReg->size);
x1 = r2->x2;
if (x1 >= r1->x2)
pNextRect->y2 = y2;
pReg->numRects += 1;
pNextRect++;
- assert(pReg->numRects<=pReg->size);
+ wxASSERT_LEVEL_2(pReg->numRects<=pReg->size);
}
r1++;
if (r1 != r1End)
*/
while (r1 != r1End)
{
- assert(x1<r1->x2);
+ wxASSERT_LEVEL_2(x1<r1->x2);
MEMCHECK(pReg, pNextRect, pReg->rects);
pNextRect->x1 = x1;
pNextRect->y1 = y1;
pReg->numRects += 1;
pNextRect++;
- assert(pReg->numRects<=pReg->size);
+ wxASSERT_LEVEL_2(pReg->numRects<=pReg->size);
r1++;
if (r1 != r1End)