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++;