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:
@@ -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() );
|
||||
|
||||
Reference in New Issue
Block a user