From e6777e6575eaf7bf47b72c5910e5a4b31efd97a1 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Fri, 15 Oct 2010 23:46:46 +0000 Subject: [PATCH] Add wx{Pen,Brush}::Is[Non]Transparent() methods and use them. Using GetStyle() == wx{PEN,BRUSH}STYLE_TRANSPARENT doesn't work for uninitialized pen or brush objects so add convenient helpers which do work for them. Use the new helper functions everywhere instead of explicitly checking for style. This makes the code shorter and more clear and also fixes some bugs (at least those in GTK printing code). Notice that this patch removes the main reason for explicitly initializing m_pen and m_brush in wxGTKDCImpl ctor but this initialization still can't be removed, at least for the latter, as doing this somehow breaks GetPixel(). It would be nice to understand why and do remove this initialization so that a newly created DC doesn't have any non-default pen nor brush. Closes #12522. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65820 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/brush.h | 13 +++++++++++++ include/wx/pen.h | 13 +++++++++++++ interface/wx/brush.h | 41 +++++++++++++++++++++++++++++++++++++--- interface/wx/pen.h | 34 +++++++++++++++++++++++++++++++++ src/common/imagfill.cpp | 2 +- src/generic/dcpsg.cpp | 37 +++++++++++++++++++----------------- src/gtk/dcclient.cpp | 40 ++++++++++++++++++++------------------- src/gtk/gnome/gprint.cpp | 32 ++++++++++++++++--------------- src/gtk/print.cpp | 10 +++++++--- src/msw/dc.cpp | 6 +++--- 10 files changed, 167 insertions(+), 61 deletions(-) diff --git a/include/wx/brush.h b/include/wx/brush.h index 9eb0a4c7e1..c3a98ba5eb 100644 --- a/include/wx/brush.h +++ b/include/wx/brush.h @@ -55,6 +55,19 @@ public: virtual bool IsHatch() const { return (GetStyle()>=wxBRUSHSTYLE_FIRST_HATCH) && (GetStyle()<=wxBRUSHSTYLE_LAST_HATCH); } + + // Convenient helpers for testing whether the brush is a transparent one: + // unlike GetStyle() == wxBRUSHSTYLE_TRANSPARENT, they work correctly even + // if the brush is invalid (they both return false in this case). + bool IsTransparent() const + { + return IsOk() && GetStyle() == wxBRUSHSTYLE_TRANSPARENT; + } + + bool IsNonTransparent() const + { + return IsOk() && GetStyle() != wxBRUSHSTYLE_TRANSPARENT; + } }; #if defined(__WXPALMOS__) diff --git a/include/wx/pen.h b/include/wx/pen.h index 479a9668ea..101b8be2de 100644 --- a/include/wx/pen.h +++ b/include/wx/pen.h @@ -84,6 +84,19 @@ public: virtual wxPenCap GetCap() const = 0; virtual int GetWidth() const = 0; virtual int GetDashes(wxDash **ptr) const = 0; + + // Convenient helpers for testing whether the pen is a transparent one: + // unlike GetStyle() == wxPENSTYLE_TRANSPARENT, they work correctly even if + // the pen is invalid (they both return false in this case). + bool IsTransparent() const + { + return IsOk() && GetStyle() == wxPENSTYLE_TRANSPARENT; + } + + bool IsNonTransparent() const + { + return IsOk() && GetStyle() != wxPENSTYLE_TRANSPARENT; + } }; #if defined(__WXPALMOS__) diff --git a/interface/wx/brush.h b/interface/wx/brush.h index 4cb38b8dd1..4531a3e531 100644 --- a/interface/wx/brush.h +++ b/interface/wx/brush.h @@ -172,12 +172,47 @@ public: virtual bool IsHatch() const; /** - Returns @true if the brush is initialised. It will return @false if the default - constructor has been used (for example, the brush is a member of a class, or - @NULL has been assigned to it). + Returns @true if the brush is initialised. + + Notice that an uninitialized brush object can't be queried for any + brush properties and all calls to the accessor methods on it will + result in an assert failure. */ virtual bool IsOk() const; + /** + Returns @true if the brush is a valid non-transparent brush. + + This method returns @true if the brush object is initialized and has a + non-transparent style. Notice that this should be used instead of + simply testing whether GetStyle() returns a style different from + wxBRUSHSTYLE_TRANSPARENT if the brush may be invalid as GetStyle() + would assert in this case. + + @see IsTransparent() + + @since 2.9.2. + */ + bool IsNonTransparent() const; + + /** + Returns @true if the brush is transparent. + + A transparent brush is simply a brush with wxBRUSHSTYLE_TRANSPARENT + style. + + Notice that this function works even for non-initialized brushs (for + which it returns @false) unlike tests of the form GetStyle() == + wxBRUSHSTYLE_TRANSPARENT which would assert if the brush is + invalid. + + @see IsNonTransparent() + + @since 2.9.2. + */ + bool IsTransparent() const; + + //@{ /** Sets the brush colour using red, green and blue values. diff --git a/interface/wx/pen.h b/interface/wx/pen.h index b90329c619..a623a2449c 100644 --- a/interface/wx/pen.h +++ b/interface/wx/pen.h @@ -273,9 +273,43 @@ public: /** Returns @true if the pen is initialised. + + Notice that an uninitialized pen object can't be queried for any pen + properties and all calls to the accessor methods on it will result in + an assert failure. */ virtual bool IsOk() const; + /** + Returns @true if the pen is a valid non-transparent pen. + + This method returns @true if the pen object is initialized and has a + non-transparent style. Notice that this should be used instead of + simply testing whether GetStyle() returns a style different from + wxPENSTYLE_TRANSPARENT if the pen may be invalid as GetStyle() would + assert in this case. + + @see IsTransparent() + + @since 2.9.2. + */ + bool IsNonTransparent() const; + + /** + Returns @true if the pen is transparent. + + A transparent pen is simply a pen with wxPENSTYLE_TRANSPARENT style. + + Notice that this function works even for non-initialized pens (for + which it returns @false) unlike tests of the form GetStyle() == + wxPENSTYLE_TRANSPARENT which would assert if the pen is invalid. + + @see IsNonTransparent() + + @since 2.9.2. + */ + bool IsTransparent() const; + /** Sets the pen cap style, which may be one of @c wxCAP_ROUND, @c wxCAP_PROJECTING and @c wxCAP_BUTT. The default is @c wxCAP_ROUND. diff --git a/src/common/imagfill.cpp b/src/common/imagfill.cpp index fa4992fe6b..df260c0398 100644 --- a/src/common/imagfill.cpp +++ b/src/common/imagfill.cpp @@ -276,7 +276,7 @@ wxImageFloodFill(wxImage *image, bool wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y, const wxColour& col, wxFloodFillStyle style) { - if (dc->GetBrush().GetStyle() == wxBRUSHSTYLE_TRANSPARENT) + if (dc->GetBrush().IsTransparent()) return true; int height = 0; diff --git a/src/generic/dcpsg.cpp b/src/generic/dcpsg.cpp index 6319a9c73a..c18a7dd391 100644 --- a/src/generic/dcpsg.cpp +++ b/src/generic/dcpsg.cpp @@ -427,7 +427,8 @@ void wxPostScriptDCImpl::DoDrawLine (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord { wxCHECK_RET( m_ok, wxT("invalid postscript dc") ); - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; + if ( m_pen.IsTransparent() ) + return; SetPen( m_pen ); @@ -480,7 +481,7 @@ void wxPostScriptDCImpl::DoDrawArc (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord int i_radius = wxRound( radius ); - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -501,7 +502,7 @@ void wxPostScriptDCImpl::DoDrawArc (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord CalcBoundingBox( xc+i_radius, yc+i_radius ); } - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen( m_pen ); @@ -542,7 +543,7 @@ void wxPostScriptDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord return; } - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -559,7 +560,7 @@ void wxPostScriptDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord CalcBoundingBox( x+w, y+h ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen( m_pen ); @@ -581,7 +582,8 @@ void wxPostScriptDCImpl::DoDrawPoint (wxCoord x, wxCoord y) { wxCHECK_RET( m_ok, wxT("invalid postscript dc") ); - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; + if ( m_pen.IsTransparent() ) + return; SetPen (m_pen); @@ -604,7 +606,7 @@ void wxPostScriptDCImpl::DoDrawPolygon (int n, wxPoint points[], wxCoord xoffset if (n <= 0) return; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -635,7 +637,7 @@ void wxPostScriptDCImpl::DoDrawPolygon (int n, wxPoint points[], wxCoord xoffset PsPrint( (fillStyle == wxODDEVEN_RULE ? "eofill\n" : "fill\n") ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen( m_pen ); @@ -674,7 +676,7 @@ void wxPostScriptDCImpl::DoDrawPolyPolygon (int n, int count[], wxPoint points[] if (n <= 0) return; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -708,7 +710,7 @@ void wxPostScriptDCImpl::DoDrawPolyPolygon (int n, int count[], wxPoint points[] PsPrint( (fillStyle == wxODDEVEN_RULE ? "eofill\n" : "fill\n") ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen( m_pen ); @@ -748,7 +750,8 @@ void wxPostScriptDCImpl::DoDrawLines (int n, wxPoint points[], wxCoord xoffset, { wxCHECK_RET( m_ok, wxT("invalid postscript dc") ); - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; + if ( m_pen.IsTransparent() ) + return; if (n <= 0) return; @@ -785,7 +788,7 @@ void wxPostScriptDCImpl::DoDrawRectangle (wxCoord x, wxCoord y, wxCoord width, w width--; height--; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -808,7 +811,7 @@ void wxPostScriptDCImpl::DoDrawRectangle (wxCoord x, wxCoord y, wxCoord width, w CalcBoundingBox( x + width, y + height ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); @@ -849,7 +852,7 @@ void wxPostScriptDCImpl::DoDrawRoundedRectangle (wxCoord x, wxCoord y, wxCoord w wxCoord rad = (wxCoord) radius; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -881,7 +884,7 @@ void wxPostScriptDCImpl::DoDrawRoundedRectangle (wxCoord x, wxCoord y, wxCoord w CalcBoundingBox( x + width, y + height ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); @@ -921,7 +924,7 @@ void wxPostScriptDCImpl::DoDrawEllipse (wxCoord x, wxCoord y, wxCoord width, wxC width--; height--; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush (m_brush); @@ -938,7 +941,7 @@ void wxPostScriptDCImpl::DoDrawEllipse (wxCoord x, wxCoord y, wxCoord width, wxC CalcBoundingBox( x + width, y + height ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); diff --git a/src/gtk/dcclient.cpp b/src/gtk/dcclient.cpp index f8cd7b6eaa..a27b61ae1f 100644 --- a/src/gtk/dcclient.cpp +++ b/src/gtk/dcclient.cpp @@ -477,7 +477,7 @@ void wxWindowDCImpl::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 { wxCHECK_RET( IsOk(), wxT("invalid window dc") ); - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { if (m_gdkwindow) gdk_draw_line( m_gdkwindow, m_penGC, XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2) ); @@ -491,7 +491,7 @@ void wxWindowDCImpl::DoCrossHair( wxCoord x, wxCoord y ) { wxCHECK_RET( IsOk(), wxT("invalid window dc") ); - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { int w = 0; int h = 0; @@ -589,7 +589,7 @@ void wxWindowDCImpl::DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, if (m_gdkwindow) { - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { GdkGC* gc; bool originChanged; @@ -601,11 +601,11 @@ void wxWindowDCImpl::DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, gdk_gc_set_ts_origin(gc, 0, 0); } - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { gdk_draw_arc( m_gdkwindow, m_penGC, FALSE, xxc-r, yyc-r, 2*r,2*r, alpha1, alpha2 ); - if ((m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) && (alpha2 - alpha1 != 360*64)) + if ( m_brush.IsNonTransparent() && (alpha2 - alpha1 != 360*64) ) { gdk_draw_line( m_gdkwindow, m_penGC, xx1, yy1, xxc, yyc ); gdk_draw_line( m_gdkwindow, m_penGC, xxc, yyc, xx2, yy2 ); @@ -635,7 +635,7 @@ void wxWindowDCImpl::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord width, wxC wxCoord start = wxCoord(sa * 64.0); wxCoord end = wxCoord((ea-sa) * 64.0); - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { GdkGC* gc; bool originChanged; @@ -647,7 +647,7 @@ void wxWindowDCImpl::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord width, wxC gdk_gc_set_ts_origin(gc, 0, 0); } - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) gdk_draw_arc( m_gdkwindow, m_penGC, FALSE, xx, yy, ww, hh, start, end ); } @@ -659,7 +659,7 @@ void wxWindowDCImpl::DoDrawPoint( wxCoord x, wxCoord y ) { wxCHECK_RET( IsOk(), wxT("invalid window dc") ); - if ((m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) && m_gdkwindow) + if ( m_pen.IsNonTransparent() && m_gdkwindow ) gdk_draw_point( m_gdkwindow, m_penGC, XLOG2DEV(x), YLOG2DEV(y) ); CalcBoundingBox (x, y); @@ -669,9 +669,11 @@ void wxWindowDCImpl::DoDrawLines( int n, wxPoint points[], wxCoord xoffset, wxCo { wxCHECK_RET( IsOk(), wxT("invalid window dc") ); - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; if (n <= 0) return; + if ( m_pen.IsTransparent() ) + return; + //Check, if scaling is necessary const bool doScale = xoffset != 0 || yoffset != 0 || XLOG2DEV(10) != 10 || YLOG2DEV(10) != 10; @@ -730,7 +732,7 @@ void wxWindowDCImpl::DoDrawPolygon( int n, wxPoint points[], if (m_gdkwindow) { - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { GdkGC* gc; bool originChanged; @@ -742,7 +744,7 @@ void wxWindowDCImpl::DoDrawPolygon( int n, wxPoint points[], gdk_gc_set_ts_origin(gc, 0, 0); } - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { /* for (i = 0 ; i < n ; i++) @@ -781,7 +783,7 @@ void wxWindowDCImpl::DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoo if (m_gdkwindow) { - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { GdkGC* gc; bool originChanged; @@ -793,7 +795,7 @@ void wxWindowDCImpl::DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoo gdk_gc_set_ts_origin(gc, 0, 0); } - if ( m_pen.IsOk() && m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT ) + if ( m_pen.IsNonTransparent() ) { if ((m_pen.GetWidth() == 2) && (m_pen.GetCap() == wxCAP_ROUND) && (m_pen.GetJoin() == wxJOIN_ROUND) && (m_pen.GetStyle() == wxPENSTYLE_SOLID)) @@ -857,7 +859,7 @@ void wxWindowDCImpl::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width // CMB: adjust size if outline is drawn otherwise the result is // 1 pixel too wide and high - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { ww--; hh--; @@ -872,7 +874,7 @@ void wxWindowDCImpl::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width if (dd > hh) dd = hh; rr = dd / 2; - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { GdkGC* gc; bool originChanged; @@ -889,7 +891,7 @@ void wxWindowDCImpl::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width gdk_gc_set_ts_origin(gc, 0, 0); } - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { gdk_draw_line( m_gdkwindow, m_penGC, xx+rr+1, yy, xx+ww-rr, yy ); gdk_draw_line( m_gdkwindow, m_penGC, xx+rr+1, yy+hh, xx+ww-rr, yy+hh ); @@ -922,7 +924,7 @@ void wxWindowDCImpl::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord if (m_gdkwindow) { - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { GdkGC* gc; bool originChanged; @@ -930,7 +932,7 @@ void wxWindowDCImpl::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord // If the pen is transparent pen we increase the size // for better compatibility with other platforms. - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { ++ww; ++hh; @@ -942,7 +944,7 @@ void wxWindowDCImpl::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord gdk_gc_set_ts_origin(gc, 0, 0); } - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) gdk_draw_arc( m_gdkwindow, m_penGC, false, xx, yy, ww, hh, 0, 360*64 ); } diff --git a/src/gtk/gnome/gprint.cpp b/src/gtk/gnome/gprint.cpp index 32d206a236..abe6b7ba62 100644 --- a/src/gtk/gnome/gprint.cpp +++ b/src/gtk/gnome/gprint.cpp @@ -1060,7 +1060,8 @@ wxGnomePrinterDCImpl::DoGetPixel(wxCoord WXUNUSED(x1), void wxGnomePrinterDCImpl::DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2) { - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; + if ( m_pen.IsTransparent() ) + return; SetPen( m_pen ); @@ -1107,7 +1108,7 @@ void wxGnomePrinterDCImpl::DoDrawArc(wxCoord x1,wxCoord y1,wxCoord x2,wxCoord y2 while (alpha2 > 360) alpha2 -= 360; } - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); gs_libGnomePrint->gnome_print_moveto ( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc) ); @@ -1116,7 +1117,7 @@ void wxGnomePrinterDCImpl::DoDrawArc(wxCoord x1,wxCoord y1,wxCoord x2,wxCoord y2 gs_libGnomePrint->gnome_print_fill( m_gpc ); } - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); gs_libGnomePrint->gnome_print_newpath( m_gpc ); @@ -1149,7 +1150,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoo xx = 0.0; yy = 0.0; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -1161,7 +1162,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoo gs_libGnomePrint->gnome_print_fill( m_gpc ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); @@ -1183,10 +1184,11 @@ void wxGnomePrinterDCImpl::DoDrawPoint(wxCoord WXUNUSED(x), wxCoord WXUNUSED(y)) void wxGnomePrinterDCImpl::DoDrawLines(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset) { - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; - if (n <= 0) return; + if ( m_pen.IsTransparent() ) + return; + SetPen (m_pen); int i; @@ -1207,7 +1209,7 @@ void wxGnomePrinterDCImpl::DoDrawPolygon(int n, wxPoint points[], { if (n==0) return; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -1228,7 +1230,7 @@ void wxGnomePrinterDCImpl::DoDrawPolygon(int n, wxPoint points[], gs_libGnomePrint->gnome_print_fill( m_gpc ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); @@ -1263,7 +1265,7 @@ void wxGnomePrinterDCImpl::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, width--; height--; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); @@ -1279,7 +1281,7 @@ void wxGnomePrinterDCImpl::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, CalcBoundingBox( x + width, y + height ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); @@ -1303,7 +1305,7 @@ void wxGnomePrinterDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord wxCoord rad = wxRound( radius ); - if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush(m_brush); gs_libGnomePrint->gnome_print_newpath(m_gpc); @@ -1335,7 +1337,7 @@ void wxGnomePrinterDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord CalcBoundingBox(x+width,y+height); } - if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen(m_pen); gs_libGnomePrint->gnome_print_newpath(m_gpc); @@ -1419,7 +1421,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wx width--; height--; - if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) + if ( m_brush.IsNonTransparent() ) { SetBrush( m_brush ); makeEllipticalPath( x, y, width, height ); @@ -1428,7 +1430,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wx CalcBoundingBox( x + width, y + height ); } - if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) + if ( m_pen.IsNonTransparent() ) { SetPen (m_pen); makeEllipticalPath( x, y, width, height ); diff --git a/src/gtk/print.cpp b/src/gtk/print.cpp index 32b2c08b1e..fdc52767c9 100644 --- a/src/gtk/print.cpp +++ b/src/gtk/print.cpp @@ -1266,7 +1266,8 @@ bool wxGtkPrinterDCImpl::DoGetPixel(wxCoord WXUNUSED(x1), void wxGtkPrinterDCImpl::DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2) { - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; + if ( m_pen.IsTransparent() ) + return; SetPen( m_pen ); cairo_move_to ( m_cairo, XLOG2DEV(x1), YLOG2DEV(y1) ); @@ -1374,7 +1375,8 @@ void wxGtkPrinterDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord void wxGtkPrinterDCImpl::DoDrawPoint(wxCoord x, wxCoord y) { - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; + if ( m_pen.IsTransparent() ) + return; SetPen( m_pen ); @@ -1387,7 +1389,9 @@ void wxGtkPrinterDCImpl::DoDrawPoint(wxCoord x, wxCoord y) void wxGtkPrinterDCImpl::DoDrawLines(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset) { - if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; + if ( m_pen.IsTransparent() ) + return; + if (n <= 0) return; diff --git a/src/msw/dc.cpp b/src/msw/dc.cpp index 298e6c8613..b5f8cd1298 100644 --- a/src/msw/dc.cpp +++ b/src/msw/dc.cpp @@ -723,7 +723,7 @@ void wxMSWDCImpl::DoDrawArc(wxCoord x1, wxCoord y1, wxCoord xxx2 = (wxCoord) (xxc+ray); wxCoord yyy2 = (wxCoord) (yyc+ray); - if ( m_brush.IsOk() && m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT ) + if ( m_brush.IsNonTransparent() ) { // Have to add 1 to bottom-right corner of rectangle // to make semi-circles look right (crooked line otherwise). @@ -931,7 +931,7 @@ void wxMSWDCImpl::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord h // (i.e. drawn with a transparent pen) one pixel smaller in both directions // and we want them to have the same size regardless of which pen is used #ifndef __WXWINCE__ - if ( m_pen.IsOk() && m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT ) + if ( m_pen.IsTransparent() ) { x2dev++; y2dev++; @@ -965,7 +965,7 @@ void wxMSWDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wx // Windows draws the filled rectangles without outline (i.e. drawn with a // transparent pen) one pixel smaller in both directions and we want them // to have the same size regardless of which pen is used - adjust - if ( m_pen.IsOk() && m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT ) + if ( m_pen.IsTransparent() ) { x2++; y2++; -- 2.45.2