X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b7cacb43db1e69b87b257a67912b4d52995b070a..8913c40c32bf45df97280c5b1e5a542bfc764ca8:/include/wx/dc.h?ds=sidebyside diff --git a/include/wx/dc.h b/include/wx/dc.h index 0b74388dff..8cee8f3fb7 100644 --- a/include/wx/dc.h +++ b/include/wx/dc.h @@ -18,6 +18,7 @@ #include "wx/object.h" // the base class +#include "wx/intl.h" // for wxLayoutDirection #include "wx/cursor.h" // we have member variables of these classes #include "wx/font.h" // so we can't do without them #include "wx/colour.h" @@ -134,11 +135,6 @@ public: virtual ~wxDCBase() { } -#if WXWIN_COMPATIBILITY_2_6 - wxDEPRECATED( virtual void BeginDrawing() ); - wxDEPRECATED( virtual void EndDrawing() ); -#endif // WXWIN_COMPATIBILITY_2_6 - // graphic primitives // ------------------ @@ -387,6 +383,12 @@ public: virtual void StartPage() { } virtual void EndPage() { } +#if WXWIN_COMPATIBILITY_2_6 + wxDEPRECATED( void BeginDrawing() ); + wxDEPRECATED( void EndDrawing() ); +#endif // WXWIN_COMPATIBILITY_2_6 + + // set objects to use for drawing // ------------------------------ @@ -503,20 +505,20 @@ public: // accessors and setters // --------------------- - int GetBackgroundMode() const { return m_backgroundMode; } - const wxBrush& GetBackground() const { return m_backgroundBrush; } - const wxBrush& GetBrush() const { return m_brush; } - const wxFont& GetFont() const { return m_font; } - const wxPen& GetPen() const { return m_pen; } + virtual int GetBackgroundMode() const { return m_backgroundMode; } + virtual const wxBrush& GetBackground() const { return m_backgroundBrush; } + virtual const wxBrush& GetBrush() const { return m_brush; } + virtual const wxFont& GetFont() const { return m_font; } + virtual const wxPen& GetPen() const { return m_pen; } - const wxColour& GetTextForeground() const { return m_textForegroundColour; } - const wxColour& GetTextBackground() const { return m_textBackgroundColour; } + virtual const wxColour& GetTextForeground() const { return m_textForegroundColour; } + virtual const wxColour& GetTextBackground() const { return m_textBackgroundColour; } virtual void SetTextForeground(const wxColour& colour) { m_textForegroundColour = colour; } virtual void SetTextBackground(const wxColour& colour) { m_textBackgroundColour = colour; } - int GetMapMode() const { return m_mappingMode; } + virtual int GetMapMode() const { return m_mappingMode; } virtual void SetMapMode(int mode) = 0; virtual void GetUserScale(double *x, double *y) const @@ -553,7 +555,7 @@ public: virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp) = 0; - int GetLogicalFunction() const { return m_logicalFunction; } + virtual int GetLogicalFunction() const { return m_logicalFunction; } virtual void SetLogicalFunction(int function) = 0; #if WXWIN_COMPATIBILITY_2_4 @@ -650,6 +652,16 @@ public: if (h) *h = hh; } + // RTL related functions + // --------------------- + + // get or change the layout direction (LTR or RTL) for this dc, + // wxLayout_Default is returned if layout direction is not supported + virtual wxLayoutDirection GetLayoutDirection() const + { return wxLayout_Default; } + virtual void SetLayoutDirection(wxLayoutDirection WXUNUSED(dir)) + { } + protected: // the pure virtual functions which should be implemented by wxDC virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, @@ -952,5 +964,72 @@ private: DECLARE_NO_COPY_CLASS(wxDCClipper) }; -#endif - // _WX_DC_H_BASE_ +// ---------------------------------------------------------------------------- +// creates an overlay over an existing window, allowing for manipulations like +// rubberbanding etc. this API is not stable yet, not to be used outside wx +// internal code +// ---------------------------------------------------------------------------- + +class WXDLLEXPORT wxOverlayImpl; +class WXDLLEXPORT wxWindowDC; + +class WXDLLEXPORT wxOverlay +{ +public: + wxOverlay(); + ~wxOverlay(); + + // clears the overlay without restoring the former state + // to be done eg when the window content has been changed and repainted + void Reset(); + +private: + friend class WXDLLEXPORT wxDCOverlay; + + // returns true if it has been setup + bool IsOk(); + + void Init(wxWindowDC* dc, int x , int y , int width , int height); + + void BeginDrawing(wxWindowDC* dc); + + void EndDrawing(wxWindowDC* dc); + + void Clear(wxWindowDC* dc); + + wxOverlayImpl* m_impl; + + bool m_inDrawing; + + + DECLARE_NO_COPY_CLASS(wxOverlay) +}; + +class WXDLLEXPORT wxDCOverlay +{ +public: + // connects this overlay to the corresponding drawing dc, if the overlay is not initialized yet + // this call will do so + wxDCOverlay(wxOverlay &overlay, wxWindowDC *dc, int x , int y , int width , int height); + + // convenience wrapper that behaves the same using the entire area of the dc + wxDCOverlay(wxOverlay &overlay, wxWindowDC *dc); + + // removes the connection between the overlay and the dc + virtual ~wxDCOverlay(); + + // clears the layer, restoring the state at the last init + void Clear(); + +private: + void Init(wxWindowDC *dc, int x , int y , int width , int height); + + wxOverlay& m_overlay; + + wxWindowDC* m_dc; + + + DECLARE_NO_COPY_CLASS(wxDCOverlay) +}; + +#endif // _WX_DC_H_BASE_