summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Le Grand <Armin.Le.Grand@cib.de>2016-07-08 18:01:21 +0200
committerArmin Le Grand <Armin.Le.Grand@cib.de>2016-07-08 18:01:21 +0200
commit18a2b68407e4d9bc23bdb5b5e3fd4b78fec8f234 (patch)
tree940bdf6599f4407adac37081c66a107946e9a170
parent475695250f4929af8fdbd290aba31841fe95eca3 (diff)
Adaptions for Linux build, mostly Cairo
Change-Id: I7721308f6af5d9e3af7dfe7787f6234b0c1eeeb2
-rw-r--r--vcl/inc/unx/salgdi.h10
-rw-r--r--vcl/unx/generic/gdi/salgdi.cxx34
2 files changed, 39 insertions, 5 deletions
diff --git a/vcl/inc/unx/salgdi.h b/vcl/inc/unx/salgdi.h
index a21fe787d55a..dfab461f79de 100644
--- a/vcl/inc/unx/salgdi.h
+++ b/vcl/inc/unx/salgdi.h
@@ -27,6 +27,11 @@
#include <vcl/salgtype.hxx>
#include <vcl/vclenum.hxx>
#include <vcl/metric.hxx>
+#include <config_cairo_canvas.h>
+
+#if ENABLE_CAIRO_CANVAS
+#include <cairo.h>
+#endif // ENABLE_CAIRO_CANVAS
#include "salgdi.hxx"
#include "salgeom.hxx"
@@ -297,6 +302,11 @@ public:
*/
void YieldGraphicsExpose();
+#if ENABLE_CAIRO_CANVAS
+ cairo_t* getCairoContext();
+ static void releaseCairoContext(cairo_t* cr);
+#endif // ENABLE_CAIRO_CANVAS
+
// do XCopyArea or XGet/PutImage depending on screen numbers
// signature is like XCopyArea with screen numbers added
static void CopyScreenArea(
diff --git a/vcl/unx/generic/gdi/salgdi.cxx b/vcl/unx/generic/gdi/salgdi.cxx
index 522c354be4fd..13697fa4a2df 100644
--- a/vcl/unx/generic/gdi/salgdi.cxx
+++ b/vcl/unx/generic/gdi/salgdi.cxx
@@ -66,6 +66,10 @@
#include "cairo_cairo.hxx"
#include "cairo_xlib_cairo.hxx"
+#if ENABLE_CAIRO_CANVAS
+#include "cairo-xlib.h"
+#endif
+
#include <vcl/opengl/OpenGLHelper.hxx>
X11SalGraphics::X11SalGraphics():
@@ -711,16 +715,18 @@ bool X11SalGraphics::drawPolyLine(
switch(eLineJoin)
{
- case basegfx::B2DLineJoin::Bevel:
+ case basegfx::B2DLineJoin::B2DLINEJOIN_BEVEL:
eCairoLineJoin = CAIRO_LINE_JOIN_BEVEL;
break;
- case basegfx::B2DLineJoin::Round:
+ case basegfx::B2DLineJoin::B2DLINEJOIN_ROUND:
eCairoLineJoin = CAIRO_LINE_JOIN_ROUND;
break;
- case basegfx::B2DLineJoin::NONE:
+ case basegfx::B2DLineJoin::B2DLINEJOIN_MIDDLE:
+ case basegfx::B2DLineJoin::B2DLINEJOIN_NONE:
+ eCairoLineJoin = CAIRO_LINE_JOIN_MITER;
bNoJoin = true;
- SAL_FALLTHROUGH;
- case basegfx::B2DLineJoin::Miter:
+ break;
+ case basegfx::B2DLineJoin::B2DLINEJOIN_MITER:
eCairoLineJoin = CAIRO_LINE_JOIN_MITER;
break;
}
@@ -855,4 +861,22 @@ SalGeometryProvider *X11SalGraphics::GetGeometryProvider() const
return static_cast< SalGeometryProvider * >(m_pVDev);
}
+#if ENABLE_CAIRO_CANVAS
+cairo_t* X11SalGraphics::getCairoContext()
+{
+ cairo_surface_t* surface = cairo_xlib_surface_create(GetXDisplay(), hDrawable_,
+ GetVisual().visual, SAL_MAX_INT16, SAL_MAX_INT16);
+
+ cairo_t *cr = cairo_create(surface);
+ cairo_surface_destroy(surface);
+
+ return cr;
+}
+
+void X11SalGraphics::releaseCairoContext(cairo_t* cr)
+{
+ cairo_destroy(cr);
+}
+#endif // ENABLE_CAIRO_CANVAS
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */