X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c77a67962c2f50a872491869fcf1a6c082fdc6c6..8e5ec129614e2473fd240f2a6e94ee56e3a9039b:/src/gtk/dcclient.cpp diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index 4a1ead4f1f..06b60cd000 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: gtk/dcclient.cpp +// Name: src/gtk/dcclient.cpp // Purpose: // Author: Robert Roebling // RCS-ID: $Id$ @@ -15,15 +15,19 @@ #endif #include "wx/dcclient.h" -#include "wx/dcmemory.h" + +#ifndef WX_PRECOMP + #include "wx/log.h" + #include "wx/dcmemory.h" + #include "wx/math.h" // for floating-point functions +#endif + #include "wx/image.h" #include "wx/module.h" -#include "wx/log.h" #include "wx/fontutil.h" #include "wx/gtk/win_gtk.h" - -#include "wx/math.h" // for floating-point functions +#include "wx/gtk/private.h" #include #include @@ -92,7 +96,6 @@ void gdk_wx_draw_bitmap(GdkDrawable *drawable, wxCHECK_RET( src, _T("NULL src in gdk_wx_draw_bitmap") ); wxCHECK_RET( gc, _T("NULL gc in gdk_wx_draw_bitmap") ); -#ifdef __WXGTK20__ gint src_width, src_height; gdk_drawable_get_size(src, &src_width, &src_height); if (width == -1) width = src_width; @@ -106,33 +109,6 @@ void gdk_wx_draw_bitmap(GdkDrawable *drawable, width, height, 0, 0, 1 ); -#else - GdkWindowPrivate *drawable_private; - GdkWindowPrivate *src_private; - GdkGCPrivate *gc_private; - - drawable_private = (GdkWindowPrivate*) drawable; - src_private = (GdkWindowPrivate*) src; - if (drawable_private->destroyed || src_private->destroyed) - return; - - gint src_width = src_private->width; - gint src_height = src_private->height; - - gc_private = (GdkGCPrivate*) gc; - - if (width == -1) width = src_width; - if (height == -1) height = src_height; - - XCopyPlane( drawable_private->xdisplay, - src_private->xwindow, - drawable_private->xwindow, - gc_private->xgc, - xsrc, ysrc, - width, height, - xdest, ydest, - 1 ); -#endif } //----------------------------------------------------------------------------- @@ -199,7 +175,7 @@ static void wxCleanUpGCPool() for (int i = 0; i < wxGCPoolSize; i++) { if (wxGCPool[i].m_gc) - gdk_gc_unref( wxGCPool[i].m_gc ); + g_object_unref (wxGCPool[i].m_gc); } free(wxGCPool); @@ -288,11 +264,9 @@ wxWindowDC::wxWindowDC() m_isMemDC = false; m_isScreenDC = false; m_owner = (wxWindow *)NULL; -#ifdef __WXGTK20__ m_context = (PangoContext *)NULL; m_layout = (PangoLayout *)NULL; m_fontdesc = (PangoFontDescription *)NULL; -#endif } wxWindowDC::wxWindowDC( wxWindow *window ) @@ -322,11 +296,9 @@ wxWindowDC::wxWindowDC( wxWindow *window ) wxASSERT_MSG( widget, wxT("DC needs a widget") ); -#ifdef __WXGTK20__ m_context = window->GtkGetPangoDefaultContext(); m_layout = pango_layout_new( m_context ); m_fontdesc = pango_font_description_copy( widget->style->font_desc ); -#endif GtkPizza *pizza = GTK_PIZZA( widget ); m_window = pizza->bin_window; @@ -358,12 +330,10 @@ wxWindowDC::~wxWindowDC() { Destroy(); -#ifdef __WXGTK20__ if (m_layout) - g_object_unref( G_OBJECT( m_layout ) ); + g_object_unref (m_layout); if (m_fontdesc) pango_font_description_free( m_fontdesc ); -#endif } void wxWindowDC::SetUpDC() @@ -398,7 +368,11 @@ void wxWindowDC::SetUpDC() /* background colour */ m_backgroundBrush = *wxWHITE_BRUSH; m_backgroundBrush.GetColour().CalcPixel( m_cmap ); - GdkColor *bg_col = m_backgroundBrush.GetColour().GetColor(); +#ifdef __WXGTK24__ + const GdkColor *bg_col = m_backgroundBrush.GetColour().GetColor(); +#else + GdkColor *bg_col = m_backgroundBrush.GetColour().GetColor(); +#endif /* m_textGC */ m_textForegroundColour.CalcPixel( m_cmap ); @@ -687,7 +661,19 @@ void wxWindowDC::DoDrawLines( int n, wxPoint points[], wxCoord xoffset, wxCoord if (m_pen.GetStyle() == wxTRANSPARENT) return; if (n <= 0) return; - GdkPoint *gpts = new GdkPoint[n]; + //Check, if scaling is necessary + bool doScale(true); + long val(10); + if (!xoffset) + if (!yoffset) + if (XLOG2DEV(val)==val) + if (YLOG2DEV(val)==val) + doScale = false; + + GdkPoint *gpts = NULL; + + if (doScale){ + gpts = new GdkPoint[n]; if (! gpts) { wxFAIL_MSG( wxT("Cannot allocate PolyLine") ); @@ -704,10 +690,20 @@ void wxWindowDC::DoDrawLines( int n, wxPoint points[], wxCoord xoffset, wxCoord gpts[i].x = x1; gpts[i].y = y1; } + } + else { + for (int i = 0; i < n; i++) { + CalcBoundingBox( points[i].x, points[i].y ); + } + + //GdkPoint and wxPoint have the same memory allignment, so we can cast one into another + gpts = reinterpret_cast(points); + } if (m_window) gdk_draw_lines( m_window, m_penGC, gpts, n); + if (doScale) delete[] gpts; } @@ -717,7 +713,21 @@ void wxWindowDC::DoDrawPolygon( int n, wxPoint points[], wxCoord xoffset, wxCoor if (n <= 0) return; - GdkPoint *gdkpoints = new GdkPoint[n+1]; + //Check, if scaling is necessary + bool doScale(true); + long val(10); + if (!xoffset) + if (!yoffset) + if (XLOG2DEV(val)==val) + if (YLOG2DEV(val)==val){ + doScale = false; + } + + GdkPoint *gdkpoints = NULL; + + if (doScale){ + gdkpoints = new GdkPoint[n+1]; //FIXME: Why the "+1" + int i; for (i = 0 ; i < n ; i++) { @@ -726,9 +736,24 @@ void wxWindowDC::DoDrawPolygon( int n, wxPoint points[], wxCoord xoffset, wxCoor CalcBoundingBox( points[i].x + xoffset, points[i].y + yoffset ); } + } + else { + int i(0); + for (; i < n ; ++i) { + CalcBoundingBox( points[i].x, points[i].y ); + } + //GdkPoint and wxPoint have the same memory allignment, so we can cast one into another + gdkpoints = reinterpret_cast (points); + } if (m_window) { + //I think wxSOLID is the most often used style (it is for me), + //so I put it in front of the if ... ifelse's + if (m_brush.GetStyle() == wxSOLID) + { + gdk_draw_polygon( m_window, m_brushGC, TRUE, gdkpoints, n ); + }else if (m_brush.GetStyle() != wxTRANSPARENT) { if ((m_brush.GetStyle() == wxSTIPPLE_MASK_OPAQUE) && (m_brush.GetStipple()->GetMask())) @@ -782,6 +807,7 @@ void wxWindowDC::DoDrawPolygon( int n, wxPoint points[], wxCoord xoffset, wxCoor } } + if (doScale) delete[] gdkpoints; } @@ -1043,7 +1069,7 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap, wxCHECK_RET( bitmap.Ok(), wxT("invalid bitmap") ); - bool is_mono = (bitmap.GetBitmap() != NULL); + bool is_mono = bitmap.GetDepth() == 1; // scale/translate size and position int xx = XLOG2DEV(x); @@ -1107,7 +1133,7 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap, gdk_gc_set_fill( gc, GDK_OPAQUE_STIPPLED ); gdk_gc_set_stipple( gc, mask ); gdk_draw_rectangle( new_mask, gc, TRUE, 0, 0, ww, hh ); - gdk_gc_unref( gc ); + g_object_unref (gc); } if (is_mono) @@ -1132,20 +1158,16 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap, // drawing a mono-bitmap (XBitmap) we use the current text GC if (is_mono) { -#ifdef __WXGTK20__ - GdkPixmap *bitmap = gdk_pixmap_new( wxGetRootWindow()->window, ww, hh, -1 ); - GdkGC *gc = gdk_gc_new( bitmap ); + GdkPixmap *bitmap2 = gdk_pixmap_new( wxGetRootWindow()->window, ww, hh, -1 ); + GdkGC *gc = gdk_gc_new( bitmap2 ); gdk_gc_set_foreground( gc, m_textForegroundColour.GetColor() ); gdk_gc_set_background( gc, m_textBackgroundColour.GetColor() ); - gdk_wx_draw_bitmap( bitmap, gc, use_bitmap.GetBitmap(), 0, 0, 0, 0, -1, -1 ); + gdk_wx_draw_bitmap( bitmap2, gc, use_bitmap.GetPixmap(), 0, 0, 0, 0, -1, -1 ); - gdk_draw_drawable( m_window, m_textGC, bitmap, 0, 0, xx, yy, -1, -1 ); + gdk_draw_drawable( m_window, m_textGC, bitmap2, 0, 0, xx, yy, -1, -1 ); - gdk_bitmap_unref( bitmap ); - gdk_gc_unref( gc ); -#else - gdk_wx_draw_bitmap( m_window, m_textGC, use_bitmap.GetBitmap(), 0, 0, xx, yy, -1, -1 ); -#endif + g_object_unref (bitmap2); + g_object_unref (gc); } else { @@ -1160,9 +1182,9 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap, else #endif { - gdk_draw_pixmap(m_window, m_penGC, - use_bitmap.GetPixmap(), - 0, 0, xx, yy, -1, -1); + gdk_draw_drawable(m_window, m_penGC, + use_bitmap.GetPixmap(), + 0, 0, xx, yy, -1, -1); } } @@ -1186,7 +1208,7 @@ void wxWindowDC::DoDrawBitmap( const wxBitmap &bitmap, } if (new_mask) - gdk_bitmap_unref( new_mask ); + g_object_unref (new_mask); } bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, @@ -1354,7 +1376,7 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, gdk_gc_set_fill( gc, GDK_OPAQUE_STIPPLED ); gdk_gc_set_stipple( gc, mask ); gdk_draw_rectangle( new_mask, gc, TRUE, 0, 0, bm_ww, bm_hh ); - gdk_gc_unref( gc ); + g_object_unref (gc); } if (is_mono) @@ -1390,26 +1412,21 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, if (is_mono) { -#ifdef __WXGTK20__ GdkPixmap *bitmap = gdk_pixmap_new( wxGetRootWindow()->window, bm_ww, bm_hh, -1 ); GdkGC *gc = gdk_gc_new( bitmap ); gdk_gc_set_foreground( gc, m_textForegroundColour.GetColor() ); gdk_gc_set_background( gc, m_textBackgroundColour.GetColor() ); - gdk_wx_draw_bitmap( bitmap, gc, use_bitmap.GetBitmap(), 0, 0, 0, 0, -1, -1 ); + gdk_wx_draw_bitmap( bitmap, gc, use_bitmap.GetPixmap(), 0, 0, 0, 0, -1, -1 ); gdk_draw_drawable( m_window, m_textGC, bitmap, xsrc, ysrc, cx, cy, cw, ch ); - gdk_bitmap_unref( bitmap ); - gdk_gc_unref( gc ); -#else - // was: gdk_wx_draw_bitmap( m_window, m_textGC, use_bitmap.GetBitmap(), xsrc, ysrc, xx, yy, ww, hh ); - gdk_wx_draw_bitmap( m_window, m_textGC, use_bitmap.GetBitmap(), xsrc, ysrc, cx, cy, cw, ch ); -#endif + g_object_unref (bitmap); + g_object_unref (gc); } else { - // was: gdk_draw_pixmap( m_window, m_penGC, use_bitmap.GetPixmap(), xsrc, ysrc, xx, yy, ww, hh ); - gdk_draw_pixmap( m_window, m_penGC, use_bitmap.GetPixmap(), xsrc, ysrc, cx, cy, cw, ch ); + // was: gdk_draw_drawable( m_window, m_penGC, use_bitmap.GetPixmap(), xsrc, ysrc, xx, yy, ww, hh ); + gdk_draw_drawable( m_window, m_penGC, use_bitmap.GetPixmap(), xsrc, ysrc, cx, cy, cw, ch ); } // remove mask again if any @@ -1432,7 +1449,7 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, } if (new_mask) - gdk_bitmap_unref( new_mask ); + g_object_unref (new_mask); } else // use_bitmap_method { @@ -1448,8 +1465,8 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, wxBitmap bitmap = memDC->m_selected.Rescale( cx-xx, cy-yy, cw, ch, ww, hh ); // draw scaled bitmap - // was: gdk_draw_pixmap( m_window, m_penGC, bitmap.GetPixmap(), 0, 0, xx, yy, -1, -1 ); - gdk_draw_pixmap( m_window, m_penGC, bitmap.GetPixmap(), 0, 0, cx, cy, -1, -1 ); + // was: gdk_draw_drawable( m_window, m_penGC, bitmap.GetPixmap(), 0, 0, xx, yy, -1, -1 ); + gdk_draw_drawable( m_window, m_penGC, bitmap.GetPixmap(), 0, 0, cx, cy, -1, -1 ); } else { @@ -1457,9 +1474,10 @@ bool wxWindowDC::DoBlit( wxCoord xdest, wxCoord ydest, // copy including child window contents gdk_gc_set_subwindow( m_penGC, GDK_INCLUDE_INFERIORS ); - gdk_window_copy_area( m_window, m_penGC, xx, yy, - srcDC->GetWindow(), - xsrc, ysrc, width, height ); + gdk_draw_drawable( m_window, m_penGC, + srcDC->GetWindow(), + xsrc, ysrc, xx, yy, + width, height ); gdk_gc_set_subwindow( m_penGC, GDK_CLIP_BY_CHILDREN ); } } @@ -1477,32 +1495,20 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) if (text.empty()) return; -#ifndef __WXGTK20__ - GdkFont *font = m_font.GetInternalFont( m_scaleY ); - - wxCHECK_RET( font, wxT("invalid font") ); -#endif - x = XLOG2DEV(x); y = YLOG2DEV(y); -#ifdef __WXGTK20__ wxCHECK_RET( m_context, wxT("no Pango context") ); wxCHECK_RET( m_layout, wxT("no Pango layout") ); wxCHECK_RET( m_fontdesc, wxT("no Pango font description") ); bool underlined = m_font.Ok() && m_font.GetUnderlined(); -#if wxUSE_UNICODE - const wxCharBuffer data = wxConvUTF8.cWC2MB( text ); -#else - const wxWCharBuffer wdata = wxConvLocal.cMB2WC( text ); - if ( !wdata ) + const wxCharBuffer data = wxGTK_CONV( text ); + if ( !data ) return; - const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); -#endif - size_t datalen = strlen((const char*)data); - pango_layout_set_text( m_layout, (const char*) data, datalen); + const size_t datalen = strlen(data); + pango_layout_set_text( m_layout, data, datalen); if (underlined) { @@ -1570,29 +1576,6 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) wxCoord width = w; wxCoord height = h; -#else // GTK+ 1.x - wxCoord width = gdk_string_width( font, text.mbc_str() ); - wxCoord height = font->ascent + font->descent; - - if ( m_backgroundMode == wxSOLID ) - { - gdk_gc_set_foreground( m_textGC, m_textBackgroundColour.GetColor() ); - gdk_draw_rectangle( m_window, m_textGC, TRUE, x, y, width, height ); - gdk_gc_set_foreground( m_textGC, m_textForegroundColour.GetColor() ); - } - gdk_draw_string( m_window, font, m_textGC, x, y + font->ascent, text.mbc_str() ); - - /* CMB 17/7/98: simple underline: ignores scaling and underlying - X font's XA_UNDERLINE_POSITION and XA_UNDERLINE_THICKNESS - properties (see wxXt implementation) */ - if (m_font.GetUnderlined()) - { - wxCoord ul_y = y + font->ascent; - if (font->descent > 0) ul_y++; - gdk_draw_line( m_window, m_textGC, x, ul_y, x + width, ul_y); - } -#endif // GTK+ 2.0/1.x - width = wxCoord(width / m_scaleX); height = wxCoord(height / m_scaleY); CalcBoundingBox (x + width, y + height); @@ -1606,32 +1589,23 @@ void wxWindowDC::DoDrawText( const wxString &text, wxCoord x, wxCoord y ) void wxWindowDC::DoDrawRotatedText( const wxString &text, wxCoord x, wxCoord y, double angle ) { + if (!m_window || text.empty()) + return; + + wxCHECK_RET( Ok(), wxT("invalid window dc") ); + if ( wxIsNullDouble(angle) ) { DrawText(text, x, y); return; } - wxCHECK_RET( Ok(), wxT("invalid window dc") ); - - if (!m_window) return; - wxCoord w; wxCoord h; -#ifdef __WXGTK20__ - // implement later without GdkFont for GTK 2.0 + // TODO: implement later without GdkFont for GTK 2.0 GetTextExtent(text, &w, &h, NULL,NULL, &m_font); -#else - GdkFont *font = m_font.GetInternalFont( m_scaleY ); - - wxCHECK_RET( font, wxT("invalid font") ); - - // the size of the text - w = gdk_string_width( font, text.mbc_str() ); - h = font->ascent + font->descent; -#endif // draw the string normally wxBitmap src(w, h); wxMemoryDC dc; @@ -1730,28 +1704,24 @@ void wxWindowDC::DoGetTextExtent(const wxString &string, *externalLeading = 0; if (string.empty()) - { return; - } -#ifdef __WXGTK20__ - // Set new font description - if (theFont) - pango_layout_set_font_description( m_layout, theFont->GetNativeFontInfo()->description ); + // ensure that theFont is always non-NULL + if ( !theFont || !theFont->Ok() ) + theFont = wx_const_cast(wxFont *, &m_font); - // Set layout's text -#if wxUSE_UNICODE - const wxCharBuffer data = wxConvUTF8.cWC2MB( string ); - const char *dataUTF8 = (const char *)data; -#else - const wxWCharBuffer wdata = wxConvLocal.cMB2WC( string ); - if ( !wdata ) - return; - - const wxCharBuffer data = wxConvUTF8.cWC2MB( wdata ); - const char *dataUTF8 = (const char *)data; -#endif + // and use it if it's valid + if ( theFont->Ok() ) + { + pango_layout_set_font_description + ( + m_layout, + theFont->GetNativeFontInfo()->description + ); + } + // Set layout's text + const wxCharBuffer dataUTF8 = wxGTK_CONV_FONT(string, *theFont); if ( !dataUTF8 ) { // hardly ideal, but what else can we do if conversion failed? @@ -1780,52 +1750,22 @@ void wxWindowDC::DoGetTextExtent(const wxString &string, // Reset old font description if (theFont) pango_layout_set_font_description( m_layout, m_fontdesc ); -#else // GTK+ 1.x - wxFont fontToUse = m_font; - if (theFont) - fontToUse = *theFont; - - GdkFont *font = fontToUse.GetInternalFont( m_scaleY ); - if ( !font ) - return; - - if (width) - *width = wxCoord(gdk_string_width( font, string.mbc_str() ) / m_scaleX); - if (height) - *height = wxCoord((font->ascent + font->descent) / m_scaleY); - if (descent) - *descent = wxCoord(font->descent / m_scaleY); -#endif // GTK+ 2/1 } wxCoord wxWindowDC::GetCharWidth() const { -#ifdef __WXGTK20__ pango_layout_set_text( m_layout, "H", 1 ); int w; pango_layout_get_pixel_size( m_layout, &w, NULL ); return w; -#else - GdkFont *font = m_font.GetInternalFont( m_scaleY ); - wxCHECK_MSG( font, -1, wxT("invalid font") ); - - return wxCoord(gdk_string_width( font, "H" ) / m_scaleX); -#endif } wxCoord wxWindowDC::GetCharHeight() const { -#ifdef __WXGTK20__ pango_layout_set_text( m_layout, "H", 1 ); int h; pango_layout_get_pixel_size( m_layout, NULL, &h ); return h; -#else - GdkFont *font = m_font.GetInternalFont( m_scaleY ); - wxCHECK_MSG( font, -1, wxT("invalid font") ); - - return wxCoord((font->ascent + font->descent) / m_scaleY); -#endif } void wxWindowDC::Clear() @@ -1870,7 +1810,6 @@ void wxWindowDC::SetFont( const wxFont &font ) { m_font = font; -#ifdef __WXGTK20__ if (m_font.Ok()) { if (m_fontdesc) @@ -1883,14 +1822,6 @@ void wxWindowDC::SetFont( const wxFont &font ) { PangoContext *oldContext = m_context; - // We might want to use the X11 context for faster - // rendering on screen. - // MR: Lets not want to do this, as this introduces libpangox dependancy. -#if 0 - if (m_font.GetNoAntiAliasing()) - m_context = m_owner->GtkGetPangoX11Context(); - else -#endif m_context = m_owner->GtkGetPangoDefaultContext(); // If we switch back/forth between different contexts @@ -1899,7 +1830,7 @@ void wxWindowDC::SetFont( const wxFont &font ) if (oldContext != m_context) { if (m_layout) - g_object_unref( G_OBJECT( m_layout ) ); + g_object_unref (m_layout); m_layout = pango_layout_new( m_context ); } @@ -1907,7 +1838,6 @@ void wxWindowDC::SetFont( const wxFont &font ) pango_layout_set_font_description( m_layout, m_fontdesc ); } -#endif } void wxWindowDC::SetPen( const wxPen &pen ) @@ -2079,7 +2009,7 @@ void wxWindowDC::SetBrush( const wxBrush &brush ) if ((m_brush.GetStyle() == wxSTIPPLE) && (m_brush.GetStipple()->Ok())) { - if (m_brush.GetStipple()->GetPixmap()) + if (m_brush.GetStipple()->GetDepth() != 1) { gdk_gc_set_fill( m_brushGC, GDK_TILED ); gdk_gc_set_tile( m_brushGC, m_brush.GetStipple()->GetPixmap() ); @@ -2087,7 +2017,7 @@ void wxWindowDC::SetBrush( const wxBrush &brush ) else { gdk_gc_set_fill( m_brushGC, GDK_STIPPLED ); - gdk_gc_set_stipple( m_brushGC, m_brush.GetStipple()->GetBitmap() ); + gdk_gc_set_stipple( m_brushGC, m_brush.GetStipple()->GetPixmap() ); } } @@ -2130,7 +2060,7 @@ void wxWindowDC::SetBackground( const wxBrush &brush ) if ((m_backgroundBrush.GetStyle() == wxSTIPPLE) && (m_backgroundBrush.GetStipple()->Ok())) { - if (m_backgroundBrush.GetStipple()->GetPixmap()) + if (m_backgroundBrush.GetStipple()->GetDepth() != 1) { gdk_gc_set_fill( m_bgGC, GDK_TILED ); gdk_gc_set_tile( m_bgGC, m_backgroundBrush.GetStipple()->GetPixmap() ); @@ -2138,7 +2068,7 @@ void wxWindowDC::SetBackground( const wxBrush &brush ) else { gdk_gc_set_fill( m_bgGC, GDK_STIPPLED ); - gdk_gc_set_stipple( m_bgGC, m_backgroundBrush.GetStipple()->GetBitmap() ); + gdk_gc_set_stipple( m_bgGC, m_backgroundBrush.GetStipple()->GetPixmap() ); } } @@ -2389,13 +2319,7 @@ wxSize wxWindowDC::GetPPI() const int wxWindowDC::GetDepth() const { -#ifdef __WXGTK20__ return gdk_drawable_get_depth(m_window); -#else - wxFAIL_MSG(wxT("not implemented")); - - return -1; -#endif }