X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/46dc76ba3573649a9ed7c7aff6dc677f533eee11..e276acb530f41f0b87c4576c0215201a8a767dff:/include/wx/gtk1/dcclient.h diff --git a/include/wx/gtk1/dcclient.h b/include/wx/gtk1/dcclient.h index 57b784c0f4..bc6ade1901 100644 --- a/include/wx/gtk1/dcclient.h +++ b/include/wx/gtk1/dcclient.h @@ -1,109 +1,162 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: dcclient.h +// Name: wx/gtk1/dcclient.h // Purpose: // Author: Robert Roebling -// Created: 01/02/97 -// Id: -// Copyright: (c) 1998 Robert Roebling, Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Id: $Id$ +// Copyright: (c) 1998 Robert Roebling +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// - #ifndef __GTKDCCLIENTH__ #define __GTKDCCLIENTH__ -#ifdef __GNUG__ -#pragma interface -#endif - -#include "wx/dc.h" +#include "wx/gtk1/dc.h" #include "wx/window.h" //----------------------------------------------------------------------------- // classes //----------------------------------------------------------------------------- -class wxPaintDC; -typedef wxPaintDC wxClientDC; -typedef wxPaintDC wxWindowDC; +class WXDLLIMPEXP_FWD_CORE wxWindowDCImpl; +class WXDLLIMPEXP_FWD_CORE wxPaintDCImpl; +class WXDLLIMPEXP_FWD_CORE wxClientDCImpl; //----------------------------------------------------------------------------- -// wxPaintDC +// wxWindowDCImpl //----------------------------------------------------------------------------- -class wxPaintDC: public wxDC +class WXDLLIMPEXP_CORE wxWindowDCImpl : public wxGTKDCImpl { - DECLARE_DYNAMIC_CLASS(wxPaintDC) - - public: - - wxPaintDC(void); - wxPaintDC( wxWindow *win ); - - ~wxPaintDC(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 = NULL, long *externalLeading = NULL, - wxFont *theFont = NULL, bool use16 = FALSE ); - virtual long GetCharWidth(void); - virtual long GetCharHeight(void); - - virtual void Clear(void); - +public: + wxWindowDCImpl(wxDC *owner); + wxWindowDCImpl(wxDC *owner, wxWindow *win); + + virtual ~wxWindowDCImpl(); + + 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, wxFloodFillStyle 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, + wxPolygonFillMode 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, + wxRasterOperationMode 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 = NULL, + wxCoord *externalLeading = NULL, + const wxFont *theFont = NULL) const; + +public: + 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 SetLogicalFunction( wxRasterOperationMode 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 DrawOpenSpline( wxList *points ); - - public: // shouldn't be public - + + virtual void DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height ); + virtual void DestroyClippingRegion(); + virtual void DoSetDeviceClippingRegion( const wxRegion ®ion ); + + // Resolution in pixels per logical inch + virtual wxSize GetPPI() const; + virtual int GetDepth() const; + + virtual GdkWindow* GetGDKWindow() const { return m_window; } + + // implementation + // -------------- + GdkWindow *m_window; GdkGC *m_penGC; GdkGC *m_brushGC; GdkGC *m_textGC; GdkGC *m_bgGC; GdkColormap *m_cmap; - bool m_isDrawable; - - void SetUpDC(void); - GdkWindow *GetWindow(void); + bool m_isMemDC; + bool m_isScreenDC; + wxWindow *m_owner; + wxRegion m_currentClippingRegion; + wxRegion m_paintClippingRegion; + + void SetUpDC(); + void Destroy(); + virtual void ComputeScaleAndOrigin(); + + GdkWindow *GetWindow() { return m_window; } + +private: + DECLARE_DYNAMIC_CLASS(wxWindowDCImpl) +}; + +//----------------------------------------------------------------------------- +// wxClientDCImpl +//----------------------------------------------------------------------------- + +class WXDLLIMPEXP_CORE wxClientDCImpl : public wxWindowDCImpl +{ +public: + wxClientDCImpl(wxDC *owner) : wxWindowDCImpl(owner) { } + wxClientDCImpl(wxDC *owner, wxWindow *win); + +protected: + virtual void DoGetSize(int *width, int *height) const; + +private: + DECLARE_DYNAMIC_CLASS(wxClientDCImpl) +}; + +//----------------------------------------------------------------------------- +// wxPaintDCImpl +//----------------------------------------------------------------------------- + +class WXDLLIMPEXP_CORE wxPaintDCImpl : public wxClientDCImpl +{ +public: + wxPaintDCImpl(wxDC *owner) : wxClientDCImpl(owner) { } + wxPaintDCImpl(wxDC *owner, wxWindow *win); + +private: + DECLARE_DYNAMIC_CLASS(wxPaintDCImpl) }; #endif // __GTKDCCLIENTH__