X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/613a24f7d270f4dfc2ecac6d009e4114dcb7777f..cf9b63b38a7ed96d8a824256f1fb23565c0fb52a:/include/wx/mac/carbon/dc.h diff --git a/include/wx/mac/carbon/dc.h b/include/wx/mac/carbon/dc.h index 0532fffe13..123f5569af 100644 --- a/include/wx/mac/carbon/dc.h +++ b/include/wx/mac/carbon/dc.h @@ -12,10 +12,6 @@ #ifndef _WX_DC_H_ #define _WX_DC_H_ -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma interface "dc.h" -#endif - #include "wx/pen.h" #include "wx/brush.h" #include "wx/icon.h" @@ -37,29 +33,59 @@ #define MM_METRIC 7 #endif -//----------------------------------------------------------------------------- -// global variables -//----------------------------------------------------------------------------- extern int wxPageNumber; + class wxMacPortStateHelper ; -class wxMacCGContext ; -//----------------------------------------------------------------------------- -// wxDC -//----------------------------------------------------------------------------- + +class WXDLLEXPORT wxGraphicPath +{ +public : + virtual ~wxGraphicPath() {} + + virtual void MoveToPoint( wxCoord x1 , wxCoord y1 ) = 0 ; + + virtual void AddLineToPoint( wxCoord x1 , wxCoord y1 ) = 0 ; + + virtual void AddQuadCurveToPoint( wxCoord cx1, wxCoord cy1, wxCoord x1, wxCoord y1 ) = 0 ; + + virtual void AddRectangle( wxCoord x, wxCoord y, wxCoord w, wxCoord h ) = 0 ; + + virtual void AddCircle( wxCoord x, wxCoord y , wxCoord r ) = 0 ; + + virtual void CloseSubpath() = 0 ; +} ; + +class WXDLLEXPORT wxGraphicContext +{ +public: + virtual ~wxGraphicContext() {} + + virtual void Clip( const wxRegion ®ion ) = 0 ; + + virtual void StrokePath( const wxGraphicPath *path ) = 0 ; + + virtual void DrawPath( const wxGraphicPath *path , int fillStyle = wxWINDING_RULE ) = 0 ; + + virtual void FillPath( const wxGraphicPath *path , const wxColor &fillColor , int fillStyle = wxWINDING_RULE ) = 0 ; + + virtual void SetPen( const wxPen &pen ) = 0 ; + + virtual void SetBrush( const wxBrush &brush ) = 0 ; + + virtual wxGraphicPath* CreatePath() = 0 ; +} ; class WXDLLEXPORT wxDC: public wxDCBase { DECLARE_DYNAMIC_CLASS(wxDC) DECLARE_NO_COPY_CLASS(wxDC) - public: - +public: wxDC(); ~wxDC(); - // implement base class pure virtuals // ---------------------------------- @@ -82,12 +108,6 @@ class WXDLLEXPORT wxDC: public wxDCBase virtual wxCoord GetCharHeight() const; virtual wxCoord GetCharWidth() const; - virtual void DoGetTextExtent(const wxString& string, - wxCoord *x, wxCoord *y, - wxCoord *descent = NULL, - wxCoord *externalLeading = NULL, - wxFont *theFont = NULL) const; - virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const; virtual bool CanDrawBitmap() const; virtual bool CanGetTextExtent() const; @@ -108,8 +128,7 @@ class WXDLLEXPORT wxDC: public wxDCBase virtual void ComputeScaleAndOrigin(); - public: - +public: wxCoord XDEV2LOG(wxCoord x) const { long new_x = x - m_deviceOriginX ; @@ -118,6 +137,7 @@ class WXDLLEXPORT wxDC: public wxDCBase else return (wxCoord)((double)(new_x) / m_scaleX - 0.5) * m_signX + m_logicalOriginX; } + wxCoord XDEV2LOGREL(wxCoord x) const { if (x > 0) @@ -125,6 +145,7 @@ class WXDLLEXPORT wxDC: public wxDCBase else return (wxCoord)((double)(x) / m_scaleX - 0.5); } + wxCoord YDEV2LOG(wxCoord y) const { long new_y = y - m_deviceOriginY ; @@ -133,6 +154,7 @@ class WXDLLEXPORT wxDC: public wxDCBase else return (wxCoord)((double)(new_y) / m_scaleY - 0.5) * m_signY + m_logicalOriginY; } + wxCoord YDEV2LOGREL(wxCoord y) const { if (y > 0) @@ -140,6 +162,7 @@ class WXDLLEXPORT wxDC: public wxDCBase else return (wxCoord)((double)(y) / m_scaleY - 0.5); } + wxCoord XLOG2DEV(wxCoord x) const { long new_x = x - m_logicalOriginX; @@ -148,6 +171,7 @@ class WXDLLEXPORT wxDC: public wxDCBase else return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX ; } + wxCoord XLOG2DEVREL(wxCoord x) const { if (x > 0) @@ -155,6 +179,7 @@ class WXDLLEXPORT wxDC: public wxDCBase else return (wxCoord)((double)(x) * m_scaleX - 0.5); } + wxCoord YLOG2DEV(wxCoord y) const { long new_y = y - m_logicalOriginY ; @@ -163,6 +188,7 @@ class WXDLLEXPORT wxDC: public wxDCBase else return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY ; } + wxCoord YLOG2DEVREL(wxCoord y) const { if (y > 0) @@ -170,6 +196,7 @@ class WXDLLEXPORT wxDC: public wxDCBase else return (wxCoord)((double)(y) * m_scaleY - 0.5); } + wxCoord XLOG2DEVMAC(wxCoord x) const { long new_x = x - m_logicalOriginX; @@ -178,6 +205,7 @@ class WXDLLEXPORT wxDC: public wxDCBase else return (wxCoord)((double)(new_x) * m_scaleX - 0.5) * m_signX + m_deviceOriginX + m_macLocalOrigin.x ; } + wxCoord YLOG2DEVMAC(wxCoord y) const { long new_y = y - m_logicalOriginY ; @@ -187,17 +215,30 @@ class WXDLLEXPORT wxDC: public wxDCBase return (wxCoord)((double)(new_y) * m_scaleY - 0.5) * m_signY + m_deviceOriginY + m_macLocalOrigin.y ; } +#if wxMAC_USE_CORE_GRAPHICS + wxGraphicContext* GetGraphicContext() { return m_graphicContext ; } +#else WXHRGN MacGetCurrentClipRgn() { return m_macCurrentClipRgn ; } static void MacSetupBackgroundForCurrentPort(const wxBrush& background ) ; -// +#endif protected: + virtual void DoGetTextExtent(const wxString& string, + wxCoord *x, wxCoord *y, + wxCoord *descent = NULL, + wxCoord *externalLeading = NULL, + wxFont *theFont = NULL) const; + virtual bool DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const; + virtual bool DoFloodFill(wxCoord x, wxCoord y, const wxColour& col, int style = wxFLOOD_SURFACE); virtual bool DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const; virtual void DoDrawPoint(wxCoord x, wxCoord y); +#if wxMAC_USE_CORE_GRAPHICS && wxUSE_SPLINES + virtual void DoDrawSpline(wxList *points); +#endif virtual void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2); virtual void DoDrawArc(wxCoord x1, wxCoord y1, @@ -241,54 +282,59 @@ protected: wxCoord xoffset, wxCoord yoffset, int fillStyle = wxODDEVEN_RULE); - protected: - //begin wxmac - // Variables used for scaling - double m_mm_to_pix_x,m_mm_to_pix_y; - // not yet used - bool m_needComputeScaleX,m_needComputeScaleY; +protected: + // scaling variables + double m_mm_to_pix_x, m_mm_to_pix_y; + + // To be set using SetDeviceOrigin() + // by external classes such as wxScrolledWindow + long m_externalDeviceOriginX, m_externalDeviceOriginY; + +#if !wxMAC_USE_CORE_GRAPHICS // If un-scrolled is non-zero or d.o. changes with scrolling. // Set using SetInternalDeviceOrigin(). - long m_internalDeviceOriginX,m_internalDeviceOriginY; - // To be set by external classes such as wxScrolledWindow - // using SetDeviceOrigin() - long m_externalDeviceOriginX,m_externalDeviceOriginY; - - // Begin implementation for Mac - public: + long m_internalDeviceOriginX, m_internalDeviceOriginY; - WXHDC m_macPort ; WXHBITMAP m_macMask ; +#endif - // in order to preserve the const inheritance of the virtual functions, we have to - // use mutable variables starting from CWPro 5 + // not yet used + bool m_needComputeScaleX, m_needComputeScaleY; +public: + // implementation void MacInstallFont() const ; - void MacInstallPen() const ; - void MacInstallBrush() const ; - - mutable bool m_macFontInstalled ; - mutable bool m_macPenInstalled ; - mutable bool m_macBrushInstalled ; - - WXHRGN m_macBoundaryClipRgn ; - WXHRGN m_macCurrentClipRgn ; - wxPoint m_macLocalOrigin ; - void MacSetupPort( wxMacPortStateHelper* ph ) const ; - void MacCleanupPort( wxMacPortStateHelper* ph ) const ; + + // in order to preserve the const inheritance of the virtual functions, + // we have to use mutable variables starting from CWPro 5 + wxPoint m_macLocalOrigin ; mutable void* m_macATSUIStyle ; + + WXHDC m_macPort ; + +#if wxMAC_USE_CORE_GRAPHICS + wxGraphicContext * m_graphicContext ; + wxPoint m_macLocalOriginInPort ; +#else + void MacInstallPen() const ; + void MacInstallBrush() const ; + + void MacSetupPort( wxMacPortStateHelper* ph ) const ; + void MacCleanupPort( wxMacPortStateHelper* ph ) const ; mutable wxMacPortStateHelper* m_macCurrentPortStateHelper ; + + mutable bool m_macFontInstalled ; + mutable bool m_macPenInstalled ; + mutable bool m_macBrushInstalled ; + + WXHRGN m_macBoundaryClipRgn ; + WXHRGN m_macCurrentClipRgn ; mutable bool m_macFormerAliasState ; mutable short m_macFormerAliasSize ; mutable bool m_macAliasWasEnabled ; mutable void* m_macForegroundPixMap ; mutable void* m_macBackgroundPixMap ; - - // CoreGraphics - - wxMacCGContext * m_macGraphicContext ; - void MacSetupGraphicContext() ; +#endif }; -#endif - // _WX_DC_H_ +#endif // _WX_DC_H_