1 ///////////////////////////////////////////////////////////////////////////// 
   3 // Purpose:     wxClientDC, wxPaintDC and wxWindowDC classes 
   4 // Author:      Julian Smart 
   8 // Copyright:   (c) Julian Smart 
   9 // Licence:     wxWindows licence 
  10 ///////////////////////////////////////////////////////////////////////////// 
  12 #ifndef _WX_DCCLIENT_H_ 
  13 #define _WX_DCCLIENT_H_ 
  15 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) 
  16 #pragma interface "dcclient.h" 
  20 #include "wx/region.h" 
  22 // ----------------------------------------------------------------------------- 
  24 // ----------------------------------------------------------------------------- 
  32 //----------------------------------------------------------------------------- 
  34 //----------------------------------------------------------------------------- 
  36 class wxWindowDC 
: public wxDC
 
  40     wxWindowDC( wxWindow 
*win 
); 
  44     virtual bool CanDrawBitmap() const { return true; } 
  45     virtual bool CanGetTextExtent() const { return true; } 
  48     virtual void DoGetSize(int *width
, int *height
) const; 
  49     virtual bool DoFloodFill( wxCoord x
, wxCoord y
, const wxColour
& col
, int style 
= wxFLOOD_SURFACE 
); 
  50     virtual bool DoGetPixel( wxCoord x
, wxCoord y
, wxColour 
*col 
) const; 
  52     virtual void DoDrawPoint(wxCoord x
, wxCoord y
); 
  53     virtual void DoDrawLine(wxCoord x1
, wxCoord y1
, wxCoord x2
, wxCoord y2
); 
  55     virtual void DoDrawIcon( const wxIcon 
&icon
, wxCoord x
, wxCoord y 
); 
  56     virtual void DoDrawBitmap( const wxBitmap 
&bitmap
, wxCoord x
, wxCoord y
, 
  57                                bool useMask 
= false ); 
  59     virtual void DoDrawArc(wxCoord x1
, wxCoord y1
, 
  60         wxCoord x2
, wxCoord y2
, 
  61         wxCoord xc
, wxCoord yc
); 
  62     virtual void DoDrawEllipticArc(wxCoord x
, wxCoord y
, wxCoord w
, wxCoord h
, 
  63         double sa
, double ea
); 
  65     virtual void DoDrawRectangle(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
); 
  66     virtual void DoDrawRoundedRectangle(wxCoord x
, wxCoord y
, 
  67         wxCoord width
, wxCoord height
, 
  69     virtual void DoDrawEllipse(wxCoord x
, wxCoord y
, wxCoord width
, wxCoord height
); 
  71     virtual void DoCrossHair(wxCoord x
, wxCoord y
); 
  73     virtual void DoDrawText(const wxString
& text
, wxCoord x
, wxCoord y
); 
  74     virtual void DoDrawRotatedText(const wxString 
&text
, wxCoord x
, wxCoord y
, double angle
); 
  76     virtual bool DoBlit(wxCoord xdest
, wxCoord ydest
, wxCoord width
, wxCoord height
, 
  77         wxDC 
*source
, wxCoord xsrc
, wxCoord ysrc
, 
  78         int rop 
= wxCOPY
, bool useMask 
= false, wxCoord xsrcMask 
= -1, wxCoord ysrcMask 
= -1); 
  80     virtual void DoSetClippingRegionAsRegion(const wxRegion
& region
); 
  81     virtual void DoSetClippingRegion(wxCoord x
, wxCoord y
, 
  82         wxCoord width
, wxCoord height
); 
  84     virtual void DoDrawLines(int n
, wxPoint points
[], 
  85         wxCoord xoffset
, wxCoord yoffset
); 
  86     virtual void DoDrawPolygon(int n
, wxPoint points
[], 
  87         wxCoord xoffset
, wxCoord yoffset
, 
  88         int fillStyle 
= wxODDEVEN_RULE
); 
  94     virtual void SetFont(const wxFont
& font
); 
  95     virtual void SetPen(const wxPen
& pen
); 
  96     virtual void SetBrush(const wxBrush
& brush
); 
  97     virtual void SetBackground(const wxBrush
& brush
); 
  98     virtual void SetBackgroundMode(int mode
); 
  99     virtual void SetPalette(const wxPalette
& palette
); 
 100     virtual void SetLogicalFunction( int function 
); 
 102     virtual void SetTextForeground(const wxColour
& colour
); 
 103     virtual void SetTextBackground(const wxColour
& colour
); 
 105     virtual wxCoord 
GetCharHeight() const; 
 106     virtual wxCoord 
GetCharWidth() const; 
 107     virtual void DoGetTextExtent(const wxString
& string
, 
 108         wxCoord 
*x
, wxCoord 
*y
, 
 109         wxCoord 
*descent 
= NULL
, 
 110         wxCoord 
*externalLeading 
= NULL
, 
 111         wxFont 
*theFont 
= NULL
) const; 
 113     virtual int GetDepth() const; 
 114     virtual wxSize 
GetPPI() const; 
 116     virtual void DestroyClippingRegion(); 
 117     WXWindow 
GetWindow() const { return m_window
; } 
 123     WXDisplay    
*m_display
; 
 133     wxRegion      m_currentClippingRegion
; 
 134     wxRegion      m_paintClippingRegion
; 
 137     PangoContext 
*m_context
; 
 138     PangoFontDescription 
*m_fontdesc
; 
 143     virtual void ComputeScaleAndOrigin(); 
 146     DECLARE_DYNAMIC_CLASS(wxWindowDC
) 
 149 //----------------------------------------------------------------------------- 
 151 //----------------------------------------------------------------------------- 
 153 class wxClientDC 
: public wxWindowDC
 
 157     wxClientDC( wxWindow 
*win 
); 
 160     virtual void DoGetSize(int *width
, int *height
) const; 
 163     DECLARE_DYNAMIC_CLASS(wxClientDC
) 
 166 //----------------------------------------------------------------------------- 
 168 //----------------------------------------------------------------------------- 
 170 class wxPaintDC 
: public wxClientDC
 
 174     wxPaintDC( wxWindow 
*win 
); 
 177     DECLARE_DYNAMIC_CLASS(wxPaintDC
)