diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2022-12-15 12:00:33 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2022-12-23 14:20:58 +0000 |
commit | 2d1e7995eae29e2826449eb5179f5fae181794a5 (patch) | |
tree | 5bfe9bdd01ad9cbd3dbd3cb1cb13654ecd4cb10f /canvas | |
parent | 4c0bbe4bd97636207cf71a6aa120c67698891da9 (diff) |
loplugin:unocast (CairoColorSpace)
(See the upcoming commit introducing that loplugin:unocast on why such
dynamic_casts from UNO types are dangerous.)
Change-Id: Ie04db15daff4a44758019aab690ff8e822ddae45
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144771
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'canvas')
-rw-r--r-- | canvas/source/cairo/cairo_canvashelper.cxx | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/canvas/source/cairo/cairo_canvashelper.cxx b/canvas/source/cairo/cairo_canvashelper.cxx index 89a794bc6cd5..89a7ac65fd07 100644 --- a/canvas/source/cairo/cairo_canvashelper.cxx +++ b/canvas/source/cairo/cairo_canvashelper.cxx @@ -29,6 +29,7 @@ #include <basegfx/utils/canvastools.hxx> #include <basegfx/utils/keystoplerp.hxx> #include <basegfx/utils/lerp.hxx> +#include <com/sun/star/lang/XUnoTunnel.hpp> #include <com/sun/star/rendering/ColorComponentTag.hpp> #include <com/sun/star/rendering/ColorSpaceType.hpp> #include <com/sun/star/rendering/CompositeOperation.hpp> @@ -1341,7 +1342,7 @@ constexpr OUStringLiteral PARAMETRICPOLYPOLYGON_IMPLEMENTATION_NAME = u"Canvas:: namespace { - class CairoColorSpace : public cppu::WeakImplHelper< css::rendering::XIntegerBitmapColorSpace > + class CairoColorSpace : public cppu::WeakImplHelper< css::rendering::XIntegerBitmapColorSpace, css::lang::XUnoTunnel > { private: uno::Sequence< sal_Int8 > maComponentTags; @@ -1499,7 +1500,7 @@ constexpr OUStringLiteral PARAMETRICPOLYPOLYGON_IMPLEMENTATION_NAME = u"Canvas:: virtual uno::Sequence<double> SAL_CALL convertFromIntegerColorSpace( const uno::Sequence< ::sal_Int8 >& deviceColor, const uno::Reference< rendering::XColorSpace >& targetColorSpace ) override { - if( dynamic_cast<CairoColorSpace*>(targetColorSpace.get()) ) + if( comphelper::getFromUnoTunnel<CairoColorSpace>(targetColorSpace) ) { const sal_Int8* pIn( deviceColor.getConstArray() ); const std::size_t nLen( deviceColor.getLength() ); @@ -1530,7 +1531,7 @@ constexpr OUStringLiteral PARAMETRICPOLYPOLYGON_IMPLEMENTATION_NAME = u"Canvas:: virtual uno::Sequence< ::sal_Int8 > SAL_CALL convertToIntegerColorSpace( const uno::Sequence< ::sal_Int8 >& deviceColor, const uno::Reference< rendering::XIntegerBitmapColorSpace >& targetColorSpace ) override { - if( dynamic_cast<CairoColorSpace*>(targetColorSpace.get()) ) + if( comphelper::getFromUnoTunnel<CairoColorSpace>(targetColorSpace) ) { // it's us, so simply pass-through the data return deviceColor; @@ -1687,6 +1688,17 @@ constexpr OUStringLiteral PARAMETRICPOLYPOLYGON_IMPLEMENTATION_NAME = u"Canvas:: pBitCounts[2] = pBitCounts[3] = 8; } + + sal_Int64 SAL_CALL getSomething(css::uno::Sequence<sal_Int8> const & aIdentifier) + override + { + return comphelper::getSomethingImpl(aIdentifier, this); + } + + static css::uno::Sequence<sal_Int8> const & getUnoTunnelId() { + static comphelper::UnoIdInit const id; + return id.getSeq(); + } }; class CairoNoAlphaColorSpace : public cppu::WeakImplHelper< css::rendering::XIntegerBitmapColorSpace > @@ -1821,7 +1833,7 @@ constexpr OUStringLiteral PARAMETRICPOLYPOLYGON_IMPLEMENTATION_NAME = u"Canvas:: virtual uno::Sequence<double> SAL_CALL convertFromIntegerColorSpace( const uno::Sequence< ::sal_Int8 >& deviceColor, const uno::Reference< rendering::XColorSpace >& targetColorSpace ) override { - if( dynamic_cast<CairoColorSpace*>(targetColorSpace.get()) ) + if( comphelper::getFromUnoTunnel<CairoColorSpace>(targetColorSpace) ) { const sal_Int8* pIn( deviceColor.getConstArray() ); const std::size_t nLen( deviceColor.getLength() ); |