diff options
author | Caolán McNamara <caolanm@redhat.com> | 2016-01-11 15:37:07 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2016-01-18 11:34:07 +0000 |
commit | f8fa52d2d35df796c47c9a56d71df1b7fdc11b8e (patch) | |
tree | 44a64b839a89833155fab04c285644aa589c0228 /vcl/inc/headless | |
parent | abb2574ed9d4c605f5a306726025b9f4844dde54 (diff) |
svp: emulate XOR in cairo paths when necessary
Change-Id: I05a4803e327b812c18c9f5bfcbb0bea8296da46c
Diffstat (limited to 'vcl/inc/headless')
-rw-r--r-- | vcl/inc/headless/svpgdi.hxx | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx index fc3fdc16601a..905caf33bb91 100644 --- a/vcl/inc/headless/svpgdi.hxx +++ b/vcl/inc/headless/svpgdi.hxx @@ -49,6 +49,7 @@ class GlyphCache; class ServerFont; typedef struct _cairo cairo_t; typedef struct _cairo_surface cairo_surface_t; +typedef struct _cairo_rectangle_int cairo_rectangle_int_t; enum PaintMode { OVERPAINT, XOR, INVERT }; @@ -81,7 +82,7 @@ private: }; bool isClippedSetup( const basegfx::B2IBox &aRange, ClipUndoHandle &rUndo ); void ensureClip(); - bool invert(const basegfx::B2DPolygon &rPoly, SalInvert nFlags); + void invert(const basegfx::B2DPolygon &rPoly, SalInvert nFlags); protected: vcl::Region m_aClipRegion; SvpCairoTextRender m_aTextRenderImpl; @@ -218,10 +219,12 @@ public: virtual SystemFontData GetSysFontData( int nFallbacklevel ) const override; #endif // ENABLE_CAIRO_CANVAS - cairo_t* getCairoContext() const; - void releaseCairoContext(cairo_t* cr) const; + cairo_t* getCairoContext(bool bXorModeAllowed) const; + void releaseCairoContext(cairo_t* cr, bool bXorModeAllowed, const cairo_rectangle_int_t& extents) const; static cairo_surface_t* createCairoSurface(const basebmp::BitmapDeviceSharedPtr& rBuffer); static cairo_t* createCairoContext(const basebmp::BitmapDeviceSharedPtr& rBuffer); + static cairo_surface_t* createTmpCompatibleCairoSurface(const basebmp::BitmapDeviceSharedPtr& rBuffer); + static cairo_t* createTmpCompatibleCairoContext(const basebmp::BitmapDeviceSharedPtr &rBuffer); void clipRegion(cairo_t* cr); }; |