-// make sure we all use one class for all conversions from wx to native colour
-
-class wxMacCoreGraphicsColour
-{
-public:
- wxMacCoreGraphicsColour();
- wxMacCoreGraphicsColour(const wxBrush &brush);
- ~wxMacCoreGraphicsColour();
-
- void Apply( CGContextRef cgContext );
-protected:
- void Init();
- wxMacCFRefHolder<CGColorRef> m_color;
- wxMacCFRefHolder<CGColorSpaceRef> m_colorSpace;
-
- bool m_isPattern;
- wxMacCFRefHolder<CGPatternRef> m_pattern;
- CGFloat* m_patternColorComponents;
-} ;
-
-#if wxMAC_USE_CORE_GRAPHICS && !wxUSE_GRAPHICS_CONTEXT
-
-class WXDLLEXPORT wxMacCGPath : public wxGraphicPath
-{
- DECLARE_NO_COPY_CLASS(wxMacCGPath)
-public :
- wxMacCGPath();
- ~wxMacCGPath();
-
- // Starts a new subpath at
- void MoveToPoint( wxCoord x1 , wxCoord y1 );
- void AddLineToPoint( wxCoord x1 , wxCoord y1 );
- void AddQuadCurveToPoint( wxCoord cx1, wxCoord cy1, wxCoord x1, wxCoord y1 );
- void AddRectangle( wxCoord x, wxCoord y, wxCoord w, wxCoord h );
- void AddCircle( wxCoord x, wxCoord y , wxCoord r );
-
- // draws a an arc to two tangents connecting (current) to (x1,y1) and (x1,y1) to (x2,y2)
- virtual void AddArcToPoint( wxCoord x1, wxCoord y1 , wxCoord x2, wxCoord y2, wxCoord r ) ;
- virtual void AddArc( wxCoord x, wxCoord y, wxCoord r, double startAngle, double endAngle, bool clockwise ) ;
-
- // closes the current subpath
- void CloseSubpath();
-
- CGPathRef GetPath() const;
-private :
- CGMutablePathRef m_path;
-};
-
-class WXDLLEXPORT wxMacCGContext : public wxGraphicContext
-{
- DECLARE_NO_COPY_CLASS(wxMacCGContext)
-
-public:
- wxMacCGContext( CGrafPtr port );
- wxMacCGContext( CGContextRef cgcontext );
- wxMacCGContext();
- virtual ~wxMacCGContext();
-
- virtual void Clip( const wxRegion ®ion );
- virtual void StrokePath( const wxGraphicPath *p );
- virtual void DrawPath( const wxGraphicPath *p , int fillStyle = wxWINDING_RULE );
- virtual void FillPath( const wxGraphicPath *p , const wxColor &fillColor , int fillStyle = wxWINDING_RULE );
-
- virtual wxGraphicPath* CreatePath();
- virtual void SetPen( const wxPen &pen ) ;
- virtual void SetBrush( const wxBrush &brush );
- CGContextRef GetNativeContext();
- void SetNativeContext( CGContextRef cg );
- CGPathDrawingMode GetDrawingMode() const { return m_mode; }
-
- virtual void Translate( wxCoord dx , wxCoord dy );
- virtual void Scale( wxCoord xScale , wxCoord yScale );
- virtual void DrawBitmap( const wxBitmap &bmp, wxCoord x, wxCoord y, wxCoord w, wxCoord h );
- virtual void DrawIcon( const wxIcon &icon, wxCoord x, wxCoord y, wxCoord w, wxCoord h );
- virtual void PushState();
- virtual void PopState();
-
- virtual void DrawText( const wxString &str, wxCoord x, wxCoord y, double angle ) ;
-
- virtual void GetTextExtent( const wxString &str, wxCoord *width, wxCoord *height,
- wxCoord *descent, wxCoord *externalLeading ) const ;
-
- virtual void GetPartialTextExtents(const wxString& text, wxArrayInt& widths) const ;
-
- virtual void SetFont( const wxFont &font ) ;
-
- virtual void SetTextColor( const wxColour &col ) ;
-private:
- CGContextRef m_cgContext;
- CGrafPtr m_qdPort;
- CGPathDrawingMode m_mode;
- ATSUStyle m_macATSUIStyle ;
- wxPen m_pen;
- wxBrush m_brush;
- wxColor m_textForegroundColor ;
-};
-
-#endif // wxMAC_USE_CORE_GRAPHICS
-
-#ifdef __WXMAC_OSX__
-
-CGColorSpaceRef wxMacGetGenericRGBColorSpace(void);
-void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size);
-
-#endif
-
-class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData
-{
- friend class WXDLLIMPEXP_FWD_CORE wxIcon;
- friend class WXDLLIMPEXP_FWD_CORE wxCursor;
-public:
- wxBitmapRefData(int width , int height , int depth);
- wxBitmapRefData();
- wxBitmapRefData(const wxBitmapRefData &tocopy);
-
- virtual ~wxBitmapRefData();
-
- void Free();
- bool Ok() const { return IsOk(); }
- bool IsOk() const { return m_ok; }
- void SetOk( bool isOk) { m_ok = isOk; }
-
- void SetWidth( int width ) { m_width = width; }
- void SetHeight( int height ) { m_height = height; }
- void SetDepth( int depth ) { m_depth = depth; }
-
- int GetWidth() const { return m_width; }
- int GetHeight() const { return m_height; }
- int GetDepth() const { return m_depth; }
-
- void *GetRawAccess() const;
- void *BeginRawAccess();
- void EndRawAccess();
-
- bool HasAlpha() const { return m_hasAlpha; }
- void UseAlpha( bool useAlpha );
-
-public:
-#if wxUSE_PALETTE
- wxPalette m_bitmapPalette;
-#endif // wxUSE_PALETTE
-
- wxMask * m_bitmapMask; // Optional mask
-#ifdef __WXMAC_OSX__
- CGImageRef CGImageCreate() const;
-#endif
-
- // returns true if the bitmap has a size that
- // can be natively transferred into a true icon
- // if no is returned GetIconRef will still produce
- // an icon but it will be generated via a PICT and
- // rescaled to 16 x 16
- bool HasNativeSize();
-
- // caller should increase ref count if needed longer
- // than the bitmap exists
- IconRef GetIconRef();
-
- // returns a Pict from the bitmap content
- PicHandle GetPictHandle();
-#if wxMAC_USE_CORE_GRAPHICS
- CGContextRef GetBitmapContext() const;
-#else
- GWorldPtr GetHBITMAP(GWorldPtr * mask = NULL ) const;
- void UpdateAlphaMask() const;
-#endif
- int GetBytesPerRow() const { return m_bytesPerRow; }
-private :
- bool Create(int width , int height , int depth);
- void Init();
-
- int m_width;
- int m_height;
- int m_bytesPerRow;
- int m_depth;
- bool m_hasAlpha;
- wxMemoryBuffer m_memBuf;
- int m_rawAccessCount;
- bool m_ok;
-#ifdef __WXMAC_OSX__
- mutable CGImageRef m_cgImageRef;
-#endif
- IconRef m_iconRef;
- PicHandle m_pictHandle;
-#if wxMAC_USE_CORE_GRAPHICS
- CGContextRef m_hBitmap;
-#else
- GWorldPtr m_hBitmap;
- GWorldPtr m_hMaskBitmap;
- wxMemoryBuffer m_maskMemBuf;
- int m_maskBytesPerRow;
-#endif
-};