chart2/inc/ChartView.hxx                                          |    3 
 chart2/source/controller/drawinglayer/ViewElementListProvider.cxx |    2 
 chart2/source/inc/chartview/DataPointSymbolSupplier.hxx           |    2 
 chart2/source/view/axes/VAxisBase.hxx                             |    4 
 chart2/source/view/axes/VCartesianAxis.cxx                        |    6 
 chart2/source/view/axes/VCartesianAxis.hxx                        |    4 
 chart2/source/view/axes/VCartesianGrid.cxx                        |   10 
 chart2/source/view/axes/VCoordinateSystem.cxx                     |    6 
 chart2/source/view/axes/VPolarAngleAxis.cxx                       |    2 
 chart2/source/view/axes/VPolarAngleAxis.hxx                       |    2 
 chart2/source/view/axes/VPolarGrid.cxx                            |   14 -
 chart2/source/view/axes/VPolarGrid.hxx                            |    2 
 chart2/source/view/axes/VPolarRadiusAxis.cxx                      |    4 
 chart2/source/view/axes/VPolarRadiusAxis.hxx                      |    4 
 chart2/source/view/charttypes/AreaChart.cxx                       |   10 
 chart2/source/view/charttypes/AreaChart.hxx                       |    8 
 chart2/source/view/charttypes/BarChart.cxx                        |   21 -
 chart2/source/view/charttypes/BarChart.hxx                        |    2 
 chart2/source/view/charttypes/BubbleChart.cxx                     |    9 
 chart2/source/view/charttypes/CandleStickChart.cxx                |   18 -
 chart2/source/view/charttypes/NetChart.cxx                        |   10 
 chart2/source/view/charttypes/NetChart.hxx                        |    4 
 chart2/source/view/charttypes/PieChart.cxx                        |    9 
 chart2/source/view/charttypes/PieChart.hxx                        |    6 
 chart2/source/view/charttypes/VSeriesPlotter.cxx                  |  120 
++++------
 chart2/source/view/diagram/VDiagram.cxx                           |   36 +--
 chart2/source/view/inc/LabelPositionHelper.hxx                    |    6 
 chart2/source/view/inc/LegendEntryProvider.hxx                    |    2 
 chart2/source/view/inc/PlotterBase.hxx                            |   14 -
 chart2/source/view/inc/PlottingPositionHelper.hxx                 |    4 
 chart2/source/view/inc/PolarLabelPositionHelper.hxx               |    2 
 chart2/source/view/inc/ShapeFactory.hxx                           |   65 ++---
 chart2/source/view/inc/VCoordinateSystem.hxx                      |   14 -
 chart2/source/view/inc/VDataSeries.hxx                            |   10 
 chart2/source/view/inc/VDiagram.hxx                               |   12 -
 chart2/source/view/inc/VLegendSymbolFactory.hxx                   |    3 
 chart2/source/view/inc/VSeriesPlotter.hxx                         |   46 +--
 chart2/source/view/main/ChartView.cxx                             |   22 -
 chart2/source/view/main/DataPointSymbolSupplier.cxx               |    2 
 chart2/source/view/main/LabelPositionHelper.cxx                   |    2 
 chart2/source/view/main/PlotterBase.cxx                           |    8 
 chart2/source/view/main/PlottingPositionHelper.cxx                |    2 
 chart2/source/view/main/PolarLabelPositionHelper.cxx              |    2 
 chart2/source/view/main/ShapeFactory.cxx                          |  106 
+++++---
 chart2/source/view/main/VButton.cxx                               |    5 
 chart2/source/view/main/VButton.hxx                               |    4 
 chart2/source/view/main/VLegend.cxx                               |   10 
 chart2/source/view/main/VLegend.hxx                               |    4 
 chart2/source/view/main/VLegendSymbolFactory.cxx                  |    7 
 chart2/source/view/main/VTitle.cxx                                |    2 
 chart2/source/view/main/VTitle.hxx                                |    5 
 include/svx/unoshape.hxx                                          |   22 +
 svx/source/unodraw/unoshap2.cxx                                   |   13 +
 svx/source/unodraw/unoshap3.cxx                                   |    2 
 54 files changed, 377 insertions(+), 337 deletions(-)

New commits:
commit 7c36f46a1ea35633d64c44a2ee1e834b1f88cc8d
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sun Jan 2 20:49:46 2022 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Mon Jan 3 07:46:45 2022 +0100

    add new SvxShape hierarchy class
    
    to serve as a shared/common base class, so I can plumb
    SvxShape types through chart2.
    
    Change-Id: I8758fff1599c92a214b334ee44cf7b4e582c1915
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127873
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/chart2/inc/ChartView.hxx b/chart2/inc/ChartView.hxx
index fb73f06a2d1f..27408b53f844 100644
--- a/chart2/inc/ChartView.hxx
+++ b/chart2/inc/ChartView.hxx
@@ -36,6 +36,7 @@
 #include <com/sun/star/util/XUpdatable2.hpp>
 #include <rtl/ref.hxx>
 #include <svx/unopage.hxx>
+#include <svx/unoshape.hxx>
 
 #include <vector>
 #include <memory>
@@ -217,7 +218,7 @@ private: //member
             m_xShapeFactory;
     rtl::Reference<SvxDrawPage>
             m_xDrawPage;
-    css::uno::Reference< css::drawing::XShapes >
+    rtl::Reference<SvxShapeGroupAnyD>
             mxRootShape;
 
     css::uno::Reference< css::uno::XInterface > m_xDashTable;
diff --git a/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx 
b/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx
index c5a63bf19161..77099c9444fe 100644
--- a/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx
+++ b/chart2/source/controller/drawinglayer/ViewElementListProvider.cxx
@@ -115,7 +115,7 @@ SdrObjList* ViewElementListProvider::GetSymbolList() const
             m_pDrawModelWrapper->getShapeFactory());
 
         //get hidden draw page (target):
-        uno::Reference<drawing::XShapes> xTarget = 
m_pDrawModelWrapper->getHiddenDrawPage();
+        rtl::Reference<SvxDrawPage> xTarget = 
m_pDrawModelWrapper->getHiddenDrawPage();
 
         //create symbols via uno and convert to native sdr objects
         drawing::Direction3D aSymbolSize(220, 220, 0); // should be 250, but 
