X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/16c1f7f345e1850f590cfbf67c3b00fbb6d2e62e..1309ba6c7ec76b4507cf1f2e8656749e3de1befa:/include/wx/motif/dcclient.h diff --git a/include/wx/motif/dcclient.h b/include/wx/motif/dcclient.h index a4d303e885..40fdbbfa56 100644 --- a/include/wx/motif/dcclient.h +++ b/include/wx/motif/dcclient.h @@ -6,97 +6,129 @@ // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_DCCLIENT_H_ #define _WX_DCCLIENT_H_ #ifdef __GNUG__ -#pragma interface "dcclient.h" + #pragma interface "dcclient.h" #endif #include "wx/dc.h" -//----------------------------------------------------------------------------- -// classes -//----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- +// fwd declarations +// ----------------------------------------------------------------------------- class WXDLLEXPORT wxWindowDC; class WXDLLEXPORT wxWindow; -// Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented differently. -// On many platforms, however, they will be the same. +// Under Windows, wxClientDC, wxPaintDC and wxWindowDC are implemented +// differently. On many platforms, however, they will be the same. //----------------------------------------------------------------------------- // wxWindowDC //----------------------------------------------------------------------------- -class WXDLLEXPORT wxWindowDC: public wxDC +class WXDLLEXPORT wxWindowDC : public wxDC { - DECLARE_DYNAMIC_CLASS(wxWindowDC) + DECLARE_DYNAMIC_CLASS(wxWindowDC) - public: - - wxWindowDC(void); +public: + wxWindowDC(); 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, long xc, long 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); - - virtual void SetFont( const wxFont &font ); - virtual void SetPen( const wxPen &pen ); - virtual void SetBrush( const wxBrush &brush ); - virtual void SetBackground( const wxBrush &brush ); + + ~wxWindowDC(); + + // TODO this function is Motif-only for now - should it go into base class? + void Clear(const wxRect& rect); + + // implement base class pure virtuals + // ---------------------------------- + + 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 SetBackgroundMode(int mode); + virtual void SetPalette(const wxPalette& palette); 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 DrawOpenSpline( wxList *points ); - - // Motif-specific - void SetDCClipping (); // Helper function for setting clipping + + virtual void SetTextForeground(const wxColour& colour); + virtual void SetTextBackground(const wxColour& colour); + + virtual wxCoord GetCharHeight() const; + virtual wxCoord GetCharWidth() const; + virtual void DoGetTextExtent(const wxString& string, + wxCoord *x, wxCoord *y, + wxCoord *descent = NULL, + wxCoord *externalLeading = NULL, + wxFont *theFont = NULL) const; + + virtual bool CanDrawBitmap() const; + virtual bool CanGetTextExtent() const; + + virtual int GetDepth() const; + virtual wxSize GetPPI() const; + + virtual void DestroyClippingRegion(); + + // Helper function for setting clipping + void SetDCClipping(); + + // implementation from now on + // -------------------------- + + WXGC GetGC() const { return m_gc; } + WXGC GetBackingGC() const { return m_gcBacking; } + WXDisplay* GetDisplay() const { return m_display; } + bool GetAutoSetting() const { return m_autoSetting; } + void SetAutoSetting(bool flag) { m_autoSetting = flag; } protected: + virtual void DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, + int style = wxFLOOD_SURFACE); + + virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const; + + virtual void DoDrawPoint(wxCoord x, wxCoord y); + virtual void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2); + + virtual void DoDrawArc(wxCoord x1, wxCoord y1, + wxCoord x2, wxCoord y2, + wxCoord xc, wxCoord yc); + virtual void DoDrawEllipticArc(wxCoord x, wxCoord y, wxCoord w, wxCoord h, + double sa, double ea); + + virtual void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height); + virtual void DoDrawRoundedRectangle(wxCoord x, wxCoord y, + wxCoord width, wxCoord height, + double radius); + virtual void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height); + + virtual void DoCrossHair(wxCoord x, wxCoord y); + + virtual void DoDrawText(const wxString& text, wxCoord x, wxCoord y); + virtual void DoDrawRotatedText(const wxString &text, wxCoord x, wxCoord y, double angle); + + virtual bool DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, + wxDC *source, wxCoord xsrc, wxCoord ysrc, + int rop = wxCOPY, bool useMask = FALSE); + + virtual void DoSetClippingRegionAsRegion(const wxRegion& region); + virtual void DoSetClippingRegion(wxCoord x, wxCoord y, + wxCoord width, wxCoord height); + + 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); + WXGC m_gc; WXGC m_gcBacking; WXDisplay* m_display; @@ -108,32 +140,37 @@ protected: // Not sure if we'll need all of these int m_backgroundPixel; wxColour m_currentColour; -// int m_currentBkMode; + // int m_currentBkMode; int m_currentPenWidth ; int m_currentPenJoin ; int m_currentPenCap ; int m_currentPenDashCount ; - char* m_currentPenDash ; + wxMOTIFDash* m_currentPenDash ; wxBitmap m_currentStipple ; int m_currentStyle ; int m_currentFill ; int m_autoSetting ; // See comment in dcclient.cpp + WXFont m_oldFont; }; class WXDLLEXPORT wxPaintDC: public wxWindowDC { - DECLARE_DYNAMIC_CLASS(wxPaintDC) + DECLARE_DYNAMIC_CLASS(wxPaintDC) + public: - wxPaintDC() {} - wxPaintDC(wxWindow* win): wxWindowDC(win) {} + wxPaintDC() { } + wxPaintDC(wxWindow* win); + + ~wxPaintDC(); }; class WXDLLEXPORT wxClientDC: public wxWindowDC { - DECLARE_DYNAMIC_CLASS(wxClientDC) + DECLARE_DYNAMIC_CLASS(wxClientDC) + public: - wxClientDC() {} - wxClientDC(wxWindow* win): wxWindowDC(win) {} + wxClientDC() { } + wxClientDC(wxWindow* win) : wxWindowDC(win) { } }; #endif