{
} // end of wxRegion::~wxRegion
+wxObjectRefData *wxRegion::CreateData() const
+{
+ return new wxRegionRefData;
+}
+
+wxObjectRefData *wxRegion::CloneData(const wxObjectRefData *data) const
+{
+ return new wxRegionRefData(*(wxRegionRefData *)data);
+}
+
//-----------------------------------------------------------------------------
//# Modify region
//-----------------------------------------------------------------------------
+bool wxRegion::Offset(
+ wxCoord x
+, wxCoord y
+)
+{
+ if ( !x && !y )
+ {
+ // nothing to do
+ return TRUE;
+ }
+
+ AllocExclusive();
+
+#if 0
+ if ( ::OffsetRgn(GetHrgn(), x, y) == ERROR )
+ {
+ wxLogLastError(_T("OffsetRgn"));
+
+ return FALSE;
+ }
+#endif
+ return TRUE;
+}
+
//
// Clear current region
//
, wxRegionOp eOp
)
{
- //
- // Don't change shared data
- //
- if (!m_refData)
- {
- m_refData = new wxRegionRefData();
- }
- else if (m_refData->GetRefCount() > 1)
- {
- wxRegionRefData* pRef = (wxRegionRefData*)m_refData;
-
- UnRef();
- m_refData = new wxRegionRefData(*pRef);
- }
+ AllocExclusive();
//
// If ref count is 1, that means it's 'ours' anyway so no action.
if (rRegion.Empty())
return FALSE;
- //
- // Don't change shared data
- //
- if (!m_refData)
- {
- m_refData = new wxRegionRefData();
- }
- else if (m_refData->GetRefCount() > 1)
- {
- wxRegionRefData* pRef = (wxRegionRefData*)m_refData;
-
- UnRef();
- m_refData = new wxRegionRefData(*pRef);
- }
+ AllocExclusive();
LONG lMode = 0;
,&vRect
);
x = vRect.xLeft;
- y = vRect.yTop;
+ y = vRect.yBottom;
vWidth = vRect.xRight - vRect.xLeft;
vHeight = vRect.yTop - vRect.yBottom;
}