250 -> 280 ??
diff --git a/chart2/source/inc/chartview/DataPointSymbolSupplier.hxx 
b/chart2/source/inc/chartview/DataPointSymbolSupplier.hxx
index 9b236cfb06d5..6e25a84520d9 100644
--- a/chart2/source/inc/chartview/DataPointSymbolSupplier.hxx
+++ b/chart2/source/inc/chartview/DataPointSymbolSupplier.hxx
@@ -34,7 +34,7 @@ class OOO_DLLPUBLIC_CHARTVIEW DataPointSymbolSupplier
 {
 public:
     static rtl::Reference< SvxShapeGroup >
-        create2DSymbolList( const css::uno::Reference< css::drawing::XShapes 
>& xTarget
+        create2DSymbolList( const rtl::Reference<SvxDrawPage>& xTarget
             , const css::drawing::Direction3D& rSize );
 };
 
diff --git a/chart2/source/view/axes/VAxisBase.hxx 
b/chart2/source/view/axes/VAxisBase.hxx
index dd7be23e3cc6..31badb749c9d 100644
--- a/chart2/source/view/axes/VAxisBase.hxx
+++ b/chart2/source/view/axes/VAxisBase.hxx
@@ -77,8 +77,8 @@ protected: //member
     css::uno::Sequence< OUString >                            m_aTextLabels;
     bool                                                      m_bUseTextLabels;
 
-    css::uno::Reference< css::drawing::XShapes > m_xGroupShape_Shapes;
-    css::uno::Reference< css::drawing::XShapes > m_xTextTarget;
+    rtl::Reference< SvxShapeGroupAnyD > m_xGroupShape_Shapes;
+    rtl::Reference< SvxShapeGroupAnyD > m_xTextTarget;
 
     /**
      * This typically consists of 2 TickInfo vectors (i.e. the outer vector
diff --git a/chart2/source/view/axes/VCartesianAxis.cxx 
b/chart2/source/view/axes/VCartesianAxis.cxx
index 5910a0c73ab3..e6d72b45f666 100644
--- a/chart2/source/view/axes/VCartesianAxis.cxx
+++ b/chart2/source/view/axes/VCartesianAxis.cxx
@@ -113,7 +113,7 @@ static void lcl_ResizeTextShapeToFitAvailableSpace( 
SvxShapeText& rShape2DText,
 }
 
 static rtl::Reference<SvxShapeText> createSingleLabel(
-            const Reference< drawing::XShapes >& xTarget
+            const rtl::Reference< SvxShapeGroupAnyD >& xTarget
           , const awt::Point& rAnchorScreenPosition2D
           , const OUString& rLabel
           , const AxisLabelProperties& rAxisLabelProperties
@@ -699,7 +699,7 @@ sal_Int32 VCartesianAxis::getTextLevelCount() const
 }
 
 bool VCartesianAxis::createTextShapes(
-    const Reference<drawing::XShapes>& xTarget, TickIter& rTickIter,
+    const rtl::Reference< SvxShapeGroupAnyD >& xTarget, TickIter& rTickIter,
     AxisLabelProperties& rAxisLabelProperties, TickFactory2D const * 
pTickFactory,
     sal_Int32 nScreenDistanceBetweenTicks )
 {
@@ -946,7 +946,7 @@ bool VCartesianAxis::createTextShapes(
 }
 
 bool VCartesianAxis::createTextShapesSimple(
-    const Reference<drawing::XShapes>& xTarget, TickIter& rTickIter,
+    const rtl::Reference< SvxShapeGroupAnyD >& xTarget, TickIter& rTickIter,
     AxisLabelProperties& rAxisLabelProperties, TickFactory2D const * 
pTickFactory )
 {
     FixedNumberFormatter aFixedNumberFormatter(
diff --git a/chart2/source/view/axes/VCartesianAxis.hxx 
b/chart2/source/view/axes/VCartesianAxis.hxx
index 7474c38b6c49..94e9b2ab967a 100644
--- a/chart2/source/view/axes/VCartesianAxis.hxx
+++ b/chart2/source/view/axes/VCartesianAxis.hxx
@@ -117,7 +117,7 @@ private: //methods
      *         method once again to get the text shapes created.
      */
     bool createTextShapes(
-        const css::uno::Reference<css::drawing::XShapes >& xTarget,
+        const rtl::Reference< SvxShapeGroupAnyD >& xTarget,
         TickIter& rTickIter, AxisLabelProperties& rAxisLabelProperties,
         TickFactory2D const * pTickFactory, sal_Int32 
nScreenDistanceBetweenTicks );
 
@@ -127,7 +127,7 @@ private: //methods
      * are to be resolved only by adjusting the label tick interval.
      */
     bool createTextShapesSimple(
-        const css::uno::Reference<css::drawing::XShapes >& xTarget,
+        const rtl::Reference< SvxShapeGroupAnyD >& xTarget,
         TickIter& rTickIter, AxisLabelProperties& rAxisLabelProperties,
         TickFactory2D const * pTickFactory );
 
diff --git a/chart2/source/view/axes/VCartesianGrid.cxx 
b/chart2/source/view/axes/VCartesianGrid.cxx
index 277ad26fd625..93ebb6eb3e78 100644
--- a/chart2/source/view/axes/VCartesianGrid.cxx
+++ b/chart2/source/view/axes/VCartesianGrid.cxx
@@ -200,7 +200,7 @@ void VCartesianGrid::createShapes()
     //somehow equal to axis tickmarks
 
     //create named group shape
-    Reference< drawing::XShapes > xGroupShape_Shapes(
+    rtl::Reference< SvxShapeGroupAnyD > xGroupShape_Shapes(
         createGroupShape( m_xLogicTarget, m_aCID ) );
 
     if(!xGroupShape_Shapes.is())
@@ -231,14 +231,14 @@ void VCartesianGrid::createShapes()
         if( !aLinePropertiesList[nDepth].isLineVisible() )
             continue;
 
-        Reference< drawing::XShapes > xTarget( xGroupShape_Shapes );
+        rtl::Reference< SvxShapeGroupAnyD > xTarget( xGroupShape_Shapes );
         if( nDepth > 0 )
         {
-            xTarget.set( createGroupShape( m_xLogicTarget
+            xTarget = createGroupShape( m_xLogicTarget
                 , ObjectIdentifier::addChildParticle( m_aCID, 
ObjectIdentifier::createChildParticleWithIndex( OBJECTTYPE_SUBGRID, nDepth-1 ) )
-                ) );
+                );
             if(!xTarget.is())
-                xTarget.set( xGroupShape_Shapes );
+                xTarget = xGroupShape_Shapes;
         }
 
         if(m_nDimension==2)
diff --git a/chart2/source/view/axes/VCoordinateSystem.cxx 
b/chart2/source/view/axes/VCoordinateSystem.cxx
index 4ae45fd7c549..785bc955f602 100644
--- a/chart2/source/view/axes/VCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCoordinateSystem.cxx
@@ -83,10 +83,10 @@ VCoordinateSystem::~VCoordinateSystem()
 {
 }
 
-void VCoordinateSystem::initPlottingTargets(  const Reference< 
drawing::XShapes >& xLogicTarget
-       , const Reference< drawing::XShapes >& xFinalTarget
+void VCoordinateSystem::initPlottingTargets(  const rtl::Reference< 
SvxShapeGroupAnyD >& xLogicTarget
+       , const rtl::Reference< SvxShapeGroupAnyD >& xFinalTarget
        , const Reference< lang::XMultiServiceFactory >& xShapeFactory
-       , Reference< drawing::XShapes >& xLogicTargetForSeriesBehindAxis )
+       , rtl::Reference<SvxShapeGroupAnyD>& xLogicTargetForSeriesBehindAxis )
 {
     OSL_PRECOND(xLogicTarget.is()&&xFinalTarget.is()&&xShapeFactory.is(),"no 
proper initialization parameters");
     //is only allowed to be called once
diff --git a/chart2/source/view/axes/VPolarAngleAxis.cxx 
b/chart2/source/view/axes/VPolarAngleAxis.cxx
index 7bd037096984..fad802e107a8 100644
--- a/chart2/source/view/axes/VPolarAngleAxis.cxx
+++ b/chart2/source/view/axes/VPolarAngleAxis.cxx
@@ -47,7 +47,7 @@ VPolarAngleAxis::~VPolarAngleAxis()
 }
 
 void VPolarAngleAxis::createTextShapes_ForAngleAxis(
-                       const uno::Reference< drawing::XShapes >& xTarget
+                       const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                      , EquidistantTickIter& rTickIter
                      , AxisLabelProperties const & rAxisLabelProperties
                      , double fLogicRadius
diff --git a/chart2/source/view/axes/VPolarAngleAxis.hxx 
b/chart2/source/view/axes/VPolarAngleAxis.hxx
index 57ade3826cdb..0e0774e9ebc5 100644
--- a/chart2/source/view/axes/VPolarAngleAxis.hxx
+++ b/chart2/source/view/axes/VPolarAngleAxis.hxx
@@ -40,7 +40,7 @@ public:
 
 private: //methods
     void createTextShapes_ForAngleAxis(
-                       const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+                       const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                      , EquidistantTickIter& rTickIter
                      , AxisLabelProperties const & rAxisLabelProperties
                      , double fLogicRadius, double fLogicZ );
diff --git a/chart2/source/view/axes/VPolarGrid.cxx 
b/chart2/source/view/axes/VPolarGrid.cxx
index 79f3cb66d787..188042449c8f 100644
--- a/chart2/source/view/axes/VPolarGrid.cxx
+++ b/chart2/source/view/axes/VPolarGrid.cxx
@@ -154,13 +154,13 @@ void VPolarGrid::create2DAngleGrid( const Reference< 
drawing::XShapes >& xLogicT
 }
 #endif
 
-void VPolarGrid::create2DRadiusGrid( const Reference< drawing::XShapes >& 
xLogicTarget
+void VPolarGrid::create2DRadiusGrid( const rtl::Reference<SvxShapeGroupAnyD>& 
xLogicTarget
         , TickInfoArraysType& rRadiusTickInfos
         , TickInfoArraysType& rAngleTickInfos
         , const std::vector<VLineProperties>& rLinePropertiesList )
 {
-    Reference< drawing::XShapes > xMainTarget(
-        createGroupShape( xLogicTarget, m_aCID ) );
+    rtl::Reference<SvxShapeGroupAnyD> xMainTarget =
+        createGroupShape( xLogicTarget, m_aCID );
 
     const std::vector<ExplicitScaleData>& rScales = m_pPosHelper->getScales();
     const ExplicitScaleData&     rRadiusScale = rScales[1];
@@ -180,14 +180,14 @@ void VPolarGrid::create2DRadiusGrid( const Reference< 
drawing::XShapes >& xLogic
         if( !rLinePropertiesList[nDepth].isLineVisible() )
             continue;
 
-        Reference< drawing::XShapes > xTarget( xMainTarget );
+        rtl::Reference<SvxShapeGroupAnyD> xTarget( xMainTarget );
         if( nDepth > 0 )
         {
-            xTarget.set( createGroupShape( xLogicTarget
+            xTarget = createGroupShape( xLogicTarget
                 , ObjectIdentifier::addChildParticle( m_aCID, 
ObjectIdentifier::createChildParticleWithIndex( OBJECTTYPE_SUBGRID, nDepth-1 ) )
-                ) );
+                );
             if(!xTarget.is())
-                xTarget.set( xMainTarget );
+                xTarget = xMainTarget;
         }
 
         //create axis main lines
diff --git a/chart2/source/view/axes/VPolarGrid.hxx 
b/chart2/source/view/axes/VPolarGrid.hxx
index 304cdfe34b87..c5a9df7bb6e9 100644
--- a/chart2/source/view/axes/VPolarGrid.hxx
+++ b/chart2/source/view/axes/VPolarGrid.hxx
@@ -60,7 +60,7 @@ private: //member
 
     void getAllTickInfos( sal_Int32 nDimensionIndex, TickInfoArraysType& 
rAllTickInfos ) const;
 
-    void create2DRadiusGrid( const css::uno::Reference<css::drawing::XShapes>& 
xLogicTarget
+    void create2DRadiusGrid( const rtl::Reference<SvxShapeGroupAnyD>& 
xLogicTarget
                     , TickInfoArraysType& rRadiusTickInfos
                     , TickInfoArraysType& rAngleTickInfos
                     , const std::vector<VLineProperties>& rLinePropertiesList 
);
diff --git a/chart2/source/view/axes/VPolarRadiusAxis.cxx 
b/chart2/source/view/axes/VPolarRadiusAxis.cxx
index 0c3e2aaa4d80..04ed5b1d0273 100644
--- a/chart2/source/view/axes/VPolarRadiusAxis.cxx
+++ b/chart2/source/view/axes/VPolarRadiusAxis.cxx
@@ -62,8 +62,8 @@ void VPolarRadiusAxis::setExplicitScaleAndIncrement(
     m_apAxisWithLabels->setExplicitScaleAndIncrement( rScale, rIncrement );
 }
 
-void VPolarRadiusAxis::initPlotter(  const uno::Reference< drawing::XShapes >& 
xLogicTarget
-       , const uno::Reference< drawing::XShapes >& xFinalTarget
+void VPolarRadiusAxis::initPlotter(  const rtl::Reference<SvxShapeGroupAnyD>& 
xLogicTarget
+       , const rtl::Reference<SvxShapeGroupAnyD>& xFinalTarget
        , const uno::Reference< lang::XMultiServiceFactory >& xShapeFactory
        , const OUString& rCID )
 {
diff --git a/chart2/source/view/axes/VPolarRadiusAxis.hxx 
b/chart2/source/view/axes/VPolarRadiusAxis.hxx
index 3d69154cee07..36cc0b250c6b 100644
--- a/chart2/source/view/axes/VPolarRadiusAxis.hxx
+++ b/chart2/source/view/axes/VPolarRadiusAxis.hxx
@@ -35,8 +35,8 @@ public:
     virtual ~VPolarRadiusAxis() override;
 
     virtual void initPlotter(
-          const css::uno::Reference< css::drawing::XShapes >& xLogicTarget
-        , const css::uno::Reference< css::drawing::XShapes >& xFinalTarget
+          const rtl::Reference<SvxShapeGroupAnyD>& xLogicTarget
+        , const rtl::Reference<SvxShapeGroupAnyD>& xFinalTarget
         , const css::uno::Reference< css::lang::XMultiServiceFactory >& 
xFactory
         , const OUString& rCID
                 ) override;
diff --git a/chart2/source/view/charttypes/AreaChart.cxx 
b/chart2/source/view/charttypes/AreaChart.cxx
index d80a78d7f03f..f141d09a64e4 100644
--- a/chart2/source/view/charttypes/AreaChart.cxx
+++ b/chart2/source/view/charttypes/AreaChart.cxx
@@ -366,7 +366,7 @@ bool AreaChart::impl_createLine( VDataSeries* pSeries
                 , PlottingPositionHelper* pPosHelper )
 {
     //return true if a line was created successfully
-    uno::Reference< drawing::XShapes > xSeriesGroupShape_Shapes = 
getSeriesGroupShapeBackChild(pSeries, m_xSeriesTarget);
+    rtl::Reference<SvxShapeGroupAnyD> xSeriesGroupShape_Shapes = 
getSeriesGroupShapeBackChild(pSeries, m_xSeriesTarget);
 
     drawing::PolyPolygonShape3D aPoly;
     if(m_eCurveStyle==CurveStyle_CUBIC_SPLINES)
@@ -452,7 +452,7 @@ bool AreaChart::impl_createArea( VDataSeries* pSeries
 {
     //return true if an area was created successfully
 
-    uno::Reference< drawing::XShapes > xSeriesGroupShape_Shapes = 
getSeriesGroupShapeBackChild(pSeries, m_xSeriesTarget);
+    rtl::Reference<SvxShapeGroupAnyD> xSeriesGroupShape_Shapes = 
getSeriesGroupShapeBackChild(pSeries, m_xSeriesTarget);
     double zValue = pSeries->m_fLogicZPos;
 
     drawing::PolyPolygonShape3D aPoly( *pSeriesPoly );
@@ -694,7 +694,7 @@ void AreaChart::createShapes()
                 if(!pSeries)
                     continue;
 
-                uno::Reference< drawing::XShapes > xSeriesGroupShape_Shapes = 
getSeriesGroupShapeFrontChild(pSeries.get(), m_xSeriesTarget);
+                rtl::Reference<SvxShapeGroupAnyD> xSeriesGroupShape_Shapes = 
getSeriesGroupShapeFrontChild(pSeries.get(), m_xSeriesTarget);
 
                 sal_Int32 nAttachedAxisIndex = pSeries->getAttachedAxisIndex();
                 double fXMin, fXMax;
@@ -841,9 +841,9 @@ void AreaChart::createShapes()
                     //create a group shape for this point and add to the 
series shape:
                     OUString aPointCID = ObjectIdentifier::createPointCID(
                             pSeries->getPointCID_Stub(), nIndex );
-                    uno::Reference< drawing::XShapes > xPointGroupShape_Shapes(
+                    rtl::Reference<SvxShapeGroupAnyD> xPointGroupShape_Shapes(
                             
createGroupShape(xSeriesGroupShape_Shapes,aPointCID) );
-                    uno::Reference<drawing::XShape> xPointGroupShape_Shape( 
xPointGroupShape_Shapes, uno::UNO_QUERY );
+                    uno::Reference<drawing::XShape> xPointGroupShape_Shape( 
static_cast<cppu::OWeakObject*>(xPointGroupShape_Shapes.get()), uno::UNO_QUERY 
);
 
                     {
                         nCreatedPoints++;
diff --git a/chart2/source/view/charttypes/AreaChart.hxx 
b/chart2/source/view/charttypes/AreaChart.hxx
index 02bfd7255f4a..ce7bd7d2f965 100644
--- a/chart2/source/view/charttypes/AreaChart.hxx
+++ b/chart2/source/view/charttypes/AreaChart.hxx
@@ -76,10 +76,10 @@ private: //member
     sal_Int32                           m_nCurveResolution;
     sal_Int32                           m_nSplineOrder;
 
-    css::uno::Reference< css::drawing::XShapes > m_xSeriesTarget;
-    css::uno::Reference< css::drawing::XShapes > m_xErrorBarTarget;
-    css::uno::Reference< css::drawing::XShapes > m_xTextTarget;
-    css::uno::Reference< css::drawing::XShapes > 
m_xRegressionCurveEquationTarget;
+    rtl::Reference<SvxShapeGroupAnyD> m_xSeriesTarget;
+    rtl::Reference<SvxShapeGroupAnyD> m_xErrorBarTarget;
+    rtl::Reference<SvxShapeGroupAnyD> m_xTextTarget;
+    rtl::Reference<SvxShapeGroupAnyD> m_xRegressionCurveEquationTarget;
 };
 } //namespace chart
 
diff --git a/chart2/source/view/charttypes/BarChart.cxx 
b/chart2/source/view/charttypes/BarChart.cxx
index 285329033931..c7582f07eefc 100644
--- a/chart2/source/view/charttypes/BarChart.cxx
+++ b/chart2/source/view/charttypes/BarChart.cxx
@@ -297,7 +297,7 @@ awt::Point BarChart::getLabelScreenPositionAndAlignment(
 }
 
 rtl::Reference< SvxShape > BarChart::createDataPoint3D_Bar(
-          const uno::Reference< drawing::XShapes >& xTarget
+          const rtl::Reference<SvxShapeGroupAnyD>& xTarget
         , const drawing::Position3D& rPosition, const drawing::Direction3D& 
rSize
         , double fTopHeight, sal_Int32 nRotateZAngleHundredthDegree
         , const uno::Reference< beans::XPropertySet >& xObjectProperties
@@ -462,15 +462,12 @@ void BarChart::createShapes()
     //the regression curves should always be on top of the bars but beneath 
the text labels
     //to achieve this the regression curve target is created after the series 
target and before the text target
 
-    uno::Reference< drawing::XShapes > xSeriesTarget(
-        createGroupShape( m_xLogicTarget ));
-    uno::Reference< drawing::XShapes > xRegressionCurveTarget(
-        createGroupShape( m_xLogicTarget ));
-    uno::Reference< drawing::XShapes > xTextTarget(
-        ShapeFactory::createGroup2D( m_xFinalTarget ));
+    rtl::Reference<SvxShapeGroupAnyD> xSeriesTarget = createGroupShape( 
m_xLogicTarget );
+    rtl::Reference<SvxShapeGroupAnyD> xRegressionCurveTarget = 
createGroupShape( m_xLogicTarget );
+    rtl::Reference<SvxShapeGroupAnyD> xTextTarget = 
ShapeFactory::createGroup2D( m_xFinalTarget );
 
-    uno::Reference< drawing::XShapes > xRegressionCurveEquationTarget(
-        ShapeFactory::createGroup2D( m_xFinalTarget ));
+    rtl::Reference<SvxShapeGroupAnyD> xRegressionCurveEquationTarget =
+        ShapeFactory::createGroup2D( m_xFinalTarget );
     //check necessary here that different Y axis can not be stacked in the 
same group? ... hm?
 
     double fLogicZ        = 1.0;//as defined
@@ -628,8 +625,8 @@ void BarChart::createShapes()
                         bDrawConnectionLinesInited = true;
                     }
 
-                    uno::Reference<drawing::XShapes> 
xSeriesGroupShape_Shapes(getSeriesGroupShape(pSeries.get(), xSeriesTarget));
-                    uno::Reference<drawing::XShape>  
xSeriesGroupShape(xSeriesGroupShape_Shapes, uno::UNO_QUERY);
+                    rtl::Reference<SvxShapeGroupAnyD> 
xSeriesGroupShape_Shapes(getSeriesGroupShape(pSeries.get(), xSeriesTarget));
+                    uno::Reference<drawing::XShape>  
xSeriesGroupShape(static_cast<cppu::OWeakObject*>(xSeriesGroupShape_Shapes.get()),
 uno::UNO_QUERY);
                     // Suspend setting rects dirty for the duration of this 
call
                     aShapeSet.insert(xSeriesGroupShape);
                     E3dScene* pScene = lcl_getE3dScene(xSeriesGroupShape);
@@ -952,7 +949,7 @@ void BarChart::createShapes()
                     //transformation 3) -> 4)
                     pPosHelper->transformScaledLogicToScene( aPoly );
 
-                    uno::Reference< drawing::XShapes > 
xSeriesGroupShape_Shapes(
+                    rtl::Reference<SvxShapeGroupAnyD> xSeriesGroupShape_Shapes(
                         getSeriesGroupShape(pSeries.get(), xSeriesTarget) );
                     rtl::Reference<SvxShapePolyPolygon> xShape( 
ShapeFactory::createLine2D(
                         xSeriesGroupShape_Shapes, PolyToPointSequence( aPoly ) 
) );
diff --git a/chart2/source/view/charttypes/BarChart.hxx 
b/chart2/source/view/charttypes/BarChart.hxx
index 5e1ebee666d1..08eaeadab2e6 100644
--- a/chart2/source/view/charttypes/BarChart.hxx
+++ b/chart2/source/view/charttypes/BarChart.hxx
@@ -44,7 +44,7 @@ public:
 private: //methods
     static rtl::Reference< SvxShape >
         createDataPoint3D_Bar(
-                          const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+                          const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                         , const css::drawing::Position3D& rPosition
                         , const css::drawing::Direction3D& rSize
                         , double fTopHeight, sal_Int32 
nRotateZAngleHundredthDegree
diff --git a/chart2/source/view/charttypes/BubbleChart.cxx 
b/chart2/source/view/charttypes/BubbleChart.cxx
index 9c9755154406..782d91b9762c 100644
--- a/chart2/source/view/charttypes/BubbleChart.cxx
+++ b/chart2/source/view/charttypes/BubbleChart.cxx
@@ -169,8 +169,7 @@ void BubbleChart::createShapes()
 
     //therefore create an own group for the texts and the error bars to move 
them to front
     //(because the text group is created after the series group the texts are 
displayed on top)
-    uno::Reference< drawing::XShapes > xSeriesTarget(
-        createGroupShape( m_xLogicTarget ));
+    rtl::Reference<SvxShapeGroupAnyD> xSeriesTarget = createGroupShape( 
m_xLogicTarget );
     rtl::Reference< SvxShapeGroup > xTextTarget = ShapeFactory::createGroup2D( 
m_xFinalTarget );
 
     //update/create information for current group
@@ -208,7 +207,7 @@ void BubbleChart::createShapes()
                     bool bHasFillColorMapping = 
pSeries->hasPropertyMapping("FillColor");
                     bool bHasBorderColorMapping = 
pSeries->hasPropertyMapping("LineColor");
 
-                    uno::Reference< drawing::XShapes > 
xSeriesGroupShape_Shapes = getSeriesGroupShape(pSeries.get(), xSeriesTarget);
+                    rtl::Reference<SvxShapeGroupAnyD> xSeriesGroupShape_Shapes 
= getSeriesGroupShape(pSeries.get(), xSeriesTarget);
 
                     sal_Int32 nAttachedAxisIndex = 
pSeries->getAttachedAxisIndex();
                     PlottingPositionHelper& rPosHelper
@@ -262,9 +261,9 @@ void BubbleChart::createShapes()
                     //create a group shape for this point and add to the 
series shape:
                     OUString aPointCID = ObjectIdentifier::createPointCID(
                         pSeries->getPointCID_Stub(), nIndex );
-                    uno::Reference< drawing::XShapes > xPointGroupShape_Shapes(
+                    rtl::Reference<SvxShapeGroupAnyD> xPointGroupShape_Shapes(
                         createGroupShape(xSeriesGroupShape_Shapes,aPointCID) );
-                    uno::Reference<drawing::XShape> xPointGroupShape_Shape( 
xPointGroupShape_Shapes, uno::UNO_QUERY );
+                    uno::Reference<drawing::XShape> xPointGroupShape_Shape = 
xPointGroupShape_Shapes;
 
                     {
                         nCreatedPoints++;
diff --git a/chart2/source/view/charttypes/CandleStickChart.cxx 
b/chart2/source/view/charttypes/CandleStickChart.cxx
index cc34aac023e7..0c678ed744f3 100644
--- a/chart2/source/view/charttypes/CandleStickChart.cxx
+++ b/chart2/source/view/charttypes/CandleStickChart.cxx
@@ -86,14 +86,14 @@ void CandleStickChart::createShapes()
     //therefore create an own group for the texts to move them to front
     //(because the text group is created after the series group the texts are 
displayed on top)
 
-    uno::Reference< drawing::XShapes > xSeriesTarget(
-        createGroupShape( m_xLogicTarget ));
-    uno::Reference< drawing::XShapes > xLossTarget(
+    rtl::Reference<SvxShapeGroupAnyD> xSeriesTarget =
+        createGroupShape( m_xLogicTarget );
+    rtl::Reference<SvxShapeGroupAnyD> xLossTarget =
         createGroupShape( m_xLogicTarget, 
ObjectIdentifier::createClassifiedIdentifier(
-            OBJECTTYPE_DATA_STOCK_LOSS, u"" )));
-    uno::Reference< drawing::XShapes > xGainTarget(
+            OBJECTTYPE_DATA_STOCK_LOSS, u"" ));
+    rtl::Reference<SvxShapeGroupAnyD> xGainTarget =
         createGroupShape( m_xLogicTarget, 
ObjectIdentifier::createClassifiedIdentifier(
-            OBJECTTYPE_DATA_STOCK_GAIN, u"" )));
+            OBJECTTYPE_DATA_STOCK_GAIN, u"" ));
     rtl::Reference< SvxShapeGroup > xTextTarget =
         ShapeFactory::createGroup2D( m_xFinalTarget );
 
@@ -201,15 +201,15 @@ void CandleStickChart::createShapes()
                     drawing::Position3D aPosMiddleMinimum( 
pPosHelper->transformScaledLogicToScene( fScaledX, fScaledY_Min ,0 ,true ) );
                     drawing::Position3D aPosMiddleMaximum( 
pPosHelper->transformScaledLogicToScene( fScaledX, fScaledY_Max ,0 ,true ) );
 
-                    uno::Reference< drawing::XShapes > xLossGainTarget( 
xGainTarget );
+                    rtl::Reference<SvxShapeGroupAnyD> xLossGainTarget( 
xGainTarget );
                     if(bBlack)
                         xLossGainTarget = xLossTarget;
 
                     uno::Reference< beans::XPropertySet > xPointProp( 
pSeries->getPropertiesOfPoint( nIndex ));
-                    uno::Reference< drawing::XShapes > xPointGroupShape_Shapes;
+                    rtl::Reference<SvxShapeGroupAnyD> xPointGroupShape_Shapes;
                     {
                         OUString aPointCID = ObjectIdentifier::createPointCID( 
pSeries->getPointCID_Stub(), nIndex );
-                        uno::Reference< drawing::XShapes > 
xSeriesGroupShape_Shapes( getSeriesGroupShape(pSeries.get(), xSeriesTarget) );
+                        rtl::Reference<SvxShapeGroupAnyD> 
xSeriesGroupShape_Shapes( getSeriesGroupShape(pSeries.get(), xSeriesTarget) );
                         xPointGroupShape_Shapes = 
createGroupShape(xSeriesGroupShape_Shapes,aPointCID);
                     }
 
diff --git a/chart2/source/view/charttypes/NetChart.cxx 
b/chart2/source/view/charttypes/NetChart.cxx
index e721d158e17b..210843dce479 100644
--- a/chart2/source/view/charttypes/NetChart.cxx
+++ b/chart2/source/view/charttypes/NetChart.cxx
@@ -115,7 +115,7 @@ bool NetChart::impl_createLine( VDataSeries* pSeries
                 , PlottingPositionHelper const * pPosHelper )
 {
     //return true if a line was created successfully
-    uno::Reference< drawing::XShapes > xSeriesGroupShape_Shapes = 
getSeriesGroupShapeBackChild(pSeries, m_xSeriesTarget);
+    rtl::Reference<SvxShapeGroupAnyD> xSeriesGroupShape_Shapes = 
getSeriesGroupShapeBackChild(pSeries, m_xSeriesTarget);
 
     drawing::PolyPolygonShape3D aPoly;
     {
@@ -170,7 +170,7 @@ bool NetChart::impl_createArea( VDataSeries* pSeries
 {
     //return true if an area was created successfully
 
-    uno::Reference< drawing::XShapes > xSeriesGroupShape_Shapes = 
getSeriesGroupShapeBackChild(pSeries, m_xSeriesTarget);
+    rtl::Reference<SvxShapeGroupAnyD> xSeriesGroupShape_Shapes = 
getSeriesGroupShapeBackChild(pSeries, m_xSeriesTarget);
     double zValue = pSeries->m_fLogicZPos;
 
     drawing::PolyPolygonShape3D aPoly( *pSeriesPoly );
@@ -400,7 +400,7 @@ void NetChart::createShapes()
                     if( m_bArea && (rXSlot.m_aSeriesVector.size() == 1) && 
(nIndex >= pSeries->getTotalPointCount()) )
                         continue;
 
-                    uno::Reference< drawing::XShapes > 
xSeriesGroupShape_Shapes = getSeriesGroupShapeFrontChild(pSeries.get(), 
m_xSeriesTarget);
+                    rtl::Reference<SvxShapeGroupAnyD> xSeriesGroupShape_Shapes 
= getSeriesGroupShapeFrontChild(pSeries.get(), m_xSeriesTarget);
 
                     sal_Int32 nAttachedAxisIndex = 
pSeries->getAttachedAxisIndex();
                     m_pPosHelper = 
&getPlottingPositionHelper(nAttachedAxisIndex);
@@ -527,9 +527,9 @@ void NetChart::createShapes()
                     //create a group shape for this point and add to the 
series shape:
                     OUString aPointCID = ObjectIdentifier::createPointCID(
                         pSeries->getPointCID_Stub(), nIndex );
-                    uno::Reference< drawing::XShapes > xPointGroupShape_Shapes(
+                    rtl::Reference<SvxShapeGroupAnyD> xPointGroupShape_Shapes(
                         createGroupShape(xSeriesGroupShape_Shapes,aPointCID) );
-                    uno::Reference<drawing::XShape> xPointGroupShape_Shape( 
xPointGroupShape_Shapes, uno::UNO_QUERY );
+                    uno::Reference<drawing::XShape> xPointGroupShape_Shape( 
xPointGroupShape_Shapes );
 
                     {
                         //create data point
diff --git a/chart2/source/view/charttypes/NetChart.hxx 
b/chart2/source/view/charttypes/NetChart.hxx
index 04e39080a06b..4ab3432bb777 100644
--- a/chart2/source/view/charttypes/NetChart.hxx
+++ b/chart2/source/view/charttypes/NetChart.hxx
@@ -66,8 +66,8 @@ private: //member
     bool                                m_bArea;//false -> line or symbol only
     bool                                m_bLine;
 
-    css::uno::Reference< css::drawing::XShapes > m_xSeriesTarget;
-    css::uno::Reference< css::drawing::XShapes > m_xTextTarget;
+    rtl::Reference<SvxShapeGroupAnyD> m_xSeriesTarget;
+    rtl::Reference<SvxShapeGroupAnyD> m_xTextTarget;
 };
 } //namespace chart
 
diff --git a/chart2/source/view/charttypes/PieChart.cxx 
b/chart2/source/view/charttypes/PieChart.cxx
index 2a60740a75ff..9acf1e961fb7 100644
--- a/chart2/source/view/charttypes/PieChart.cxx
+++ b/chart2/source/view/charttypes/PieChart.cxx
@@ -248,7 +248,7 @@ bool PieChart::shouldSnapRectToUsedArea()
 }
 
 rtl::Reference<SvxShape> PieChart::createDataPoint(
-    const uno::Reference<drawing::XShapes>& xTarget,
+    const rtl::Reference<SvxShapeGroupAnyD>& xTarget,
     const uno::Reference<beans::XPropertySet>& xObjectProperties,
     tPropertyNameValueMap const * pOverwritePropertiesMap,
     const ShapeParam& rParam )
@@ -286,7 +286,7 @@ rtl::Reference<SvxShape> PieChart::createDataPoint(
 }
 
 void PieChart::createTextLabelShape(
-    const uno::Reference<drawing::XShapes>& xTextTarget,
+    const rtl::Reference<SvxShapeGroupAnyD>& xTextTarget,
     VDataSeries& rSeries, sal_Int32 nPointIndex, ShapeParam& rParam )
 {
     if (!rSeries.getDataPointLabelIfLabel(nPointIndex))
@@ -672,8 +672,7 @@ void PieChart::createShapes()
     ///therefore create an own group for the texts to move them to front
     ///(because the text group is created after the series group the texts are
     ///displayed on top)
-    uno::Reference< drawing::XShapes > xSeriesTarget(
-        createGroupShape( m_xLogicTarget ));
+    rtl::Reference<SvxShapeGroupAnyD> xSeriesTarget = createGroupShape( 
m_xLogicTarget );
     rtl::Reference<SvxShapeGroup> xTextTarget = ShapeFactory::createGroup2D( 
m_xFinalTarget );
     //check necessary here that different Y axis can not be stacked in the 
same group? ... hm?
 
@@ -778,7 +777,7 @@ void PieChart::createShapes()
 
             aParam.mfDepth  = getTransformedDepth() * (n3DRelativeHeight / 
100.0);
 
-            uno::Reference< drawing::XShapes > xSeriesGroupShape_Shapes = 
getSeriesGroupShape(pSeries, xSeriesTarget);
+            rtl::Reference<SvxShapeGroupAnyD> xSeriesGroupShape_Shapes = 
getSeriesGroupShape(pSeries, xSeriesTarget);
             ///collect data point information (logic coordinates, style ):
             double fLogicYValue = fabs(pSeries->getYValue( nPointIndex ));
             if( std::isnan(fLogicYValue) )
diff --git a/chart2/source/view/charttypes/PieChart.hxx 
b/chart2/source/view/charttypes/PieChart.hxx
index 43725639e1e2..2f57b118b089 100644
--- a/chart2/source/view/charttypes/PieChart.hxx
+++ b/chart2/source/view/charttypes/PieChart.hxx
@@ -65,7 +65,7 @@ public:
 private: //methods
     rtl::Reference<SvxShape>
         createDataPoint(
-            const css::uno::Reference<css::drawing::XShapes>& xTarget,
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget,
             const css::uno::Reference<css::beans::XPropertySet>& 
xObjectProperties,
             tPropertyNameValueMap const * pOverWritePropertiesMap,
             const ShapeParam& rParam );
@@ -82,7 +82,7 @@ private: //methods
      *      ShapeParam object.
      */
     void createTextLabelShape(
-        const css::uno::Reference<css::drawing::XShapes>& xTextTarget,
+        const rtl::Reference<SvxShapeGroupAnyD>& xTextTarget,
         VDataSeries& rSeries, sal_Int32 nPointIndex, ShapeParam& rParam );
 
     /** This method sets `m_fMaxOffset` to the maximum `Offset` property and
@@ -129,7 +129,7 @@ private: //member
         bool bMovementAllowed;
         bool bMoved;
         bool bShowLeaderLine;
-        css::uno::Reference< css::drawing::XShapes > xTextTarget;
+        rtl::Reference<SvxShapeGroupAnyD> xTextTarget;
         PieLabelInfo* pPrevious;
         PieLabelInfo* pNext;
         css::awt::Point aPreviousPosition;
diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx 
b/chart2/source/view/charttypes/VSeriesPlotter.cxx
index d6d71f2836d9..92f6b2144184 100644
--- a/chart2/source/view/charttypes/VSeriesPlotter.cxx
+++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx
@@ -271,53 +271,45 @@ void VSeriesPlotter::releaseShapes()
     }
 }
 
-uno::Reference< drawing::XShapes > VSeriesPlotter::getSeriesGroupShape( 
VDataSeries* pDataSeries
-                                        , const uno::Reference< 
drawing::XShapes >& xTarget )
+rtl::Reference<SvxShapeGroupAnyD> VSeriesPlotter::getSeriesGroupShape( 
VDataSeries* pDataSeries
+                                        , const 
rtl::Reference<SvxShapeGroupAnyD>& xTarget )
 {
-    uno::Reference< drawing::XShapes > xShapes( pDataSeries->m_xGroupShape );
-    if( !xShapes.is() )
-    {
+    if( !pDataSeries->m_xGroupShape )
         //create a group shape for this series and add to logic target:
-        xShapes = createGroupShape( xTarget,pDataSeries->getCID() );
-        pDataSeries->m_xGroupShape = xShapes;
-    }
-    return xShapes;
+        pDataSeries->m_xGroupShape = createGroupShape( 
xTarget,pDataSeries->getCID() );
+    return pDataSeries->m_xGroupShape;
 }
 
-uno::Reference< drawing::XShapes > 
VSeriesPlotter::getSeriesGroupShapeFrontChild( VDataSeries* pDataSeries
-                                        , const uno::Reference< 
drawing::XShapes >& xTarget )
+rtl::Reference<SvxShapeGroupAnyD> 
VSeriesPlotter::getSeriesGroupShapeFrontChild( VDataSeries* pDataSeries
+                                        , const 
rtl::Reference<SvxShapeGroupAnyD>& xTarget )
 {
-    uno::Reference< drawing::XShapes > xShapes( 
pDataSeries->m_xFrontSubGroupShape );
-    if(!xShapes.is())
+    if(!pDataSeries->m_xFrontSubGroupShape)
     {
         //ensure that the series group shape is already created
-        uno::Reference< drawing::XShapes > xSeriesShapes( getSeriesGroupShape( 
pDataSeries, xTarget ) );
+        rtl::Reference<SvxShapeGroupAnyD> xSeriesShapes( getSeriesGroupShape( 
pDataSeries, xTarget ) );
         //ensure that the back child is created first
         getSeriesGroupShapeBackChild( pDataSeries, xTarget );
         //use series group shape as parent for the new created front group 
shape
-        xShapes = createGroupShape( xSeriesShapes );
-        pDataSeries->m_xFrontSubGroupShape = xShapes;
+        pDataSeries->m_xFrontSubGroupShape = createGroupShape( xSeriesShapes );
     }
-    return xShapes;
+    return pDataSeries->m_xFrontSubGroupShape;
 }
 
-uno::Reference< drawing::XShapes > 
VSeriesPlotter::getSeriesGroupShapeBackChild( VDataSeries* pDataSeries
-                                        , const uno::Reference< 
drawing::XShapes >& xTarget )
+rtl::Reference<SvxShapeGroupAnyD> 
VSeriesPlotter::getSeriesGroupShapeBackChild( VDataSeries* pDataSeries
+                                        , const 
rtl::Reference<SvxShapeGroupAnyD>& xTarget )
 {
-    uno::Reference< drawing::XShapes > xShapes( 
pDataSeries->m_xBackSubGroupShape );
-    if(!xShapes.is())
+    if(!pDataSeries->m_xBackSubGroupShape)
     {
         //ensure that the series group shape is already created
-        uno::Reference< drawing::XShapes > xSeriesShapes( getSeriesGroupShape( 
pDataSeries, xTarget ) );
+        rtl::Reference<SvxShapeGroupAnyD> xSeriesShapes( getSeriesGroupShape( 
pDataSeries, xTarget ) );
         //use series group shape as parent for the new created back group shape
-        xShapes = createGroupShape( xSeriesShapes );
-        pDataSeries->m_xBackSubGroupShape = xShapes;
+        pDataSeries->m_xBackSubGroupShape = createGroupShape( xSeriesShapes );
     }
-    return xShapes;
+    return pDataSeries->m_xBackSubGroupShape;
 }
 
 rtl::Reference<SvxShapeGroup> VSeriesPlotter::getLabelsGroupShape( 
VDataSeries& rDataSeries
-                                        , const uno::Reference< 
drawing::XShapes >& xTextTarget )
+                                        , const 
rtl::Reference<SvxShapeGroupAnyD>& xTextTarget )
 {
     //xTextTarget needs to be a 2D shape container always!
     if(!rDataSeries.m_xLabelsGroupShape)
@@ -328,21 +320,19 @@ rtl::Reference<SvxShapeGroup> 
VSeriesPlotter::getLabelsGroupShape( VDataSeries&
     return rDataSeries.m_xLabelsGroupShape;
 }
 
-uno::Reference< drawing::XShapes > VSeriesPlotter::getErrorBarsGroupShape( 
VDataSeries& rDataSeries
-                                        , const uno::Reference< 
drawing::XShapes >& xTarget
+rtl::Reference<SvxShapeGroupAnyD> VSeriesPlotter::getErrorBarsGroupShape( 
VDataSeries& rDataSeries
+                                        , const 
rtl::Reference<SvxShapeGroupAnyD>& xTarget
                                         , bool bYError )
 {
-    uno::Reference< css::drawing::XShapes > &rShapeGroup =
+    rtl::Reference<SvxShapeGroupAnyD> &rShapeGroup =
             bYError ? rDataSeries.m_xErrorYBarsGroupShape : 
rDataSeries.m_xErrorXBarsGroupShape;
 
-    uno::Reference< drawing::XShapes > xShapes( rShapeGroup );
-    if(!xShapes.is())
+    if(!rShapeGroup)
     {
         //create a group shape for this series and add to logic target:
-        xShapes = createGroupShape( 
xTarget,rDataSeries.getErrorBarsCID(bYError) );
-        rShapeGroup = xShapes;
+        rShapeGroup = createGroupShape( 
xTarget,rDataSeries.getErrorBarsCID(bYError) );
     }
-    return xShapes;
+    return rShapeGroup;
 
 }
 
@@ -389,7 +379,7 @@ OUString VSeriesPlotter::getLabelTextForValue( VDataSeries 
const & rDataSeries
     return aNumber;
 }
 
-rtl::Reference<SvxShapeText> VSeriesPlotter::createDataLabel( const 
uno::Reference< drawing::XShapes >& xTarget
+rtl::Reference<SvxShapeText> VSeriesPlotter::createDataLabel( const 
rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , VDataSeries& rDataSeries
                     , sal_Int32 nPointIndex
                     , double fValue
@@ -466,9 +456,9 @@ rtl::Reference<SvxShapeText> 
VSeriesPlotter::createDataLabel( const uno::Referen
             awt::Size aMaxSymbolExtent( nSymbolWidth, nSymbolHeight );
 
             if( rDataSeries.isVaryColorsByPoint() )
-                xSymbol = VSeriesPlotter::createLegendSymbolForPoint( 
aMaxSymbolExtent, rDataSeries, nPointIndex, xTarget_, m_xShapeFactory );
+                xSymbol = VSeriesPlotter::createLegendSymbolForPoint( 
aMaxSymbolExtent, rDataSeries, nPointIndex, xTarget_ );
             else
-                xSymbol = VSeriesPlotter::createLegendSymbolForSeries( 
aMaxSymbolExtent, rDataSeries, xTarget_, m_xShapeFactory );
+                xSymbol = VSeriesPlotter::createLegendSymbolForSeries( 
aMaxSymbolExtent, rDataSeries, xTarget_ );
         }
 
         //prepare text
@@ -949,7 +939,7 @@ drawing::Position3D lcl_transformMixedToScene( 
PlottingPositionHelper const * pP
 } // anonymous namespace
 
 void VSeriesPlotter::createErrorBar(
-      const uno::Reference< drawing::XShapes >& xTarget
+      const rtl::Reference<SvxShapeGroupAnyD>& xTarget
     , const drawing::Position3D& rUnscaledLogicPosition
     , const uno::Reference< beans::XPropertySet > & xErrorBarProperties
     , const VDataSeries& rVDataSeries
@@ -1095,7 +1085,7 @@ void VSeriesPlotter::createErrorBar(
 void VSeriesPlotter::addErrorBorder(
       const drawing::Position3D& rPos0
      ,const drawing::Position3D& rPos1
-     ,const uno::Reference< drawing::XShapes >& rTarget
+     ,const rtl::Reference<SvxShapeGroupAnyD>& rTarget
      ,const uno::Reference< beans::XPropertySet >& rErrorBorderProp )
 {
     drawing::PolyPolygonShape3D aPoly;
@@ -1112,7 +1102,7 @@ void VSeriesPlotter::createErrorRectangle(
       const drawing::Position3D& rUnscaledLogicPosition
      ,VDataSeries& rVDataSeries
      ,sal_Int32 nIndex
-     ,const uno::Reference< drawing::XShapes >& rTarget
+     ,const rtl::Reference<SvxShapeGroupAnyD>& rTarget
      ,bool bUseXErrorData
      ,bool bUseYErrorData )
 {
@@ -1127,8 +1117,8 @@ void VSeriesPlotter::createErrorRectangle(
         if ( !xErrorBorderPropX.is() )
             return;
     }
-    uno::Reference< drawing::XShapes > xErrorBorder_ShapesX(
-        getErrorBarsGroupShape( rVDataSeries, rTarget, false ) );
+    rtl::Reference<SvxShapeGroupAnyD> xErrorBorder_ShapesX =
+        getErrorBarsGroupShape( rVDataSeries, rTarget, false );
 
     if ( bUseYErrorData )
     {
@@ -1136,8 +1126,8 @@ void VSeriesPlotter::createErrorRectangle(
         if ( !xErrorBorderPropY.is() )
             return;
     }
-    uno::Reference< drawing::XShapes > xErrorBorder_ShapesY(
-        getErrorBarsGroupShape( rVDataSeries, rTarget, true ) );
+    rtl::Reference<SvxShapeGroupAnyD> xErrorBorder_ShapesY =
+        getErrorBarsGroupShape( rVDataSeries, rTarget, true );
 
     if( !ChartTypeHelper::isSupportingStatisticProperties( m_xChartTypeModel, 
m_nDimension ) )
         return;
@@ -1255,7 +1245,7 @@ void VSeriesPlotter::createErrorRectangle(
 
 void VSeriesPlotter::createErrorBar_X( const drawing::Position3D& 
rUnscaledLogicPosition
                             , VDataSeries& rVDataSeries, sal_Int32 nPointIndex
-                            , const uno::Reference< drawing::XShapes >& 
xTarget )
+                            , const rtl::Reference<SvxShapeGroupAnyD>& xTarget 
)
 {
     if(m_nDimension!=2)
         return;
@@ -1263,8 +1253,8 @@ void VSeriesPlotter::createErrorBar_X( const 
drawing::Position3D& rUnscaledLogic
     uno::Reference< beans::XPropertySet > 
xErrorBarProp(rVDataSeries.getXErrorBarProperties(nPointIndex));
     if( xErrorBarProp.is())
     {
-        uno::Reference< drawing::XShapes > xErrorBarsGroup_Shapes(
-            getErrorBarsGroupShape(rVDataSeries, xTarget, false) );
+        rtl::Reference<SvxShapeGroupAnyD> xErrorBarsGroup_Shapes =
+            getErrorBarsGroupShape(rVDataSeries, xTarget, false);
 
         createErrorBar( xErrorBarsGroup_Shapes
             , rUnscaledLogicPosition, xErrorBarProp
@@ -1276,7 +1266,7 @@ void VSeriesPlotter::createErrorBar_X( const 
drawing::Position3D& rUnscaledLogic
 
 void VSeriesPlotter::createErrorBar_Y( const drawing::Position3D& 
rUnscaledLogicPosition
                             , VDataSeries& rVDataSeries, sal_Int32 nPointIndex
-                            , const uno::Reference< drawing::XShapes >& xTarget
+                            , const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                             , double const * pfScaledLogicX )
 {
     if(m_nDimension!=2)
@@ -1285,8 +1275,8 @@ void VSeriesPlotter::createErrorBar_Y( const 
drawing::Position3D& rUnscaledLogic
     uno::Reference< beans::XPropertySet > 
xErrorBarProp(rVDataSeries.getYErrorBarProperties(nPointIndex));
     if( xErrorBarProp.is())
     {
-        uno::Reference< drawing::XShapes > xErrorBarsGroup_Shapes(
-            getErrorBarsGroupShape(rVDataSeries, xTarget, true) );
+        rtl::Reference<SvxShapeGroupAnyD> xErrorBarsGroup_Shapes =
+            getErrorBarsGroupShape(rVDataSeries, xTarget, true);
 
         createErrorBar( xErrorBarsGroup_Shapes
             , rUnscaledLogicPosition, xErrorBarProp
@@ -1297,8 +1287,8 @@ void VSeriesPlotter::createErrorBar_Y( const 
drawing::Position3D& rUnscaledLogic
 }
 
 void VSeriesPlotter::createRegressionCurvesShapes( VDataSeries const & 
rVDataSeries,
-                            const uno::Reference< drawing::XShapes >& xTarget,
-                            const uno::Reference< drawing::XShapes >& 
xEquationTarget,
+                            const rtl::Reference<SvxShapeGroupAnyD>& xTarget,
+                            const rtl::Reference<SvxShapeGroupAnyD>& 
xEquationTarget,
                             bool bMaySkipPoints )
 {
     if(m_nDimension!=2)
@@ -1434,7 +1424,7 @@ void VSeriesPlotter::createRegressionCurvesShapes( 
VDataSeries const & rVDataSer
             aVLineProperties.initFromPropertySet( xProperties );
 
             //create an extra group shape for each curve for selection handling
-            uno::Reference< drawing::XShapes > xRegressionGroupShapes =
+            rtl::Reference<SvxShapeGroupAnyD> xRegressionGroupShapes =
                 createGroupShape( xTarget, rVDataSeries.getDataCurveCID( nN, 
bAverageLine ) );
             rtl::Reference<SvxShapePolyPolygon> xShape = 
ShapeFactory::createLine2D(
                 xRegressionGroupShapes, PolyToPointSequence( aRegressionPoly 
), &aVLineProperties );
@@ -1476,7 +1466,7 @@ static sal_Int32 lcl_getOUStringMaxLineLength ( 
OUStringBuffer const & aString )
 void VSeriesPlotter::createRegressionCurveEquationShapes(
     const OUString & rEquationCID,
     const uno::Reference< beans::XPropertySet > & xEquationProperties,
-    const uno::Reference< drawing::XShapes >& xEquationTarget,
+    const rtl::Reference<SvxShapeGroupAnyD>& xEquationTarget,
     const uno::Reference< chart2::XRegressionCurveCalculator > & 
xRegressionCurveCalculator,
     awt::Point aDefaultPos )
 {
@@ -2372,7 +2362,7 @@ std::vector< ViewLegendEntry > 
VSeriesPlotter::createLegendEntries(
               const awt::Size& rEntryKeyAspectRatio
             , LegendPosition eLegendPosition
             , const Reference< beans::XPropertySet >& xTextProperties
-            , const Reference< drawing::XShapes >& xTarget
+            , const rtl::Reference<SvxShapeGroupAnyD>& xTarget
             , const Reference< lang::XMultiServiceFactory >& xShapeFactory
             , const Reference< uno::XComponentContext >& xContext
             , ChartModel& rModel
@@ -2565,8 +2555,7 @@ uno::Any VSeriesPlotter::getExplicitSymbol( const 
VDataSeries& /*rSeries*/, sal_
 rtl::Reference<SvxShapeGroup> VSeriesPlotter::createLegendSymbolForSeries(
                   const awt::Size& rEntryKeyAspectRatio
                 , const VDataSeries& rSeries
-                , const Reference< drawing::XShapes >& xTarget
-                , const Reference< lang::XMultiServiceFactory >& xShapeFactory 
)
+                , const rtl::Reference<SvxShapeGroupAnyD>& xTarget )
 {
 
     LegendSymbolStyle eLegendSymbolStyle = getLegendSymbolStyle();
@@ -2586,8 +2575,8 @@ rtl::Reference<SvxShapeGroup> 
VSeriesPlotter::createLegendSymbolForSeries(
             break;
     }
     rtl::Reference<SvxShapeGroup> xShape = VLegendSymbolFactory::createSymbol( 
rEntryKeyAspectRatio,
-        xTarget, eLegendSymbolStyle, xShapeFactory
-            , rSeries.getPropertiesOfSeries(), ePropType, aExplicitSymbol );
+        xTarget, eLegendSymbolStyle,
+        rSeries.getPropertiesOfSeries(), ePropType, aExplicitSymbol );
 
     return xShape;
 }
@@ -2596,8 +2585,7 @@ rtl::Reference< SvxShapeGroup > 
VSeriesPlotter::createLegendSymbolForPoint(
                   const awt::Size& rEntryKeyAspectRatio
                 , const VDataSeries& rSeries
                 , sal_Int32 nPointIndex
-                , const Reference< drawing::XShapes >& xTarget
-                , const Reference< lang::XMultiServiceFactory >& xShapeFactory 
)
+                , const rtl::Reference<SvxShapeGroupAnyD>& xTarget )
 {
 
     LegendSymbolStyle eLegendSymbolStyle = getLegendSymbolStyle();
@@ -2642,7 +2630,7 @@ rtl::Reference< SvxShapeGroup > 
VSeriesPlotter::createLegendSymbolForPoint(
     }
 
     rtl::Reference< SvxShapeGroup > xShape = 
VLegendSymbolFactory::createSymbol( rEntryKeyAspectRatio,
-        xTarget, eLegendSymbolStyle, xShapeFactory, xPointSet, ePropType, 
aExplicitSymbol );
+        xTarget, eLegendSymbolStyle, xPointSet, ePropType, aExplicitSymbol );
 
     return xShape;
 }
@@ -2651,7 +2639,7 @@ std::vector< ViewLegendEntry > 
VSeriesPlotter::createLegendEntriesForSeries(
               const awt::Size& rEntryKeyAspectRatio
             , const VDataSeries& rSeries
             , const Reference< beans::XPropertySet >& xTextProperties
-            , const Reference< drawing::XShapes >& xTarget
+            , const rtl::Reference<SvxShapeGroupAnyD>& xTarget
             , const Reference< lang::XMultiServiceFactory >& xShapeFactory
             , const Reference< uno::XComponentContext >& xContext
             )
@@ -2713,7 +2701,7 @@ std::vector< ViewLegendEntry > 
VSeriesPlotter::createLegendEntriesForSeries(
 
                 // create the symbol
                 rtl::Reference< SvxShapeGroup > xShape = 
createLegendSymbolForPoint( rEntryKeyAspectRatio,
-                    rSeries, nIdx, xSymbolGroup, xShapeFactory );
+                    rSeries, nIdx, xSymbolGroup );
 
                 // set CID to symbol for selection
                 if( xShape.is() )
@@ -2742,7 +2730,7 @@ std::vector< ViewLegendEntry > 
VSeriesPlotter::createLegendEntriesForSeries(
 
             // create the symbol
             rtl::Reference<SvxShapeGroup> xShape = createLegendSymbolForSeries(
-                rEntryKeyAspectRatio, rSeries, xSymbolGroup, xShapeFactory );
+                rEntryKeyAspectRatio, rSeries, xSymbolGroup );
 
             // set CID to symbol for selection
             if( xShape.is())
@@ -2785,7 +2773,7 @@ std::vector< ViewLegendEntry > 
VSeriesPlotter::createLegendEntriesForSeries(
 
                     // create the symbol
                     rtl::Reference<SvxShapeGroup> xShape = 
VLegendSymbolFactory::createSymbol( rEntryKeyAspectRatio,
-                        xSymbolGroup, LegendSymbolStyle::Line, xShapeFactory,
+                        xSymbolGroup, LegendSymbolStyle::Line,
                         Reference< beans::XPropertySet >( aCurves[i], 
uno::UNO_QUERY ),
                         VLegendSymbolFactory::PropertyType::Line, uno::Any() );
 
diff --git a/chart2/source/view/diagram/VDiagram.cxx 
b/chart2/source/view/diagram/VDiagram.cxx
index a4296c3ff331..871e2fbab29c 100644
--- a/chart2/source/view/diagram/VDiagram.cxx
+++ b/chart2/source/view/diagram/VDiagram.cxx
@@ -75,7 +75,7 @@ VDiagram::~VDiagram()
 }
 
 void VDiagram::init(
-    const uno::Reference< drawing::XShapes >& xTarget, const uno::Reference< 
lang::XMultiServiceFactory >& xFactory )
+    const rtl::Reference<SvxShapeGroupAnyD>& xTarget, const uno::Reference< 
lang::XMultiServiceFactory >& xFactory )
 {
     OSL_PRECOND(xFactory.is(), "no proper initialization parameters");
 
@@ -142,16 +142,13 @@ void VDiagram::createShapes_2d()
         return;
 
     //create group shape
-    uno::Reference< drawing::XShapes > xOuterGroup_Shapes = 
ShapeFactory::createGroup2D(m_xTarget);
-    m_xOuterGroupShape.set( xOuterGroup_Shapes, uno::UNO_QUERY );
+    rtl::Reference<SvxShapeGroupAnyD> xOuterGroup_Shapes = 
ShapeFactory::createGroup2D(m_xTarget);
+    m_xOuterGroupShape = xOuterGroup_Shapes;
 
-    uno::Reference< drawing::XShapes > xGroupForWall( 
ShapeFactory::createGroup2D(xOuterGroup_Shapes,"PlotAreaExcludingAxes") );
+    rtl::Reference<SvxShapeGroupAnyD> xGroupForWall( 
ShapeFactory::createGroup2D(xOuterGroup_Shapes,"PlotAreaExcludingAxes") );
 
     //create independent group shape as container for datapoints and such 
things
-    {
-        uno::Reference< drawing::XShapes > xShapes = 
ShapeFactory::createGroup2D(xOuterGroup_Shapes,"testonly;CooContainer=XXX_CID");
-        m_xCoordinateRegionShape.set( xShapes, uno::UNO_QUERY );
-    }
+    m_xCoordinateRegionShape = 
ShapeFactory::createGroup2D(xOuterGroup_Shapes,"testonly;CooContainer=XXX_CID");
 
     bool bAddFloorAndWall = DiagramHelper::isSupportingFloorAndWall( 
m_xDiagram );
 
@@ -449,14 +446,14 @@ void VDiagram::createShapes_3d()
 
     //create shape
     rtl::Reference<Svx3DSceneObject> xShapes = ShapeFactory::createGroup3D( 
m_xTarget, "PlotAreaExcludingAxes" );
-    m_xOuterGroupShape.set( static_cast<cppu::OWeakObject*>(xShapes.get()), 
uno::UNO_QUERY);
+    m_xOuterGroupShape = xShapes;
 
-    uno::Reference< drawing::XShapes > xOuterGroup_Shapes( m_xOuterGroupShape, 
uno::UNO_QUERY );
+    rtl::Reference<SvxShapeGroupAnyD> xOuterGroup_Shapes = m_xOuterGroupShape;
 
     //create additional group to manipulate the aspect ratio of the whole 
diagram:
     xOuterGroup_Shapes = ShapeFactory::createGroup3D( xOuterGroup_Shapes );
 
-    m_xAspectRatio3D.set( xOuterGroup_Shapes, uno::UNO_QUERY );
+    m_xAspectRatio3D = xOuterGroup_Shapes;
 
     bool bAddFloorAndWall = DiagramHelper::isSupportingFloorAndWall( 
m_xDiagram );
 
@@ -537,27 +534,26 @@ void VDiagram::createShapes_3d()
     try
     {
         uno::Reference< beans::XPropertySet > xSourceProp( m_xDiagram, 
uno::UNO_QUERY_THROW );
-        uno::Reference< beans::XPropertySet > xDestProp( m_xOuterGroupShape, 
uno::UNO_QUERY_THROW );
 
         //perspective
         {
             //ignore distance and focal length from file format and model 
completely
             //use vrp only to indicate the distance of the camera and thus 
influence the perspective
-            xDestProp->setPropertyValue( UNO_NAME_3D_SCENE_DISTANCE, uno::Any(
+            m_xOuterGroupShape->setPropertyValue( UNO_NAME_3D_SCENE_DISTANCE, 
uno::Any(
                                         
static_cast<sal_Int32>(ThreeDHelper::getCameraDistance( xSourceProp ))));
-            xDestProp->setPropertyValue( UNO_NAME_3D_SCENE_PERSPECTIVE,
+            m_xOuterGroupShape->setPropertyValue( 
UNO_NAME_3D_SCENE_PERSPECTIVE,
                                         xSourceProp->getPropertyValue( 
UNO_NAME_3D_SCENE_PERSPECTIVE));
         }
 
         //light
         {
-            xDestProp->setPropertyValue( UNO_NAME_3D_SCENE_SHADE_MODE,
+            m_xOuterGroupShape->setPropertyValue( UNO_NAME_3D_SCENE_SHADE_MODE,
                                         xSourceProp->getPropertyValue( 
UNO_NAME_3D_SCENE_SHADE_MODE));
-            xDestProp->setPropertyValue( UNO_NAME_3D_SCENE_AMBIENTCOLOR,
+            m_xOuterGroupShape->setPropertyValue( 
UNO_NAME_3D_SCENE_AMBIENTCOLOR,
                                         xSourceProp->getPropertyValue( 
UNO_NAME_3D_SCENE_AMBIENTCOLOR));
-            xDestProp->setPropertyValue( UNO_NAME_3D_SCENE_TWO_SIDED_LIGHTING,
+            m_xOuterGroupShape->setPropertyValue( 
UNO_NAME_3D_SCENE_TWO_SIDED_LIGHTING,
                                         xSourceProp->getPropertyValue( 
UNO_NAME_3D_SCENE_TWO_SIDED_LIGHTING));
-            lcl_setLightSources( xSourceProp, xDestProp );
+            lcl_setLightSources( xSourceProp, m_xOuterGroupShape );
         }
 
         //rotation
@@ -577,7 +573,7 @@ void VDiagram::createShapes_3d()
             //#i98497# 3D charts are rendered with wrong size
             E3DModifySceneSnapRectUpdater 
aUpdater(lcl_getE3dScene(m_xOuterGroupShape));
 
-            xDestProp->setPropertyValue( UNO_NAME_3D_TRANSFORM_MATRIX,
+            m_xOuterGroupShape->setPropertyValue( UNO_NAME_3D_TRANSFORM_MATRIX,
                     uno::Any( BaseGFXHelper::B3DHomMatrixToHomogenMatrix( 
aEffectiveTransformation ) ) );
         }
     }
@@ -618,7 +614,7 @@ void VDiagram::createShapes_3d()
     //create an additional scene for the smaller inner coordinate region:
     {
         rtl::Reference<Svx3DSceneObject> xShapes2 = 
ShapeFactory::createGroup3D( xOuterGroup_Shapes,"testonly;CooContainer=XXX_CID" 
);
-        m_xCoordinateRegionShape.set( 
static_cast<cppu::OWeakObject*>(xShapes2.get()), uno::UNO_QUERY );
+        m_xCoordinateRegionShape = xShapes2;
 
         try
         {
diff --git a/chart2/source/view/inc/LabelPositionHelper.hxx 
b/chart2/source/view/inc/LabelPositionHelper.hxx
index 811d8c13be24..ee1c7c8f0105 100644
--- a/chart2/source/view/inc/LabelPositionHelper.hxx
+++ b/chart2/source/view/inc/LabelPositionHelper.hxx
@@ -22,6 +22,8 @@
 #include "LabelAlignment.hxx"
 #include "PropertyMapper.hxx"
 #include <com/sun/star/awt/Point.hpp>
+#include <rtl/ref.hxx>
+#include <svx/unoshape.hxx>
 
 namespace com::sun::star::drawing { struct Position3D; }
 namespace com::sun::star::drawing { class XShapes; }
@@ -37,7 +39,7 @@ public:
     LabelPositionHelper() = delete;
     LabelPositionHelper(
           sal_Int32 nDimensionCount
-        , const css::uno::Reference< css::drawing::XShapes >& xLogicTarget );
+        , const rtl::Reference<SvxShapeGroupAnyD>& xLogicTarget );
     virtual ~LabelPositionHelper();
 
     css::awt::Point transformSceneToScreenPosition(
@@ -56,7 +58,7 @@ protected:
 
 private:
     //these members are only necessary for transformation from 3D to 2D
-    css::uno::Reference< css::drawing::XShapes >    m_xLogicTarget;
+    rtl::Reference<SvxShapeGroupAnyD>    m_xLogicTarget;
 };
 
 } //namespace chart
diff --git a/chart2/source/view/inc/LegendEntryProvider.hxx 
b/chart2/source/view/inc/LegendEntryProvider.hxx
index 8a4efd602605..b5ffb5e356fe 100644
--- a/chart2/source/view/inc/LegendEntryProvider.hxx
+++ b/chart2/source/view/inc/LegendEntryProvider.hxx
@@ -75,7 +75,7 @@ public:
             const css::awt::Size& rEntryKeyAspectRatio,
             css::chart2::LegendPosition eLegendPosition,
             const css::uno::Reference< css::beans::XPropertySet >& 
xTextProperties,
-            const css::uno::Reference< css::drawing::XShapes >& xTarget,
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget,
             const css::uno::Reference< css::lang::XMultiServiceFactory >& 
xShapeFactory,
             const css::uno::Reference< css::uno::XComponentContext >& xContext,
             ChartModel& rModel
diff --git a/chart2/source/view/inc/PlotterBase.hxx 
b/chart2/source/view/inc/PlotterBase.hxx
index 187f755f5318..1d553e5c68d3 100644
--- a/chart2/source/view/inc/PlotterBase.hxx
+++ b/chart2/source/view/inc/PlotterBase.hxx
@@ -20,6 +20,7 @@
 
 #include <com/sun/star/uno/Reference.h>
 #include <rtl/ustring.hxx>
+#include <svx/unoshape.hxx>
 #include <vector>
 
 namespace com::sun::star::drawing { struct HomogenMatrix; }
@@ -47,8 +48,8 @@ public:
 
     /// @throws css::uno::RuntimeException
     virtual void initPlotter(
-          const css::uno::Reference< css::drawing::XShapes >& xLogicTarget
-        , const css::uno::Reference< css::drawing::XShapes >& xFinalTarget
+          const rtl::Reference<SvxShapeGroupAnyD>& xLogicTarget
+        , const rtl::Reference<SvxShapeGroupAnyD>& xFinalTarget
         , const css::uno::Reference< css::lang::XMultiServiceFactory >& 
xFactory
         , const OUString& rCID
                 );
@@ -62,14 +63,13 @@ public:
     static bool isValidPosition( const css::drawing::Position3D& rPos );
 
 protected: //methods
-    css::uno::Reference< css::drawing::XShapes >
-        createGroupShape( const css::uno::Reference<
-                css::drawing::XShapes >& xTarget
+    rtl::Reference< SvxShapeGroupAnyD >
+        createGroupShape( const rtl::Reference< SvxShapeGroupAnyD >& xTarget
                 , const OUString& rName=OUString() );
 
 protected: //member
-    css::uno::Reference< css::drawing::XShapes >                m_xLogicTarget;
-    css::uno::Reference< css::drawing::XShapes >                m_xFinalTarget;
+    rtl::Reference< SvxShapeGroupAnyD >                         m_xLogicTarget;
+    rtl::Reference< SvxShapeGroupAnyD >                         m_xFinalTarget;
     css::uno::Reference< css::lang::XMultiServiceFactory>       
m_xShapeFactory;
     ShapeFactory* m_pShapeFactory;
     OUString   m_aCID;
diff --git a/chart2/source/view/inc/PlottingPositionHelper.hxx 
b/chart2/source/view/inc/PlottingPositionHelper.hxx
index 106eff673011..f5360942b2d7 100644
--- a/chart2/source/view/inc/PlottingPositionHelper.hxx
+++ b/chart2/source/view/inc/PlottingPositionHelper.hxx
@@ -31,6 +31,8 @@
 #include <basegfx/matrix/b3dhommatrix.hxx>
 #include <com/sun/star/awt/Point.hpp>
 #include <com/sun/star/uno/Sequence.hxx>
+#include <rtl/ref.hxx>
+#include <svx/unoshape.hxx>
 
 namespace com::sun::star::chart2 { class XTransformation; }
 namespace com::sun::star::drawing { class XShapes; }
@@ -85,7 +87,7 @@ public:
 
     static css::awt::Point transformSceneToScreenPosition(
                   const css::drawing::Position3D& rScenePosition3D
-                , const css::uno::Reference< css::drawing::XShapes >& 
xSceneTarget
+                , const rtl::Reference<SvxShapeGroupAnyD>& xSceneTarget
                 , sal_Int32 nDimensionCount );
 
     inline double getLogicMinX() const;
diff --git a/chart2/source/view/inc/PolarLabelPositionHelper.hxx 
b/chart2/source/view/inc/PolarLabelPositionHelper.hxx
index 5365320358e6..37cd95c02c75 100644
--- a/chart2/source/view/inc/PolarLabelPositionHelper.hxx
+++ b/chart2/source/view/inc/PolarLabelPositionHelper.hxx
@@ -33,7 +33,7 @@ public:
     PolarLabelPositionHelper(
         PolarPlottingPositionHelper* pPosHelper
         , sal_Int32 nDimensionCount
-        , const css::uno::Reference< css::drawing::XShapes >& xLogicTarget );
+        , const rtl::Reference<SvxShapeGroupAnyD>& xLogicTarget );
     virtual ~PolarLabelPositionHelper() override;
 
     css::awt::Point getLabelScreenPositionAndAlignmentForLogicValues(
diff --git a/chart2/source/view/inc/ShapeFactory.hxx 
b/chart2/source/view/inc/ShapeFactory.hxx
index e42655284d65..6f9bc6e12ab4 100644
--- a/chart2/source/view/inc/ShapeFactory.hxx
+++ b/chart2/source/view/inc/ShapeFactory.hxx
@@ -82,16 +82,21 @@ public:
 
     static rtl::Reference< SvxShapeGroup >
         createGroup2D(
-            const css::uno::Reference< css::drawing::XShapes >& xTarget
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget
+          , const OUString& aName = OUString() );
+
+    static rtl::Reference< SvxShapeGroup >
+        createGroup2D(
+            const rtl::Reference<SvxDrawPage>& xTarget
           , const OUString& aName = OUString() );
 
     static rtl::Reference<Svx3DSceneObject>
         createGroup3D(
-            const css::uno::Reference< css::drawing::XShapes >& xTarget
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget
           , const OUString& aName = OUString() );
 
     static rtl::Reference<Svx3DExtrudeObject>
-            createCube(   const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+            createCube(   const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                         , const css::drawing::Position3D& rPosition
                         , const css::drawing::Direction3D& rSize
                         , sal_Int32 nRotateZAngleHundredthDegree
@@ -100,13 +105,13 @@ public:
                         , bool bRounded = false);
 
     static rtl::Reference<Svx3DLatheObject>
-        createCylinder(   const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createCylinder(   const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                         , const css::drawing::Position3D& rPosition
                         , const css::drawing::Direction3D& rSize
                         , sal_Int32 nRotateZAngleHundredthDegree );
 
     static rtl::Reference<Svx3DSceneObject>
-        createPyramid(    const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createPyramid(    const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                         , const css::drawing::Position3D& rPosition
                         , const css::drawing::Direction3D& rSize
                         , double fTopHeight
@@ -115,20 +120,20 @@ public:
                         , const tPropertyNameMap& rPropertyNameMap);
 
     static rtl::Reference<Svx3DLatheObject>
-        createCone(       const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createCone(       const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                         , const css::drawing::Position3D& rPosition
                         , const css::drawing::Direction3D& rSize
                         , double fTopHeight, sal_Int32 
nRotateZAngleHundredthDegree );
 
     static rtl::Reference<SvxShapePolyPolygon>
-        createPieSegment2D( const css::uno::Reference< css::drawing::XShapes 
>& xTarget
+        createPieSegment2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , double fUnitCircleStartAngleDegree, double 
fUnitCircleWidthAngleDegree
                     , double fUnitCircleInnerRadius, double 
fUnitCircleOuterRadius
                     , const css::drawing::Direction3D& rOffset
                     , const css::drawing::HomogenMatrix& rUnitCircleToScene );
 
     static rtl::Reference<Svx3DExtrudeObject>
-        createPieSegment( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createPieSegment( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , double fUnitCircleStartAngleDegree, double 
fUnitCircleWidthAngleDegree
                     , double fUnitCircleInnerRadius, double 
fUnitCircleOuterRadius
                     , const css::drawing::Direction3D& rOffset
@@ -136,7 +141,7 @@ public:
                     , double fDepth );
 
     static rtl::Reference<Svx3DPolygonObject>
-        createStripe( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createStripe( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , const Stripe& rStripe
                     , const css::uno::Reference< css::beans::XPropertySet >& 
xSourceProp
                     , const tPropertyNameMap& rPropertyNameMap
@@ -145,16 +150,16 @@ public:
                     , bool bFlatNormals=true );
 
     static rtl::Reference<Svx3DExtrudeObject>
-        createArea3D( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createArea3D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , const css::drawing::PolyPolygonShape3D& rPolyPolygon
                     , double fDepth);
 
     static rtl::Reference<SvxShapePolyPolygon>
-        createArea2D( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createArea2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , const css::drawing::PolyPolygonShape3D& rPolyPolygon);
 
     static rtl::Reference<SvxShapePolyPolygon>
-        createSymbol2D( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createSymbol2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , const css::drawing::Position3D& rPos
                     , const css::drawing::Direction3D& rSize
                     , sal_Int32 nStandardSymbol
@@ -162,37 +167,37 @@ public:
                     , sal_Int32 nFillColor );
 
     static rtl::Reference<SvxGraphicObject>
-        createGraphic2D( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createGraphic2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , const css::drawing::Position3D& rPos
                     , const css::drawing::Direction3D& rSize
                     , const css::uno::Reference< css::graphic::XGraphic >& 
xGraphic );
 
     static rtl::Reference<SvxShapePolyPolygon>
-        createLine2D( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createLine2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , const css::drawing::PointSequenceSequence& rPoints
                     , const VLineProperties* pLineProperties = nullptr );
 
     static rtl::Reference<SvxShapePolyPolygon>
-        createLine ( const css::uno::Reference< css::drawing::XShapes >& 
xTarget,
+        createLine ( const rtl::Reference<SvxShapeGroupAnyD>& xTarget,
                 const css::awt::Size& rSize, const css::awt::Point& rPosition 
);
 
     static rtl::Reference<Svx3DPolygonObject>
-        createLine3D( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createLine3D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , const css::drawing::PolyPolygonShape3D& rPoints
                     , const VLineProperties& rLineProperties );
 
     static rtl::Reference<SvxShapeCircle>
-        createCircle2D( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createCircle2D( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , const css::drawing::Position3D& rPos
                     , const css::drawing::Direction3D& rSize );
 
     static rtl::Reference<SvxShapeCircle>
-        createCircle( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createCircle( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , const css::awt::Size& rSize
                     , const css::awt::Point& rPosition );
 
     static rtl::Reference<SvxShapeText>
-        createText( const css::uno::Reference< css::drawing::XShapes >& 
xTarget2D
+        createText( const rtl::Reference<SvxShapeGroupAnyD>& xTarget2D
                     , const OUString& rText
                     , const tNameSequence& rPropNames
                     , const tAnySequence& rPropValues
@@ -200,14 +205,14 @@ public:
                      );
 
     static rtl::Reference<SvxShapeText>
-        createText(const css::uno::Reference< css::drawing::XShapes >& xTarget
+        createText(const rtl::Reference<SvxShapeGroupAnyD>& xTarget
             , css::uno::Sequence< css::uno::Reference< 
css::chart2::XFormattedString > >& xFormattedString
             , const tNameSequence& rPropNames
             , const tAnySequence& rPropValues
             , const css::uno::Any& rATransformation);
 
     static rtl::Reference<SvxShapeText>
-        createText( const css::uno::Reference< css::drawing::XShapes >& 
xTarget2D,
+        createText( const rtl::Reference<SvxShapeGroupAnyD>& xTarget2D,
                 const css::awt::Size& rSize,
                 const css::awt::Point& rPosition,
                 css::uno::Sequence< css::uno::Reference< 
css::chart2::XFormattedString > >& xFormattedString,
@@ -216,12 +221,12 @@ public:
 
     static rtl::Reference<SvxShapeRect>
         createInvisibleRectangle(
-            const css::uno::Reference< css::drawing::XShapes >& xTarget
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget
           , const css::awt::Size& rSize );
 
     static rtl::Reference<SvxShapeRect>
         createRectangle(
-            const css::uno::Reference< css::drawing::XShapes >& xTarget,
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget,
             const css::awt::Size& rSize,
             const css::awt::Point& rPosition,
             const tNameSequence& rPropNames,
@@ -230,15 +235,15 @@ public:
 
     static rtl::Reference<SvxShapeRect>
         createRectangle(
-            const css::uno::Reference< css::drawing::XShapes >& xTarget );
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
 
-    static css::uno::Reference< css::drawing::XShapes >
+    static rtl::Reference<SvxShapeGroupAnyD>
          getOrCreateChartRootShape( const rtl::Reference<SvxDrawPage>& xPage );
 
-    static void setPageSize(const css::uno::Reference<css::drawing::XShapes>& 
xChartShapes,
+    static void setPageSize(const rtl::Reference<SvxShapeGroupAnyD>& 
xChartShapes,
                      const css::awt::Size& rSize);
 
-    static css::uno::Reference< css::drawing::XShapes >
+    static rtl::Reference<SvxShapeGroupAnyD>
          getChartRootShape( const rtl::Reference<SvxDrawPage>& xPage );
 
     static void makeShapeInvisible( const rtl::Reference< SvxShape >& rShape );
@@ -270,19 +275,19 @@ public:
     static css::awt::Size getSizeAfterRotation(
             SvxShape& rShape, double fRotationAngleDegree );
 
-    static void removeSubShapes( const css::uno::Reference< 
css::drawing::XShapes >& xShapes );
+    static void removeSubShapes( const rtl::Reference<SvxShapeGroupAnyD>& 
xShapes );
 
     static sal_Int32 getSymbolCount() { return Symbol_COUNT; }
 
 private:
     static rtl::Reference<Svx3DExtrudeObject>
-        impl_createCube( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        impl_createCube( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                     , const css::drawing::Position3D& rPosition
                     , const css::drawing::Direction3D& rSize, sal_Int32 
nRotateZAngleHundredthDegree
                     , bool bRounded );
 
     static rtl::Reference<Svx3DLatheObject>
-        impl_createConeOrCylinder( const css::uno::Reference< 
css::drawing::XShapes >& xTarget
+        impl_createConeOrCylinder( const rtl::Reference<SvxShapeGroupAnyD>& 
xTarget
                     , const css::drawing::Position3D& rPosition
                     , const css::drawing::Direction3D& rSize
                     , double fTopHeight, sal_Int32 nRotateZAngleHundredthDegree
diff --git a/chart2/source/view/inc/VCoordinateSystem.hxx 
b/chart2/source/view/inc/VCoordinateSystem.hxx
index 3cae017fdd74..e958b7248c0d 100644
--- a/chart2/source/view/inc/VCoordinateSystem.hxx
+++ b/chart2/source/view/inc/VCoordinateSystem.hxx
@@ -23,6 +23,8 @@
 #include <chartview/ExplicitScaleValues.hxx>
 #include <com/sun/star/drawing/HomogenMatrix.hpp>
 #include <com/sun/star/uno/Sequence.h>
+#include <rtl/ref.hxx>
+#include <svx/unoshape.hxx>
 
 #include <map>
 #include <memory>
@@ -55,10 +57,10 @@ public:
 
     /// @throws css::uno::RuntimeException
     void initPlottingTargets(
-                  const css::uno::Reference< css::drawing::XShapes >& 
xLogicTarget
-                , const css::uno::Reference< css::drawing::XShapes >& 
xFinalTarget
+                  const rtl::Reference< SvxShapeGroupAnyD >& xLogicTarget
+                , const rtl::Reference< SvxShapeGroupAnyD >& xFinalTarget
                 , const css::uno::Reference< css::lang::XMultiServiceFactory 
>& xFactory
-                , css::uno::Reference< css::drawing::XShapes >& 
xLogicTargetForSeriesBehindAxis );
+                , rtl::Reference<SvxShapeGroupAnyD>& 
xLogicTargetForSeriesBehindAxis );
 
     void setParticle( const OUString& rCooSysParticle );
 
@@ -165,9 +167,9 @@ protected: //member
 
     typedef std::pair< sal_Int32, sal_Int32 > tFullAxisIndex; //first index is 
the dimension, second index is the axis index that indicates whether this is a 
main or secondary axis
 
-    css::uno::Reference< css::drawing::XShapes >                
m_xLogicTargetForGrids;
-    css::uno::Reference< css::drawing::XShapes >                
m_xLogicTargetForAxes;
-    css::uno::Reference< css::drawing::XShapes >                m_xFinalTarget;
+    rtl::Reference<SvxShapeGroupAnyD>                m_xLogicTargetForGrids;
+    rtl::Reference<SvxShapeGroupAnyD>                m_xLogicTargetForAxes;
+    rtl::Reference<SvxShapeGroupAnyD>                m_xFinalTarget;
     css::uno::Reference< css::lang::XMultiServiceFactory>       
m_xShapeFactory;
     css::drawing::HomogenMatrix                            
m_aMatrixSceneToScreen;
 
diff --git a/chart2/source/view/inc/VDataSeries.hxx 
b/chart2/source/view/inc/VDataSeries.hxx
index b8922c4d47f9..48ea0d4234ff 100644
--- a/chart2/source/view/inc/VDataSeries.hxx
+++ b/chart2/source/view/inc/VDataSeries.hxx
@@ -182,15 +182,15 @@ private: //methods
     VDataSeries();
 
 public: //member
-    css::uno::Reference<css::drawing::XShapes> m_xGroupShape;
+    rtl::Reference<SvxShapeGroupAnyD> m_xGroupShape;
     rtl::Reference<SvxShapeGroup> m_xLabelsGroupShape;
-    css::uno::Reference<css::drawing::XShapes> m_xErrorXBarsGroupShape;
-    css::uno::Reference<css::drawing::XShapes> m_xErrorYBarsGroupShape;
+    rtl::Reference<SvxShapeGroupAnyD> m_xErrorXBarsGroupShape;
+    rtl::Reference<SvxShapeGroupAnyD> m_xErrorYBarsGroupShape;
 
     //the following group shapes will be created as children of m_xGroupShape 
on demand
     //they can be used to assure that some parts of a series shape are always 
in front of others (e.g. symbols in front of lines)
-    css::uno::Reference<css::drawing::XShapes> m_xFrontSubGroupShape;
-    css::uno::Reference<css::drawing::XShapes> m_xBackSubGroupShape;
+    rtl::Reference<SvxShapeGroupAnyD> m_xFrontSubGroupShape;
+    rtl::Reference<SvxShapeGroupAnyD> m_xBackSubGroupShape;
 
 private: //member
     css::uno::Reference<css::chart2::XDataSeries> m_xDataSeries;
diff --git a/chart2/source/view/inc/VDiagram.hxx 
b/chart2/source/view/inc/VDiagram.hxx
index 757cc1ec61cf..6e18280079ac 100644
--- a/chart2/source/view/inc/VDiagram.hxx
+++ b/chart2/source/view/inc/VDiagram.hxx
@@ -51,14 +51,14 @@ public: //methods
     ~VDiagram();
 
     void init(
-        const css::uno::Reference<css::drawing::XShapes>& xTarget,
+        const rtl::Reference<SvxShapeGroupAnyD>& xTarget,
         const css::uno::Reference<css::lang::XMultiServiceFactory>& xFactory );
 
     void    createShapes( const css::awt::Point& rPos
                         , const css::awt::Size& rSize );
 
-    css::uno::Reference< css::drawing::XShapes >
-            getCoordinateRegion() const { return 
css::uno::Reference<css::drawing::XShapes>( m_xCoordinateRegionShape, 
css::uno::UNO_QUERY );}
+    const rtl::Reference<SvxShapeGroupAnyD> &
+            getCoordinateRegion() const { return m_xCoordinateRegionShape; }
 
     /**
      * Get current bounding rectangle for the diagram without axes.
@@ -86,14 +86,14 @@ private: //methods
 private: //members
     VDiagram(const VDiagram& rD) = delete;
 
-    css::uno::Reference< css::drawing::XShapes >                    m_xTarget;
+    rtl::Reference<SvxShapeGroupAnyD>                    m_xTarget;
     css::uno::Reference< css::lang::XMultiServiceFactory>           
m_xShapeFactory;
     ShapeFactory* m_pShapeFactory;
 
     // this is the surrounding shape which contains floor, wall and coordinate
-    css::uno::Reference< css::drawing::XShape >   m_xOuterGroupShape;
+    rtl::Reference<SvxShapeGroupAnyD>   m_xOuterGroupShape;
     // this is an additional inner shape that represents the coordinate region 
-  that is - where to place data points
-    css::uno::Reference< css::drawing::XShape >   m_xCoordinateRegionShape;
+    rtl::Reference<SvxShapeGroupAnyD>   m_xCoordinateRegionShape;
     rtl::Reference<SvxShapeRect> m_xWall2D;
 
     sal_Int32                                                               
m_nDimensionCount;
diff --git a/chart2/source/view/inc/VLegendSymbolFactory.hxx 
b/chart2/source/view/inc/VLegendSymbolFactory.hxx
index d9189575ee24..f637a5894912 100644
--- a/chart2/source/view/inc/VLegendSymbolFactory.hxx
+++ b/chart2/source/view/inc/VLegendSymbolFactory.hxx
@@ -42,9 +42,8 @@ namespace chart::VLegendSymbolFactory
     rtl::Reference< SvxShapeGroup >
         createSymbol(
             const css::awt::Size& rEntryKeyAspectRatio,
-            const css::uno::Reference< css::drawing::XShapes >& 
rSymbolContainer,
+            const rtl::Reference<SvxShapeGroupAnyD>& rSymbolContainer,
             LegendSymbolStyle eStyle,
-            const css::uno::Reference< css::lang::XMultiServiceFactory > & 
xShapeFactory,
             const css::uno::Reference< css::beans::XPropertySet > & 
xLegendEntryProperties,
             PropertyType ePropertyType,
             const css::uno::Any& rExplicitSymbol /*should contain a 
css::chart2::Symbol without automatic symbol if the charttype does support 
symbols else empty*/);
diff --git a/chart2/source/view/inc/VSeriesPlotter.hxx 
b/chart2/source/view/inc/VSeriesPlotter.hxx
index d80d248a3c70..93b09cb32d59 100644
--- a/chart2/source/view/inc/VSeriesPlotter.hxx
+++ b/chart2/source/view/inc/VSeriesPlotter.hxx
@@ -186,7 +186,7 @@ public:
             const css::awt::Size& rEntryKeyAspectRatio,
             css::chart2::LegendPosition eLegendPosition,
             const css::uno::Reference< css::beans::XPropertySet >& 
xTextProperties,
-            const css::uno::Reference< css::drawing::XShapes >& xTarget,
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget,
             const css::uno::Reference< css::lang::XMultiServiceFactory >& 
xShapeFactory,
             const css::uno::Reference< css::uno::XComponentContext >& xContext,
             ChartModel& rModel
@@ -200,21 +200,19 @@ public:
     rtl::Reference<SvxShapeGroup> createLegendSymbolForSeries(
                   const css::awt::Size& rEntryKeyAspectRatio
                 , const VDataSeries& rSeries
-                , const css::uno::Reference< css::drawing::XShapes >& xTarget
-                , const css::uno::Reference< css::lang::XMultiServiceFactory 
>& xShapeFactory );
+                , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
 
     rtl::Reference< SvxShapeGroup > createLegendSymbolForPoint(
                   const css::awt::Size& rEntryKeyAspectRatio
                 , const VDataSeries& rSeries
                 , sal_Int32 nPointIndex
-                , const css::uno::Reference< css::drawing::XShapes >& xTarget
-                , const css::uno::Reference< css::lang::XMultiServiceFactory 
>& xShapeFactory );
+                , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
 
     std::vector< ViewLegendEntry > createLegendEntriesForSeries(
             const css::awt::Size& rEntryKeyAspectRatio,
             const VDataSeries& rSeries,
             const css::uno::Reference< css::beans::XPropertySet >& 
xTextProperties,
-            const css::uno::Reference< css::drawing::XShapes >& xTarget,
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget,
             const css::uno::Reference< css::lang::XMultiServiceFactory >& 
xShapeFactory,
             const css::uno::Reference< css::uno::XComponentContext >& xContext
                 );
@@ -264,29 +262,29 @@ protected:
 
     // Methods for group shapes.
 
-    css::uno::Reference< css::drawing::XShapes >
+    rtl::Reference<SvxShapeGroupAnyD>
         getSeriesGroupShape( VDataSeries* pDataSeries
-            , const css:: uno::Reference< css::drawing::XShapes >& xTarget );
+            , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
 
     //the following group shapes will be created as children of 
SeriesGroupShape on demand
     //they can be used to assure that some parts of a series shape are always 
in front of others (e.g. symbols in front of lines)
     //parameter xTarget will be used as parent for the series group shape
-    css::uno::Reference< css::drawing::XShapes >
+    rtl::Reference<SvxShapeGroupAnyD>
         getSeriesGroupShapeFrontChild( VDataSeries* pDataSeries
-            , const css:: uno::Reference< css::drawing::XShapes >& xTarget );
-    css::uno::Reference< css::drawing::XShapes >
+            , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
+    rtl::Reference<SvxShapeGroupAnyD>
         getSeriesGroupShapeBackChild( VDataSeries* pDataSeries
-            , const css:: uno::Reference< css::drawing::XShapes >& xTarget );
+            , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
 
     /// This method creates a 2D group shape for containing all text shapes
     /// needed for this series; the group is added to the text target;
     static rtl::Reference<SvxShapeGroup>
         getLabelsGroupShape( VDataSeries& rDataSeries
-            , const css:: uno::Reference< css::drawing::XShapes >& xTarget );
+            , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
 
-    css::uno::Reference< css::drawing::XShapes >
+    rtl::Reference<SvxShapeGroupAnyD>
         getErrorBarsGroupShape( VDataSeries& rDataSeries
-            , const css:: uno::Reference< css::drawing::XShapes >& xTarget, 
bool bYError );
+            , const rtl::Reference<SvxShapeGroupAnyD>& xTarget, bool bYError );
 
     /** This method creates a text shape for a label related to a data point
      *  and append it to the root text shape group (xTarget).
@@ -314,7 +312,7 @@ protected:
      *      a reference to the created text shape.
      */
     rtl::Reference<SvxShapeText>
-        createDataLabel( const css::uno::Reference< css::drawing::XShapes >& 
xTarget
+        createDataLabel( const rtl::Reference<SvxShapeGroupAnyD>& xTarget
                 , VDataSeries& rDataSeries
                 , sal_Int32 nPointIndex
                 , double fValue
@@ -349,7 +347,7 @@ protected:
             for y-error bars this is true, for x-error-bars it is false.
      */
     void createErrorBar(
-          const css::uno::Reference< css::drawing::XShapes >& xTarget
+          const rtl::Reference<SvxShapeGroupAnyD>& xTarget
         , const css::drawing::Position3D & rPos
         , const css::uno::Reference< css::beans::XPropertySet > & 
xErrorBarProperties
         , const VDataSeries& rVDataSeries
@@ -362,7 +360,7 @@ protected:
           const css::drawing::Position3D& rUnscaledLogicPosition
         , VDataSeries& rVDataSeries
         , sal_Int32 nIndex
-        , const css::uno::Reference< css::drawing::XShapes >& rTarget
+        , const rtl::Reference<SvxShapeGroupAnyD>& rTarget
         , bool bUseXErrorData
         , bool bUseYErrorData
     );
@@ -370,26 +368,26 @@ protected:
     static void addErrorBorder(
           const css::drawing::Position3D& rPos0
         , const css::drawing::Position3D& rPos1
-        , const css::uno::Reference< css::drawing::XShapes >& rTarget
+        , const rtl::Reference<SvxShapeGroupAnyD>& rTarget
         , const css::uno::Reference< css::beans::XPropertySet >& 
rErrorBorderProp );
 
     void createErrorBar_X( const css::drawing::Position3D& 
rUnscaledLogicPosition
         , VDataSeries& rVDataSeries, sal_Int32 nPointIndex
-        , const css::uno::Reference< css::drawing::XShapes >& xTarget );
+        , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
 
     void createErrorBar_Y( const css::drawing::Position3D& 
rUnscaledLogicPosition
         , VDataSeries& rVDataSeries, sal_Int32 nPointIndex
-        , const css::uno::Reference< css::drawing::XShapes >& xTarget
+        , const rtl::Reference<SvxShapeGroupAnyD>& xTarget
         , double const * pfScaledLogicX );
 
     void createRegressionCurvesShapes( VDataSeries const & rVDataSeries
-        , const css::uno::Reference< css::drawing::XShapes >& xTarget
-        , const css::uno::Reference< css::drawing::XShapes >& xEquationTarget
+        , const rtl::Reference<SvxShapeGroupAnyD>& xTarget
+        , const rtl::Reference<SvxShapeGroupAnyD>& xEquationTarget
         , bool bMaySkipPointsInRegressionCalculation );
 
     void createRegressionCurveEquationShapes( const OUString & rEquationCID
         , const css::uno::Reference< css::beans::XPropertySet > & 
xEquationProperties
-        , const css::uno::Reference< css::drawing::XShapes >& xEquationTarget
+        , const rtl::Reference<SvxShapeGroupAnyD>& xEquationTarget
         , const css::uno::Reference< css::chart2::XRegressionCurveCalculator > 
& xRegressionCurveCalculator
         , css::awt::Point aDefaultPos );
 
diff --git a/chart2/source/view/main/ChartView.cxx 
b/chart2/source/view/main/ChartView.cxx
index 85e4e5fcb7f1..97fd3ab42dab 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -1440,8 +1440,8 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( 
const CreateShapeParam2D
     drawing::Direction3D aPreferredAspectRatio =
         rParam.mpSeriesPlotterContainer->getPreferredAspectRatio();
 
-    uno::Reference< drawing::XShapes > xSeriesTargetInFrontOfAxis;
-    uno::Reference< drawing::XShapes > xSeriesTargetBehindAxis;
+    rtl::Reference<SvxShapeGroupAnyD> xSeriesTargetInFrontOfAxis;
+    rtl::Reference<SvxShapeGroupAnyD> xSeriesTargetBehindAxis;
     VDiagram aVDiagram(xDiagram, aPreferredAspectRatio, nDimensionCount);
     {//create diagram
         aVDiagram.init(rParam.mxDiagramWithAxesShapes, m_xShapeFactory);
@@ -1536,7 +1536,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( 
const CreateShapeParam2D
     for( const std::unique_ptr<VSeriesPlotter>& aPlotter : rSeriesPlotterList )
     {
         VSeriesPlotter* pSeriesPlotter = aPlotter.get();
-        uno::Reference< drawing::XShapes > xSeriesTarget;
+        rtl::Reference<SvxShapeGroupAnyD> xSeriesTarget;
         if( pSeriesPlotter->WantToPlotInFrontOfAxisLine() )
             xSeriesTarget = xSeriesTargetInFrontOfAxis;
         else
@@ -2066,7 +2066,7 @@ void changePositionOfAxisTitle( VTitle* pVTitle, 
TitleAlignment eAlignment
 }
 
 std::shared_ptr<VTitle> lcl_createTitle( TitleHelper::eTitleType eType
-                , const uno::Reference< drawing::XShapes>& xPageShapes
+                , const rtl::Reference<SvxShapeGroupAnyD>& xPageShapes
                 , const uno::Reference< lang::XMultiServiceFactory>& 
xShapeFactory
                 , ChartModel& rModel
                 , awt::Rectangle& rRemainingSpace
@@ -2200,7 +2200,7 @@ std::shared_ptr<VTitle> lcl_createTitle( 
TitleHelper::eTitleType eType
 }
 
 bool lcl_createLegend( const uno::Reference< XLegend > & xLegend
-                   , const uno::Reference< drawing::XShapes>& xPageShapes
+                   , const rtl::Reference<SvxShapeGroupAnyD>& xPageShapes
                    , const uno::Reference< lang::XMultiServiceFactory>& 
xShapeFactory
                    , const uno::Reference< uno::XComponentContext > & xContext
                    , awt::Rectangle & rRemainingSpace
@@ -2222,7 +2222,7 @@ bool lcl_createLegend( const uno::Reference< XLegend > & 
xLegend
     return true;
 }
 
-void lcl_createButtons(const uno::Reference<drawing::XShapes>& xPageShapes,
+void lcl_createButtons(const rtl::Reference<SvxShapeGroupAnyD>& xPageShapes,
                        const uno::Reference<lang::XMultiServiceFactory>& 
xShapeFactory,
                        ChartModel& rModel,
                        awt::Rectangle& rRemainingSpace)
@@ -2296,8 +2296,7 @@ void lcl_createButtons(const 
uno::Reference<drawing::XShapes>& xPageShapes,
 void formatPage(
       ChartModel& rChartModel
     , const awt::Size& rPageSize
-    , const uno::Reference< drawing::XShapes >& xTarget
-    , const uno::Reference< lang::XMultiServiceFactory>& xShapeFactory
+    , const rtl::Reference<SvxShapeGroupAnyD>& xTarget
     )
 {
     try
@@ -2306,9 +2305,6 @@ void formatPage(
         if( ! xModelPage.is())
             return;
 
-        if( !xShapeFactory.is() )
-            return;
-
         //format page
         tPropertyNameValueMap aNameValueMap;
         PropertyMapper::getValueMap( aNameValueMap, 
PropertyMapper::getPropertyNameMapForFillAndLineProperties(), xModelPage );
@@ -2836,7 +2832,7 @@ OUString ChartView::dump()
         uno::Reference< drawing::XShapes > xShape(m_xDrawPage->getByIndex(i), 
uno::UNO_QUERY);
         if(xShape.is())
         {
-            OUString aString = XShapeDumper::dump(mxRootShape);
+            OUString aString = 
XShapeDumper::dump(uno::Reference<drawing::XShapes>(mxRootShape));
             aBuffer.append(aString);
         }
         else
@@ -2885,7 +2881,7 @@ void ChartView::createShapes2D( const awt::Size& 
rPageSize )
 {
     // todo: it would be nicer to just pass the page m_xDrawPage and format it,
     // but the draw page does not support XPropertySet
-    formatPage( mrChartModel, rPageSize, mxRootShape, m_xShapeFactory );
+    formatPage( mrChartModel, rPageSize, mxRootShape );
 
     CreateShapeParam2D aParam;
     aParam.maRemainingSpace.X = 0;
diff --git a/chart2/source/view/main/DataPointSymbolSupplier.cxx 
b/chart2/source/view/main/DataPointSymbolSupplier.cxx
index ba112e082b33..ff7f8370ac32 100644
--- a/chart2/source/view/main/DataPointSymbolSupplier.cxx
+++ b/chart2/source/view/main/DataPointSymbolSupplier.cxx
@@ -26,7 +26,7 @@ namespace chart
 using namespace ::com::sun::star;
 
 rtl::Reference< SvxShapeGroup > DataPointSymbolSupplier::create2DSymbolList(
-            const uno::Reference< drawing::XShapes >& xTarget
+            const rtl::Reference<SvxDrawPage>& xTarget
             , const drawing::Direction3D& rSize )
 {
     rtl::Reference< SvxShapeGroup > xGroupShapes = 
ShapeFactory::createGroup2D( xTarget );
diff --git a/chart2/source/view/main/LabelPositionHelper.cxx 
b/chart2/source/view/main/LabelPositionHelper.cxx
index c427e429fb44..a632947758c9 100644
--- a/chart2/source/view/main/LabelPositionHelper.cxx
+++ b/chart2/source/view/main/LabelPositionHelper.cxx
@@ -35,7 +35,7 @@ using namespace ::com::sun::star::chart2;
 
 LabelPositionHelper::LabelPositionHelper(
                       sal_Int32 nDimensionCount
-                    , const uno::Reference< drawing::XShapes >& xLogicTarget)
+                    , const rtl::Reference<SvxShapeGroupAnyD>& xLogicTarget)
                     : m_nDimensionCount(nDimensionCount)
                     , m_xLogicTarget(xLogicTarget)
 {
diff --git a/chart2/source/view/main/PlotterBase.cxx 
b/chart2/source/view/main/PlotterBase.cxx
index 382d3fa7a18a..93c80ca1574e 100644
--- a/chart2/source/view/main/PlotterBase.cxx
+++ b/chart2/source/view/main/PlotterBase.cxx
@@ -34,8 +34,8 @@ PlotterBase::PlotterBase( sal_Int32 nDimensionCount )
 {
 }
 
-void PlotterBase::initPlotter(  const uno::Reference< drawing::XShapes >& 
xLogicTarget
-       , const uno::Reference< drawing::XShapes >& xFinalTarget
+void PlotterBase::initPlotter(  const rtl::Reference<SvxShapeGroupAnyD>& 
xLogicTarget
+       , const rtl::Reference<SvxShapeGroupAnyD>& xFinalTarget
        , const uno::Reference< lang::XMultiServiceFactory >& xShapeFactory
        , const OUString& rCID )
 {
@@ -72,8 +72,8 @@ void PlotterBase::setTransformationSceneToScreen( const 
drawing::HomogenMatrix&
     m_pPosHelper->setTransformationSceneToScreen( rMatrix );
 }
 
-uno::Reference< drawing::XShapes > PlotterBase::createGroupShape(
-            const uno::Reference< drawing::XShapes >& xTarget
+rtl::Reference<SvxShapeGroupAnyD> PlotterBase::createGroupShape(
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget
             , const OUString& rName )
 {
     if(!m_xShapeFactory.is())
diff --git a/chart2/source/view/main/PlottingPositionHelper.cxx 
b/chart2/source/view/main/PlottingPositionHelper.cxx
index e105393236d5..350c0942ae78 100644
--- a/chart2/source/view/main/PlottingPositionHelper.cxx
+++ b/chart2/source/view/main/PlottingPositionHelper.cxx
@@ -193,7 +193,7 @@ drawing::Position3D 
PlottingPositionHelper::transformScaledLogicToScene(
 }
 
 awt::Point PlottingPositionHelper::transformSceneToScreenPosition( const 
drawing::Position3D& rScenePosition3D
-                , const uno::Reference< drawing::XShapes >& xSceneTarget
+                , const rtl::Reference<SvxShapeGroupAnyD>& xSceneTarget
                 , sal_Int32 nDimensionCount )
 {
     //@todo would like to have a cheaper method to do this transformation
diff --git a/chart2/source/view/main/PolarLabelPositionHelper.cxx 
b/chart2/source/view/main/PolarLabelPositionHelper.cxx
index 8ca4a44ac46e..d5c819954a91 100644
--- a/chart2/source/view/main/PolarLabelPositionHelper.cxx
+++ b/chart2/source/view/main/PolarLabelPositionHelper.cxx
@@ -32,7 +32,7 @@ using namespace ::com::sun::star::chart2;
 PolarLabelPositionHelper::PolarLabelPositionHelper(
                     PolarPlottingPositionHelper* pPosHelper
                     , sal_Int32 nDimensionCount
-                    , const uno::Reference< drawing::XShapes >& xLogicTarget )
+                    , const rtl::Reference<SvxShapeGroupAnyD>& xLogicTarget )
                     : LabelPositionHelper( nDimensionCount, xLogicTarget )
                     , m_pPosHelper(pPosHelper)
 {
diff --git a/chart2/source/view/main/ShapeFactory.cxx 
b/chart2/source/view/main/ShapeFactory.cxx
index 45c63c425646..afcea1802274 100644
--- a/chart2/source/view/main/ShapeFactory.cxx
+++ b/chart2/source/view/main/ShapeFactory.cxx
@@ -83,10 +83,10 @@ void lcl_addProperty(uno::Sequence<OUString> & 
rPropertyNames, uno::Sequence<uno
 
 } // end anonymous namespace
 
-uno::Reference< drawing::XShapes > ShapeFactory::getOrCreateChartRootShape(
+rtl::Reference<SvxShapeGroupAnyD> ShapeFactory::getOrCreateChartRootShape(
     const rtl::Reference<SvxDrawPage>& xDrawPage )
 {
-    uno::Reference<drawing::XShapes> xRet = 
ShapeFactory::getChartRootShape(xDrawPage);
+    rtl::Reference<SvxShapeGroupAnyD> xRet = 
ShapeFactory::getChartRootShape(xDrawPage);
     if (xRet.is())
         return xRet;
 
@@ -98,13 +98,12 @@ uno::Reference< drawing::XShapes > 
ShapeFactory::getOrCreateChartRootShape(
     xDrawPage->addBottom(xShape);
 
     setShapeName(xShapeGroup, "com.sun.star.chart2.shapes");
-    xShape->setSize(awt::Size(0,0));
+    xShapeGroup->setSize(awt::Size(0,0));
 
-    xRet.set(xShape, uno::UNO_QUERY);
-    return xRet;
+    return xShapeGroup;
 }
 
-void ShapeFactory::setPageSize(const uno::Reference<drawing::XShapes>&, const 
awt::Size&) {}
+void ShapeFactory::setPageSize(const rtl::Reference<SvxShapeGroupAnyD>&, const 
awt::Size&) {}
 
 //  diverse tools::PolyPolygon create methods
 
@@ -360,7 +359,7 @@ static uno::Any createPolyPolygon_Cone( double fHeight, 
double fRadius, double f
 
 rtl::Reference<Svx3DExtrudeObject>
         ShapeFactory::createCube(
-            const uno::Reference<drawing::XShapes>& xTarget
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget
             , const drawing::Position3D& rPosition, const 
drawing::Direction3D& rSize
             , sal_Int32 nRotateZAngleHundredthDegree
             , const uno::Reference< beans::XPropertySet >& xSourceProp
@@ -394,7 +393,7 @@ rtl::Reference<Svx3DExtrudeObject>
 
 rtl::Reference<Svx3DExtrudeObject>
         ShapeFactory::impl_createCube(
-              const uno::Reference<drawing::XShapes>& xTarget
+              const rtl::Reference<SvxShapeGroupAnyD>& xTarget
             , const drawing::Position3D& rPosition, const 
drawing::Direction3D& rSize
             , sal_Int32 nRotateZAngleHundredthDegree
             , bool bRounded )
@@ -450,7 +449,7 @@ rtl::Reference<Svx3DExtrudeObject>
 
 rtl::Reference<Svx3DLatheObject>
         ShapeFactory::createCylinder(
-            const uno::Reference<drawing::XShapes>& xTarget
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget
           , const drawing::Position3D& rPosition, const drawing::Direction3D& 
rSize
           , sal_Int32 nRotateZAngleHundredthDegree )
 {
@@ -460,7 +459,7 @@ rtl::Reference<Svx3DLatheObject>
 
 rtl::Reference<Svx3DSceneObject>
         ShapeFactory::createPyramid(
-            const uno::Reference<drawing::XShapes>& xTarget
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget
           , const drawing::Position3D& rPosition, const drawing::Direction3D& 
rSize
           , double fTopHeight, bool bRotateZ
           , const uno::Reference< beans::XPropertySet >& xSourceProp
@@ -620,7 +619,7 @@ rtl::Reference<Svx3DSceneObject>
 
 rtl::Reference<Svx3DLatheObject>
         ShapeFactory::createCone(
-            const uno::Reference<drawing::XShapes>& xTarget
+            const rtl::Reference<SvxShapeGroupAnyD>& xTarget

... etc. - the rest is truncated

Reply via email to