X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ed8818893364087335327d2190e4608646a3547b..9fc852b7ffca3817b98522fcf62d7ffa4e2b194e:/include/wx/cocoa/dc.h diff --git a/include/wx/cocoa/dc.h b/include/wx/cocoa/dc.h index 8d53d84c68..f7f46012ce 100644 --- a/include/wx/cocoa/dc.h +++ b/include/wx/cocoa/dc.h @@ -12,6 +12,9 @@ #ifndef __WX_COCOA_DC_H__ #define __WX_COCOA_DC_H__ +class WXDLLEXPORT wxDC; +WX_DECLARE_LIST(wxDC, wxCocoaDCStack); + //========================================================================= // wxDC //========================================================================= @@ -19,17 +22,48 @@ class WXDLLEXPORT wxDC: public wxDCBase { DECLARE_DYNAMIC_CLASS(wxDC) DECLARE_NO_COPY_CLASS(wxDC) +//------------------------------------------------------------------------- +// Initialization +//------------------------------------------------------------------------- public: wxDC(); ~wxDC(); +//------------------------------------------------------------------------- +// wxCocoa specifics +//------------------------------------------------------------------------- +public: static void CocoaInitializeTextSystem(); static void CocoaShutdownTextSystem(); - static wxDC *sm_focusedDC; static WX_NSTextStorage sm_cocoaNSTextStorage; static WX_NSLayoutManager sm_cocoaNSLayoutManager; static WX_NSTextContainer sm_cocoaNSTextContainer; - +protected: +// DC stack + static wxCocoaDCStack sm_cocoaDCStack; + virtual bool CocoaLockFocus(); + virtual bool CocoaUnlockFocus(); + bool CocoaUnwindStackAndTakeFocus(); + inline bool CocoaTakeFocus() + { + wxCocoaDCStack::Node *node = sm_cocoaDCStack.GetFirst(); + if(node && (node->GetData() == this)) + return true; + return CocoaUnwindStackAndTakeFocus(); + } + void CocoaUnwindStackAndLoseFocus(); +// DC flipping/transformation + void CocoaApplyTransformations(); + float m_cocoaHeight; + bool m_cocoaFlipped; +// Blitting + virtual bool CocoaDoBlitOnFocusedDC(wxCoord xdest, wxCoord ydest, + wxCoord width, wxCoord height, wxCoord xsrc, wxCoord ysrc, + int logicalFunc, bool useMask, wxCoord xsrcMask, wxCoord ysrcMask); +//------------------------------------------------------------------------- +// Implementation +//------------------------------------------------------------------------- +public: // implement base class pure virtuals // ---------------------------------- @@ -126,7 +160,6 @@ protected: virtual void DoDrawPolygon(int n, wxPoint points[], wxCoord xoffset, wxCoord yoffset, int fillStyle = wxODDEVEN_RULE); - }; #endif // __WX_COCOA_DC_H__