X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f0875501313903140a41dca0ba6ee2d85ed0536c..4ed85025f3ba537206f70f3dd10466e16da926d4:/include/wx/msw/dc.h diff --git a/include/wx/msw/dc.h b/include/wx/msw/dc.h index 9933e88db0..ddb8797d00 100644 --- a/include/wx/msw/dc.h +++ b/include/wx/msw/dc.h @@ -43,7 +43,7 @@ public: // this is an ABC: use one of the derived classes to create a DC associated // with a window, screen, printer and so on -class WXDLLEXPORT wxMSWDCImpl: public wxDCImpl +class WXDLLIMPEXP_CORE wxMSWDCImpl: public wxDCImpl { public: wxMSWDCImpl(wxDC *owner, WXHDC hDC); @@ -80,14 +80,21 @@ public: virtual wxSize GetPPI() const; - virtual void SetMapMode(int mode); + virtual void SetMapMode(wxMappingMode mode); virtual void SetUserScale(double x, double y); virtual void SetLogicalScale(double x, double y); virtual void SetLogicalOrigin(wxCoord x, wxCoord y); virtual void SetDeviceOrigin(wxCoord x, wxCoord y); virtual void SetAxisOrientation(bool xLeftRight, bool yBottomUp); - virtual void SetLogicalFunction(int function); +#if wxUSE_DC_TRANSFORM_MATRIX + virtual bool CanUseTransformMatrix() const; + virtual bool SetTransformMatrix(const wxAffineMatrix2D& matrix); + virtual wxAffineMatrix2D GetTransformMatrix() const; + virtual void ResetTransformMatrix(); +#endif // wxUSE_DC_TRANSFORM_MATRIX + + virtual void SetLogicalFunction(wxRasterOperationMode function); // implementation from now on // -------------------------- @@ -119,6 +126,8 @@ public: m_clipX2 = 0; } + void* GetHandle() const { return (void*)GetHDC(); } + const wxBitmap& GetSelectedBitmap() const { return m_selectedBitmap; } wxBitmap& GetSelectedBitmap() { return m_selectedBitmap; } @@ -164,6 +173,13 @@ protected: void RealizeScaleAndOrigin(); +public: + virtual void DoGetFontMetrics(int *height, + int *ascent, + int *descent, + int *internalLeading, + int *externalLeading, + int *averageWidth) const; virtual void DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y, wxCoord *descent = NULL, @@ -172,7 +188,7 @@ protected: virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const; virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, - int style = wxFLOOD_SURFACE); + wxFloodFillStyle style = wxFLOOD_SURFACE); virtual void DoGradientFillLinear(const wxRect& rect, const wxColour& initialColour, @@ -198,7 +214,7 @@ protected: double radius); virtual void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height); -#if wxUSE_SPLINES +#if wxUSE_SPLINES && !defined(__WXWINCE__) virtual void DoDrawSpline(const wxPointList *points); #endif @@ -214,21 +230,20 @@ protected: 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); + wxRasterOperationMode 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, + wxRasterOperationMode 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); virtual void DoSetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height); + virtual void DoSetDeviceClippingRegion(const wxRegion& region); virtual void DoGetClippingBox(wxCoord *x, wxCoord *y, wxCoord *w, wxCoord *h) const; @@ -238,10 +253,10 @@ protected: wxCoord xoffset, wxCoord yoffset); virtual void DoDrawPolygon(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset, - int fillStyle = wxODDEVEN_RULE); + wxPolygonFillMode fillStyle = wxODDEVEN_RULE); virtual void DoDrawPolyPolygon(int n, int count[], wxPoint points[], wxCoord xoffset, wxCoord yoffset, - int fillStyle = wxODDEVEN_RULE); + wxPolygonFillMode fillStyle = wxODDEVEN_RULE); virtual wxBitmap DoGetAsBitmap(const wxRect *subrect) const { return subrect == NULL ? GetSelectedBitmap() @@ -260,10 +275,11 @@ protected: void InitializePalette(); #endif // wxUSE_PALETTE +protected: // common part of DoDrawText() and DoDrawRotatedText() void DrawAnyText(const wxString& text, wxCoord x, wxCoord y); - // common part of DoSetClippingRegion() and DoSetClippingRegionAsRegion() + // common part of DoSetClippingRegion() and DoSetDeviceClippingRegion() void SetClippingHrgn(WXHRGN hrgn); // implementation of DoGetSize() for wxScreen/PrinterDC: this simply @@ -309,7 +325,7 @@ protected: #endif DECLARE_CLASS(wxMSWDCImpl) - DECLARE_NO_COPY_CLASS(wxMSWDCImpl) + wxDECLARE_NO_COPY_CLASS(wxMSWDCImpl); }; // ---------------------------------------------------------------------------- @@ -317,7 +333,7 @@ protected: // only/mainly) // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxDCTempImpl : public wxMSWDCImpl +class WXDLLIMPEXP_CORE wxDCTempImpl : public wxMSWDCImpl { public: // construct a temporary DC with the specified HDC and size (it should be @@ -334,11 +350,10 @@ public: SetHDC((WXHDC)NULL); } -protected: virtual void DoGetSize(int *w, int *h) const { wxASSERT_MSG( m_size.IsFullySpecified(), - _T("size of this DC hadn't been set and is unknown") ); + wxT("size of this DC hadn't been set and is unknown") ); if ( w ) *w = m_size.x; @@ -351,10 +366,10 @@ private: // find it ourselves const wxSize m_size; - DECLARE_NO_COPY_CLASS(wxDCTempImpl) + wxDECLARE_NO_COPY_CLASS(wxDCTempImpl); }; -class WXDLLEXPORT wxDCTemp : public wxDC +class WXDLLIMPEXP_CORE wxDCTemp : public wxDC { public: wxDCTemp(WXHDC hdc, const wxSize& size = wxDefaultSize)