]> git.saurik.com Git - wxWidgets.git/blob - include/wx/os2/dc.h
*** empty log message ***
[wxWidgets.git] / include / wx / os2 / dc.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: dc.h
3 // Purpose: wxDC class
4 // Author: AUTHOR
5 // Modified by:
6 // Created: ??/??/98
7 // RCS-ID: $Id$
8 // Copyright: (c) AUTHOR
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 //-----------------------------------------------------------------------------
147 // Other virtuals from wxDCBase that are overridden here
148 //-----------------------------------------------------------------------------
149
150 virtual void SetLogicalScale( double x, double y );
151
152 //-----------------------------------------------------------------------------
153 // Our own new stuff
154 //-----------------------------------------------------------------------------
155 virtual void SetInternalDeviceOrigin( long x, long y );
156 virtual void GetInternalDeviceOrigin( long *x, long *y );
157
158 virtual void SetRop(WXHDC cdc);
159 virtual void DoClipping(WXHDC cdc);
160 virtual void SelectOldObjects(WXHDC dc);
161
162 wxWindow *GetWindow() const { return m_canvas; }
163 void SetWindow(wxWindow *win) { m_canvas = win; }
164
165 WXHDC GetHDC() const { return m_hDC; }
166 void SetHDC(WXHDC dc, bool bOwnsDC = FALSE)
167 {
168 m_hDC = dc;
169 m_bOwnsDC = bOwnsDC;
170 }
171
172 private:
173
174 #if WXWIN_COMPATIBILITY
175 // function hiding warning supression
176 virtual void GetTextExtent( const wxString& string
177 ,long* width
178 ,long* height
179 ,long* descent = NULL
180 ,long* externalLeading = NULL
181 ,wxFont* theFont = NULL
182 ,bool use16 = FALSE
183 ) const
184 { wxDCBase::GetTextExtent(string, width, height, descent, externalLeading, theFont, use16); };
185 #endif
186
187 protected:
188
189 // ------------------------------------------------------------------------
190 // Some additional data we need
191 // ------------------------------------------------------------------------
192
193 // Owner canvas and selected in bitmap (if bitmap is GDI object selected)
194 wxWindow* m_canvas;
195 wxBitmap m_selectedBitmap;
196
197 // our HDC and its usage count: we only free it when the usage count drops
198 // to 0
199 WXHDC m_hDC;
200 int m_hDCCount;
201 bool m_bOwnsDC:1;
202
203 // Store all old GDI objects when do a SelectObject, so we can select them
204 // back in (this unselecting user's objects) so we can safely delete the
205 // DC.
206 WXHBITMAP m_oldBitmap;
207 WXHPEN m_oldPen;
208 WXHBRUSH m_oldBrush;
209 WXHFONT m_oldFont;
210 WXHPALETTE m_oldPalette;
211 };
212
213 #endif
214 // _WX_DC_H_