X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/6f02a879ed7efc5fcf6328ff47a1352ec82812b7..c0ac3149bfac1e37fb6eb1a7388603020d319676:/include/wx/msw/dc.h diff --git a/include/wx/msw/dc.h b/include/wx/msw/dc.h index 0095fa710d..9e6f7fcab8 100644 --- a/include/wx/msw/dc.h +++ b/include/wx/msw/dc.h @@ -30,7 +30,7 @@ class wxDCCacheEntry: public wxObject public: wxDCCacheEntry(WXHBITMAP hBitmap, int w, int h, int depth); wxDCCacheEntry(WXHDC hDC, int depth); - ~wxDCCacheEntry(); + virtual ~wxDCCacheEntry(); WXHBITMAP m_bitmap; WXHDC m_dc; @@ -46,7 +46,7 @@ class WXDLLEXPORT wxDC : public wxDCBase { public: wxDC(WXHDC hDC) { Init(); m_hDC = hDC; } - ~wxDC(); + virtual ~wxDC(); // implement base class pure virtuals // ---------------------------------- @@ -133,6 +133,14 @@ public: static void ClearCache(); #endif + // 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; + virtual void SetLayoutDirection(wxLayoutDirection dir); + protected: void Init() { @@ -164,6 +172,11 @@ protected: virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, int style = wxFLOOD_SURFACE); + virtual void DoGradientFillLinear(const wxRect& rect, + const wxColour& initialColour, + const wxColour& destColour, + wxDirection nDirection = wxEAST); + virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const; virtual void DoDrawPoint(wxCoord x, wxCoord y); @@ -201,6 +214,14 @@ protected: wxDC *source, wxCoord xsrc, wxCoord ysrc, int rop = wxCOPY, bool useMask = false, wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord); + virtual bool DoStretchBlit(wxCoord xdest, wxCoord ydest, + wxCoord dstWidth, wxCoord dstHeight, + wxDC *source, + wxCoord xsrc, wxCoord ysrc, + wxCoord srcWidth, wxCoord srcHeight, + int rop = wxCOPY, bool useMask = false, + wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord); + // this is gnarly - we can't even call this function DoSetClippingRegion() // because of virtual function hiding virtual void DoSetClippingRegionAsRegion(const wxRegion& region); @@ -219,6 +240,8 @@ protected: virtual void DoDrawPolyPolygon(int n, int count[], wxPoint points[], wxCoord xoffset, wxCoord yoffset, int fillStyle = wxODDEVEN_RULE); + virtual wxBitmap DoGetAsBitmap(const wxRect *subrect) const + { return subrect == NULL ? GetSelectedBitmap() : GetSelectedBitmap().GetSubBitmap(*subrect); } #if wxUSE_PALETTE @@ -292,7 +315,11 @@ protected: class WXDLLEXPORT wxDCTemp : public wxDC { public: - wxDCTemp(WXHDC hdc) : wxDC(hdc) + // construct a temporary DC with the specified HDC and size (it should be + // specified whenever we know it for this HDC) + wxDCTemp(WXHDC hdc, const wxSize& size = wxDefaultSize) + : wxDC(hdc), + m_size(size) { } @@ -305,15 +332,20 @@ public: protected: virtual void DoGetSize(int *w, int *h) const { - wxFAIL_MSG( _T("no way to retrieve the size of generic DC") ); + wxASSERT_MSG( m_size.IsFullySpecified(), + _T("size of this DC hadn't been set and is unknown") ); if ( w ) - *w = 0; + *w = m_size.x; if ( h ) - *h = 0; + *h = m_size.y; } private: + // size of this DC must be explicitly set by SetSize() as we have no way to + // find it ourselves + const wxSize m_size; + DECLARE_NO_COPY_CLASS(wxDCTemp) };