]> git.saurik.com Git - wxWidgets.git/blame - include/wx/os2/dc.h
Added wxMenu::Delete() and fixed some menu deleted memory
[wxWidgets.git] / include / wx / os2 / dc.h
CommitLineData
0e320a79
DW
1/////////////////////////////////////////////////////////////////////////////
2// Name: dc.h
3// Purpose: wxDC class
f0a56ab0 4// Author: David Webster
0e320a79 5// Modified by:
f0a56ab0 6// Created: 08/26/99
0e320a79 7// RCS-ID: $Id$
f0a56ab0
DW
8// Copyright: (c) David Webster
9// Licence: wxWindows licence
0e320a79
DW
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_DC_H_
13#define _WX_DC_H_
14
15#ifdef __GNUG__
54da4255 16#pragma interface "dc.h"
0e320a79
DW
17#endif
18
c3d43472 19#include "wx/window.h"
54da4255
DW
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
1408104d
DW
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
54da4255 39#endif
0e320a79 40
54da4255
DW
41//-----------------------------------------------------------------------------
42// global variables
43//-----------------------------------------------------------------------------
0e320a79 44
54da4255 45extern int wxPageNumber;
0e320a79 46
54da4255
DW
47//-----------------------------------------------------------------------------
48// wxDC
49//-----------------------------------------------------------------------------
0e320a79 50
1408104d 51class WXDLLEXPORT wxDC: public wxDCBase
54da4255
DW
52{
53 DECLARE_ABSTRACT_CLASS(wxDC)
0e320a79 54
54da4255 55 public:
0e320a79 56
54da4255
DW
57 wxDC(void);
58 ~wxDC(void);
0e320a79 59
1408104d
DW
60 virtual void BeginDrawing(void) { };
61 virtual void EndDrawing(void) { };
0e320a79 62
1408104d
DW
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
54da4255 145
75f11ad7
DW
146 // OS2-specific member variables
147 int m_windowExtX;
148 int m_windowExtY;
149
1408104d
DW
150//-----------------------------------------------------------------------------
151// Other virtuals from wxDCBase that are overridden here
152//-----------------------------------------------------------------------------
54da4255 153
54da4255 154 virtual void SetLogicalScale( double x, double y );
1408104d
DW
155
156//-----------------------------------------------------------------------------
157// Our own new stuff
158//-----------------------------------------------------------------------------
54da4255
DW
159 virtual void SetInternalDeviceOrigin( long x, long y );
160 virtual void GetInternalDeviceOrigin( long *x, long *y );
161
ce44c50e
DW
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
1408104d 176private:
54da4255 177
1408104d
DW
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
54da4255 190
1408104d
DW
191protected:
192
193 // ------------------------------------------------------------------------
194 // Some additional data we need
195 // ------------------------------------------------------------------------
196
197 // Owner canvas and selected in bitmap (if bitmap is GDI object selected)
ce44c50e
DW
198 wxWindow* m_canvas;
199 wxBitmap m_selectedBitmap;
1408104d
DW
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;
ce44c50e 205 bool m_bOwnsDC:1;
1408104d
DW
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;
0e320a79
DW
215};
216
217#endif
218 // _WX_DC_H_