dcclient.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name: wx/x11/dcclient.h
  3. // Purpose: wxClientDC, wxPaintDC and wxWindowDC classes
  4. // Author: Julian Smart
  5. // Modified by:
  6. // Created: 17/09/98
  7. // Copyright: (c) Julian Smart
  8. // Licence: wxWindows licence
  9. /////////////////////////////////////////////////////////////////////////////
  10. #ifndef _WX_DCCLIENT_H_
  11. #define _WX_DCCLIENT_H_
  12. #include "wx/dc.h"
  13. #include "wx/dcclient.h"
  14. #include "wx/x11/dc.h"
  15. #include "wx/region.h"
  16. // -----------------------------------------------------------------------------
  17. // fwd declarations
  18. // -----------------------------------------------------------------------------
  19. class WXDLLIMPEXP_FWD_CORE wxWindow;
  20. //-----------------------------------------------------------------------------
  21. // wxWindowDCImpl
  22. //-----------------------------------------------------------------------------
  23. class WXDLLIMPEXP_CORE wxWindowDCImpl : public wxX11DCImpl
  24. {
  25. public:
  26. wxWindowDCImpl( wxDC *owner );
  27. wxWindowDCImpl( wxDC *owner, wxWindow *win );
  28. virtual ~wxWindowDCImpl();
  29. virtual bool CanDrawBitmap() const { return true; }
  30. virtual bool CanGetTextExtent() const { return true; }
  31. protected:
  32. virtual void DoGetSize(int *width, int *height) const;
  33. virtual bool DoFloodFill( wxCoord x, wxCoord y, const wxColour& col,
  34. wxFloodFillStyle style = wxFLOOD_SURFACE );
  35. virtual bool DoGetPixel( wxCoord x, wxCoord y, wxColour *col ) const;
  36. virtual void DoDrawPoint(wxCoord x, wxCoord y);
  37. virtual void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2);
  38. virtual void DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y );
  39. virtual void DoDrawBitmap( const wxBitmap &bitmap, wxCoord x, wxCoord y,
  40. bool useMask = false );
  41. virtual void DoDrawArc(wxCoord x1, wxCoord y1,
  42. wxCoord x2, wxCoord y2,
  43. wxCoord xc, wxCoord yc);
  44. virtual void DoDrawEllipticArc(wxCoord x, wxCoord y, wxCoord w, wxCoord h,
  45. double sa, double ea);
  46. virtual void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
  47. virtual void DoDrawRoundedRectangle(wxCoord x, wxCoord y,
  48. wxCoord width, wxCoord height,
  49. double radius);
  50. virtual void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
  51. virtual void DoCrossHair(wxCoord x, wxCoord y);
  52. virtual void DoDrawText(const wxString& text, wxCoord x, wxCoord y);
  53. virtual void DoDrawRotatedText(const wxString &text, wxCoord x, wxCoord y, double angle);
  54. virtual bool DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
  55. wxDC *source, wxCoord xsrc, wxCoord ysrc,
  56. wxRasterOperationMode rop = wxCOPY, bool useMask = false,
  57. wxCoord xsrcMask = -1, wxCoord ysrcMask = -1);
  58. virtual void DoSetClippingRegion(wxCoord x, wxCoord y,
  59. wxCoord width, wxCoord height);
  60. virtual void DoSetDeviceClippingRegion(const wxRegion& region);
  61. virtual void DoDrawLines(int n, const wxPoint points[],
  62. wxCoord xoffset, wxCoord yoffset);
  63. virtual void DoDrawPolygon(int n, const wxPoint points[],
  64. wxCoord xoffset, wxCoord yoffset,
  65. wxPolygonFillMode fillStyle = wxODDEVEN_RULE);
  66. public:
  67. virtual void Clear();
  68. virtual void SetFont(const wxFont& font);
  69. virtual void SetPen(const wxPen& pen);
  70. virtual void SetBrush(const wxBrush& brush);
  71. virtual void SetBackground(const wxBrush& brush);
  72. virtual void SetBackgroundMode(int mode);
  73. virtual void SetPalette(const wxPalette& palette);
  74. virtual void SetLogicalFunction( wxRasterOperationMode function );
  75. virtual void SetTextForeground(const wxColour& colour);
  76. virtual void SetTextBackground(const wxColour& colour);
  77. virtual wxCoord GetCharHeight() const;
  78. virtual wxCoord GetCharWidth() const;
  79. virtual int GetDepth() const;
  80. virtual wxSize GetPPI() const;
  81. virtual void DestroyClippingRegion();
  82. WXWindow GetX11Window() const { return m_x11window; }
  83. virtual void ComputeScaleAndOrigin();
  84. protected:
  85. // implementation
  86. // --------------
  87. virtual void DoGetTextExtent(const wxString& string,
  88. wxCoord *x, wxCoord *y,
  89. wxCoord *descent = NULL,
  90. wxCoord *externalLeading = NULL,
  91. const wxFont *theFont = NULL) const;
  92. void Init();
  93. WXDisplay *m_display;
  94. WXWindow m_x11window;
  95. WXGC m_penGC;
  96. WXGC m_brushGC;
  97. WXGC m_textGC;
  98. WXGC m_bgGC;
  99. WXColormap m_cmap;
  100. bool m_isMemDC;
  101. bool m_isScreenDC;
  102. wxRegion m_currentClippingRegion;
  103. wxRegion m_paintClippingRegion;
  104. #if wxUSE_UNICODE
  105. PangoContext *m_context;
  106. PangoFontDescription *m_fontdesc;
  107. #endif
  108. void SetUpDC();
  109. void Destroy();
  110. private:
  111. DECLARE_CLASS(wxWindowDCImpl)
  112. };
  113. //-----------------------------------------------------------------------------
  114. // wxClientDC
  115. //-----------------------------------------------------------------------------
  116. class WXDLLIMPEXP_CORE wxClientDCImpl : public wxWindowDCImpl
  117. {
  118. public:
  119. wxClientDCImpl( wxDC *owner ) : wxWindowDCImpl( owner ) { }
  120. wxClientDCImpl( wxDC *owner, wxWindow *win );
  121. protected:
  122. virtual void DoGetSize(int *width, int *height) const;
  123. private:
  124. DECLARE_CLASS(wxClientDCImpl)
  125. };
  126. //-----------------------------------------------------------------------------
  127. // wxPaintDC
  128. //-----------------------------------------------------------------------------
  129. class WXDLLIMPEXP_CORE wxPaintDCImpl : public wxClientDCImpl
  130. {
  131. public:
  132. wxPaintDCImpl( wxDC *owner ) : wxClientDCImpl( owner ) { }
  133. wxPaintDCImpl( wxDC *owner, wxWindow *win );
  134. private:
  135. DECLARE_CLASS(wxPaintDCImpl)
  136. };
  137. #endif
  138. // _WX_DCCLIENT_H_