]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/dcclient.cpp
don't inherit the controls colours from the parent - at least for the background...
[wxWidgets.git] / src / x11 / dcclient.cpp
index 53a0311a55fb7f5364e1d7ba8fbc0083e885cdef..68b68bf7b8d773fe70ad28e5ccdf3d48092f1af4 100644 (file)
@@ -225,7 +225,6 @@ void wxWindowDC::SetUpDC()
         m_textGC = (WXGC*) wxGetPoolGC( (Window) m_window, wxTEXT_SCREEN );
         m_bgGC = (WXGC*) wxGetPoolGC( (Window) m_window, wxBG_SCREEN );
     }
         m_textGC = (WXGC*) wxGetPoolGC( (Window) m_window, wxTEXT_SCREEN );
         m_bgGC = (WXGC*) wxGetPoolGC( (Window) m_window, wxBG_SCREEN );
     }
-#if 0
     else
     if (m_isMemDC && (((wxMemoryDC*)this)->m_selected.GetDepth() == 1))
     {
     else
     if (m_isMemDC && (((wxMemoryDC*)this)->m_selected.GetDepth() == 1))
     {
@@ -234,7 +233,6 @@ void wxWindowDC::SetUpDC()
         m_textGC = (WXGC*) wxGetPoolGC( (Window) m_window, wxTEXT_MONO );
         m_bgGC = (WXGC*) wxGetPoolGC( (Window) m_window, wxBG_MONO );
     }
         m_textGC = (WXGC*) wxGetPoolGC( (Window) m_window, wxTEXT_MONO );
         m_bgGC = (WXGC*) wxGetPoolGC( (Window) m_window, wxBG_MONO );
     }
-#endif
     else
     {
         m_penGC = (WXGC*) wxGetPoolGC( (Window) m_window, wxPEN_COLOUR );
     else
     {
         m_penGC = (WXGC*) wxGetPoolGC( (Window) m_window, wxPEN_COLOUR );
@@ -342,8 +340,6 @@ void wxWindowDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 )
 
         CalcBoundingBox(x1, y1);
         CalcBoundingBox(x2, y2);
 
         CalcBoundingBox(x1, y1);
         CalcBoundingBox(x2, y2);
-
-       wxLogDebug("Drawing line at %d, %d -> %d, %d", XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2) );
     }
 }
 
     }
 }
 
@@ -745,13 +741,12 @@ void wxWindowDC::DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord h
         if (m_pen.GetStyle () != wxTRANSPARENT)
         {
             XDrawRectangle( (Display*) m_display, (Window) m_window,
         if (m_pen.GetStyle () != wxTRANSPARENT)
         {
             XDrawRectangle( (Display*) m_display, (Window) m_window,
-                (GC) m_penGC, xx, yy, ww, hh );
+                (GC) m_penGC, xx, yy, ww-1, hh-1 );
         }
     }
 
     CalcBoundingBox( x, y );
     CalcBoundingBox( x + width, y + height );
         }
     }
 
     CalcBoundingBox( x, y );
     CalcBoundingBox( x + width, y + height );
-    wxLogDebug("Drawing rectangle at %d, %d (%dx%d)", x, y, width, height);
 }
 
 void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius )
 }
 
 void wxWindowDC::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius )
@@ -848,7 +843,6 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap,
 
     wxCHECK_RET( bitmap.Ok(), wxT("invalid bitmap") );
     
 
     wxCHECK_RET( bitmap.Ok(), wxT("invalid bitmap") );
     
-#if 0
     bool is_mono = (bitmap.GetBitmap() != NULL);
 
     /* scale/translate size and position */
     bool is_mono = (bitmap.GetBitmap() != NULL);
 
     /* scale/translate size and position */
@@ -881,9 +875,11 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap,
     {
         wxImage image( bitmap );
         image.Rescale( ww, hh );
     {
         wxImage image( bitmap );
         image.Rescale( ww, hh );
+#if 0
         if (is_mono)
             use_bitmap = image.ConvertToMonoBitmap(255,255,255);
         else
         if (is_mono)
             use_bitmap = image.ConvertToMonoBitmap(255,255,255);
         else
+#endif
             use_bitmap = image.ConvertToBitmap();
     }
     else
             use_bitmap = image.ConvertToBitmap();
     }
     else
@@ -892,12 +888,13 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap,
     }
 
     /* apply mask if any */
     }
 
     /* apply mask if any */
-    GdkBitmap *mask = (GdkBitmap *) NULL;
+    WXPixmap mask = NULL;
     if (use_bitmap.GetMask()) mask = use_bitmap.GetMask()->GetBitmap();
     if (use_bitmap.GetMask()) mask = use_bitmap.GetMask()->GetBitmap();
