X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ec758a20a2b166b2073e1c902cc745db01290f02..d494613ac1e0a1a9cdab21b757b2bc9367802654:/include/wx/gtk/dcclient.h diff --git a/include/wx/gtk/dcclient.h b/include/wx/gtk/dcclient.h index ab0a9187f0..369deee2fd 100644 --- a/include/wx/gtk/dcclient.h +++ b/include/wx/gtk/dcclient.h @@ -4,132 +4,178 @@ // Author: Robert Roebling // Id: $Id$ // Copyright: (c) 1998 Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - #ifndef __GTKDCCLIENTH__ #define __GTKDCCLIENTH__ -#ifdef __GNUG__ -#pragma interface -#endif - #include "wx/dc.h" -#include "wx/window.h" +#include "wx/region.h" -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- - -class wxWindowDC; -class wxPaintDC; -class wxClientDC; +class WXDLLIMPEXP_FWD_CORE wxWindow; //----------------------------------------------------------------------------- // wxWindowDC //----------------------------------------------------------------------------- -class wxWindowDC: public wxDC +#if wxUSE_NEW_DC +class WXDLLIMPEXP_CORE wxGTKWindowImplDC : public wxGTKImplDC +#else +#define wxGTKWindowImplDC wxWindowDC +class WXDLLIMPEXP_CORE wxWindowDC : public wxDC +#endif { - DECLARE_DYNAMIC_CLASS(wxWindowDC) +public: + wxGTKWindowImplDC(); + wxGTKWindowImplDC( wxWindow *win ); + + virtual ~wxGTKWindowImplDC(); + + virtual bool CanDrawBitmap() const { return true; } + virtual bool CanGetTextExtent() const { return true; } + +protected: + virtual void DoGetSize(int *width, int *height) const; + virtual bool DoFloodFill( wxCoord x, wxCoord y, const wxColour& col, int style=wxFLOOD_SURFACE ); + virtual bool DoGetPixel( wxCoord x1, wxCoord y1, wxColour *col ) const; + + virtual void DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 ); + virtual void DoCrossHair( wxCoord x, wxCoord y ); + virtual void DoDrawArc( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2, + wxCoord xc, wxCoord yc ); + virtual void DoDrawEllipticArc( wxCoord x, wxCoord y, wxCoord width, wxCoord height, + double sa, double ea ); + virtual void DoDrawPoint( wxCoord x, wxCoord y ); + + virtual void DoDrawLines(int n, wxPoint points[], + wxCoord xoffset, wxCoord yoffset); + virtual void DoDrawPolygon(int n, wxPoint points[], + wxCoord xoffset, wxCoord yoffset, + int fillStyle = wxODDEVEN_RULE); + + virtual void DoDrawRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord height ); + virtual void DoDrawRoundedRectangle( wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius = 20.0 ); + virtual void DoDrawEllipse( wxCoord x, wxCoord y, wxCoord width, wxCoord height ); + + virtual void DoDrawIcon( const wxIcon &icon, wxCoord x, wxCoord y ); + virtual void DoDrawBitmap( const wxBitmap &bitmap, wxCoord x, wxCoord y, + bool useMask = false ); + + virtual bool DoBlit( wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, + wxDC *source, wxCoord xsrc, wxCoord ysrc, + int logical_func = wxCOPY, bool useMask = false, wxCoord xsrcMask = -1, wxCoord ysrcMask = -1 ); + + virtual void DoDrawText( const wxString &text, wxCoord x, wxCoord y ); + virtual void DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y, + double angle); + virtual void DoGetTextExtent( const wxString &string, + wxCoord *width, wxCoord *height, + wxCoord *descent = (wxCoord *) NULL, + wxCoord *externalLeading = (wxCoord *) NULL, + const wxFont *theFont = (wxFont *) NULL) const; + virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const; + virtual void DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height ); + virtual void DoSetClippingRegionAsRegion( const wxRegion ®ion ); + public: - wxWindowDC(void); - wxWindowDC( wxWindow *win ); - - ~wxWindowDC(void); - - virtual void FloodFill( long x1, long y1, wxColour *col, int style=wxFLOOD_SURFACE ); - virtual bool GetPixel( long x1, long y1, wxColour *col ) const; - - virtual void DrawLine( long x1, long y1, long x2, long y2 ); - virtual void CrossHair( long x, long y ); - virtual void DrawArc( long x1, long y1, long x2, long y2, double xc, double yc ); - virtual void DrawEllipticArc( long x, long y, long width, long height, double sa, double ea ); - virtual void DrawPoint( long x, long y ); - - virtual void DrawLines( int n, wxPoint points[], long xoffset = 0, long yoffset = 0 ); - virtual void DrawLines( wxList *points, long xoffset = 0, long yoffset = 0 ); - virtual void DrawPolygon( int n, wxPoint points[], long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - virtual void DrawPolygon( wxList *lines, long xoffset = 0, long yoffset = 0, - int fillStyle=wxODDEVEN_RULE ); - - virtual void DrawRectangle( long x, long y, long width, long height ); - virtual void DrawRoundedRectangle( long x, long y, long width, long height, double radius = 20.0 ); - virtual void DrawEllipse( long x, long y, long width, long height ); - - virtual bool CanDrawBitmap(void) const; - virtual void DrawIcon( const wxIcon &icon, long x, long y, bool useMask=FALSE ); - virtual bool Blit( long xdest, long ydest, long width, long height, - wxDC *source, long xsrc, long ysrc, int logical_func = wxCOPY, bool useMask=FALSE ); - - virtual void DrawText( const wxString &text, long x, long y, bool use16 = FALSE ); - virtual bool CanGetTextExtent(void) const; - virtual void GetTextExtent( const wxString &string, long *width, long *height, - long *descent = (long *) NULL, long *externalLeading = (long *) NULL, - wxFont *theFont = (wxFont *) NULL, bool use16 = FALSE ); - virtual long GetCharWidth(void); - virtual long GetCharHeight(void); - - virtual void Clear(void); - - virtual void SetFont( const wxFont &font ); - virtual void SetPen( const wxPen &pen ); - virtual void SetBrush( const wxBrush &brush ); - virtual void SetBackground( const wxBrush &brush ); - virtual void SetLogicalFunction( int function ); - virtual void SetTextForeground( const wxColour &col ); - virtual void SetTextBackground( const wxColour &col ); - virtual void SetBackgroundMode( int mode ); - virtual void SetPalette( const wxPalette& palette ); - - virtual void SetClippingRegion( long x, long y, long width, long height ); - virtual void DestroyClippingRegion(void); - - virtual void DrawSpline( wxList *points ); + virtual wxCoord GetCharWidth() const; + virtual wxCoord GetCharHeight() const; + + virtual void Clear(); + + virtual void SetFont( const wxFont &font ); + virtual void SetPen( const wxPen &pen ); + virtual void SetBrush( const wxBrush &brush ); + virtual void SetBackground( const wxBrush &brush ); + virtual void SetLogicalFunction( int function ); + virtual void SetTextForeground( const wxColour &col ); + virtual void SetTextBackground( const wxColour &col ); + virtual void SetBackgroundMode( int mode ); + virtual void SetPalette( const wxPalette& palette ); + + virtual void DestroyClippingRegion(); + + // Resolution in pixels per logical inch + virtual wxSize GetPPI() const; + virtual int GetDepth() const; + + // overrriden here for RTL + virtual void SetDeviceOrigin( wxCoord x, wxCoord y ); + virtual void SetAxisOrientation( bool xLeftRight, bool yBottomUp ); + +// protected: + // implementation + // -------------- + + GdkWindow *m_window; + GdkGC *m_penGC; + GdkGC *m_brushGC; + GdkGC *m_textGC; + GdkGC *m_bgGC; + GdkColormap *m_cmap; + bool m_isMemDC; + bool m_isScreenDC; + wxWindow *m_owner; + wxRegion m_currentClippingRegion; + wxRegion m_paintClippingRegion; + + // PangoContext stuff for GTK 2.0 + PangoContext *m_context; + PangoLayout *m_layout; + PangoFontDescription *m_fontdesc; + + void SetUpDC(); + void Destroy(); - // implementation - - GdkWindow *m_window; - GdkGC *m_penGC; - GdkGC *m_brushGC; - GdkGC *m_textGC; - GdkGC *m_bgGC; - GdkColormap *m_cmap; - bool m_isMemDC; - - void SetUpDC(void); - void Destroy(void); - GdkWindow *GetWindow(void); + virtual void ComputeScaleAndOrigin(); + + virtual GdkWindow *GetGDKWindow() const { return m_window; } + +private: + DECLARE_DYNAMIC_CLASS(wxGTKWindowImplDC) }; //----------------------------------------------------------------------------- -// wxPaintDC +// wxClientDC //----------------------------------------------------------------------------- -class wxPaintDC : public wxWindowDC +#if wxUSE_NEW_DC +class WXDLLIMPEXP_CORE wxGTKClientImplDC : public wxGTKWindowImplDC +#else +#define wxGTKClientImplDC wxClientDC +class WXDLLIMPEXP_CORE wxClientDC : public wxWindowDC +#endif { - DECLARE_DYNAMIC_CLASS(wxPaintDC) - public: - wxPaintDC(void); - wxPaintDC( wxWindow *win ); + wxGTKClientImplDC() { } + wxGTKClientImplDC( wxWindow *win ); + +protected: + virtual void DoGetSize(int *width, int *height) const; + +private: + DECLARE_DYNAMIC_CLASS(wxGTKClientImplDC) }; //----------------------------------------------------------------------------- -// wxClientDC +// wxPaintDC //----------------------------------------------------------------------------- -class wxClientDC : public wxWindowDC +#if wxUSE_NEW_DC +class WXDLLIMPEXP_CORE wxGTKPaintImplDC : public wxGTKClientImplDC +#else +#define wxGTKPaintImplDC wxPaintDC +class WXDLLIMPEXP_CORE wxPaintDC : public wxClientDC +#endif { - DECLARE_DYNAMIC_CLASS(wxClientDC) - public: - wxClientDC(void); - wxClientDC( wxWindow *win ); -}; + wxGTKPaintImplDC() { } + wxGTKPaintImplDC( wxWindow *win ); +private: + DECLARE_DYNAMIC_CLASS(wxGTKPaintImplDC) +}; #endif // __GTKDCCLIENTH__