diff options
-rw-r--r-- | vcl/inc/headless/svpgdi.hxx | 2 | ||||
-rw-r--r-- | vcl/inc/unx/gtk/gtkgdi.hxx | 10 | ||||
-rw-r--r-- | vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 14 |
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, |