summaryrefslogtreecommitdiff
path: root/vcl/headless
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-06-23 20:33:18 +0100
committerCaolán McNamara <caolanm@redhat.com>2015-06-24 21:12:30 +0100
commit253c0f073715b1d0f6ba063b1182016e45951bf4 (patch)
tree73a58acbf8f0363313bc97a86d455951fb43d86e /vcl/headless
parenta8be3fba0a8678392c9bef9a3a2ced3cedef36f0 (diff)
gtk3: move createCairoContext down to svpgdi
Change-Id: Ib3c6d6689c4b79a636a3f2f0f985f3573aa46f3d
Diffstat (limited to 'vcl/headless')
-rw-r--r--vcl/headless/svpgdi.cxx25
1 files changed, 25 insertions, 0 deletions
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index 13f93cff3e5e..3b8413c011b2 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -33,6 +33,10 @@
#include <basegfx/polygon/b2dpolygontools.hxx>
#include <basebmp/scanlineformats.hxx>
+#if ENABLE_CAIRO_CANVAS
+#include <cairo.h>
+#endif
+
#if OSL_DEBUG_LEVEL > 2
#include <basebmp/debug.hxx>
#include <fstream>
@@ -738,6 +742,27 @@ bool SvpSalGraphics::supportsOperation( OutDevSupportType ) const
#if ENABLE_CAIRO_CANVAS
+cairo_t* SvpSalGraphics::createCairoContext(const basebmp::BitmapDeviceSharedPtr &rBuffer)
+{
+ if (rBuffer->getScanlineFormat() != basebmp::Format::ThirtyTwoBitTcMaskBGRX)
+ return NULL;
+
+ basegfx::B2IVector size = rBuffer->getSize();
+ sal_Int32 nStride = rBuffer->getScanlineStride();
+ if (cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, size.getX()) != nStride)
+ return NULL;
+
+ basebmp::RawMemorySharedArray data = rBuffer->getBuffer();
+ cairo_surface_t *target =
+ cairo_image_surface_create_for_data(data.get(),
+ CAIRO_FORMAT_RGB24,
+ size.getX(), size.getY(),
+ nStride);
+ cairo_t* cr = cairo_create(target);
+ cairo_surface_destroy(target);
+ return cr;
+}
+
bool SvpSalGraphics::SupportsCairo() const
{
return false;