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>
This commit is contained in:
Stephan Bergmann
2022-12-23 14:20:58 +00:00
parent 4c0bbe4bd9
commit 2d1e7995ea
+16 -4
View File
@@ -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() );