]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/gdicmn.cpp
mention wx[Flex]GridSizer too
[wxWidgets.git] / src / common / gdicmn.cpp
index c6b57f5f99b384ba1024ad559af7f09a3ce87519..239278c28ee1ab66cf59b55a5234f74642fb7767 100644 (file)
@@ -113,6 +113,29 @@ wxRect wxRect::operator + (const wxRect& rect) const
     return wxRect(x1, y1, x2-x1, y2-y1);
 }
 
+wxRect& wxRect::Inflate(wxCoord dx, wxCoord dy)
+{
+    x -= dx;
+    y -= dy;
+    width += 2*dx;
+    height += 2*dy;
+
+    // check that we didn't make the rectangle invalid by accident (you almost
+    // never want to have negative coords and never want negative size)
+    if ( x < 0 )
+        x = 0;
+    if ( y < 0 )
+        y = 0;
+
+    // what else can we do?
+    if ( width < 0 )
+        width = 0;
+    if ( height < 0 )
+        height = 0;
+
+    return *this;
+}
+
 bool wxRect::Inside(int cx, int cy) const
 {
     return ( (cx >= x) && (cy >= y)
@@ -121,6 +144,40 @@ bool wxRect::Inside(int cx, int cy) const
           );
 }
 
+wxRect& wxRect::Intersect(const wxRect& rect)
+{
+    int x2 = GetRight(),
+        y2 = GetBottom();
+
+    if ( x < rect.x )
+        x = rect.x;
+    if ( y < rect.y )
+        y = rect.y;
+    if ( x2 > rect.GetRight() )
+        x2 = rect.GetRight();
+    if ( y2 > rect.GetBottom() )
+        y2 = rect.GetBottom();
+
+    width = x2 - x + 1;
+    height = y2 - y + 1;
+
+    if ( width <= 0 || height <= 0 )
+    {
+        width =
+        height = 0;
+    }
+
+    return *this;
+}
+
+bool wxRect::Intersects(const wxRect& rect) const
+{
+    wxRect r = Intersect(rect);
+
+    // if there is no intersection, both width and height are 0
+    return r.width != 0;
+}
+
 wxColourDatabase::wxColourDatabase (int type) : wxList (type)
 {
 }
@@ -283,6 +340,9 @@ wxColour *wxColourDatabase::FindColour(const wxString& colour)
 #ifdef __WXPM__
   return NULL;
 #endif
+#ifdef __WXMGL__
+  return NULL;
+#endif
 
 // TODO for other implementations. This should really go into
 // platform-specific directories.