]> git.saurik.com Git - wxWidgets.git/blob - include/wx/motif/dcclient.h
Added wxWindowBase::CentreOnParent to allow top level windows to be
[wxWidgets.git] / include / wx / motif / dcclient.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: dcclient.h
3 // Purpose: wxClientDC, wxPaintDC and wxWindowDC classes
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 17/09/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef _WX_DCCLIENT_H_
13 #define _WX_DCCLIENT_H_
14
15 #ifdef __GNUG__
16 #pragma interface "dcclient.h"
17 #endif
18
19 #include "wx/dc.h"
20
21 // -----------------------------------------------------------------------------
22 // fwd declarations
23 // -----------------------------------------------------------------------------
24
25 class WXDLLEXPORT wxWindowDC;
26 class WXDLLEXPORT wxWindow;
27
28 // Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented
29 // differently. On many platforms, however, they will be the same.
30
31 //-----------------------------------------------------------------------------
32 // wxWindowDC
33 //-----------------------------------------------------------------------------
34
35 class WXDLLEXPORT wxWindowDC : public wxDC
36 {
37 DECLARE_DYNAMIC_CLASS(wxWindowDC)
38
39 public:
40 wxWindowDC();
41 wxWindowDC( wxWindow *win );
42
43 ~wxWindowDC();
44
45 // TODO this function is Motif-only for now - should it go into base class?
46 void Clear(const wxRect& rect);
47
48 // implement base class pure virtuals
49 // ----------------------------------
50
51 virtual void Clear();
52
53 virtual void SetFont(const wxFont& font);
54 virtual void SetPen(const wxPen& pen);
55 virtual void SetBrush(const wxBrush& brush);
56 virtual void SetBackground(const wxBrush& brush);
57 virtual void SetBackgroundMode(int mode);
58 virtual void SetPalette(const wxPalette& palette);
59 virtual void SetLogicalFunction( int function );
60
61 virtual void SetTextForeground(const wxColour& colour);
62 virtual void SetTextBackground(const wxColour& colour);
63
64 virtual long GetCharHeight() const;
65 virtual long GetCharWidth() const;
66 virtual void GetTextExtent(const wxString& string,
67 long *x, long *y,
68 long *descent = NULL,
69 long *externalLeading = NULL,
70 wxFont *theFont = NULL) const;
71
72 virtual bool CanDrawBitmap() const;
73 virtual bool CanGetTextExtent() const;
74
75 virtual int GetDepth() const;
76 virtual wxSize GetPPI() const;
77
78 virtual void DestroyClippingRegion();
79
80 // Helper function for setting clipping
81 void SetDCClipping();
82
83 // implementation from now on
84 // --------------------------
85
86 WXGC GetGC() const { return m_gc; }
87 WXGC GetBackingGC() const { return m_gcBacking; }
88 WXDisplay* GetDisplay() const { return m_display; }
89 bool GetAutoSetting() const { return m_autoSetting; }
90 void SetAutoSetting(bool flag) { m_autoSetting = flag; }
91
92 protected:
93 virtual void DoFloodFill(long x, long y, const wxColour& col,
94 int style = wxFLOOD_SURFACE);
95
96 virtual bool DoGetPixel(long x, long y, wxColour *col) const;
97
98 virtual void DoDrawPoint(long x, long y);
99 virtual void DoDrawLine(long x1, long y1, long x2, long y2);
100
101 virtual void DoDrawArc(long x1, long y1,
102 long x2, long y2,
103 long xc, long yc);
104 virtual void DoDrawEllipticArc(long x, long y, long w, long h,
105 double sa, double ea);
106
107 virtual void DoDrawRectangle(long x, long y, long width, long height);
108 virtual void DoDrawRoundedRectangle(long x, long y,
109 long width, long height,
110 double radius);
111 virtual void DoDrawEllipse(long x, long y, long width, long height);
112
113 virtual void DoCrossHair(long x, long y);
114
115 virtual void DoDrawText(const wxString& text, long x, long y);
116
117 virtual bool DoBlit(long xdest, long ydest, long width, long height,
118 wxDC *source, long xsrc, long ysrc,
119 int rop = wxCOPY, bool useMask = FALSE);
120
121 virtual void DoSetClippingRegionAsRegion(const wxRegion& region);
122 virtual void DoSetClippingRegion(long x, long y,
123 long width, long height);
124
125 virtual void DoGetSize(int *width, int *height) const;
126 virtual void DoGetSizeMM(int* width, int* height) const;
127
128 virtual void DoDrawLines(int n, wxPoint points[],
129 long xoffset, long yoffset);
130 virtual void DoDrawPolygon(int n, wxPoint points[],
131 long xoffset, long yoffset,
132 int fillStyle = wxODDEVEN_RULE);
133
134 #if wxUSE_SPLINES
135 virtual void DoDrawSpline(wxList *points);
136 #endif // wxUSE_SPLINES
137
138 WXGC m_gc;
139 WXGC m_gcBacking;
140 WXDisplay* m_display;
141 wxWindow* m_window;
142 WXRegion m_currentRegion; // Current clipping region (incl. paint clip region)
143 WXRegion m_userRegion; // User-defined clipping region
144 WXPixmap m_pixmap; // Pixmap for drawing on
145
146 // Not sure if we'll need all of these
147 int m_backgroundPixel;
148 wxColour m_currentColour;
149 // int m_currentBkMode;
150 int m_currentPenWidth ;
151 int m_currentPenJoin ;
152 int m_currentPenCap ;
153 int m_currentPenDashCount ;
154 char* m_currentPenDash ;
155 wxBitmap m_currentStipple ;
156 int m_currentStyle ;
157 int m_currentFill ;
158 int m_autoSetting ; // See comment in dcclient.cpp
159 WXFont m_oldFont;
160 };
161
162 class WXDLLEXPORT wxPaintDC: public wxWindowDC
163 {
164 DECLARE_DYNAMIC_CLASS(wxPaintDC)
165
166 public:
167 wxPaintDC() { }
168 wxPaintDC(wxWindow* win);
169
170 ~wxPaintDC();
171 };
172
173 class WXDLLEXPORT wxClientDC: public wxWindowDC
174 {
175 DECLARE_DYNAMIC_CLASS(wxClientDC)
176
177 public:
178 wxClientDC() { }
179 wxClientDC(wxWindow* win) : wxWindowDC(win) { }
180 };
181
182 #endif
183 // _WX_DCCLIENT_H_