source, srcPt.x, srcPt.y, rop, useMask, srcPtMask.x, srcPtMask.y);
}
+ bool StretchBlit(wxCoord dstX, wxCoord dstY,
+ wxCoord dstWidth, wxCoord dstHeight,
+ wxDC *source,
+ wxCoord srcX, wxCoord srcY,
+ wxCoord srcWidth, wxCoord srcHeight,
+ int rop = wxCOPY, bool useMask = false,
+ wxCoord srcMaskX = wxDefaultCoord, wxCoord srcMaskY = wxDefaultCoord)
+ {
+ return DoStretchBlit(dstX, dstY, dstWidth, dstHeight,
+ source, srcX, srcY, srcWidth, srcHeight, rop, useMask, srcMaskX, srcMaskY);
+ }
+ bool StretchBlit(const wxPoint& dstPt, const wxSize& dstSize,
+ wxDC *source, const wxPoint& srcPt, const wxSize& srcSize,
+ int rop = wxCOPY, bool useMask = false, const wxPoint& srcMaskPt = wxDefaultPosition)
+ {
+ return DoStretchBlit(dstPt.x, dstPt.y, dstSize.x, dstSize.y,
+ source, srcPt.x, srcPt.y, srcSize.x, srcSize.y, rop, useMask, srcMaskPt.x, srcMaskPt.y);
+ }
+
+ wxBitmap GetAsBitmap(const wxRect *subrect = (const wxRect *) NULL) const
+ {
+ return DoGetAsBitmap(subrect);
+ }
+
#if wxUSE_SPLINES
// TODO: this API needs fixing (wxPointList, why (!const) "wxList *"?)
void DrawSpline(wxCoord x1, wxCoord y1,
wxFont *theFont = NULL) const
{ DoGetTextExtent(string, x, y, descent, externalLeading, theFont); }
+ wxSize GetTextExtent(const wxString& string) const
+ {
+ wxCoord w, h;
+ DoGetTextExtent(string, &w, &h);
+ return wxSize(w, h);
+ }
+
// works for single as well as multi-line strings
- virtual void GetMultiLineTextExtent(const wxString& text,
+ virtual void GetMultiLineTextExtent(const wxString& string,
wxCoord *width,
wxCoord *height,
wxCoord *heightLine = NULL,
- wxFont *font = NULL);
+ wxFont *font = NULL) const;
+
+ wxSize GetMultiLineTextExtent(const wxString& string) const
+ {
+ wxCoord w, h;
+ GetMultiLineTextExtent(string, &w, &h);
+ return wxSize(w, h);
+ }
// Measure cumulative width of text after each character
bool GetPartialTextExtents(const wxString& text, wxArrayInt& widths) const
virtual int GetLogicalFunction() const { return m_logicalFunction; }
virtual void SetLogicalFunction(int function) = 0;
-#if WXWIN_COMPATIBILITY_2_4
- virtual void SetOptimization(bool WXUNUSED(opt)) { }
- virtual bool GetOptimization() { return false; }
-#endif
-
// bounding box
// ------------
virtual bool DoBlit(wxCoord xdest, wxCoord ydest,
wxCoord width, wxCoord height,
- wxDC *source, wxCoord xsrc, wxCoord ysrc,
- int rop = wxCOPY, bool useMask = false, wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord) = 0;
+ wxDC *source,
+ wxCoord xsrc, wxCoord ysrc,
+ int rop = wxCOPY,
+ bool useMask = false,
+ wxCoord xsrcMask = wxDefaultCoord,
+ wxCoord ysrcMask = wxDefaultCoord) = 0;
+
+ 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);
+
+ virtual wxBitmap DoGetAsBitmap(const wxRect *WXUNUSED(subrect)) const
+ { return wxNullBitmap; }
virtual void DoGetSize(int *width, int *height) const = 0;
virtual void DoGetSizeMM(int* width, int* height) const = 0;
virtual void DoSetClippingRegion(wxCoord x, wxCoord y,
wxCoord width, wxCoord height) = 0;
-#if WXWIN_COMPATIBILITY_2_4
- // this was only for confusing people, use DoGetClippingBox only
- virtual void DoGetClippingRegion(wxCoord *x, wxCoord *y,
- wxCoord *w, wxCoord *h)
- { DoGetClippingBox(x, y, w, h); }
-#endif
-
virtual void DoGetClippingBox(wxCoord *x, wxCoord *y,
wxCoord *w, wxCoord *h) const
{
#include "wx/os2/dc.h"
#endif
+#if wxUSE_GRAPHICS_CONTEXT
+ #include "wx/dcgraph.h"
+#endif
+
// ----------------------------------------------------------------------------
// helper class: you can use it to temporarily change the DC text colour and
// restore it automatically when the object goes out of scope
public:
wxDCTextColourChanger(wxDC& dc) : m_dc(dc), m_colFgOld() { }
+ wxDCTextColourChanger(wxDC& dc, const wxColour& col) : m_dc(dc)
+ {
+ Set(col);
+ }
+
~wxDCTextColourChanger()
{
if ( m_colFgOld.Ok() )
DECLARE_NO_COPY_CLASS(wxDCClipper)
};
-// ----------------------------------------------------------------------------
-// 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_