X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/b1263dcfa3fb318e9a48bdbdfe548eb474ae5fde..2a45803fc3877afd0ae3ce356dfe216505165882:/include/wx/cocoa/dc.h diff --git a/include/wx/cocoa/dc.h b/include/wx/cocoa/dc.h index ccf45da798..66b1478abf 100644 --- a/include/wx/cocoa/dc.h +++ b/include/wx/cocoa/dc.h @@ -12,22 +12,26 @@ #ifndef __WX_COCOA_DC_H__ #define __WX_COCOA_DC_H__ -class WXDLLEXPORT wxDC; -WX_DECLARE_LIST(wxDC, wxCocoaDCStack); +DECLARE_WXCOCOA_OBJC_CLASS(NSAffineTransform); + +#include "wx/dc.h" + +class WXDLLIMPEXP_FWD_CORE wxCocoaDCImpl; +WX_DECLARE_LIST(wxCocoaDCImpl, wxCocoaDCStack); //========================================================================= // wxDC //========================================================================= -class WXDLLEXPORT wxDC: public wxDCBase +class WXDLLIMPEXP_CORE wxCocoaDCImpl: public wxDCImpl { - DECLARE_DYNAMIC_CLASS(wxDC) - DECLARE_NO_COPY_CLASS(wxDC) + DECLARE_ABSTRACT_CLASS(wxCocoaDCImpl) + wxDECLARE_NO_COPY_CLASS(wxCocoaDCImpl); //------------------------------------------------------------------------- // Initialization //------------------------------------------------------------------------- public: - wxDC(); - ~wxDC(); + wxCocoaDCImpl(wxDC *owner); + virtual ~wxCocoaDCImpl(); //------------------------------------------------------------------------- // wxCocoa specifics @@ -38,6 +42,8 @@ public: static WX_NSTextStorage sm_cocoaNSTextStorage; static WX_NSLayoutManager sm_cocoaNSLayoutManager; static WX_NSTextContainer sm_cocoaNSTextContainer; + // Create a simple Wx to Bounds transform (just flip the coordinate system) + static WX_NSAffineTransform CocoaGetWxToBoundsTransform(bool isFlipped, float height); protected: // DC stack static wxCocoaDCStack sm_cocoaDCStack; @@ -54,12 +60,16 @@ protected: void CocoaUnwindStackAndLoseFocus(); // DC flipping/transformation void CocoaApplyTransformations(); - float m_cocoaHeight; - bool m_cocoaFlipped; + void CocoaUnapplyTransformations(); + WX_NSAffineTransform m_cocoaWxToBoundsTransform; +// Get bounds rect (for Clear()) + // note: we use void * to mean NSRect * so that we can avoid + // putting NSRect in the headers. + virtual bool CocoaGetBounds(void *rectData); // Blitting virtual bool CocoaDoBlitOnFocusedDC(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height, wxCoord xsrc, wxCoord ysrc, - int logicalFunc, bool useMask, wxCoord xsrcMask, wxCoord ysrcMask); + wxRasterOperationMode logicalFunc, bool useMask, wxCoord xsrcMask, wxCoord ysrcMask); //------------------------------------------------------------------------- // Implementation //------------------------------------------------------------------------- @@ -70,12 +80,12 @@ public: virtual void Clear(); virtual bool StartDoc( const wxString& WXUNUSED(message) ) { return true; } - virtual void EndDoc(void) {}; + virtual void EndDoc(void) {} - virtual void StartPage(void) {}; - virtual void EndPage(void) {}; + virtual void StartPage(void) {} + virtual void EndPage(void) {} - virtual void SetFont(const wxFont& font) {} + virtual void SetFont(const wxFont& font); virtual void SetPen(const wxPen& pen); virtual void SetBrush(const wxBrush& brush); virtual void SetBackground(const wxBrush& brush); @@ -90,21 +100,21 @@ public: wxCoord *x, wxCoord *y, wxCoord *descent = NULL, wxCoord *externalLeading = NULL, - wxFont *theFont = NULL) const; + const wxFont *theFont = NULL) const; virtual bool CanDrawBitmap() const; virtual bool CanGetTextExtent() const; virtual int GetDepth() const; 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); + virtual void SetLogicalFunction(wxRasterOperationMode function); virtual void SetTextForeground(const wxColour& colour) ; virtual void SetTextBackground(const wxColour& colour) ; @@ -112,7 +122,7 @@ public: virtual void ComputeScaleAndOrigin(); protected: virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, - int style = wxFLOOD_SURFACE); + wxFloodFillStyle style = wxFLOOD_SURFACE); virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const; @@ -148,18 +158,18 @@ protected: // this is gnarly - we can't even call this function DoSetClippingRegion() // because of virtual function hiding - virtual void DoSetClippingRegionAsRegion(const wxRegion& region); + virtual void DoSetDeviceClippingRegion(const wxRegion& region); virtual void DoSetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height); virtual void DoGetSize(int *width, int *height) const; virtual void DoGetSizeMM(int* width, int* height) const; - virtual void DoDrawLines(int n, wxPoint points[], + virtual void DoDrawLines(int n, const wxPoint points[], wxCoord xoffset, wxCoord yoffset); - virtual void DoDrawPolygon(int n, wxPoint points[], + virtual void DoDrawPolygon(int n, const wxPoint points[], wxCoord xoffset, wxCoord yoffset, - int fillStyle = wxODDEVEN_RULE); + wxPolygonFillMode fillStyle = wxODDEVEN_RULE); }; #endif // __WX_COCOA_DC_H__