1 ///////////////////////////////////////////////////////////////////////////// 2 // Name: wx/gtk1/dcclient.h 3 // Purpose: 4 // Author: Robert Roebling 5 // Copyright: (c) 1998 Robert Roebling 6 // Licence: wxWindows licence 7 ///////////////////////////////////////////////////////////////////////////// 8 9 #ifndef __GTKDCCLIENTH__ 10 #define __GTKDCCLIENTH__ 11 12 #include "wx/gtk1/dc.h" 13 #include "wx/window.h" 14 15 //----------------------------------------------------------------------------- 16 // classes 17 //----------------------------------------------------------------------------- 18 19 class WXDLLIMPEXP_FWD_CORE wxWindowDCImpl; 20 class WXDLLIMPEXP_FWD_CORE wxPaintDCImpl; 21 class WXDLLIMPEXP_FWD_CORE wxClientDCImpl; 22 23 //----------------------------------------------------------------------------- 24 // wxWindowDCImpl 25 //----------------------------------------------------------------------------- 26 27 class WXDLLIMPEXP_CORE wxWindowDCImpl : public wxGTKDCImpl 28 { 29 public: 30 wxWindowDCImpl(wxDC *owner); 31 wxWindowDCImpl(wxDC *owner, wxWindow *win); 32 33 virtual ~wxWindowDCImpl(); 34 CanDrawBitmap()35 virtual bool CanDrawBitmap() const { return true; } CanGetTextExtent()36 virtual bool CanGetTextExtent() const { return true; } 37 38 protected: 39 virtual void DoGetSize(int *width, int *height) const; 40 virtual bool DoFloodFill( wxCoord x, wxCoord y, const wxColour& col, wxFloodFillStyle style=wxFLOOD_SURFACE ); 41 virtual bool DoGetPixel( wxCoord x1, wxCoord y1, wxColour *col ) const; 42 43 virtual void DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 ); 44 virtual void DoCrossHair( wxCoord x, wxCoord y ); 45 virtual void DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, 46 wxCoord xc, wxCoord yc ); 47 virtual void DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord width, wxCoord height, 48 double sa, double ea ); 49 virtual void DoDrawPoint( wxCoord x, wxCoord y ); 50 51 virtual void DoDrawLines(int n, const wxPoint points[], 52 wxCoord xoffset, wxCoord yoffset); 53 virtual void DoDrawPolygon(int n, const wxPoint points[], 54 wxCoord xoffset, wxCoord yoffset, 55 wxPolygonFillMode fillStyle = wxODDEVEN_RULE); 56 57 virtual void DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord height ); 58 virtual void DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius = 20.0 ); 59 virtual void DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord height ); 60 61 virtual void DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y ); 62 virtual void DoDrawBitmap( const wxBitmap &bitmap, wxCoord x, wxCoord y, 63 bool useMask = false ); 64 65 virtual bool DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, 66 wxDC *source, wxCoord xsrc, wxCoord ysrc, 67 wxRasterOperationMode logical_func = wxCOPY, bool useMask = false, 68 wxCoord xsrcMask = -1, wxCoord ysrcMask = -1 ); 69 70 virtual void DoDrawText( const wxString &text, wxCoord x, wxCoord y ); 71 virtual void DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y, 72 double angle); 73 virtual void DoGetTextExtent( const wxString &string, 74 wxCoord *width, wxCoord *height, 75 wxCoord *descent = NULL, 76 wxCoord *externalLeading = NULL, 77 const wxFont *theFont = NULL) const; 78 79 public: 80 virtual wxCoord GetCharWidth() const; 81 virtual wxCoord GetCharHeight() const; 82 83 virtual void Clear(); 84 85 virtual void SetFont( const wxFont &font ); 86 virtual void SetPen( const wxPen &pen ); 87 virtual void SetBrush( const wxBrush &brush ); 88 virtual void SetBackground( const wxBrush &brush ); 89 virtual void SetLogicalFunction( wxRasterOperationMode function ); 90 virtual void SetTextForeground( const wxColour &col ); 91 virtual void SetTextBackground( const wxColour &col ); 92 virtual void SetBackgroundMode( int mode ); 93 virtual void SetPalette( const wxPalette& palette ); 94 95 virtual void DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height ); 96 virtual void DestroyClippingRegion(); 97 virtual void DoSetDeviceClippingRegion( const wxRegion ®ion ); 98 99 // Resolution in pixels per logical inch 100 virtual wxSize GetPPI() const; 101 virtual int GetDepth() const; 102 GetGDKWindow()103 virtual GdkWindow* GetGDKWindow() const { return m_window; } 104 105 // implementation 106 // -------------- 107 108 GdkWindow *m_window; 109 GdkGC *m_penGC; 110 GdkGC *m_brushGC; 111 GdkGC *m_textGC; 112 GdkGC *m_bgGC; 113 GdkColormap *m_cmap; 114 bool m_isMemDC; 115 bool m_isScreenDC; 116 wxWindow *m_owner; 117 wxRegion m_currentClippingRegion; 118 wxRegion m_paintClippingRegion; 119 120 void SetUpDC(); 121 void Destroy(); 122 virtual void ComputeScaleAndOrigin(); 123 GetWindow()124 GdkWindow *GetWindow() { return m_window; } 125 126 private: 127 DECLARE_DYNAMIC_CLASS(wxWindowDCImpl) 128 }; 129 130 //----------------------------------------------------------------------------- 131 // wxClientDCImpl 132 //----------------------------------------------------------------------------- 133 134 class WXDLLIMPEXP_CORE wxClientDCImpl : public wxWindowDCImpl 135 { 136 public: wxClientDCImpl(wxDC * owner)137 wxClientDCImpl(wxDC *owner) : wxWindowDCImpl(owner) { } 138 wxClientDCImpl(wxDC *owner, wxWindow *win); 139 140 protected: 141 virtual void DoGetSize(int *width, int *height) const; 142 143 private: 144 DECLARE_DYNAMIC_CLASS(wxClientDCImpl) 145 }; 146 147 //----------------------------------------------------------------------------- 148 // wxPaintDCImpl 149 //----------------------------------------------------------------------------- 150 151 class WXDLLIMPEXP_CORE wxPaintDCImpl : public wxClientDCImpl 152 { 153 public: wxPaintDCImpl(wxDC * owner)154 wxPaintDCImpl(wxDC *owner) : wxClientDCImpl(owner) { } 155 wxPaintDCImpl(wxDC *owner, wxWindow *win); 156 157 private: 158 DECLARE_DYNAMIC_CLASS(wxPaintDCImpl) 159 }; 160 161 #endif // __GTKDCCLIENTH__ 162