summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2015-03-02 15:23:02 +0000
committerCaolán McNamara <caolanm@redhat.com>2015-03-03 09:44:23 +0000
commit756b2c945143ee171ae80c9ba51ef0dd50fab789 (patch)
treef551fb393e67ff3bfc078bac8965f7c78de628e5
parent7b4c2d836463efab19201fb466a137b2023cb52a (diff)
just in case, fallback if not cairo-surface
Change-Id: I5c185f9306f73f787f38566ba5335b5a8f51ee1d
-rw-r--r--vcl/inc/headless/svpgdi.hxx2
-rw-r--r--vcl/inc/unx/gtk/gtkgdi.hxx10
-rw-r--r--vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx14
3 files changed, 21 insertions, 5 deletions
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index e9f51105143e..c45cf0f2be36 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -55,7 +55,7 @@ protected:
public:
GlyphCache& getPlatformGlyphCache();
- void setDevice(basebmp::BitmapDeviceSharedPtr& rDevice);
+ virtual void setDevice(basebmp::BitmapDeviceSharedPtr& rDevice);
void BlendTextColor(const basebmp::Color &rTextColor, const basebmp::BitmapDeviceSharedPtr &rAlphaMask,
const basegfx::B2IPoint &rDstPoint);
diff --git a/vcl/inc/unx/gtk/gtkgdi.hxx b/vcl/inc/unx/gtk/gtkgdi.hxx
index 2cbe6e0cc81b..3bc7ef0ae419 100644
--- a/vcl/inc/unx/gtk/gtkgdi.hxx
+++ b/vcl/inc/unx/gtk/gtkgdi.hxx
@@ -35,12 +35,14 @@ class GtkSalFrame;
class GtkSalGraphics : public SvpSalGraphics
{
GtkSalFrame *mpFrame;
+ bool m_bCairoCompatibleSurface;
public:
GtkSalGraphics( GtkSalFrame *pFrame, GtkWidget *pWindow );
- virtual void copyArea( long nDestX, long nDestY,
- long nSrcX, long nSrcY,
- long nSrcWidth, long nSrcHeight,
- sal_uInt16 /*nFlags*/ ) SAL_OVERRIDE;
+ virtual void setDevice(basebmp::BitmapDeviceSharedPtr& rDevice) SAL_OVERRIDE;
+ virtual void copyArea( long nDestX, long nDestY,
+ long nSrcX, long nSrcY,
+ long nSrcWidth, long nSrcHeight,
+ sal_uInt16 /*nFlags*/ ) SAL_OVERRIDE;
virtual bool drawNativeControl( ControlType nType, ControlPart nPart,
const Rectangle& rControlRegion,
ControlState nState, const ImplControlValue& aValue,
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index 774be5a377fa..8ccf2e35a711 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -1576,6 +1576,20 @@ static void print_update_area (GdkWindow *window, const char *msg)
print_cairo_region (gdk_window_get_update_area (window), msg);
}
+void GtkSalGraphics::setDevice(basebmp::BitmapDeviceSharedPtr& rDevice)
+{
+ SvpSalGraphics::setDevice(rDevice);
+ bool bCairoCompatibleSurface = rDevice->getScanlineFormat() == basebmp::FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX;
+ if (bCairoCompatibleSurface != m_bCairoCompatibleSurface)
+ {
+ if (bCairoCompatibleSurface)
+ m_xTextRenderImpl.reset(new GtkCairoTextRender(*this));
+ else
+ m_xTextRenderImpl.reset(new SvpTextRender(*this));
+ m_bCairoCompatibleSurface = bCairoCompatibleSurface;
+ }
+}
+
void GtkSalGraphics::copyArea( long nDestX, long nDestY,
long nSrcX, long nSrcY,
long nSrcWidth, long nSrcHeight,