X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/fc54776e31f04962739980d6cdcc894bb87a9c53..16edee16a7c3d346b9eab1672a4c696cb0cf6e24:/include/wx/gtk/dcclient.h diff --git a/include/wx/gtk/dcclient.h b/include/wx/gtk/dcclient.h index be532ec577..fc7e52885e 100644 --- a/include/wx/gtk/dcclient.h +++ b/include/wx/gtk/dcclient.h @@ -2,17 +2,15 @@ // Name: 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__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface #endif @@ -23,60 +21,71 @@ // classes //----------------------------------------------------------------------------- +class wxWindowDC; class wxPaintDC; -typedef wxPaintDC wxClientDC; -typedef wxPaintDC wxWindowDC; +class wxClientDC; //----------------------------------------------------------------------------- -// wxPaintDC +// wxWindowDC //----------------------------------------------------------------------------- -class wxPaintDC: public wxDC +class wxWindowDC : public wxDC { - DECLARE_DYNAMIC_CLASS(wxPaintDC) +public: + wxWindowDC(); + wxWindowDC( wxWindow *win ); - public: + virtual ~wxWindowDC(); + + 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, + wxFont *theFont = (wxFont *) NULL) const; + +public: + virtual wxCoord GetCharWidth() const; + virtual wxCoord GetCharHeight() const; + + virtual void Clear(); - 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 = (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 ); @@ -86,14 +95,18 @@ class wxPaintDC: public wxDC 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 ); - - public: // shouldn't be public - + + virtual void DoSetClippingRegion( wxCoord x, wxCoord y, wxCoord width, wxCoord height ); + virtual void DestroyClippingRegion(); + virtual void DoSetClippingRegionAsRegion( const wxRegion ®ion ); + + // Resolution in pixels per logical inch + virtual wxSize GetPPI() const; + virtual int GetDepth() const; + + // implementation + // -------------- + GdkWindow *m_window; GdkGC *m_penGC; GdkGC *m_brushGC; @@ -101,9 +114,57 @@ class wxPaintDC: public wxDC GdkGC *m_bgGC; GdkColormap *m_cmap; bool m_isMemDC; + bool m_isScreenDC; + wxWindow *m_owner; + wxRegion m_currentClippingRegion; + wxRegion m_paintClippingRegion; - void SetUpDC(void); - GdkWindow *GetWindow(void); + // PangoContext stuff for GTK 2.0 +#ifdef __WXGTK20__ + PangoContext *m_context; + PangoLayout *m_layout; + PangoFontDescription *m_fontdesc; +#endif + + void SetUpDC(); + void Destroy(); + void ComputeScaleAndOrigin(); + + GdkWindow *GetWindow() { return m_window; } + +private: + DECLARE_DYNAMIC_CLASS(wxWindowDC) +}; + +//----------------------------------------------------------------------------- +// wxClientDC +//----------------------------------------------------------------------------- + +class wxClientDC : public wxWindowDC +{ +public: + wxClientDC() { } + wxClientDC( wxWindow *win ); + +protected: + virtual void DoGetSize(int *width, int *height) const; + +private: + DECLARE_DYNAMIC_CLASS(wxClientDC) +}; + +//----------------------------------------------------------------------------- +// wxPaintDC +//----------------------------------------------------------------------------- + +class wxPaintDC : public wxClientDC +{ +public: + wxPaintDC() { } + wxPaintDC( wxWindow *win ); + +private: + DECLARE_DYNAMIC_CLASS(wxPaintDC) }; #endif // __GTKDCCLIENTH__