]> git.saurik.com Git - wxWidgets.git/blobdiff - src/dfb/region.cpp
Fix item selection/focus drawing in generic wxListCtrl.
[wxWidgets.git] / src / dfb / region.cpp
index e2788df22ec96a37cf062746b7e89ae7e0eb8b67..f49cf3c88bde02fa86b538e29758371514854bcd 100644 (file)
@@ -33,6 +33,8 @@ public:
 
     ~wxRegionRefData() {}
 
+    // default assignment and comparision operators are OK
+
     wxRect m_rect;
 };
 
@@ -43,12 +45,12 @@ public:
 // wxRegion
 //-----------------------------------------------------------------------------
 
-wxObjectRefData *wxRegion::CreateRefData() const
+wxGDIRefData *wxRegion::CreateGDIRefData() const
 {
     return new wxRegionRefData;
 }
 
-wxObjectRefData *wxRegion::CloneRefData(const wxObjectRefData *data) const
+wxGDIRefData *wxRegion::CloneGDIRefData(const wxGDIRefData *data) const
 {
     return new wxRegionRefData(*(wxRegionRefData *)data);
 }
@@ -78,39 +80,30 @@ wxRegion::~wxRegion()
     // m_refData unrefed in ~wxObject
 }
 
-bool wxRegion::operator==(const wxRegion& region) const
-{
-    if ( m_refData != region.m_refData )
-        return false;
-
-    if ( !Ok() )
-        return true; // both invalid
-
-    return M_REGION->m_rect == M_REGION_OF(region)->m_rect;
-}
-
 //-----------------------------------------------------------------------------
 // Information about the region
 //-----------------------------------------------------------------------------
 
-void wxRegion::GetBox(wxCoord& x, wxCoord& y, wxCoord&w, wxCoord &h) const
+bool wxRegion::DoIsEqual(const wxRegion& region) const
 {
-    wxRect r = GetBox();
+    return M_REGION->m_rect == M_REGION_OF(region)->m_rect;
+}
+
+bool wxRegion::DoGetBox(wxCoord& x, wxCoord& y, wxCoord&w, wxCoord &h) const
+{
+    if ( !m_refData )
+        return false;
+
+    const wxRect& r = M_REGION->m_rect;
     x = r.GetX();
     y = r.GetY();
     w = r.GetWidth();
     h = r.GetHeight();
-}
 
-wxRect wxRegion::GetBox() const
-{
-    if (m_refData)
-        return M_REGION->m_rect;
-    else
-        return wxRect();
+    return true;
 }
 
-bool wxRegion::Empty() const
+bool wxRegion::IsEmpty() const
 {
     if (!m_refData)
         return true;
@@ -127,57 +120,56 @@ void wxRegion::Clear()
     UnRef();
 }
 
-bool wxRegion::Offset(wxCoord x, wxCoord y)
+bool wxRegion::DoOffset(wxCoord x, wxCoord y)
 {
     AllocExclusive();
     M_REGION->m_rect.Offset(x, y);
     return true;
 }
 
-bool wxRegion::Union(const wxRect& rect)
+bool wxRegion::DoUnionWithRect(const wxRect& rect)
 {
     AllocExclusive();
 
-    if ( M_REGION->m_rect.Inside(rect) )
+    if ( M_REGION->m_rect.Contains(rect) )
     {
         return true;
     }
-    else if ( rect.Inside(M_REGION->m_rect) )
+    else if ( rect.Contains(M_REGION->m_rect) )
     {
         M_REGION->m_rect = rect;
         return true;
     }
     else
     {
-        wxFAIL_MSG( _T("only rectangular regions are supported") );
+        wxFAIL_MSG( "only rectangular regions are supported" );
         return false;
     }
 }
 
