]> git.saurik.com Git - wxWidgets.git/blobdiff - src/gtk/dcclient.cpp
wxWindow::ReParent()
[wxWidgets.git] / src / gtk / dcclient.cpp
index a0a0ec25450e93b2a1c77f3ea021678f0f5bb063..608e79287a9be628d46d07b51b49ba1911bdd770 100644 (file)
@@ -116,15 +116,6 @@ wxWindowDC::wxWindowDC( wxWindow *window )
         
     SetUpDC();
     
-/*
-    wxRegion update = window->GetUpdateRegion();
-    if (update.Empty()) return;
-    
-    gdk_gc_set_clip_region( m_penGC, update.GetRegion() );
-    gdk_gc_set_clip_region( m_brushGC, update.GetRegion() );
-    gdk_gc_set_clip_region( m_textGC, update.GetRegion() );
-    gdk_gc_set_clip_region( m_bgGC, update.GetRegion() );
-*/
 }
 
 wxWindowDC::~wxWindowDC(void)
@@ -132,8 +123,8 @@ wxWindowDC::~wxWindowDC(void)
     Destroy();
 }
 
-void wxWindowDC::FloodFill( long WXUNUSED(x1), long WXUNUSED(y1), 
-                           wxColour *WXUNUSED(col), int WXUNUSED(style) )
+void wxWindowDC::FloodFill( long WXUNUSED(x), long WXUNUSED(y), 
+                           const wxColour &WXUNUSED(col), int WXUNUSED(style) )
 {
     wxFAIL_MSG( "wxWindowDC::FloodFill not implemented" );
 }
@@ -505,7 +496,7 @@ bool wxWindowDC::CanDrawBitmap(void) const
   return TRUE;
 }
 
-void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask )
+void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y )
 {
     if (!Ok()) return;
   
@@ -517,7 +508,7 @@ void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask )
     GdkBitmap *mask = (GdkBitmap *) NULL;
     if (icon.GetMask()) mask = icon.GetMask()->GetBitmap();
     
-    if (useMask && mask) 
+    if (mask) 
     {
         gdk_gc_set_clip_mask( m_penGC, mask );
         gdk_gc_set_clip_origin( m_penGC, xx, yy );
@@ -526,7 +517,7 @@ void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask )
     GdkPixmap *pm = icon.GetPixmap();
     gdk_draw_pixmap( m_window, m_penGC, pm, 0, 0, xx, yy, -1, -1 );
   
-    if (useMask && mask) 
+    if (mask) 
     {
         gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL );
         gdk_gc_set_clip_origin( m_penGC, 0, 0 );
@@ -538,6 +529,39 @@ void wxWindowDC::DrawIcon( const wxIcon &icon, long x, long y, bool useMask )
     CalcBoundingBox( x + width, y + height );
 }
 
+void wxWindowDC::DrawBitmap( const wxBitmap &bitmap, long x, long y, bool useMask )
+{
+    if (!Ok()) return;
+  
+    if (!bitmap.Ok()) return;
+  
+    int xx = XLOG2DEV(x);
+    int yy = YLOG2DEV(y);
+  
+    GdkBitmap *mask = (GdkBitmap *) NULL;
+    if (bitmap.GetMask()) mask = bitmap.GetMask()->GetBitmap();
+    
+    if (useMask && mask) 
+    {
+        gdk_gc_set_clip_mask( m_penGC, mask );
+        gdk_gc_set_clip_origin( m_penGC, xx, yy );
+    }
+  
+    GdkPixmap *pm = bitmap.GetPixmap();
+    gdk_draw_pixmap( m_window, m_penGC, pm, 0, 0, xx, yy, -1, -1 );
+  
+    if (useMask && mask) 
+    {
+        gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL );
+        gdk_gc_set_clip_origin( m_penGC, 0, 0 );
+    }
+    
+    CalcBoundingBox( x, y );
+    int width = bitmap.GetWidth();
+    int height = bitmap.GetHeight();
+    CalcBoundingBox( x + width, y + height );
+}
+
 bool wxWindowDC::Blit( long xdest, long ydest, long width, long height,
        wxDC *source, long xsrc, long ysrc, int WXUNUSED(logical_func), bool useMask )
 {
@@ -941,6 +965,20 @@ void wxWindowDC::SetClippingRegion( long x, long y, long width, long height )
     gdk_gc_set_clip_rectangle( m_bgGC, &rect );
 }
 
+void wxWindowDC::SetClippingRegion( const wxRegion &region  )
+{
+    if (region.Empty())
+    {
+        DestroyClippingRegion();
+        return;
+    }
+    
+    gdk_gc_set_clip_region( m_penGC, region.GetRegion() );
+    gdk_gc_set_clip_region( m_brushGC, region.GetRegion() );
+    gdk_gc_set_clip_region( m_textGC, region.GetRegion() );
+    gdk_gc_set_clip_region( m_bgGC, region.GetRegion() );
+}
+
 void wxWindowDC::DestroyClippingRegion(void)
 {
     wxDC::DestroyClippingRegion();