]> git.saurik.com Git - wxWidgets.git/blob - include/wx/os2/dc.h
Added tree control item click events
[wxWidgets.git] / include / wx / os2 / dc.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: dc.h
3 // Purpose: wxDC class
4 // Author: David Webster
5 // Modified by:
6 // Created: 08/26/99
7 // RCS-ID: $Id$
8 // Copyright: (c) David Webster
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_DC_H_
13 #define _WX_DC_H_
14
15 #ifdef __GNUG__
16 #pragma interface "dc.h"
17 #endif
18
19 #include "wx/window.h"
20 #include "wx/pen.h"
21 #include "wx/brush.h"
22 #include "wx/icon.h"
23 #include "wx/font.h"
24 #include "wx/gdicmn.h"
25
26 //-----------------------------------------------------------------------------
27 // constants
28 //-----------------------------------------------------------------------------
29
30 #ifndef MM_TEXT
31 #define MM_TEXT 0
32 #define MM_ISOTROPIC 1
33 #define MM_ANISOTROPIC 2
34 #define MM_LOMETRIC 3
35 #define MM_HIMETRIC 4
36 #define MM_TWIPS 5
37 #define MM_POINTS 6
38 #define MM_METRIC 7
39 #endif
40
41 //-----------------------------------------------------------------------------
42 // global variables
43 //-----------------------------------------------------------------------------
44
45 extern int wxPageNumber;
46
47 //-----------------------------------------------------------------------------
48 // wxDC
49 //-----------------------------------------------------------------------------
50
51 class WXDLLEXPORT wxDC: public wxDCBase
52 {
53 DECLARE_ABSTRACT_CLASS(wxDC)
54
55 public:
56
57 wxDC(void);
58 ~wxDC(void);
59
60 virtual void BeginDrawing(void) { };
61 virtual void EndDrawing(void) { };
62
63 //-----------------------------------------------------------------------------
64 // Pure virtuals from wxDCBase that need defining
65 //-----------------------------------------------------------------------------
66 virtual bool CanDrawBitmap(void) const { return TRUE; };
67 virtual bool CanGetTextExtent(void) const { return TRUE; };
68 virtual int GetDepth(void) const;
69 virtual wxSize GetPPI(void) const;
70 virtual void GetTextExtent( const wxString& string
71 ,long* width
72 ,long* height
73 ,long* descent = NULL
74 ,long* externalLeading = NULL
75 ,wxFont* theFont = NULL
76 ) const;
77 virtual long GetCharWidth(void) const;
78 virtual long GetCharHeight(void) const;
79 virtual void Clear(void);
80 virtual void SetFont(const wxFont& font);
81 virtual void SetPen(const wxPen& pen);
82 virtual void SetBrush(const wxBrush& brush);
83 virtual void SetBackground(const wxBrush& brush);
84 virtual void SetLogicalFunction(int function);
85 virtual void SetBackgroundMode(int mode);
86 virtual void SetPalette(const wxPalette& palette);
87 virtual void SetMapMode(int mode);
88 virtual void DestroyClippingRegion(void);
89 virtual void SetUserScale(double x, double y);
90 virtual void SetLogicalOrigin(long x, long y);
91 virtual void SetDeviceOrigin(long x, long y);
92 virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp);
93
94 virtual void DoFloodFill( long x
95 ,long y
96 ,const wxColour& col
97 ,int style = wxFLOOD_SURFACE
98 );
99 virtual bool DoGetPixel(long x, long y, wxColour *col) const;
100 virtual void DoDrawPoint(long x, long y);
101 virtual void DoDrawLine(long x1, long y1, long x2, long y2);
102 virtual void DoDrawArc(long x1, long y1,
103 long x2, long y2,
104 long xc, long yc
105 );
106 virtual void DoDrawEllipticArc( long x, long y
107 ,long w, long h
108 ,double sa, double ea
109 );
110 virtual void DoDrawRectangle(long x, long y, long width, long height);
111 virtual void DoDrawRoundedRectangle( long x, long y
112 ,long width, long height
113 ,double radius
114 );
115 virtual void DoDrawEllipse(long x, long y, long width, long height);
116 virtual void DoCrossHair(long x, long y);
117 virtual void DoDrawIcon(const wxIcon& icon, long x, long y);
118 virtual void DoDrawBitmap( const wxBitmap &bmp
119 ,long x, long y
120 ,bool useMask = FALSE
121 );
122 virtual void DoDrawText(const wxString& text, long x, long y);
123 virtual bool DoBlit( long xdest, long ydest
124 ,long width, long height
125 ,wxDC *source
126 ,long xsrc, long ysrc
127 ,int rop = wxCOPY, bool useMask = FALSE
128 );
129 virtual void DoGetSize(int *width, int *height) const;
130 virtual void DoGetSizeMM(int* width, int* height) const;
131 virtual void DoDrawLines( int n, wxPoint points[]
132 ,long xoffset, long yoffset
133 );
134 virtual void DoDrawPolygon( int n, wxPoint points[]
135 ,long xoffset, long yoffset
136 ,int fillStyle = wxODDEVEN_RULE
137 );
138 virtual void DoSetClippingRegionAsRegion(const wxRegion& region);
139 virtual void DoSetClippingRegion( long x, long y
140 ,long width, long height
141 );
142 #if wxUSE_SPLINES
143 virtual void DoDrawSpline(wxList *points);
144 #endif
145
146 // OS2-specific member variables
147 int m_windowExtX;
148 int m_windowExtY;
149
150 //-----------------------------------------------------------------------------
151 // Other virtuals from wxDCBase that are overridden here
152 //-----------------------------------------------------------------------------
153
154 virtual void SetLogicalScale( double x, double y );
155
156 //-----------------------------------------------------------------------------
157 // Our own new stuff
158 //-----------------------------------------------------------------------------
159 virtual void SetInternalDeviceOrigin( long x, long y );
160 virtual void GetInternalDeviceOrigin( long *x, long *y );
161
162 virtual void SetRop(WXHDC cdc);
163 virtual void DoClipping(WXHDC cdc);
164 virtual void SelectOldObjects(WXHDC dc);
165
166 wxWindow *GetWindow() const { return m_canvas; }
167 void SetWindow(wxWindow *win) { m_canvas = win; }
168
169 WXHDC GetHDC() const { return m_hDC; }
170 void SetHDC(WXHDC dc, bool bOwnsDC = FALSE)
171 {
172 m_hDC = dc;
173 m_bOwnsDC = bOwnsDC;
174 }
175
176 private:
177
178 #if WXWIN_COMPATIBILITY
179 // function hiding warning supression
180 virtual void GetTextExtent( const wxString& string
181 ,long* width
182 ,long* height
183 ,long* descent = NULL
184 ,long* externalLeading = NULL
185 ,wxFont* theFont = NULL
186 ,bool use16 = FALSE
187 ) const
188 { wxDCBase::GetTextExtent(string, width, height, descent, externalLeading, theFont, use16); };
189 #endif
190
191 protected:
192
193 // ------------------------------------------------------------------------
194 // Some additional data we need
195 // ------------------------------------------------------------------------
196
197 // Owner canvas and selected in bitmap (if bitmap is GDI object selected)
198 wxWindow* m_canvas;
199 wxBitmap m_selectedBitmap;
200
201 // our HDC and its usage count: we only free it when the usage count drops
202 // to 0
203 WXHDC m_hDC;
204 int m_hDCCount;
205 bool m_bOwnsDC:1;
206
207 // Store all old GDI objects when do a SelectObject, so we can select them
208 // back in (this unselecting user's objects) so we can safely delete the
209 // DC.
210 WXHBITMAP m_oldBitmap;
211 WXHPEN m_oldPen;
212 WXHBRUSH m_oldBrush;
213 WXHFONT m_oldFont;
214 WXHPALETTE m_oldPalette;
215 };
216
217 #endif
218 // _WX_DC_H_