diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-12-06 10:05:27 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2021-12-06 13:19:33 +0100 |
commit | 8fe1a3c479d4aeaeb3a378aaceb77f72edcfb7c8 (patch) | |
tree | 832ed9ffac83119c040d5df7a695c1c4a4b7ced3 /svx/source | |
parent | 19eaf859670b6f22cb89f854316ed0673dacbaa9 (diff) |
skip some intermediate results in tryToGetChartContentAsPrimitive2DSequence
Change-Id: Idf3179c97fe40da1ff41100fc7e7a0b80ee1ca73
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126403
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'svx/source')
-rw-r--r-- | svx/source/sdr/primitive2d/primitivefactory2d.cxx | 60 | ||||
-rw-r--r-- | svx/source/svdraw/charthelper.cxx | 16 |
2 files changed, 24 insertions, 52 deletions
diff --git a/svx/source/sdr/primitive2d/primitivefactory2d.cxx b/svx/source/sdr/primitive2d/primitivefactory2d.cxx index a03a7c0a7dde..9625c8bcd41e 100644 --- a/svx/source/sdr/primitive2d/primitivefactory2d.cxx +++ b/svx/source/sdr/primitive2d/primitivefactory2d.cxx @@ -17,49 +17,10 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#include <com/sun/star/graphic/XPrimitiveFactory2D.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/uno/XComponentContext.hpp> -#include <cppuhelper/basemutex.hxx> -#include <cppuhelper/compbase.hxx> -#include <cppuhelper/supportsservice.hxx> -#include <svx/svdobj.hxx> -#include <svx/svdpage.hxx> -#include <svx/unoapi.hxx> -#include <svx/sdr/contact/viewcontact.hxx> -#include <comphelper/sequence.hxx> +#include <sdr/primitive2d/primitivefactory2d.hxx> using namespace com::sun::star; -namespace { - -typedef cppu::WeakComponentImplHelper< css::graphic::XPrimitiveFactory2D, css::lang::XServiceInfo > PrimitiveFactory2DImplBase; - -// base class for C++ implementation of css::graphic::XPrimitiveFactory2D -class PrimitiveFactory2D - : protected cppu::BaseMutex, - public PrimitiveFactory2DImplBase -{ -public: - PrimitiveFactory2D(): PrimitiveFactory2DImplBase(m_aMutex) {} - - // Methods from XPrimitiveFactory2D - virtual css::uno::Sequence< css::uno::Reference< css::graphic::XPrimitive2D > > SAL_CALL createPrimitivesFromXShape( const css::uno::Reference< css::drawing::XShape >& xShape, const css::uno::Sequence< css::beans::PropertyValue >& aParms ) override; - virtual css::uno::Sequence< css::uno::Reference< css::graphic::XPrimitive2D > > SAL_CALL createPrimitivesFromXDrawPage( const css::uno::Reference< css::drawing::XDrawPage >& xDrawPage, const css::uno::Sequence< css::beans::PropertyValue >& aParms ) override; - - OUString SAL_CALL getImplementationName() override - { return "com.sun.star.comp.graphic.PrimitiveFactory2D"; } - - sal_Bool SAL_CALL supportsService(OUString const & ServiceName) override - { return cppu::supportsService(this, ServiceName); } - - css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override - { - return css::uno::Sequence<OUString>{ - "com.sun.star.graphic.PrimitiveFactory2D"}; - } -}; - css::uno::Sequence< css::uno::Reference< css::graphic::XPrimitive2D > > SAL_CALL PrimitiveFactory2D::createPrimitivesFromXShape( const uno::Reference< drawing::XShape >& xShape, const uno::Sequence< beans::PropertyValue >& /*aParms*/ ) @@ -82,6 +43,23 @@ css::uno::Sequence< css::uno::Reference< css::graphic::XPrimitive2D > > SAL_CALL return aRetval; } +void PrimitiveFactory2D::createPrimitivesFromXShape( + const uno::Reference< drawing::XShape >& xShape, + const uno::Sequence< beans::PropertyValue >& /*aParms*/, + drawinglayer::primitive2d::Primitive2DDecompositionVisitor& rVisitor) +{ + if(xShape.is()) + { + SdrObject* pSource = SdrObject::getSdrObjectFromXShape(xShape); + + if(pSource) + { + const sdr::contact::ViewContact& rSource(pSource->GetViewContact()); + rSource.getViewIndependentPrimitive2DContainer(rVisitor); + } + } +} + css::uno::Sequence< css::uno::Reference< css::graphic::XPrimitive2D > > SAL_CALL PrimitiveFactory2D::createPrimitivesFromXDrawPage( const uno::Reference< drawing::XDrawPage >& xDrawPage, const uno::Sequence< beans::PropertyValue >& /*aParms*/ ) @@ -104,8 +82,6 @@ css::uno::Sequence< css::uno::Reference< css::graphic::XPrimitive2D > > SAL_CALL return aRetval; } -} - extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_comp_graphic_PrimitiveFactory2D_get_implementation( css::uno::XComponentContext *, diff --git a/svx/source/svdraw/charthelper.cxx b/svx/source/svdraw/charthelper.cxx index 764abf0d3ec9..737bf792e320 100644 --- a/svx/source/svdraw/charthelper.cxx +++ b/svx/source/svdraw/charthelper.cxx @@ -30,6 +30,8 @@ #include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/drawing/FillStyle.hpp> #include <com/sun/star/drawing/LineStyle.hpp> +#include <rtl/ref.hxx> +#include <sdr/primitive2d/primitivefactory2d.hxx> using namespace ::com::sun::star; @@ -71,10 +73,6 @@ drawinglayer::primitive2d::Primitive2DContainer ChartHelper::tryToGetChartConten if(xShapeAccess->getCount()) { const sal_Int32 nShapeCount(xShapeAccess->getCount()); - const uno::Reference< uno::XComponentContext > xContext(::comphelper::getProcessComponentContext()); - const uno::Reference< graphic::XPrimitiveFactory2D > xPrimitiveFactory = - graphic::PrimitiveFactory2D::create( xContext ); - const uno::Sequence< beans::PropertyValue > aParams; uno::Reference< drawing::XShape > xShape; @@ -84,12 +82,10 @@ drawinglayer::primitive2d::Primitive2DContainer ChartHelper::tryToGetChartConten if(xShape.is()) { - const drawinglayer::primitive2d::Primitive2DSequence aNew( - xPrimitiveFactory->createPrimitivesFromXShape( - xShape, - aParams)); - - aRetval.append(aNew); + PrimitiveFactory2D::createPrimitivesFromXShape( + xShape, + aParams, + aRetval); } } } |