[Libreoffice-commits] core.git: vcl/headless vcl/inc vcl/unx
Caolán McNamara
caolanm at redhat.com
Wed Jun 24 13:46:32 PDT 2015
vcl/headless/svpgdi.cxx | 25 +++++++++++++++++++++++++
vcl/inc/headless/svpgdi.hxx | 3 +++
vcl/unx/gtk/window/gtksalframe.cxx | 13 ++-----------
3 files changed, 30 insertions(+), 11 deletions(-)
New commits:
commit 253c0f073715b1d0f6ba063b1182016e45951bf4
Author: Caolán McNamara <caolanm at redhat.com>
Date: Tue Jun 23 20:33:18 2015 +0100
gtk3: move createCairoContext down to svpgdi
Change-Id: Ib3c6d6689c4b79a636a3f2f0f985f3573aa46f3d
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index 13f93cf..3b8413c 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;
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index cd2c993..aacbf99 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -36,6 +36,7 @@
class GlyphCache;
class ServerFont;
+typedef struct _cairo cairo_t;
class VCL_DLLPUBLIC SvpSalGraphics : public SalGraphics
{
@@ -210,6 +211,8 @@ public:
virtual SystemFontData GetSysFontData( int nFallbacklevel ) const SAL_OVERRIDE;
+ static cairo_t* createCairoContext(const basebmp::BitmapDeviceSharedPtr& rBuffer);
+
#endif // ENABLE_CAIRO_CANVAS
virtual void BeginPaint() SAL_OVERRIDE { };
diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx
index 159771a..88b0bd0 100644
--- a/vcl/unx/gtk/window/gtksalframe.cxx
+++ b/vcl/unx/gtk/window/gtksalframe.cxx
@@ -3465,17 +3465,8 @@ gboolean GtkSalFrame::signalCrossing( GtkWidget*, GdkEventCrossing* pEvent, gpoi
cairo_t* GtkSalFrame::getCairoContext() const
{
- basebmp::RawMemorySharedArray data = m_aFrame->getBuffer();
- basegfx::B2IVector size = m_aFrame->getSize();
- sal_Int32 nStride = m_aFrame->getScanlineStride();
- assert(cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, size.getX()) == nStride);
- 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);
+ cairo_t* cr = SvpSalGraphics::createCairoContext(m_aFrame);
+ assert(cr);
return cr;
}
More information about the Libreoffice-commits
mailing list