-
+    {
         if (useMask && mask)
         {
         if (useMask && mask)
         {
-            GdkBitmap *new_mask = (GdkBitmap*) NULL;
+            WXPixmap new_mask = NULL;
+#if 0
             if (!m_currentClippingRegion.IsNull())
             {
                 GdkColor col;
             if (!m_currentClippingRegion.IsNull())
             {
                 GdkColor col;
@@ -917,53 +914,56 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap,
                 gdk_draw_rectangle( new_mask, gc, TRUE, 0, 0, ww, hh );
                 gdk_gc_unref( gc );
             }
                 gdk_draw_rectangle( new_mask, gc, TRUE, 0, 0, ww, hh );
                 gdk_gc_unref( gc );
             }
-
+#endif
             if (is_mono)
             {
                 if (new_mask)
             if (is_mono)
             {
                 if (new_mask)
-                    gdk_gc_set_clip_mask( m_textGC, new_mask );
+                    XSetClipMask( (Display*) m_display, (GC) m_textGC, (Pixmap) new_mask );
                 else
                 else
-                    gdk_gc_set_clip_mask( m_textGC, mask );
-                gdk_gc_set_clip_origin( m_textGC, xx, yy );
+                    XSetClipMask( (Display*) m_display, (GC) m_textGC, (Pixmap) mask );
+                XSetClipOrigin( (Display*) m_display, (GC) m_textGC, xx, yy );
             }
             else
             {
                 if (new_mask)
             }
             else
             {
                 if (new_mask)
-                    gdk_gc_set_clip_mask( m_penGC, new_mask );
+                    XSetClipMask( (Display*) m_display, (GC) m_penGC, (Pixmap) new_mask );
                 else
                 else
-                    gdk_gc_set_clip_mask( m_penGC, mask );
-                gdk_gc_set_clip_origin( m_penGC, xx, yy );
+                    XSetClipMask( (Display*) m_display, (GC) m_penGC, (Pixmap) mask );
+                XSetClipOrigin( (Display*) m_display, (GC) m_penGC, xx, yy );
             }
             }
+            
             if (new_mask)
             if (new_mask)
-                gdk_bitmap_unref( new_mask );
+               XFreePixmap( (Display*) m_display, (Pixmap) new_mask );
         }
         }
+    }
 
     /* Draw XPixmap or XBitmap, depending on what the wxBitmap contains. For
        drawing a mono-bitmap (XBitmap) we use the current text GC */
     if (is_mono)
 
     /* Draw XPixmap or XBitmap, depending on what the wxBitmap contains. For
        drawing a mono-bitmap (XBitmap) we use the current text GC */
     if (is_mono)
-        gdk_wx_draw_bitmap( m_window, m_textGC, use_bitmap.GetBitmap(), 0, 0, xx, yy, -1, -1 );
+        XCopyPlane( (Display*) m_display, (Pixmap) use_bitmap.GetBitmap(), (Window) m_window,
+            (GC) m_textGC, 0, 0, w, h, xx, yy, 1 );
     else
     else
-        gdk_draw_pixmap( m_window, m_penGC, use_bitmap.GetPixmap(), 0, 0, xx, yy, -1, -1 );
+        XCopyArea( (Display*) m_display, (Pixmap) use_bitmap.GetPixmap(), (Window) m_window,
+            (GC) m_penGC, 0, 0, w, h, xx, yy );
 
     /* remove mask again if any */
     if (useMask && mask)
     {
         if (is_mono)
         {
 
     /* remove mask again if any */
     if (useMask && mask)
     {
         if (is_mono)
         {
-            gdk_gc_set_clip_mask( m_textGC, (GdkBitmap *) NULL );
-            gdk_gc_set_clip_origin( m_textGC, 0, 0 );
+            XSetClipMask( (Display*) m_display, (GC) m_textGC, None );
+            XSetClipOrigin( (Display*) m_display, (GC) m_textGC, 0, 0 );
             if (!m_currentClippingRegion.IsNull())
             if (!m_currentClippingRegion.IsNull())
-                gdk_gc_set_clip_region( m_textGC, m_currentClippingRegion.GetRegion() );
+                XSetRegion( (Display*) m_display, (GC) m_textGC, (Region) m_currentClippingRegion.GetX11Region() );
         }
         else
         {
         }
         else
         {
-            gdk_gc_set_clip_mask( m_penGC, (GdkBitmap *) NULL );
-            gdk_gc_set_clip_origin( m_penGC, 0, 0 );
+            XSetClipMask( (Display*) m_display, (GC) m_penGC, None );
+            XSetClipOrigin( (Display*) m_display, (GC) m_penGC, 0, 0 );
             if (!m_currentClippingRegion.IsNull())
             if (!m_currentClippingRegion.IsNull())
-                gdk_gc_set_clip_region( m_penGC, m_currentClippingRegion.GetRegion() );
+                XSetRegion( (Display*) m_display, (GC) m_penGC, (Region) m_currentClippingRegion.GetX11Region() );
         }
     }
         }
     }
