summaryrefslogtreecommitdiff
path: root/vcl/inc/headless
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2016-01-11 15:37:07 +0000
committerCaolán McNamara <caolanm@redhat.com>2016-01-18 11:34:07 +0000
commitf8fa52d2d35df796c47c9a56d71df1b7fdc11b8e (patch)
tree44a64b839a89833155fab04c285644aa589c0228 /vcl/inc/headless
parentabb2574ed9d4c605f5a306726025b9f4844dde54 (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.hxx9
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);
};