-bool wxRegion::Union(const wxRegion& region)
+bool wxRegion::DoUnionWithRegion(const wxRegion& region)
 {
-    wxCHECK_MSG( region.Ok(), false, _T("invalid region") );
-    return Union(M_REGION_OF(region)->m_rect);
+    wxCHECK_MSG( region.Ok(), false, "invalid region" );
+    return DoUnionWithRect(M_REGION_OF(region)->m_rect);
 }
 
-bool wxRegion::Intersect(const wxRect& rect)
+bool wxRegion::DoIntersect(const wxRegion& region)
 {
+    wxCHECK_MSG( region.Ok(), false, "invalid region" );
+
     AllocExclusive();
-    M_REGION->m_rect.Intersect(rect);
+    M_REGION->m_rect.Intersect(M_REGION_OF(region)->m_rect);
     return true;
 }
 
-bool wxRegion::Intersect(const wxRegion& region)
+bool wxRegion::DoSubtract(const wxRegion& region)
 {
-    wxCHECK_MSG( region.Ok(), false, _T("invalid region") );
-    return Intersect(M_REGION_OF(region)->m_rect);
-}
+    wxCHECK_MSG( region.Ok(), false, "invalid region" );
+    wxCHECK_MSG( Ok(), false, "invalid region" );
 
-bool wxRegion::Subtract(const wxRect& rect)
-{
-    wxCHECK_MSG( Ok(), false, _T("invalid region") );
+    const wxRect& rect = M_REGION_OF(region)->m_rect;
 
-    if ( rect.Inside(M_REGION->m_rect) )
+    if ( rect.Contains(M_REGION->m_rect) )
     {
         // subtracted rectangle contains this one, so the result is empty
         // rectangle
@@ -191,50 +183,39 @@ bool wxRegion::Subtract(const wxRect& rect)
     }
     else
     {
-        wxFAIL_MSG( _T("only rectangular regions implemented") );
+        wxFAIL_MSG( "only rectangular regions implemented" );
         return false;
     }
 }
 
-bool wxRegion::Subtract(const wxRegion& region)
+bool wxRegion::DoXor(const wxRegion& region)
 {
-    wxCHECK_MSG( region.Ok(), false, _T("invalid region") );
-    return Subtract(M_REGION_OF(region)->m_rect);
-}
-
-bool wxRegion::Xor(const wxRect& rect)
-{
-    wxFAIL_MSG( _T("Xor not implemented") );
+    wxCHECK_MSG( region.Ok(), false, "invalid region" );
+    wxFAIL_MSG( "Xor not implemented" );
     return false;
 }
 
-bool wxRegion::Xor(const wxRegion& region)
-{
-    wxCHECK_MSG( region.Ok(), false, _T("invalid region") );
-    return Xor(M_REGION_OF(region)->m_rect);
-}
-
 
 //-----------------------------------------------------------------------------
 // Tests
 //-----------------------------------------------------------------------------
 
-wxRegionContain wxRegion::Contains(wxCoord x, wxCoord y) const
+wxRegionContain wxRegion::DoContainsPoint(wxCoord x, wxCoord y) const
 {
-    wxCHECK_MSG( Ok(), wxOutRegion, _T("invalid region") );
+    wxCHECK_MSG( Ok(), wxOutRegion, "invalid region" );
 
-    if (M_REGION->m_rect.Inside(x, y))
+    if (M_REGION->m_rect.Contains(x, y))
         return wxInRegion;
     else
         return wxOutRegion;
 }
 
-wxRegionContain wxRegion::Contains(const wxRect& rect) const
+wxRegionContain wxRegion::DoContainsRect(const wxRect& rect) const
 {
-    wxCHECK_MSG( Ok(), wxOutRegion, _T("invalid region") );
+    wxCHECK_MSG( Ok(), wxOutRegion, "invalid region" );
 
     // 1) is the rectangle entirely covered by the region?
-    if (M_REGION->m_rect.Inside(rect))
+    if (M_REGION->m_rect.Contains(rect))
         return wxInRegion;
 
     // 2) is the rectangle completely outside the region?