-#endif
 }
 
 bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
 }
 
 bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
@@ -996,7 +996,7 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord he
     {
         xsrcMask = xsrc; ysrcMask = ysrc;
     }
     {
         xsrcMask = xsrc; ysrcMask = ysrc;
     }
-
+    
 #if 0
     if (srcDC->m_isMemDC)
     {
 #if 0
     if (srcDC->m_isMemDC)
     {
@@ -1248,8 +1248,7 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
     if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
        {
         XDrawString( (Display*) m_display, (Window) m_window, 
     if ((xfont->min_byte1 == 0) && (xfont->max_byte1 == 0))
        {
         XDrawString( (Display*) m_display, (Window) m_window, 
-            (GC) m_textGC, x, y, text.c_str(), text.Len() );
-       wxLogDebug("Drawing text %s at %d, %d", text.c_str(), x, y);
+            (GC) m_textGC, x, y + xfont->ascent, text.c_str(), text.Len() );
        }
 
 #if 0
        }
 
 #if 0
@@ -1531,14 +1530,14 @@ void wxWindowDC::SetBrush( const wxBrush &brush )
         else
         {
             XSetFillStyle( (Display*) m_display, (GC) m_brushGC, FillStippled );
         else
         {
             XSetFillStyle( (Display*) m_display, (GC) m_brushGC, FillStippled );
-//            XSetStipple( (Display*) m_display, (GC) m_brushGC, (Pixmap) m_brush.GetStipple()->GetBitmap() );
+            XSetStipple( (Display*) m_display, (GC) m_brushGC, (Pixmap) m_brush.GetStipple()->GetBitmap() );
         }
     }
 
     if ((m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE) && (m_brush.GetStipple()->GetMask()))
     {
         XSetFillStyle( (Display*) m_display, (GC) m_textGC, FillOpaqueStippled );
         }
     }
 
     if ((m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE) && (m_brush.GetStipple()->GetMask()))
     {
         XSetFillStyle( (Display*) m_display, (GC) m_textGC, FillOpaqueStippled );
-//        XSetStipple( (Display*) m_display, (GC) m_textGC, (Pixmap) m_brush.GetStipple()->GetMask()->GetBitmap() );
+        XSetStipple( (Display*) m_display, (GC) m_textGC, (Pixmap) m_brush.GetStipple()->GetMask()->GetBitmap() );
     }
 
     if (IS_HATCH(m_brush.GetStyle()))
     }
 
     if (IS_HATCH(m_brush.GetStyle()))
@@ -1582,7 +1581,7 @@ void wxWindowDC::SetBackground( const wxBrush &brush )
         else
         {
             XSetFillStyle( (Display*) m_display, (GC) m_bgGC, FillStippled );
         else
         {
             XSetFillStyle( (Display*) m_display, (GC) m_bgGC, FillStippled );
-//            XSetStipple( (Display*) m_display, (GC) m_bgGC, (Pixmap) m_backgroundBrush.GetStipple()->GetBitmap() );
+            XSetStipple( (Display*) m_display, (GC) m_bgGC, (Pixmap) m_backgroundBrush.GetStipple()->GetBitmap() );
         }
     }
 
         }
     }
 
@@ -1923,6 +1922,13 @@ wxClientDC::wxClientDC( wxWindow *win )
           : wxWindowDC( win )
 {
     wxCHECK_RET( win, _T("NULL window in wxClientDC::wxClientDC") );
           : wxWindowDC( win )
 {
     wxCHECK_RET( win, _T("NULL window in wxClientDC::wxClientDC") );
+    
+#ifdef __WXUNIVERSAL__
+    wxPoint ptOrigin = win->GetClientAreaOrigin();
+    SetDeviceOrigin(ptOrigin.x, ptOrigin.y);
+    wxSize size = win->GetClientSize();
+    SetClippingRegion(wxPoint(0, 0), size);
+#endif // __WXUNIVERSAL__
 }
 
 void wxClientDC::DoGetSize(int *width, int *height) const
 }
 
 void wxClientDC::DoGetSize(int *width, int *height) const