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
This commit is contained in:
Vadim Zeitlin
2010-10-15 23:46:46 +00:00
parent f8ce98ded0
commit e6777e6575
10 changed files with 167 additions and 61 deletions

View File

@@ -55,6 +55,19 @@ public:
virtual bool IsHatch() const virtual bool IsHatch() const
{ return (GetStyle()>=wxBRUSHSTYLE_FIRST_HATCH) && (GetStyle()<=wxBRUSHSTYLE_LAST_HATCH); } { 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__) #if defined(__WXPALMOS__)

View File

@@ -84,6 +84,19 @@ public:
virtual wxPenCap GetCap() const = 0; virtual wxPenCap GetCap() const = 0;
virtual int GetWidth() const = 0; virtual int GetWidth() const = 0;
virtual int GetDashes(wxDash **ptr) 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__) #if defined(__WXPALMOS__)

View File

@@ -172,12 +172,47 @@ public:
virtual bool IsHatch() const; virtual bool IsHatch() const;
/** /**
Returns @true if the brush is initialised. It will return @false if the default Returns @true if the brush is initialised.
constructor has been used (for example, the brush is a member of a class, or
@NULL has been assigned to it). 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; 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 <code>GetStyle() ==
wxBRUSHSTYLE_TRANSPARENT</code> 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. Sets the brush colour using red, green and blue values.

View File

@@ -273,9 +273,43 @@ public:
/** /**
Returns @true if the pen is initialised. 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; 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 <code>GetStyle() ==
wxPENSTYLE_TRANSPARENT</code> 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 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. and @c wxCAP_BUTT. The default is @c wxCAP_ROUND.

View File

@@ -276,7 +276,7 @@ wxImageFloodFill(wxImage *image,
bool wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y, bool wxDoFloodFill(wxDC *dc, wxCoord x, wxCoord y,
const wxColour& col, wxFloodFillStyle style) const wxColour& col, wxFloodFillStyle style)
{ {
if (dc->GetBrush().GetStyle() == wxBRUSHSTYLE_TRANSPARENT) if (dc->GetBrush().IsTransparent())
return true; return true;
int height = 0; int height = 0;

View File

@@ -427,7 +427,8 @@ void wxPostScriptDCImpl::DoDrawLine (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord
{ {
wxCHECK_RET( m_ok, wxT("invalid postscript dc") ); wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; if ( m_pen.IsTransparent() )
return;
SetPen( m_pen ); SetPen( m_pen );
@@ -480,7 +481,7 @@ void wxPostScriptDCImpl::DoDrawArc (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord
int i_radius = wxRound( radius ); int i_radius = wxRound( radius );
if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
@@ -501,7 +502,7 @@ void wxPostScriptDCImpl::DoDrawArc (wxCoord x1, wxCoord y1, wxCoord x2, wxCoord
CalcBoundingBox( xc+i_radius, yc+i_radius ); CalcBoundingBox( xc+i_radius, yc+i_radius );
} }
if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen( m_pen ); SetPen( m_pen );
@@ -542,7 +543,7 @@ void wxPostScriptDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord
return; return;
} }
if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
@@ -559,7 +560,7 @@ void wxPostScriptDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord
CalcBoundingBox( x+w, y+h ); CalcBoundingBox( x+w, y+h );
} }
if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen( m_pen ); SetPen( m_pen );
@@ -581,7 +582,8 @@ void wxPostScriptDCImpl::DoDrawPoint (wxCoord x, wxCoord y)
{ {
wxCHECK_RET( m_ok, wxT("invalid postscript dc") ); wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; if ( m_pen.IsTransparent() )
return;
SetPen (m_pen); SetPen (m_pen);
@@ -604,7 +606,7 @@ void wxPostScriptDCImpl::DoDrawPolygon (int n, wxPoint points[], wxCoord xoffset
if (n <= 0) return; if (n <= 0) return;
if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
@@ -635,7 +637,7 @@ void wxPostScriptDCImpl::DoDrawPolygon (int n, wxPoint points[], wxCoord xoffset
PsPrint( (fillStyle == wxODDEVEN_RULE ? "eofill\n" : "fill\n") ); PsPrint( (fillStyle == wxODDEVEN_RULE ? "eofill\n" : "fill\n") );
} }
if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen( m_pen ); SetPen( m_pen );
@@ -674,7 +676,7 @@ void wxPostScriptDCImpl::DoDrawPolyPolygon (int n, int count[], wxPoint points[]
if (n <= 0) return; if (n <= 0) return;
if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
@@ -708,7 +710,7 @@ void wxPostScriptDCImpl::DoDrawPolyPolygon (int n, int count[], wxPoint points[]
PsPrint( (fillStyle == wxODDEVEN_RULE ? "eofill\n" : "fill\n") ); PsPrint( (fillStyle == wxODDEVEN_RULE ? "eofill\n" : "fill\n") );
} }
if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen( m_pen ); SetPen( m_pen );
@@ -748,7 +750,8 @@ void wxPostScriptDCImpl::DoDrawLines (int n, wxPoint points[], wxCoord xoffset,
{ {
wxCHECK_RET( m_ok, wxT("invalid postscript dc") ); wxCHECK_RET( m_ok, wxT("invalid postscript dc") );
if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; if ( m_pen.IsTransparent() )
return;
if (n <= 0) return; if (n <= 0) return;
@@ -785,7 +788,7 @@ void wxPostScriptDCImpl::DoDrawRectangle (wxCoord x, wxCoord y, wxCoord width, w
width--; width--;
height--; height--;
if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
@@ -808,7 +811,7 @@ void wxPostScriptDCImpl::DoDrawRectangle (wxCoord x, wxCoord y, wxCoord width, w
CalcBoundingBox( x + width, y + height ); CalcBoundingBox( x + width, y + height );
} }
if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen (m_pen); SetPen (m_pen);
@@ -849,7 +852,7 @@ void wxPostScriptDCImpl::DoDrawRoundedRectangle (wxCoord x, wxCoord y, wxCoord w
wxCoord rad = (wxCoord) radius; wxCoord rad = (wxCoord) radius;
if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
@@ -881,7 +884,7 @@ void wxPostScriptDCImpl::DoDrawRoundedRectangle (wxCoord x, wxCoord y, wxCoord w
CalcBoundingBox( x + width, y + height ); CalcBoundingBox( x + width, y + height );
} }
if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen (m_pen); SetPen (m_pen);
@@ -921,7 +924,7 @@ void wxPostScriptDCImpl::DoDrawEllipse (wxCoord x, wxCoord y, wxCoord width, wxC
width--; width--;
height--; height--;
if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush (m_brush); SetBrush (m_brush);
@@ -938,7 +941,7 @@ void wxPostScriptDCImpl::DoDrawEllipse (wxCoord x, wxCoord y, wxCoord width, wxC
CalcBoundingBox( x + width, y + height ); CalcBoundingBox( x + width, y + height );
} }
if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen (m_pen); SetPen (m_pen);

View File

@@ -477,7 +477,7 @@ void wxWindowDCImpl::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2
{ {
wxCHECK_RET( IsOk(), wxT("invalid window dc") ); wxCHECK_RET( IsOk(), wxT("invalid window dc") );
if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
if (m_gdkwindow) if (m_gdkwindow)
gdk_draw_line( m_gdkwindow, m_penGC, XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2) ); 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") ); wxCHECK_RET( IsOk(), wxT("invalid window dc") );
if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
int w = 0; int w = 0;
int h = 0; int h = 0;
@@ -589,7 +589,7 @@ void wxWindowDCImpl::DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2,
if (m_gdkwindow) if (m_gdkwindow)
{ {
if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
GdkGC* gc; GdkGC* gc;
bool originChanged; 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); 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 ); 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, xx1, yy1, xxc, yyc );
gdk_draw_line( m_gdkwindow, m_penGC, xxc, yyc, xx2, yy2 ); 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 start = wxCoord(sa * 64.0);
wxCoord end = wxCoord((ea-sa) * 64.0); wxCoord end = wxCoord((ea-sa) * 64.0);
if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
GdkGC* gc; GdkGC* gc;
bool originChanged; bool originChanged;
@@ -647,7 +647,7 @@ void wxWindowDCImpl::DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord width, wxC
gdk_gc_set_ts_origin(gc, 0, 0); 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 ); 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") ); 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) ); gdk_draw_point( m_gdkwindow, m_penGC, XLOG2DEV(x), YLOG2DEV(y) );
CalcBoundingBox (x, 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") ); wxCHECK_RET( IsOk(), wxT("invalid window dc") );
if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return;
if (n <= 0) return; if (n <= 0) return;
if ( m_pen.IsTransparent() )
return;
//Check, if scaling is necessary //Check, if scaling is necessary
const bool doScale = const bool doScale =
xoffset != 0 || yoffset != 0 || XLOG2DEV(10) != 10 || YLOG2DEV(10) != 10; 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_gdkwindow)
{ {
if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
GdkGC* gc; GdkGC* gc;
bool originChanged; bool originChanged;
@@ -742,7 +744,7 @@ void wxWindowDCImpl::DoDrawPolygon( int n, wxPoint points[],
gdk_gc_set_ts_origin(gc, 0, 0); gdk_gc_set_ts_origin(gc, 0, 0);
} }
if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
/* /*
for (i = 0 ; i < n ; i++) 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_gdkwindow)
{ {
if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
GdkGC* gc; GdkGC* gc;
bool originChanged; bool originChanged;
@@ -793,7 +795,7 @@ void wxWindowDCImpl::DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoo
gdk_gc_set_ts_origin(gc, 0, 0); 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) && if ((m_pen.GetWidth() == 2) && (m_pen.GetCap() == wxCAP_ROUND) &&
(m_pen.GetJoin() == wxJOIN_ROUND) && (m_pen.GetStyle() == wxPENSTYLE_SOLID)) (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 // CMB: adjust size if outline is drawn otherwise the result is
// 1 pixel too wide and high // 1 pixel too wide and high
if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
ww--; ww--;
hh--; hh--;
@@ -872,7 +874,7 @@ void wxWindowDCImpl::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width
if (dd > hh) dd = hh; if (dd > hh) dd = hh;
rr = dd / 2; rr = dd / 2;
if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
GdkGC* gc; GdkGC* gc;
bool originChanged; bool originChanged;
@@ -889,7 +891,7 @@ void wxWindowDCImpl::DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width
gdk_gc_set_ts_origin(gc, 0, 0); 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, xx+ww-rr, yy );
gdk_draw_line( m_gdkwindow, m_penGC, xx+rr+1, yy+hh, xx+ww-rr, yy+hh ); 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_gdkwindow)
{ {
if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
GdkGC* gc; GdkGC* gc;
bool originChanged; 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 // If the pen is transparent pen we increase the size
// for better compatibility with other platforms. // for better compatibility with other platforms.
if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
++ww; ++ww;
++hh; ++hh;
@@ -942,7 +944,7 @@ void wxWindowDCImpl::DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord
gdk_gc_set_ts_origin(gc, 0, 0); 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 ); gdk_draw_arc( m_gdkwindow, m_penGC, false, xx, yy, ww, hh, 0, 360*64 );
} }

View File

@@ -1060,7 +1060,8 @@ wxGnomePrinterDCImpl::DoGetPixel(wxCoord WXUNUSED(x1),
void wxGnomePrinterDCImpl::DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2) 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 ); SetPen( m_pen );
@@ -1107,7 +1108,7 @@ void wxGnomePrinterDCImpl::DoDrawArc(wxCoord x1,wxCoord y1,wxCoord x2,wxCoord y2
while (alpha2 > 360) alpha2 -= 360; while (alpha2 > 360) alpha2 -= 360;
} }
if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
gs_libGnomePrint->gnome_print_moveto ( m_gpc, XLOG2DEV(xc), YLOG2DEV(yc) ); 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 ); gs_libGnomePrint->gnome_print_fill( m_gpc );
} }
if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen (m_pen); SetPen (m_pen);
gs_libGnomePrint->gnome_print_newpath( m_gpc ); gs_libGnomePrint->gnome_print_newpath( m_gpc );
@@ -1149,7 +1150,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoo
xx = 0.0; xx = 0.0;
yy = 0.0; yy = 0.0;
if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
@@ -1161,7 +1162,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoo
gs_libGnomePrint->gnome_print_fill( m_gpc ); gs_libGnomePrint->gnome_print_fill( m_gpc );
} }
if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen (m_pen); 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) void wxGnomePrinterDCImpl::DoDrawLines(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset)
{ {
if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return;
if (n <= 0) return; if (n <= 0) return;
if ( m_pen.IsTransparent() )
return;
SetPen (m_pen); SetPen (m_pen);
int i; int i;
@@ -1207,7 +1209,7 @@ void wxGnomePrinterDCImpl::DoDrawPolygon(int n, wxPoint points[],
{ {
if (n==0) return; if (n==0) return;
if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
@@ -1228,7 +1230,7 @@ void wxGnomePrinterDCImpl::DoDrawPolygon(int n, wxPoint points[],
gs_libGnomePrint->gnome_print_fill( m_gpc ); gs_libGnomePrint->gnome_print_fill( m_gpc );
} }
if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen (m_pen); SetPen (m_pen);
@@ -1263,7 +1265,7 @@ void wxGnomePrinterDCImpl::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width,
width--; width--;
height--; height--;
if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
@@ -1279,7 +1281,7 @@ void wxGnomePrinterDCImpl::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width,
CalcBoundingBox( x + width, y + height ); CalcBoundingBox( x + width, y + height );
} }
if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen (m_pen); SetPen (m_pen);
@@ -1303,7 +1305,7 @@ void wxGnomePrinterDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord
wxCoord rad = wxRound( radius ); wxCoord rad = wxRound( radius );
if (m_brush.GetStyle() != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush(m_brush); SetBrush(m_brush);
gs_libGnomePrint->gnome_print_newpath(m_gpc); gs_libGnomePrint->gnome_print_newpath(m_gpc);
@@ -1335,7 +1337,7 @@ void wxGnomePrinterDCImpl::DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord
CalcBoundingBox(x+width,y+height); CalcBoundingBox(x+width,y+height);
} }
if (m_pen.GetStyle() != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen(m_pen); SetPen(m_pen);
gs_libGnomePrint->gnome_print_newpath(m_gpc); gs_libGnomePrint->gnome_print_newpath(m_gpc);
@@ -1419,7 +1421,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wx
width--; width--;
height--; height--;
if (m_brush.GetStyle () != wxBRUSHSTYLE_TRANSPARENT) if ( m_brush.IsNonTransparent() )
{ {
SetBrush( m_brush ); SetBrush( m_brush );
makeEllipticalPath( x, y, width, height ); makeEllipticalPath( x, y, width, height );
@@ -1428,7 +1430,7 @@ void wxGnomePrinterDCImpl::DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wx
CalcBoundingBox( x + width, y + height ); CalcBoundingBox( x + width, y + height );
} }
if (m_pen.GetStyle () != wxPENSTYLE_TRANSPARENT) if ( m_pen.IsNonTransparent() )
{ {
SetPen (m_pen); SetPen (m_pen);
makeEllipticalPath( x, y, width, height ); makeEllipticalPath( x, y, width, height );

View File

@@ -1266,7 +1266,8 @@ bool wxGtkPrinterDCImpl::DoGetPixel(wxCoord WXUNUSED(x1),
void wxGtkPrinterDCImpl::DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2) 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 ); SetPen( m_pen );
cairo_move_to ( m_cairo, XLOG2DEV(x1), YLOG2DEV(y1) ); 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) void wxGtkPrinterDCImpl::DoDrawPoint(wxCoord x, wxCoord y)
{ {
if (m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT) return; if ( m_pen.IsTransparent() )
return;
SetPen( m_pen ); 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) 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; if (n <= 0) return;

View File

@@ -723,7 +723,7 @@ void wxMSWDCImpl::DoDrawArc(wxCoord x1, wxCoord y1,
wxCoord xxx2 = (wxCoord) (xxc+ray); wxCoord xxx2 = (wxCoord) (xxc+ray);
wxCoord yyy2 = (wxCoord) (yyc+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 // Have to add 1 to bottom-right corner of rectangle
// to make semi-circles look right (crooked line otherwise). // 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 // (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 // and we want them to have the same size regardless of which pen is used
#ifndef __WXWINCE__ #ifndef __WXWINCE__
if ( m_pen.IsOk() && m_pen.GetStyle() == wxPENSTYLE_TRANSPARENT ) if ( m_pen.IsTransparent() )
{ {
x2dev++; x2dev++;
y2dev++; 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 // Windows draws the filled rectangles without outline (i.e. drawn with a
// transparent pen) one pixel smaller in both directions and we want them // transparent pen) one pixel smaller in both directions and we want them
// to have the same size regardless of which pen is used - adjust // 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++; x2++;
y2++; y2++;