]> git.saurik.com Git - wxWidgets.git/blame - include/wx/motif/dcclient.h
* Fixed wxStaticBitmap::SetBitmap so that it does not ignore the mask
[wxWidgets.git] / include / wx / motif / dcclient.h
CommitLineData
9b6dbb09
JS
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
af0bb3b1 9// Licence: wxWindows licence
9b6dbb09
JS
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_DCCLIENT_H_
13#define _WX_DCCLIENT_H_
14
15#ifdef __GNUG__
af0bb3b1 16 #pragma interface "dcclient.h"
9b6dbb09
JS
17#endif
18
19#include "wx/dc.h"
20
af0bb3b1
VZ
21// -----------------------------------------------------------------------------
22// fwd declarations
23// -----------------------------------------------------------------------------
9b6dbb09 24
dfc54541 25class WXDLLEXPORT wxWindowDC;
9b6dbb09
JS
26class WXDLLEXPORT wxWindow;
27
af0bb3b1
VZ
28// Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented
29// differently. On many platforms, however, they will be the same.
9b6dbb09 30
9b6dbb09 31//-----------------------------------------------------------------------------
dfc54541 32// wxWindowDC
9b6dbb09
JS
33//-----------------------------------------------------------------------------
34
af0bb3b1 35class WXDLLEXPORT wxWindowDC : public wxDC
9b6dbb09 36{
af0bb3b1 37 DECLARE_DYNAMIC_CLASS(wxWindowDC)
9b6dbb09 38
af0bb3b1
VZ
39public:
40 wxWindowDC();
dfc54541 41 wxWindowDC( wxWindow *win );
af0bb3b1
VZ
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);
9b6dbb09 59 virtual void SetLogicalFunction( int function );
af0bb3b1
VZ
60
61 virtual void SetTextForeground(const wxColour& colour);
62 virtual void SetTextBackground(const wxColour& colour);
63
7b65ea1a
MB
64 virtual wxCoord GetCharHeight() const;
65 virtual wxCoord GetCharWidth() const;
66 virtual void DoGetTextExtent(const wxString& string,
67 wxCoord *x, wxCoord *y,
68 wxCoord *descent = NULL,
69 wxCoord *externalLeading = NULL,
70 wxFont *theFont = NULL) const;
af0bb3b1
VZ
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; }
47bc1060 91
dfc54541 92protected:
7b65ea1a 93 virtual void DoFloodFill(wxCoord x, wxCoord y, const wxColour& col,
af0bb3b1
VZ
94 int style = wxFLOOD_SURFACE);
95
7b65ea1a 96 virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const;
af0bb3b1 97
7b65ea1a
MB
98 virtual void DoDrawPoint(wxCoord x, wxCoord y);
99 virtual void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2);
af0bb3b1 100
7b65ea1a
MB
101 virtual void DoDrawArc(wxCoord x1, wxCoord y1,
102 wxCoord x2, wxCoord y2,
103 wxCoord xc, wxCoord yc);
104 virtual void DoDrawEllipticArc(wxCoord x, wxCoord y, wxCoord w, wxCoord h,
af0bb3b1
VZ
105 double sa, double ea);
106
7b65ea1a
MB
107 virtual void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
108 virtual void DoDrawRoundedRectangle(wxCoord x, wxCoord y,
109 wxCoord width, wxCoord height,
af0bb3b1 110 double radius);
7b65ea1a 111 virtual void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
af0bb3b1 112
7b65ea1a 113 virtual void DoCrossHair(wxCoord x, wxCoord y);
af0bb3b1 114
7b65ea1a 115 virtual void DoDrawText(const wxString& text, wxCoord x, wxCoord y);
e4e901d1 116 virtual void DoDrawRotatedText(const wxString &text, wxCoord x, wxCoord y, double angle);
af0bb3b1 117
7b65ea1a
MB
118 virtual bool DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
119 wxDC *source, wxCoord xsrc, wxCoord ysrc,
0cbff120 120 int rop = wxCOPY, bool useMask = FALSE, wxCoord xsrcMask = -1, wxCoord ysrcMask = -1);
af0bb3b1
VZ
121
122 virtual void DoSetClippingRegionAsRegion(const wxRegion& region);
7b65ea1a
MB
123 virtual void DoSetClippingRegion(wxCoord x, wxCoord y,
124 wxCoord width, wxCoord height);
af0bb3b1 125
af0bb3b1 126 virtual void DoDrawLines(int n, wxPoint points[],
7b65ea1a 127 wxCoord xoffset, wxCoord yoffset);
af0bb3b1 128 virtual void DoDrawPolygon(int n, wxPoint points[],
7b65ea1a 129 wxCoord xoffset, wxCoord yoffset,
af0bb3b1
VZ
130 int fillStyle = wxODDEVEN_RULE);
131
dfc54541
JS
132 WXGC m_gc;
133 WXGC m_gcBacking;
134 WXDisplay* m_display;
135 wxWindow* m_window;
16c1f7f3
JS
136 WXRegion m_currentRegion; // Current clipping region (incl. paint clip region)
137 WXRegion m_userRegion; // User-defined clipping region
138 WXPixmap m_pixmap; // Pixmap for drawing on
dfc54541
JS
139
140 // Not sure if we'll need all of these
141 int m_backgroundPixel;
142 wxColour m_currentColour;
af0bb3b1 143 // int m_currentBkMode;
dfc54541
JS
144 int m_currentPenWidth ;
145 int m_currentPenJoin ;
146 int m_currentPenCap ;
147 int m_currentPenDashCount ;
236a9de3 148 wxMOTIFDash* m_currentPenDash ;
dfc54541
JS
149 wxBitmap m_currentStipple ;
150 int m_currentStyle ;
151 int m_currentFill ;
16c1f7f3 152 int m_autoSetting ; // See comment in dcclient.cpp
e97f20a0 153 WXFont m_oldFont;
16c1f7f3
JS
154};
155
156class WXDLLEXPORT wxPaintDC: public wxWindowDC
157{
af0bb3b1
VZ
158 DECLARE_DYNAMIC_CLASS(wxPaintDC)
159
16c1f7f3 160public:
af0bb3b1
VZ
161 wxPaintDC() { }
162 wxPaintDC(wxWindow* win);
163
164 ~wxPaintDC();
16c1f7f3
JS
165};
166
167class WXDLLEXPORT wxClientDC: public wxWindowDC
168{
af0bb3b1
VZ
169 DECLARE_DYNAMIC_CLASS(wxClientDC)
170
16c1f7f3 171public:
af0bb3b1
VZ
172 wxClientDC() { }
173 wxClientDC(wxWindow* win) : wxWindowDC(win) { }
9b6dbb09
JS
174};
175
176#endif
177 // _WX_DCCLIENT_H_