1 ///////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface for owner-drawn GUI elements
4 // Author: Vadim Zeitlin
5 // Modified by: Marcin Malich
7 // Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
8 // Licence: wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
11 #ifndef _WX_OWNERDRW_H_BASE
12 #define _WX_OWNERDRW_H_BASE
19 #include "wx/colour.h"
21 class WXDLLIMPEXP_FWD_CORE wxDC
;
23 // ----------------------------------------------------------------------------
24 // wxOwnerDrawn - a mix-in base class, derive from it to implement owner-drawn
27 // wxOwnerDrawn supports drawing of an item with non standard font, color and
28 // also supports 3 bitmaps: either a checked/unchecked bitmap for a checkable
29 // element or one unchangeable bitmap otherwise.
30 // ----------------------------------------------------------------------------
32 class WXDLLIMPEXP_CORE wxOwnerDrawnBase
38 m_margin
= ms_defaultMargin
;
41 virtual ~wxOwnerDrawnBase() {}
43 void SetFont(const wxFont
& font
)
44 { m_font
= font
; m_ownerDrawn
= true; }
46 wxFont
& GetFont() const
47 { return (wxFont
&) m_font
; }
50 void SetTextColour(const wxColour
& colText
)
51 { m_colText
= colText
; m_ownerDrawn
= true; }
53 wxColour
& GetTextColour() const
54 { return (wxColour
&) m_colText
; }
56 void SetBackgroundColour(const wxColour
& colBack
)
57 { m_colBack
= colBack
; m_ownerDrawn
= true; }
59 wxColour
& GetBackgroundColour() const
60 { return (wxColour
&) m_colBack
; }
63 void SetMarginWidth(int width
)
66 int GetMarginWidth() const
69 static int GetDefaultMarginWidth()
70 { return ms_defaultMargin
; }
73 // get item name (with mnemonics if exist)
74 virtual wxString
GetName() const = 0;
77 // this function might seem strange, but if it returns false it means that
78 // no non-standard attribute are set, so there is no need for this control
79 // to be owner-drawn. Moreover, you can force owner-drawn to false if you
80 // want to change, say, the color for the item but only if it is owner-drawn
81 // (see wxMenuItem::wxMenuItem for example)
82 bool IsOwnerDrawn() const
83 { return m_ownerDrawn
; }
85 // switch on/off owner-drawing the item
86 void SetOwnerDrawn(bool ownerDrawn
= true)
87 { m_ownerDrawn
= ownerDrawn
; }
90 // constants used in OnDrawItem
91 // (they have the same values as corresponding Win32 constants)
94 wxODDrawAll
= 0x0001, // redraw entire control
95 wxODSelectChanged
= 0x0002, // selection changed (see Status.Select)
96 wxODFocusChanged
= 0x0004 // keyboard focus changed (see Status.Focus)
101 wxODSelected
= 0x0001, // control is currently selected
102 wxODGrayed
= 0x0002, // item is to be grayed
103 wxODDisabled
= 0x0004, // item is to be drawn as disabled
104 wxODChecked
= 0x0008, // item is to be checked
105 wxODHasFocus
= 0x0010, // item has the keyboard focus
106 wxODDefault
= 0x0020, // item is the default item
107 wxODHidePrefix
= 0x0100 // hide keyboard cues (w2k and xp only)
110 // virtual functions to implement drawing (return true if processed)
111 virtual bool OnMeasureItem(size_t *width
, size_t *height
);
112 virtual bool OnDrawItem(wxDC
& dc
, const wxRect
& rc
, wxODAction act
, wxODStatus stat
) = 0;
116 // get the font and colour to use, whether it is set or not
117 virtual void GetFontToUse(wxFont
& font
) const;
118 virtual void GetColourToUse(wxODStatus stat
, wxColour
& colText
, wxColour
& colBack
) const;
121 bool m_ownerDrawn
; // true if something is non standard
123 wxFont m_font
; // font to use for drawing
124 wxColour m_colText
, // color ----"---"---"----
125 m_colBack
; // background color
127 int m_margin
; // space occupied by bitmap to the left of the item
129 static int ms_defaultMargin
;
132 // ----------------------------------------------------------------------------
133 // include the platform-specific class declaration
134 // ----------------------------------------------------------------------------
136 #if defined(__WXMSW__)
137 #include "wx/msw/ownerdrw.h"
138 #elif defined(__WXPM__)
139 #include "wx/os2/ownerdrw.h"
142 #endif // wxUSE_OWNER_DRAWN
144 #endif // _WX_OWNERDRW_H_BASE