create stock GDI objects on demand; use const with GDI objects appropriately (patch 1445355)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38765 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-04-16 22:18:29 +00:00
parent c4edcd7c86
commit f516d98637
35 changed files with 486 additions and 280 deletions

View File

@@ -553,41 +553,116 @@ extern WXDLLEXPORT_DATA(wxBrushList*) wxTheBrushList;
extern WXDLLEXPORT_DATA(wxFontList*) wxTheFontList;
extern WXDLLEXPORT_DATA(wxBitmapList*) wxTheBitmapList;
// Stock objects
extern WXDLLEXPORT_DATA(wxFont*) wxNORMAL_FONT;
extern WXDLLEXPORT_DATA(wxFont*) wxSMALL_FONT;
extern WXDLLEXPORT_DATA(wxFont*) wxITALIC_FONT;
extern WXDLLEXPORT_DATA(wxFont*) wxSWISS_FONT;
/* Stock objects
extern WXDLLEXPORT_DATA(wxPen*) wxRED_PEN;
extern WXDLLEXPORT_DATA(wxPen*) wxCYAN_PEN;
extern WXDLLEXPORT_DATA(wxPen*) wxGREEN_PEN;
extern WXDLLEXPORT_DATA(wxPen*) wxBLACK_PEN;
extern WXDLLEXPORT_DATA(wxPen*) wxWHITE_PEN;
extern WXDLLEXPORT_DATA(wxPen*) wxTRANSPARENT_PEN;
extern WXDLLEXPORT_DATA(wxPen*) wxBLACK_DASHED_PEN;
extern WXDLLEXPORT_DATA(wxPen*) wxGREY_PEN;
extern WXDLLEXPORT_DATA(wxPen*) wxMEDIUM_GREY_PEN;
extern WXDLLEXPORT_DATA(wxPen*) wxLIGHT_GREY_PEN;
wxStockGDI creates the stock GDI objects on demand. Pointers to the
created objects are stored in the ms_stockObject array, which is indexed
by the Item enum values. Platorm-specific fonts can be created by
implementing a derived class with an override for the GetFont function.
wxStockGDI operates as a singleton, accessed through the ms_instance
pointer. By default this pointer is set to an instance of wxStockGDI.
A derived class must arrange to set this pointer to an instance of itself.
*/
class WXDLLIMPEXP_CORE wxStockGDI
{
public:
enum Item {
BRUSH_BLACK,
BRUSH_BLUE,
BRUSH_CYAN,
BRUSH_GREEN,
BRUSH_GREY,
BRUSH_LIGHTGREY,
BRUSH_MEDIUMGREY,
BRUSH_RED,
BRUSH_TRANSPARENT,
BRUSH_WHITE,
COLOUR_BLACK,
COLOUR_BLUE,
COLOUR_CYAN,
COLOUR_GREEN,
COLOUR_LIGHTGREY,
COLOUR_RED,
COLOUR_WHITE,
CURSOR_CROSS,
CURSOR_HOURGLASS,
CURSOR_STANDARD,
FONT_ITALIC,
FONT_NORMAL,
FONT_SMALL,
FONT_SWISS,
PEN_BLACK,
PEN_BLACKDASHED,
PEN_CYAN,
PEN_GREEN,
PEN_GREY,
PEN_LIGHTGREY,
PEN_MEDIUMGREY,
PEN_RED,
PEN_TRANSPARENT,
PEN_WHITE,
ITEMCOUNT
};
extern WXDLLEXPORT_DATA(wxBrush*) wxBLUE_BRUSH;
extern WXDLLEXPORT_DATA(wxBrush*) wxGREEN_BRUSH;
extern WXDLLEXPORT_DATA(wxBrush*) wxWHITE_BRUSH;
extern WXDLLEXPORT_DATA(wxBrush*) wxBLACK_BRUSH;
extern WXDLLEXPORT_DATA(wxBrush*) wxGREY_BRUSH;
extern WXDLLEXPORT_DATA(wxBrush*) wxMEDIUM_GREY_BRUSH;
extern WXDLLEXPORT_DATA(wxBrush*) wxLIGHT_GREY_BRUSH;
extern WXDLLEXPORT_DATA(wxBrush*) wxTRANSPARENT_BRUSH;
extern WXDLLEXPORT_DATA(wxBrush*) wxCYAN_BRUSH;
extern WXDLLEXPORT_DATA(wxBrush*) wxRED_BRUSH;
wxStockGDI();
virtual ~wxStockGDI();
static void DeleteAll();
extern WXDLLEXPORT_DATA(wxColour*) wxBLACK;
extern WXDLLEXPORT_DATA(wxColour*) wxWHITE;
extern WXDLLEXPORT_DATA(wxColour*) wxRED;
extern WXDLLEXPORT_DATA(wxColour*) wxBLUE;
extern WXDLLEXPORT_DATA(wxColour*) wxGREEN;
extern WXDLLEXPORT_DATA(wxColour*) wxCYAN;
extern WXDLLEXPORT_DATA(wxColour*) wxLIGHT_GREY;
static wxStockGDI& instance() { return *ms_instance; }
static const wxBrush* GetBrush(Item item);
static const wxColour* GetColour(Item item);
static const wxCursor* GetCursor(Item item);
// Can be overridden by platform-specific derived classes
virtual const wxFont* GetFont(Item item);
static const wxPen* GetPen(Item item);
protected:
static wxStockGDI* ms_instance;
static wxObject* ms_stockObject[ITEMCOUNT];
DECLARE_NO_COPY_CLASS(wxStockGDI)
};
#define wxITALIC_FONT wxStockGDI::instance().GetFont(wxStockGDI::FONT_ITALIC)
#define wxNORMAL_FONT wxStockGDI::instance().GetFont(wxStockGDI::FONT_NORMAL)
#define wxSMALL_FONT wxStockGDI::instance().GetFont(wxStockGDI::FONT_SMALL)
#define wxSWISS_FONT wxStockGDI::instance().GetFont(wxStockGDI::FONT_SWISS)
#define wxBLACK_DASHED_PEN wxStockGDI::GetPen(wxStockGDI::PEN_BLACKDASHED)
#define wxBLACK_PEN wxStockGDI::GetPen(wxStockGDI::PEN_BLACK)
#define wxCYAN_PEN wxStockGDI::GetPen(wxStockGDI::PEN_CYAN)
#define wxGREEN_PEN wxStockGDI::GetPen(wxStockGDI::PEN_GREEN)
#define wxGREY_PEN wxStockGDI::GetPen(wxStockGDI::PEN_GREY)
#define wxLIGHT_GREY_PEN wxStockGDI::GetPen(wxStockGDI::PEN_LIGHTGREY)
#define wxMEDIUM_GREY_PEN wxStockGDI::GetPen(wxStockGDI::PEN_MEDIUMGREY)
#define wxRED_PEN wxStockGDI::GetPen(wxStockGDI::PEN_RED)
#define wxTRANSPARENT_PEN wxStockGDI::GetPen(wxStockGDI::PEN_TRANSPARENT)
#define wxWHITE_PEN wxStockGDI::GetPen(wxStockGDI::PEN_WHITE)
#define wxBLACK_BRUSH wxStockGDI::GetBrush(wxStockGDI::BRUSH_BLACK)
#define wxBLUE_BRUSH wxStockGDI::GetBrush(wxStockGDI::BRUSH_BLUE)
#define wxCYAN_BRUSH wxStockGDI::GetBrush(wxStockGDI::BRUSH_CYAN)
#define wxGREEN_BRUSH wxStockGDI::GetBrush(wxStockGDI::BRUSH_GREEN)
#define wxGREY_BRUSH wxStockGDI::GetBrush(wxStockGDI::BRUSH_GREY)
#define wxLIGHT_GREY_BRUSH wxStockGDI::GetBrush(wxStockGDI::BRUSH_LIGHTGREY)
#define wxMEDIUM_GREY_BRUSH wxStockGDI::GetBrush(wxStockGDI::BRUSH_MEDIUMGREY)
#define wxRED_BRUSH wxStockGDI::GetBrush(wxStockGDI::BRUSH_RED)
#define wxTRANSPARENT_BRUSH wxStockGDI::GetBrush(wxStockGDI::BRUSH_TRANSPARENT)
#define wxWHITE_BRUSH wxStockGDI::GetBrush(wxStockGDI::BRUSH_WHITE)
#define wxBLACK wxStockGDI::GetColour(wxStockGDI::COLOUR_BLACK)
#define wxBLUE wxStockGDI::GetColour(wxStockGDI::COLOUR_BLUE)
#define wxCYAN wxStockGDI::GetColour(wxStockGDI::COLOUR_CYAN)
#define wxGREEN wxStockGDI::GetColour(wxStockGDI::COLOUR_GREEN)
#define wxLIGHT_GREY wxStockGDI::GetColour(wxStockGDI::COLOUR_LIGHTGREY)
#define wxRED wxStockGDI::GetColour(wxStockGDI::COLOUR_RED)
#define wxWHITE wxStockGDI::GetColour(wxStockGDI::COLOUR_WHITE)
#define wxCROSS_CURSOR wxStockGDI::GetCursor(wxStockGDI::CURSOR_CROSS)
#define wxHOURGLASS_CURSOR wxStockGDI::GetCursor(wxStockGDI::CURSOR_HOURGLASS)
#define wxSTANDARD_CURSOR wxStockGDI::GetCursor(wxStockGDI::CURSOR_STANDARD)
// 'Null' objects
extern WXDLLEXPORT_DATA(wxBitmap) wxNullBitmap;
@@ -599,11 +674,6 @@ extern WXDLLEXPORT_DATA(wxPalette) wxNullPalette;
extern WXDLLEXPORT_DATA(wxFont) wxNullFont;
extern WXDLLEXPORT_DATA(wxColour) wxNullColour;
// Stock cursors types
extern WXDLLEXPORT_DATA(wxCursor*) wxSTANDARD_CURSOR;
extern WXDLLEXPORT_DATA(wxCursor*) wxHOURGLASS_CURSOR;
extern WXDLLEXPORT_DATA(wxCursor*) wxCROSS_CURSOR;
extern WXDLLEXPORT_DATA(wxColourDatabase*) wxTheColourDatabase;
extern WXDLLEXPORT_DATA(const wxChar) wxPanelNameStr[];
@@ -619,9 +689,7 @@ extern WXDLLEXPORT_DATA(wxList) wxPendingDelete;
// ---------------------------------------------------------------------------
// resource management
extern void WXDLLEXPORT wxInitializeStockObjects();
extern void WXDLLEXPORT wxInitializeStockLists();
extern void WXDLLEXPORT wxDeleteStockObjects();
extern void WXDLLEXPORT wxDeleteStockLists();
// is the display colour (or monochrome)?