summaryrefslogtreecommitdiff
path: root/canvas
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2022-12-15 12:00:33 +0100
committerStephan Bergmann <sbergman@redhat.com>2022-12-23 14:20:58 +0000
commit2d1e7995eae29e2826449eb5179f5fae181794a5 (patch)
tree5bfe9bdd01ad9cbd3dbd3cb1cb13654ecd4cb10f /canvas
parent4c0bbe4bd97636207cf71a6aa120c67698891da9 (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.cxx20
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() );