diff options
author | Armin Le Grand <Armin.Le.Grand@cib.de> | 2016-07-08 18:01:21 +0200 |
---|---|---|
committer | Armin Le Grand <Armin.Le.Grand@cib.de> | 2016-07-08 18:01:21 +0200 |
commit | 18a2b68407e4d9bc23bdb5b5e3fd4b78fec8f234 (patch) | |
tree | 940bdf6599f4407adac37081c66a107946e9a170 | |
parent | 475695250f4929af8fdbd290aba31841fe95eca3 (diff) |
Adaptions for Linux build, mostly Cairo
Change-Id: I7721308f6af5d9e3af7dfe7787f6234b0c1eeeb2
-rw-r--r-- | vcl/inc/unx/salgdi.h | 10 | ||||
-rw-r--r-- | vcl/unx/generic/gdi/salgdi.cxx | 34 |
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: */ |