diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-06-23 20:33:18 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-06-24 21:12:30 +0100 |
commit | 253c0f073715b1d0f6ba063b1182016e45951bf4 (patch) | |
tree | 73a58acbf8f0363313bc97a86d455951fb43d86e /vcl/headless | |
parent | a8be3fba0a8678392c9bef9a3a2ced3cedef36f0 (diff) |
gtk3: move createCairoContext down to svpgdi
Change-Id: Ib3c6d6689c4b79a636a3f2f0f985f3573aa46f3d
Diffstat (limited to 'vcl/headless')
-rw-r--r-- | vcl/headless/svpgdi.cxx | 25 |
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; |