1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Base header for wxPen
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows Licence
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_PEN_H_BASE_
13 #define _WX_PEN_H_BASE_
15 #include "wx/gdiobj.h"
16 #include "wx/gdicmn.h"
20 wxPENSTYLE_INVALID
= -1,
22 wxPENSTYLE_SOLID
= wxSOLID
,
23 wxPENSTYLE_DOT
= wxDOT
,
24 wxPENSTYLE_LONG_DASH
= wxLONG_DASH
,
25 wxPENSTYLE_SHORT_DASH
= wxSHORT_DASH
,
26 wxPENSTYLE_DOT_DASH
= wxDOT_DASH
,
27 wxPENSTYLE_USER_DASH
= wxUSER_DASH
,
29 wxPENSTYLE_TRANSPARENT
= wxTRANSPARENT
,
31 wxPENSTYLE_STIPPLE_MASK_OPAQUE
= wxSTIPPLE_MASK_OPAQUE
,
32 wxPENSTYLE_STIPPLE_MASK
= wxSTIPPLE_MASK
,
33 wxPENSTYLE_STIPPLE
= wxSTIPPLE
,
35 wxPENSTYLE_BDIAGONAL_HATCH
= wxBDIAGONAL_HATCH
,
36 wxPENSTYLE_CROSSDIAG_HATCH
= wxCROSSDIAG_HATCH
,
37 wxPENSTYLE_FDIAGONAL_HATCH
= wxFDIAGONAL_HATCH
,
38 wxPENSTYLE_CROSS_HATCH
= wxCROSS_HATCH
,
39 wxPENSTYLE_HORIZONTAL_HATCH
= wxHORIZONTAL_HATCH
,
40 wxPENSTYLE_VERTICAL_HATCH
= wxVERTICAL_HATCH
,
42 wxPENSTYLE_FIRST_HATCH
= wxFIRST_HATCH
,
43 wxPENSTYLE_LAST_HATCH
= wxLAST_HATCH
65 class WXDLLIMPEXP_CORE wxPenBase
: public wxGDIObject
68 virtual ~wxPenBase() { }
70 virtual void SetColour(const wxColour
& col
) = 0;
71 virtual void SetColour(unsigned char r
, unsigned char g
, unsigned char b
) = 0;
73 virtual void SetWidth(int width
) = 0;
74 virtual void SetStyle(wxPenStyle style
) = 0;
75 virtual void SetStipple(const wxBitmap
& stipple
) = 0;
76 virtual void SetDashes(int nb_dashes
, const wxDash
*dash
) = 0;
77 virtual void SetJoin(wxPenJoin join
) = 0;
78 virtual void SetCap(wxPenCap cap
) = 0;
80 virtual wxColour
GetColour() const = 0;
81 virtual wxBitmap
*GetStipple() const = 0;
82 virtual wxPenStyle
GetStyle() const = 0;
83 virtual wxPenJoin
GetJoin() const = 0;
84 virtual wxPenCap
GetCap() const = 0;
85 virtual int GetWidth() const = 0;
86 virtual int GetDashes(wxDash
**ptr
) const = 0;
88 // Convenient helpers for testing whether the pen is a transparent one:
89 // unlike GetStyle() == wxPENSTYLE_TRANSPARENT, they work correctly even if
90 // the pen is invalid (they both return false in this case).
91 bool IsTransparent() const
93 return IsOk() && GetStyle() == wxPENSTYLE_TRANSPARENT
;
96 bool IsNonTransparent() const
98 return IsOk() && GetStyle() != wxPENSTYLE_TRANSPARENT
;
102 #if defined(__WXMSW__)
103 #include "wx/msw/pen.h"
104 #elif defined(__WXMOTIF__) || defined(__WXX11__)
105 #include "wx/x11/pen.h"
106 #elif defined(__WXGTK20__)
107 #include "wx/gtk/pen.h"
108 #elif defined(__WXGTK__)
109 #include "wx/gtk1/pen.h"
110 #elif defined(__WXMGL__)
111 #include "wx/mgl/pen.h"
112 #elif defined(__WXDFB__)
113 #include "wx/dfb/pen.h"
114 #elif defined(__WXMAC__)
115 #include "wx/osx/pen.h"
116 #elif defined(__WXCOCOA__)
117 #include "wx/cocoa/pen.h"
118 #elif defined(__WXPM__)
119 #include "wx/os2/pen.h"
122 class WXDLLIMPEXP_CORE wxPenList
: public wxGDIObjListBase
125 wxPen
*FindOrCreatePen(const wxColour
& colour
,
127 wxPenStyle style
= wxPENSTYLE_SOLID
);
129 #if FUTURE_WXWIN_COMPATIBILITY_3_0
130 wxPen
*FindOrCreatePen(const wxColour
& colour
, int width
, int style
)
131 { return FindOrCreatePen(colour
, width
, (wxPenStyle
)style
); }
133 #if WXWIN_COMPATIBILITY_2_6
134 wxDEPRECATED( void AddPen(wxPen
*) );
135 wxDEPRECATED( void RemovePen(wxPen
*) );
139 extern WXDLLIMPEXP_DATA_CORE(wxPenList
*) wxThePenList
;
141 // provide comparison operators to allow code such as
143 // if ( pen.GetStyle() == wxTRANSPARENT )
145 // to compile without warnings which it would otherwise provoke from some
146 // compilers as it compares elements of different enums
147 #if FUTURE_WXWIN_COMPATIBILITY_3_0
149 // Unfortunately some compilers have ambiguity issues when enum comparisons are
150 // overloaded so we have to disable the overloads in this case, see
151 // wxCOMPILER_NO_OVERLOAD_ON_ENUM definition in wx/platform.h for more details.
152 #ifndef wxCOMPILER_NO_OVERLOAD_ON_ENUM
154 inline bool operator==(wxPenStyle s
, wxDeprecatedGUIConstants t
)
156 return static_cast<int>(s
) == static_cast<int>(t
);
159 inline bool operator!=(wxPenStyle s
, wxDeprecatedGUIConstants t
)
164 #endif // wxCOMPILER_NO_OVERLOAD_ON_ENUM
166 #endif // FUTURE_WXWIN_COMPATIBILITY_3_0
168 #endif // _WX_PEN_H_BASE_