]> git.saurik.com Git - wxWidgets.git/blame - include/wx/gdicmn.h
wxCHECK/wxCHECK_RET changes
[wxWidgets.git] / include / wx / gdicmn.h
CommitLineData
c801d85f
KB
1/////////////////////////////////////////////////////////////////////////////
2// Name: gdicmn.h
3// Purpose: Common GDI classes, types and declarations
4// Author: Julian Smart
5// Modified by:
6// Created: 01/02/97
7// RCS-ID: $Id$
8// Copyright: (c)
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef __GDICMNH__
13#define __GDICMNH__
14
15#ifdef __GNUG__
16#pragma interface "gdicmn.h"
17#endif
18
19#include "wx/object.h"
20#include "wx/list.h"
21#include "wx/hash.h"
22#include "wx/setup.h"
23
24#ifdef __WINDOWS__
25#include "wx/msw/colour.h"
26#elif defined(__MOTIF__)
27#include "wx/xt/colour.h"
28#elif defined(__GTK__)
29#include "wx/gtk/colour.h"
30#endif
31
32// Standard cursors
33typedef enum {
34 wxCURSOR_ARROW = 1,
35 wxCURSOR_BULLSEYE,
36 wxCURSOR_CHAR,
37 wxCURSOR_CROSS,
38 wxCURSOR_HAND,
39 wxCURSOR_IBEAM,
40 wxCURSOR_LEFT_BUTTON,
41 wxCURSOR_MAGNIFIER,
42 wxCURSOR_MIDDLE_BUTTON,
43 wxCURSOR_NO_ENTRY,
44 wxCURSOR_PAINT_BRUSH,
45 wxCURSOR_PENCIL,
46 wxCURSOR_POINT_LEFT,
47 wxCURSOR_POINT_RIGHT,
48 wxCURSOR_QUESTION_ARROW,
49 wxCURSOR_RIGHT_BUTTON,
50 wxCURSOR_SIZENESW,
51 wxCURSOR_SIZENS,
52 wxCURSOR_SIZENWSE,
53 wxCURSOR_SIZEWE,
54 wxCURSOR_SIZING,
55 wxCURSOR_SPRAYCAN,
56 wxCURSOR_WAIT,
57 wxCURSOR_WATCH,
58 wxCURSOR_BLANK
59#ifdef __X__
60 /* Not yet implemented for Windows */
61 , wxCURSOR_CROSS_REVERSE,
62 wxCURSOR_DOUBLE_ARROW,
63 wxCURSOR_BASED_ARROW_UP,
64 wxCURSOR_BASED_ARROW_DOWN
65#endif
66} _standard_cursors_t;
67
68class WXDLLEXPORT wxSize: public wxObject
69{
70public:
71 long x;
72 long y;
73 inline wxSize(void) { x = 0; y = 0; }
74 inline wxSize(long xx, long yy) { x = xx; y = yy; }
75 inline wxSize(const wxSize& sz) { x = sz.x; y = sz.y; }
76 inline void operator = (const wxSize& sz) { x = sz.x; y = sz.y; }
77 inline void Set(long xx, long yy) { x = xx; y = yy; }
78 inline long GetX() const { return x; }
79 inline long GetY() const { return y; }
80};
81
82// Point
83class WXDLLEXPORT wxRealPoint: public wxObject
84{
85 DECLARE_DYNAMIC_CLASS(wxRealPoint)
86 public:
87 double x;
88 double y;
89 inline wxRealPoint(void) { x = 0.0; y = 0.0; };
90 inline wxRealPoint(double the_x, double the_y) { x = the_x; y = the_y; };
91
92 inline void operator = (const wxRealPoint& pt) { x = pt.x; y = pt.y; }
93};
94
95class WXDLLEXPORT wxPoint: public wxObject
96{
97 DECLARE_DYNAMIC_CLASS(wxPoint)
98 public:
99 long x;
100 long y;
101 inline wxPoint(void) { x = 0; y = 0; };
102 wxPoint(long the_x, long the_y) { x = the_x; y = the_y; };
103 inline void operator = (const wxPoint& pt) { x = pt.x; y = pt.y; }
104};
105
106#if WXWIN_COMPATIBILITY
107#define wxIntPoint wxPoint
108#define wxRectangle wxRect
109#endif
110
111class WXDLLEXPORT wxRect : public wxObject {
112 DECLARE_DYNAMIC_CLASS(wxRect)
113public:
114 wxRect(void) ;
115 wxRect(const long x, const long y, const long w, const long h);
116 wxRect(const wxPoint& topLeft, const wxPoint& bottomRight);
117 wxRect(const wxPoint& pos, const wxSize& size);
118 wxRect(const wxRect& rect);
119
120 inline long GetX(void) const { return x; }
121 inline void SetX(const long X) { x = X; }
122 inline long GetY(void) const { return y; }
123 inline void SetY(const long Y) { y = Y; }
124 inline long GetWidth() const { return width; }
125 inline void SetWidth(const long w) { width = w; }
126 inline long GetHeight() const { return height; }
127 inline void SetHeight(const long h) { height = h; }
128
129 inline wxPoint GetPosition(void) { return wxPoint(x, y); }
130 inline wxSize GetSize(void) { return wxSize(width, height); }
131
132 inline long GetLeft(void) const { return x; }
133 inline long GetTop(void) const { return y; }
134 inline long GetBottom(void) const { return y + height; }
135 inline long GetRight(void) const { return x + width; }
136
137 wxRect& operator = (const wxRect& rect);
138 bool operator == (const wxRect& rect);
139 bool operator != (const wxRect& rect);
140public:
141 long x, y, width, height;
142};
143
144class WXDLLEXPORT wxBrush;
145class WXDLLEXPORT wxPen;
146class WXDLLEXPORT wxBitmap;
147class WXDLLEXPORT wxIcon;
148class WXDLLEXPORT wxCursor;
149class WXDLLEXPORT wxFont;
150class WXDLLEXPORT wxPalette;
151class WXDLLEXPORT wxPalette;
152
153/*
154 * Bitmap flags
155 */
156
157// Hint to indicate filetype
158#define wxBITMAP_TYPE_BMP 1
159#define wxBITMAP_TYPE_BMP_RESOURCE 2
160#define wxBITMAP_TYPE_ICO 3
161#define wxBITMAP_TYPE_ICO_RESOURCE 4
162#define wxBITMAP_TYPE_CUR 5
163#define wxBITMAP_TYPE_CUR_RESOURCE 6
164#define wxBITMAP_TYPE_XBM 7
165#define wxBITMAP_TYPE_XBM_DATA 8
166#define wxBITMAP_TYPE_XPM 9
167#define wxBITMAP_TYPE_XPM_DATA 10
168#define wxBITMAP_TYPE_TIF 11
169#define wxBITMAP_TYPE_TIF_RESOURCE 12
170#define wxBITMAP_TYPE_GIF 13
171#define wxBITMAP_TYPE_GIF_RESOURCE 14
172#define wxBITMAP_TYPE_PNG 15
173#define wxBITMAP_TYPE_PNG_RESOURCE 16
174#define wxBITMAP_TYPE_ANY 50
175
176#define wxBITMAP_TYPE_RESOURCE wxBITMAP_TYPE_BMP_RESOURCE
177
178class WXDLLEXPORT wxBitmap;
179class WXDLLEXPORT wxCursor;
180class WXDLLEXPORT wxIcon;
181
182// Management of pens, brushes and fonts
183class WXDLLEXPORT wxPenList: public wxList
184{
185 DECLARE_DYNAMIC_CLASS(wxPenList)
186 public:
187 inline wxPenList(void)
188 { }
189 ~wxPenList(void);
190 void AddPen(wxPen *pen);
191 void RemovePen(wxPen *pen);
192 wxPen *FindOrCreatePen(const wxColour& colour, const int width, const int style);
193 wxPen *FindOrCreatePen(const wxString& colour, const int width, const int style);
194};
195
196class WXDLLEXPORT wxBrushList: public wxList
197{
198 DECLARE_DYNAMIC_CLASS(wxBrushList)
199 public:
200 inline wxBrushList(void)
201 { }
202 ~wxBrushList(void);
203 void AddBrush(wxBrush *brush);
204 void RemoveBrush(wxBrush *brush);
205 wxBrush *FindOrCreateBrush(const wxColour& colour, const int style);
206 wxBrush *FindOrCreateBrush(const wxString& colour, const int style);
207};
208
209WXDLLEXPORT_DATA(extern const char*) wxEmptyString;
210
211class WXDLLEXPORT wxFontList: public wxList
212{
213 DECLARE_DYNAMIC_CLASS(wxFontList)
214 public:
215 inline wxFontList(void)
216 { }
217 ~wxFontList(void);
218 void AddFont(wxFont *font);
219 void RemoveFont(wxFont *font);
220 wxFont *FindOrCreateFont(const int pointSize, const int family, const int style, const int weight,
221 const bool underline = FALSE, const wxString& face = wxEmptyString);
222};
223
224class WXDLLEXPORT wxColourDatabase: public wxList
225{
226 DECLARE_CLASS(wxColourDatabase)
227 public:
228 wxColourDatabase(int type);
229 ~wxColourDatabase(void) ;
230 // Not const because it may add a name to the database
231 wxColour *FindColour(const wxString& colour) ;
232 wxString FindName(const wxColour& colour) const;
233 void Initialize(void);
234};
235
236class WXDLLEXPORT wxBitmapList: public wxList
237{
238 DECLARE_DYNAMIC_CLASS(wxBitmapList)
239 public:
240 wxBitmapList(void);
241 ~wxBitmapList(void);
242
243 void AddBitmap(wxBitmap *bitmap);
244 void RemoveBitmap(wxBitmap *bitmap);
245};
246
247// Lists of GDI objects
248WXDLLEXPORT_DATA(extern wxPenList*) wxThePenList;
249WXDLLEXPORT_DATA(extern wxBrushList*) wxTheBrushList;
250WXDLLEXPORT_DATA(extern wxFontList*) wxTheFontList;
251WXDLLEXPORT_DATA(extern wxBitmapList*) wxTheBitmapList;
252
253// Stock objects
254WXDLLEXPORT_DATA(extern wxFont*) wxNORMAL_FONT;
255WXDLLEXPORT_DATA(extern wxFont*) wxSMALL_FONT;
256WXDLLEXPORT_DATA(extern wxFont*) wxITALIC_FONT;
257WXDLLEXPORT_DATA(extern wxFont*) wxSWISS_FONT;
258
259WXDLLEXPORT_DATA(extern wxPen*) wxRED_PEN;
260WXDLLEXPORT_DATA(extern wxPen*) wxCYAN_PEN;
261WXDLLEXPORT_DATA(extern wxPen*) wxGREEN_PEN;
262WXDLLEXPORT_DATA(extern wxPen*) wxBLACK_PEN;
263WXDLLEXPORT_DATA(extern wxPen*) wxWHITE_PEN;
264WXDLLEXPORT_DATA(extern wxPen*) wxTRANSPARENT_PEN;
265WXDLLEXPORT_DATA(extern wxPen*) wxBLACK_DASHED_PEN;
266WXDLLEXPORT_DATA(extern wxPen*) wxGREY_PEN;
267WXDLLEXPORT_DATA(extern wxPen*) wxMEDIUM_GREY_PEN;
268WXDLLEXPORT_DATA(extern wxPen*) wxLIGHT_GREY_PEN;
269
270WXDLLEXPORT_DATA(extern wxBrush*) wxBLUE_BRUSH;
271WXDLLEXPORT_DATA(extern wxBrush*) wxGREEN_BRUSH;
272WXDLLEXPORT_DATA(extern wxBrush*) wxWHITE_BRUSH;
273WXDLLEXPORT_DATA(extern wxBrush*) wxBLACK_BRUSH;
274WXDLLEXPORT_DATA(extern wxBrush*) wxGREY_BRUSH;
275WXDLLEXPORT_DATA(extern wxBrush*) wxMEDIUM_GREY_BRUSH;
276WXDLLEXPORT_DATA(extern wxBrush*) wxLIGHT_GREY_BRUSH;
277WXDLLEXPORT_DATA(extern wxBrush*) wxTRANSPARENT_BRUSH;
278WXDLLEXPORT_DATA(extern wxBrush*) wxCYAN_BRUSH;
279WXDLLEXPORT_DATA(extern wxBrush*) wxRED_BRUSH;
280
281WXDLLEXPORT_DATA(extern wxColour*) wxBLACK;
282WXDLLEXPORT_DATA(extern wxColour*) wxWHITE;
283WXDLLEXPORT_DATA(extern wxColour*) wxRED;
284WXDLLEXPORT_DATA(extern wxColour*) wxBLUE;
285WXDLLEXPORT_DATA(extern wxColour*) wxGREEN;
286WXDLLEXPORT_DATA(extern wxColour*) wxCYAN;
287WXDLLEXPORT_DATA(extern wxColour*) wxLIGHT_GREY;
288
289// 'Null' objects
290WXDLLEXPORT_DATA(extern wxBitmap) wxNullBitmap;
291WXDLLEXPORT_DATA(extern wxIcon) wxNullIcon;
292WXDLLEXPORT_DATA(extern wxCursor) wxNullCursor;
293WXDLLEXPORT_DATA(extern wxPen) wxNullPen;
294WXDLLEXPORT_DATA(extern wxBrush) wxNullBrush;
295WXDLLEXPORT_DATA(extern wxPalette) wxNullPalette;
296WXDLLEXPORT_DATA(extern wxFont) wxNullFont;
297WXDLLEXPORT_DATA(extern wxColour) wxNullColour;
298
299// Stock cursors types
300WXDLLEXPORT_DATA(extern wxCursor*) wxSTANDARD_CURSOR;
301WXDLLEXPORT_DATA(extern wxCursor*) wxHOURGLASS_CURSOR;
302WXDLLEXPORT_DATA(extern wxCursor*) wxCROSS_CURSOR;
303
304WXDLLEXPORT_DATA(extern wxColourDatabase*) wxTheColourDatabase;
305extern void WXDLLEXPORT wxInitializeStockObjects(void);
306extern void WXDLLEXPORT wxDeleteStockObjects(void);
307
308extern bool WXDLLEXPORT wxColourDisplay(void);
309
310// Returns depth of screen
311extern int WXDLLEXPORT wxDisplayDepth(void);
312
313extern void WXDLLEXPORT wxDisplaySize(int *width, int *height);
314
315extern void WXDLLEXPORT wxSetCursor(const wxCursor& cursor);
316
317// Useful macro for create icons portably
318
319#ifdef __WINDOWS__
320# define wxICON(X) wxIcon(X##_icon);
321#elif defined(__X__)
322# define wxICON(X) wxIcon(X##_bits, X##_width, X##_height);
323#else
324# define wxICON wxIcon
325#endif
326
327/*
328 Example:
329 #define wxbuild_icon "wxbuild"
330
331 wxIcon *icon = new wxICON(wxbuild);
332 */
333
334#endif
335 // __GDICMNH__