chart2/Library_chart2.mk                                            |    1 
 chart2/inc/ChartView.hxx                                            |   54 ++
 chart2/inc/pch/precompiled_chart2.hxx                               |    1 
 chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx     |    9 
 chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx   |    1 
 chart2/source/controller/dialogs/DataBrowserModel.cxx               |    4 
 chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx            |    3 
 chart2/source/controller/inc/ObjectHierarchy.hxx                    |   10 
 chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx       |    8 
 chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx |    6 
 chart2/source/controller/main/ChartController_Properties.cxx        |   11 
 chart2/source/controller/main/ChartController_Window.cxx            |    3 
 chart2/source/controller/main/ElementSelector.cxx                   |    2 
 chart2/source/controller/main/ObjectHierarchy.cxx                   |    6 
 chart2/source/controller/uitest/uiobject.cxx                        |    3 
 chart2/source/inc/chartview/ExplicitValueProvider.hxx               |   92 ----
 chart2/source/view/axes/VCoordinateSystem.cxx                       |    4 
 chart2/source/view/main/ChartView.cxx                               |  149 
+++++++
 chart2/source/view/main/ExplicitValueProvider.cxx                   |  190 
----------
 19 files changed, 221 insertions(+), 336 deletions(-)

New commits:
commit 215500ea4d1f6f2d7630ab161d59c9a265425c56
Author:     Noel Grandin <noelgran...@gmail.com>
AuthorDate: Sat Mar 29 09:40:02 2025 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Mon Mar 31 18:49:10 2025 +0200

    merge ExplicitValueProvider interface into ChartView
    
    Change-Id: I4e5ef8c00b8e1b001d0f711c0c15814d316e2905
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183479
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Tested-by: Jenkins

diff --git a/chart2/Library_chart2.mk b/chart2/Library_chart2.mk
index 34e6f39fd31d..64eff3eb021a 100644
--- a/chart2/Library_chart2.mk
+++ b/chart2/Library_chart2.mk
@@ -260,7 +260,6 @@ $(eval $(call gb_Library_add_exception_objects,chart2,\
     chart2/source/view/main/DataPointSymbolSupplier \
     chart2/source/view/main/DataTableView \
     chart2/source/view/main/DrawModelWrapper \
-    chart2/source/view/main/ExplicitValueProvider \
     chart2/source/view/main/LabelPositionHelper \
     chart2/source/view/main/Linear3DTransformation \
     chart2/source/view/main/PlotterBase \
diff --git a/chart2/inc/ChartView.hxx b/chart2/inc/ChartView.hxx
index 7c9cd0ceb78a..05147f669d1f 100644
--- a/chart2/inc/ChartView.hxx
+++ b/chart2/inc/ChartView.hxx
@@ -18,7 +18,6 @@
  */
 #pragma once
 
-#include <chartview/ExplicitValueProvider.hxx>
 #include <cppuhelper/implbase.hxx>
 #include <comphelper/interfacecontainer4.hxx>
 
@@ -49,15 +48,21 @@ namespace com::sun::star::drawing { class XShapes; }
 namespace com::sun::star::io { class XOutputStream; }
 namespace com::sun::star::uno { class XComponentContext; }
 namespace com::sun::star::util { class XUpdatable2; }
+namespace com::sun::star::util { class XNumberFormatsSupplier; }
 
 class SdrPage;
 
 namespace chart {
 
-class VCoordinateSystem;
+class Axis;
+class BaseCoordinateSystem;
+class ChartModel;
+struct CreateShapeParam2D;
 class DrawModelWrapper;
+struct ExplicitIncrementData;
+struct ExplicitScaleData;
+class VCoordinateSystem;
 class VDataSeries;
-struct CreateShapeParam2D;
 
 struct TimeBasedInfo
 {
@@ -93,7 +98,6 @@ class ChartView final : public ::cppu::WeakImplHelper<
         ,css::lang::XMultiServiceFactory
         ,css::qa::XDumper
         >
-        , public ExplicitValueProvider
         , private SfxListener
 {
 private:
@@ -113,19 +117,25 @@ public:
     // ___lang::XInitialization___
     virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any 
>& aArguments ) override;
 
-    // ___ExplicitValueProvider___
-    virtual bool getExplicitValuesForAxis(
-        rtl::Reference< Axis > xAxis
+    /** Gives calculated scale and increment values for a given xAxis in the 
current view.
+        In contrast to the model data these explicit values are always 
complete as missing auto properties are calculated.
+        If the given Axis could not be found or for another reason no correct 
output can be given false is returned.
+     */
+    bool getExplicitValuesForAxis(
+        const rtl::Reference< Axis > & xAxis
         , ExplicitScaleData&  rExplicitScale
-        , ExplicitIncrementData& rExplicitIncrement ) override;
-    virtual rtl::Reference< SvxShape >
-        getShapeForCID( const OUString& rObjectCID ) override;
+        , ExplicitIncrementData& rExplicitIncrement );
+    rtl::Reference< SvxShape >
+        getShapeForCID( const OUString& rObjectCID );
 
-    virtual css::awt::Rectangle getRectangleOfObject( const OUString& 
rObjectCID, bool bSnapRect=false ) override;
+    /** for rotated objects the shape size and position differs from the 
visible rectangle
+        if bSnapRect is set to true you get the resulting visible position 
(left-top) and size
+    */
+    css::awt::Rectangle getRectangleOfObject( const OUString& rObjectCID, bool 
bSnapRect=false );
 
-    virtual css::awt::Rectangle getDiagramRectangleExcludingAxes() override;
+    css::awt::Rectangle getDiagramRectangleExcludingAxes();
 
-    std::shared_ptr< DrawModelWrapper > getDrawModelWrapper() override;
+    std::shared_ptr< DrawModelWrapper > getDrawModelWrapper();
 
     // ___XTransferable___
     virtual css::uno::Any SAL_CALL getTransferData( const 
css::datatransfer::DataFlavor& aFlavor ) override;
@@ -181,6 +191,24 @@ public:
 
     void dumpAsXml(xmlTextWriterPtr pWriter) const;
 
+    static css::awt::Rectangle
+        AddSubtractAxisTitleSizes(
+                ChartModel& rModel
+            , ChartView* pChartView
+            , const css::awt::Rectangle& rPositionAndSize, bool bSubtract );
+
+    static sal_Int32 getExplicitNumberFormatKeyForAxis(
+              const rtl::Reference< ::chart::Axis >& xAxis
+            , const rtl::Reference< ::chart::BaseCoordinateSystem > & 
xCorrespondingCoordinateSystem
+            , const rtl::Reference<::chart::ChartModel>& xChartDoc);
+
+    static sal_Int32 getExplicitNumberFormatKeyForDataLabel(
+            const css::uno::Reference< css::beans::XPropertySet >& 
xSeriesOrPointProp );
+
+    static sal_Int32 getExplicitPercentageNumberFormatKeyForDataLabel(
+            const css::uno::Reference< css::beans::XPropertySet >& 
xSeriesOrPointProp
+            , const css::uno::Reference< css::util::XNumberFormatsSupplier >& 
xNumberFormatsSupplier );
+
 private: //methods
     void createShapes();
     void createShapes2D( const css::awt::Size& rPageSize );
diff --git a/chart2/inc/pch/precompiled_chart2.hxx 
b/chart2/inc/pch/precompiled_chart2.hxx
index 53c4fc617a59..650f30948bec 100644
--- a/chart2/inc/pch/precompiled_chart2.hxx
+++ b/chart2/inc/pch/precompiled_chart2.hxx
@@ -204,7 +204,6 @@
 #include <basegfx/vector/b3dvector.hxx>
 #include <chartview/ChartSfxItemIds.hxx>
 #include <chartview/DrawModelWrapper.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
 #include <com/sun/star/awt/DeviceInfo.hpp>
 #include <com/sun/star/awt/FontDescriptor.hpp>
 #include <com/sun/star/awt/FontSlant.hpp>
diff --git a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx 
b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
index f2b2d3c0a685..7c8aaf08f11b 100644
--- a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
+++ b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx
@@ -24,7 +24,6 @@
 #include <CommonConverters.hxx>
 #include <servicenames.hxx>
 #include <ObjectIdentifier.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
 #include <chartview/DrawModelWrapper.hxx>
 #include <Axis.hxx>
 #include <AxisHelper.hxx>
@@ -145,14 +144,14 @@ sal_Int32 
Chart2ModelContact::getExplicitNumberFormatKeyForAxis(
         AxisHelper::getCoordinateSystemOfAxis(
               xAxis, m_xChartModel.get()->getFirstChartDiagram() ) );
 
-    return ExplicitValueProvider::getExplicitNumberFormatKeyForAxis( xAxis, 
xCooSys
+    return ChartView::getExplicitNumberFormatKeyForAxis( xAxis, xCooSys
               , m_xChartModel.get() );
 }
 
 sal_Int32 Chart2ModelContact::getExplicitNumberFormatKeyForSeries(
             const Reference< chart2::XDataSeries >& xSeries )
 {
-    return ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel(
+    return ChartView::getExplicitNumberFormatKeyForDataLabel(
         uno::Reference< beans::XPropertySet >( xSeries, uno::UNO_QUERY ));
 }
 
@@ -163,7 +162,7 @@ awt::Size Chart2ModelContact::GetPageSize() const
 
 awt::Rectangle Chart2ModelContact::SubstractAxisTitleSizes( const 
awt::Rectangle& rPositionRect )
 {
-    awt::Rectangle aRect = ExplicitValueProvider::AddSubtractAxisTitleSizes(
+    awt::Rectangle aRect = ChartView::AddSubtractAxisTitleSizes(
         *m_xChartModel.get(), getChartView().get(), rPositionRect, true );
     return aRect;
 }
@@ -173,7 +172,7 @@ awt::Rectangle 
Chart2ModelContact::GetDiagramRectangleIncludingTitle() const
     awt::Rectangle aRect( GetDiagramRectangleIncludingAxes() );
 
     //add axis title sizes to the diagram size
-    aRect = ExplicitValueProvider::AddSubtractAxisTitleSizes(
+    aRect = ChartView::AddSubtractAxisTitleSizes(
         *m_xChartModel.get(), getChartView().get(), aRect, false );
 
     return aRect;
diff --git a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx 
b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
index ab6de48e0fe1..0450207e3255 100644
--- a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx
@@ -30,7 +30,6 @@
 #include <ControllerLockGuard.hxx>
 #include <DisposeHelper.hxx>
 #include "DataSeriesPointWrapper.hxx"
-#include <chartview/ExplicitValueProvider.hxx>
 #include <chartview/DrawModelWrapper.hxx>
 #include "Chart2ModelContact.hxx"
 #include <BaseCoordinateSystem.hxx>
diff --git a/chart2/source/controller/dialogs/DataBrowserModel.cxx 
b/chart2/source/controller/dialogs/DataBrowserModel.cxx
index dd333023a64c..4b2a8ecc9776 100644
--- a/chart2/source/controller/dialogs/DataBrowserModel.cxx
+++ b/chart2/source/controller/dialogs/DataBrowserModel.cxx
@@ -22,13 +22,13 @@
 #include <ChartModelHelper.hxx>
 #include <ChartType.hxx>
 #include <ChartTypeManager.hxx>
+#include <ChartView.hxx>
 #include <Diagram.hxx>
 #include <DataSeries.hxx>
 #include <DataSeriesHelper.hxx>
 #include <ControllerLockGuard.hxx>
 #include <StatisticsHelper.hxx>
 #include <ChartTypeHelper.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
 #include <ExplicitCategoriesProvider.hxx>
 #include <BaseCoordinateSystem.hxx>
 #include <ChartModel.hxx>
@@ -836,7 +836,7 @@ void DataBrowserModel::updateFromModel()
 
                         if( aRole == aRoleForDataLabelNumberFormat )
                         {
-                            nSequenceNumberFormatKey = 
ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel(
+                            nSequenceNumberFormatKey = 
ChartView::getExplicitNumberFormatKeyForDataLabel(
                                 xSeries);
                         }
                         else if( aRole == "values-x" )
diff --git a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx 
b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
index 693af9b5caae..9b098feb1b09 100644
--- a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
+++ b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx
@@ -20,7 +20,6 @@
 #include <dlg_InsertErrorBars.hxx>
 #include <res_ErrorBar.hxx>
 #include <chartview/ExplicitScaleValues.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
 #include <ChartModel.hxx>
 #include <ChartView.hxx>
 #include <ObjectIdentifier.hxx>
@@ -69,7 +68,7 @@ double 
InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals(
 {
     double fStepWidth = 0.001;
 
-    ExplicitValueProvider* pExplicitValueProvider( xChartView.get() );
+    ChartView* pExplicitValueProvider( xChartView.get() );
     if( pExplicitValueProvider )
     {
         rtl::Reference< Diagram > xDiagram( 
xChartModel->getFirstChartDiagram() );
diff --git a/chart2/source/controller/inc/ObjectHierarchy.hxx 
b/chart2/source/controller/inc/ObjectHierarchy.hxx
index b0b303fbf770..e034d218fb27 100644
--- a/chart2/source/controller/inc/ObjectHierarchy.hxx
+++ b/chart2/source/controller/inc/ObjectHierarchy.hxx
@@ -28,7 +28,7 @@ namespace com::sun::star::awt { struct KeyEvent; }
 namespace chart
 {
 
-class ExplicitValueProvider;
+class ChartView;
 
 class ObjectHierarchy
 {
@@ -42,7 +42,7 @@ public:
      */
     explicit ObjectHierarchy(
         const rtl::Reference<::chart::ChartModel> & xChartDocument,
-        ExplicitValueProvider * pExplicitValueProvider,
+        ChartView * pExplicitValueProvider,
         bool bFlattenDiagram = false,
         bool bOrderingForElementSelector = false );
     ~ObjectHierarchy();
@@ -88,7 +88,7 @@ private:
 
     typedef std::map<ObjectIdentifier, tChildContainer> tChildMap;
     tChildMap m_aChildMap;
-    ExplicitValueProvider* m_pExplicitValueProvider;
+    ChartView* m_pExplicitValueProvider;
     bool m_bFlattenDiagram;
     bool m_bOrderingForElementSelector;
 };
@@ -98,7 +98,7 @@ class ObjectKeyNavigation
 public:
     explicit ObjectKeyNavigation( ObjectIdentifier aCurrentOID,
                                   rtl::Reference<::chart::ChartModel> 
xChartDocument,
-                                  ExplicitValueProvider * 
pExplicitValueProvider );
+                                  ChartView * pExplicitValueProvider );
 
     bool handleKeyEvent( const css::awt::KeyEvent & rEvent );
     const ObjectIdentifier& getCurrentSelection() const { return 
m_aCurrentOID;}
@@ -116,7 +116,7 @@ private:
 
     ObjectIdentifier m_aCurrentOID;
     rtl::Reference<::chart::ChartModel> m_xChartDocument;
-    ExplicitValueProvider * m_pExplicitValueProvider;
+    ChartView * m_pExplicitValueProvider;
 };
 
 } //  namespace chart
diff --git a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx 
b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
index 9f490e42fb2e..01c7971b15d6 100644
--- a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
+++ b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx
@@ -23,7 +23,6 @@
 #include <GraphicPropertyItemConverter.hxx>
 #include <chartview/ChartSfxItemIds.hxx>
 #include <chartview/ExplicitScaleValues.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
 #include "SchWhichPairs.hxx"
 #include <ChartModel.hxx>
 #include <Axis.hxx>
@@ -34,6 +33,7 @@
 #include <Diagram.hxx>
 #include <unonames.hxx>
 #include <BaseCoordinateSystem.hxx>
+#include <ChartView.hxx>
 #include <memory>
 
 #include <com/sun/star/chart/ChartAxisLabelPosition.hpp>
@@ -358,7 +358,7 @@ void AxisItemConverter::FillSpecialItem( sal_uInt16 
nWhichId, SfxItemSet & rOutI
 
             rtl::Reference< Axis > xCrossingMainAxis = 
AxisHelper::getCrossingMainAxis( m_xAxis, xCooSys );
 
-            sal_Int32 nFormatKey = 
ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
+            sal_Int32 nFormatKey = 
ChartView::getExplicitNumberFormatKeyForAxis(
                 xCrossingMainAxis, xCooSys, m_xChartDoc);
 
             rOutItemSet.Put( SfxUInt32Item( nWhichId, nFormatKey ));
@@ -406,7 +406,7 @@ void AxisItemConverter::FillSpecialItem( sal_uInt16 
nWhichId, SfxItemSet & rOutI
                         AxisHelper::getCoordinateSystemOfAxis(
                               m_xAxis, m_xChartDoc->getFirstChartDiagram() ) );
 
-                sal_Int32 nFormatKey = 
ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
+                sal_Int32 nFormatKey = 
ChartView::getExplicitNumberFormatKeyForAxis(
                     m_xAxis, xCooSys, m_xChartDoc);
 
                 rOutItemSet.Put( SfxUInt32Item( nWhichId, nFormatKey ));
@@ -944,7 +944,7 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 
nWhichId, const SfxItemSet
                             AxisHelper::getCoordinateSystemOfAxis(
                                 m_xAxis, m_xChartDoc->getFirstChartDiagram() );
 
-                        sal_Int32 nFormatKey = 
ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
+                        sal_Int32 nFormatKey = 
ChartView::getExplicitNumberFormatKeyForAxis(
                             m_xAxis, xCooSys, m_xChartDoc);
 
                         aValue <<= nFormatKey;
diff --git 
a/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx 
b/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx
index 1cc120e8fec2..fe6a3a07e5a4 100644
--- a/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx
+++ b/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx
@@ -33,7 +33,7 @@
 #include <TitleItemConverter.hxx>
 #include <Axis.hxx>
 #include <AxisHelper.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
+#include <ChartView.hxx>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::chart2;
@@ -111,8 +111,8 @@ AllDataLabelItemConverter::AllDataLabelItemConverter(
     {
         uno::Reference< uno::XComponentContext> xContext;//do not need Context 
for label properties
 
-        sal_Int32 
nNumberFormat=ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel( 
series );
-        sal_Int32 
nPercentNumberFormat=ExplicitValueProvider::getExplicitPercentageNumberFormatKeyForDataLabel(
+        sal_Int32 
nNumberFormat=ChartView::getExplicitNumberFormatKeyForDataLabel( series );
+        sal_Int32 
nPercentNumberFormat=ChartView::getExplicitPercentageNumberFormatKeyForDataLabel(
                 series,xChartModel);
 
         m_aConverters.emplace_back(
diff --git a/chart2/source/controller/main/ChartController_Properties.cxx 
b/chart2/source/controller/main/ChartController_Properties.cxx
index 304af1d07dc6..8722da51ec51 100644
--- a/chart2/source/controller/main/ChartController_Properties.cxx
+++ b/chart2/source/controller/main/ChartController_Properties.cxx
@@ -23,7 +23,6 @@
 #include <chartview/ChartSfxItemIds.hxx>
 #include <ObjectIdentifier.hxx>
 #include <chartview/ExplicitScaleValues.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
 #include <dlg_ObjectProperties.hxx>
 #include <dlg_View3D.hxx>
 #include <dlg_InsertErrorBars.hxx>
@@ -79,7 +78,7 @@ namespace
 wrapper::ItemConverter* createItemConverter(
     std::u16string_view aObjectCID, const rtl::Reference<::chart::ChartModel>& 
xChartModel,
     const uno::Reference<uno::XComponentContext>& xContext, SdrModel& 
rDrawModel,
-    ExplicitValueProvider* pExplicitValueProvider, ReferenceSizeProvider const 
* pRefSizeProvider )
+    ChartView* pExplicitValueProvider, ReferenceSizeProvider const * 
pRefSizeProvider )
 {
     wrapper::ItemConverter* pItemConverter=nullptr;
 
@@ -178,8 +177,8 @@ wrapper::ItemConverter* createItemConverter(
 
                 bool bDataSeries = eObjectType == OBJECTTYPE_DATA_LABELS;
 
-                sal_Int32 nNumberFormat = 
ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel( 
xObjectProperties );
-                sal_Int32 nPercentNumberFormat = 
ExplicitValueProvider::getExplicitPercentageNumberFormatKeyForDataLabel(
+                sal_Int32 nNumberFormat = 
ChartView::getExplicitNumberFormatKeyForDataLabel( xObjectProperties );
+                sal_Int32 nPercentNumberFormat = 
ChartView::getExplicitPercentageNumberFormatKeyForDataLabel(
                     xObjectProperties, xChartModel);
 
                 pItemConverter = new wrapper::TextLabelItemConverter(
@@ -231,8 +230,8 @@ wrapper::ItemConverter* createItemConverter(
                         }
                     }
                 }
-                sal_Int32 
nNumberFormat=ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel( 
xObjectProperties );
-                sal_Int32 
nPercentNumberFormat=ExplicitValueProvider::getExplicitPercentageNumberFormatKeyForDataLabel(
+                sal_Int32 
nNumberFormat=ChartView::getExplicitNumberFormatKeyForDataLabel( 
xObjectProperties );
+                sal_Int32 
nPercentNumberFormat=ChartView::getExplicitPercentageNumberFormatKeyForDataLabel(
                         xObjectProperties, xChartModel);
 
                 pItemConverter =  new wrapper::DataPointItemConverter( 
xChartModel, xContext,
diff --git a/chart2/source/controller/main/ChartController_Window.cxx 
b/chart2/source/controller/main/ChartController_Window.cxx
index b0fbf6a25cb4..c14e97d532a7 100644
--- a/chart2/source/controller/main/ChartController_Window.cxx
+++ b/chart2/source/controller/main/ChartController_Window.cxx
@@ -40,7 +40,6 @@
 #include "DragMethod_PieSegment.hxx"
 #include "DragMethod_RotateDiagram.hxx"
 #include <ObjectHierarchy.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
 #include <RelativePositionHelper.hxx>
 #include <chartview/DrawModelWrapper.hxx>
 #include <RegressionCurveHelper.hxx>
@@ -1778,7 +1777,7 @@ bool ChartController::impl_moveOrResizeObject(
         if( ( bDeterminePos || bDetermineSize ) &&
             ( aRefSize.Width > 0 && aRefSize.Height > 0 ) )
         {
-            ExplicitValueProvider * pValueProvider( m_xChartView.get() );
+            ChartView * pValueProvider( m_xChartView.get() );
             if( pValueProvider )
             {
                 awt::Rectangle aRect( pValueProvider->getRectangleOfObject( 
rCID ));
diff --git a/chart2/source/controller/main/ElementSelector.cxx 
b/chart2/source/controller/main/ElementSelector.cxx
index ee49f261299a..143fa3886039 100644
--- a/chart2/source/controller/main/ElementSelector.cxx
+++ b/chart2/source/controller/main/ElementSelector.cxx
@@ -119,7 +119,7 @@ void SelectorListBox::UpdateChartElementsListAndSelection()
         rtl::Reference< ChartModel > xFact = xChartController->getChartModel();
         if( xFact.is() )
             xChartView = xFact->createInstance( CHART_VIEW_SERVICE_NAME );
-        ExplicitValueProvider* pExplicitValueProvider = nullptr; 
//ExplicitValueProvider::getExplicitValueProvider(xChartView); this creates all 
visible data points, that's too much
+        ChartView* pExplicitValueProvider = nullptr; 
//ExplicitValueProvider::getExplicitValueProvider(xChartView); this creates all 
visible data points, that's too much
         ObjectHierarchy aHierarchy( xChartDoc, pExplicitValueProvider, true 
/*bFlattenDiagram*/, true /*bOrderingForElementSelector*/ );
         lcl_addObjectsToList( aHierarchy, 
::chart::ObjectHierarchy::getRootNodeOID(), m_aEntries, 0, xChartDoc );
 
diff --git a/chart2/source/controller/main/ObjectHierarchy.cxx 
b/chart2/source/controller/main/ObjectHierarchy.cxx
index e5603394b5af..7b1674acc673 100644
--- a/chart2/source/controller/main/ObjectHierarchy.cxx
+++ b/chart2/source/controller/main/ObjectHierarchy.cxx
@@ -19,12 +19,12 @@
 
 #include <ObjectHierarchy.hxx>
 #include <ObjectIdentifier.hxx>
+#include <ChartView.hxx>
 #include <Diagram.hxx>
 #include <RegressionCurveHelper.hxx>
 #include <RegressionCurveModel.hxx>
 #include <Axis.hxx>
 #include <AxisHelper.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
 #include <ChartType.hxx>
 #include <ChartTypeHelper.hxx>
 #include <ChartModel.hxx>
@@ -513,7 +513,7 @@ ObjectIdentifier ObjectHierarchy::getParent(
 
 ObjectHierarchy::ObjectHierarchy(
     const rtl::Reference<::chart::ChartModel> & xChartDocument,
-    ExplicitValueProvider * pExplicitValueProvider /* = 0 */,
+    ChartView * pExplicitValueProvider /* = 0 */,
     bool bFlattenDiagram /* = false */,
     bool bOrderingForElementSelector /* = false */) :
         m_pExplicitValueProvider( pExplicitValueProvider ),
@@ -561,7 +561,7 @@ sal_Int32 ObjectHierarchy::getIndexInParent(
 ObjectKeyNavigation::ObjectKeyNavigation(
     ObjectIdentifier aCurrentOID,
     rtl::Reference<::chart::ChartModel> xChartDocument,
-    ExplicitValueProvider * pExplicitValueProvider /* = 0 */ ) :
+    ChartView * pExplicitValueProvider /* = 0 */ ) :
         m_aCurrentOID(std::move( aCurrentOID )),
         m_xChartDocument(std::move( xChartDocument )),
         m_pExplicitValueProvider( pExplicitValueProvider )
diff --git a/chart2/source/controller/uitest/uiobject.cxx 
b/chart2/source/controller/uitest/uiobject.cxx
index 2f10a38412f7..edc93d370f0a 100644
--- a/chart2/source/controller/uitest/uiobject.cxx
+++ b/chart2/source/controller/uitest/uiobject.cxx
@@ -15,7 +15,6 @@
 #include <ChartController.hxx>
 #include <ChartModel.hxx>
 #include <ObjectHierarchy.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
 
 #include <utility>
 #include <vcl/svapp.hxx>
@@ -182,7 +181,7 @@ std::set<OUString> ChartWindowUIObject::get_children() const
 
     rtl::Reference<::chart::ChartModel> xChartDoc = 
pController->getChartModel();
     rtl::Reference<::chart::ChartView> xChartView = 
pController->getChartView();
-    chart::ExplicitValueProvider* pValueProvider = xChartView.get();
+    chart::ChartView* pValueProvider = xChartView.get();
     chart::ObjectHierarchy aHierarchy(xChartDoc, pValueProvider);
     chart::ObjectIdentifier aIdentifier = 
chart::ObjectHierarchy::getRootNodeOID();
     aChildren.insert(aIdentifier.getObjectCID());
diff --git a/chart2/source/inc/chartview/ExplicitValueProvider.hxx 
b/chart2/source/inc/chartview/ExplicitValueProvider.hxx
deleted file mode 100644
index 6c526382410f..000000000000
--- a/chart2/source/inc/chartview/ExplicitValueProvider.hxx
+++ /dev/null
@@ -1,92 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-#pragma once
-
-#include <config_options.h>
-#include <sal/types.h>
-#include <rtl/ref.hxx>
-#include <rtl/ustring.hxx>
-
-#include <memory>
-
-namespace com::sun::star::beans { class XPropertySet; }
-namespace com::sun::star::uno { template <typename > class Reference; }
-namespace com::sun::star::util { class XNumberFormatsSupplier; }
-namespace com::sun::star::awt { struct Rectangle; }
-class SvxShape;
-
-namespace chart
-{
-class Axis;
-class BaseCoordinateSystem;
-class DrawModelWrapper;
-class ChartModel;
-struct ExplicitIncrementData;
-struct ExplicitScaleData;
-
-class SAL_LOPLUGIN_ANNOTATE("crosscast") ExplicitValueProvider
-{
-public:
-    /** Gives calculated scale and increment values for a given xAxis in the 
current view.
-        In contrast to the model data these explicit values are always 
complete as missing auto properties are calculated.
-        If the given Axis could not be found or for another reason no correct 
output can be given false is returned.
-     */
-    virtual bool getExplicitValuesForAxis(
-        rtl::Reference< ::chart::Axis > xAxis
-        , ExplicitScaleData&  rExplicitScale
-        , ExplicitIncrementData& rExplicitIncrement )=0;
-
-    /** for rotated objects the shape size and position differs from the 
visible rectangle
-        if bSnapRect is set to true you get the resulting visible position 
(left-top) and size
-    */
-    virtual css::awt::Rectangle
-        getRectangleOfObject( const OUString& rObjectCID, bool bSnapRect=false 
)=0;
-
-    virtual css::awt::Rectangle getDiagramRectangleExcludingAxes()=0;
-
-    virtual rtl::Reference< SvxShape >
-        getShapeForCID( const OUString& rObjectCID )=0;
-
-    virtual std::shared_ptr< DrawModelWrapper > getDrawModelWrapper() = 0;
-
-    static css::awt::Rectangle
-        AddSubtractAxisTitleSizes(
-                ChartModel& rModel
-            , ExplicitValueProvider* pChartView
-            , const css::awt::Rectangle& rPositionAndSize, bool bSubtract );
-
-    static sal_Int32 getExplicitNumberFormatKeyForAxis(
-              const rtl::Reference< ::chart::Axis >& xAxis
-            , const rtl::Reference< ::chart::BaseCoordinateSystem > & 
xCorrespondingCoordinateSystem
-            , const rtl::Reference<::chart::ChartModel>& xChartDoc);
-
-    static sal_Int32 getExplicitNumberFormatKeyForDataLabel(
-            const css::uno::Reference< css::beans::XPropertySet >& 
xSeriesOrPointProp );
-
-    static sal_Int32 getExplicitPercentageNumberFormatKeyForDataLabel(
-            const css::uno::Reference< css::beans::XPropertySet >& 
xSeriesOrPointProp
-            , const css::uno::Reference< css::util::XNumberFormatsSupplier >& 
xNumberFormatsSupplier );
-
-protected:
-    ~ExplicitValueProvider() = default;
-};
-
-} //namespace chart
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/chart2/source/view/axes/VCoordinateSystem.cxx 
b/chart2/source/view/axes/VCoordinateSystem.cxx
index 86d9c485fec7..90bc5ed6bb7e 100644
--- a/chart2/source/view/axes/VCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCoordinateSystem.cxx
@@ -18,6 +18,7 @@
  */
 
 #include <BaseGFXHelper.hxx>
+#include <ChartView.hxx>
 #include <DateHelper.hxx>
 #include <VCoordinateSystem.hxx>
 #include "VCartesianCoordinateSystem.hxx"
@@ -33,7 +34,6 @@
 #include <Axis.hxx>
 #include "VAxisBase.hxx"
 #include <defines.hxx>
-#include <chartview/ExplicitValueProvider.hxx>
 #include <com/sun/star/chart/TimeUnit.hpp>
 #include <com/sun/star/chart2/AxisType.hpp>
 #include <rtl/math.hxx>
@@ -569,7 +569,7 @@ sal_Int32 VCoordinateSystem::getNumberFormatKeyForAxis(
         const rtl::Reference< Axis >& xAxis
         , const rtl::Reference<::chart::ChartModel>& xChartDoc)
 {
-    return ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
+    return ChartView::getExplicitNumberFormatKeyForAxis(
                 xAxis, m_xCooSysModel, xChartDoc);
 }
 
diff --git a/chart2/source/view/main/ChartView.cxx 
b/chart2/source/view/main/ChartView.cxx
index 35482b061b67..ebd04fecbebb 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -778,7 +778,7 @@ awt::Rectangle ChartView::impl_createDiagramAndContent( 
const CreateShapeParam2D
 }
 
 bool ChartView::getExplicitValuesForAxis(
-                     rtl::Reference< Axis > xAxis
+                     const rtl::Reference< Axis >& xAxis
                      , ExplicitScaleData&  rExplicitScale
                      , ExplicitIncrementData& rExplicitIncrement )
 {
@@ -2076,6 +2076,153 @@ bool ChartView::createAxisTitleShapes2D( 
CreateShapeParam2D& rParam, const css::
     return true;
 }
 
+namespace
+{
+constexpr sal_Int32 constDiagramTitleSpace = 200; //=0,2 cm spacing
+
+bool lcl_getPropertySwapXAndYAxis(const rtl::Reference<Diagram>& xDiagram)
+{
+    bool bSwapXAndY = false;
+
+    if (xDiagram.is())
+    {
+        const std::vector<rtl::Reference<BaseCoordinateSystem>> aCooSysList(
+            xDiagram->getBaseCoordinateSystems());
+        if (!aCooSysList.empty())
+        {
+            try
+            {
+                aCooSysList[0]->getPropertyValue(u"SwapXAndYAxis"_ustr) >>= 
bSwapXAndY;
+            }
+            catch (const uno::Exception&)
+            {
+                TOOLS_WARN_EXCEPTION("chart2", "");
+            }
+        }
+    }
+    return bSwapXAndY;
+}
+
+} // end anonymous namespace
+
+sal_Int32 ChartView::getExplicitNumberFormatKeyForAxis(
+    const rtl::Reference<::chart::Axis>& xAxis,
+    const rtl::Reference<::chart::BaseCoordinateSystem>& 
xCorrespondingCoordinateSystem,
+    const rtl::Reference<::chart::ChartModel>& xChartDoc)
+{
+    return AxisHelper::getExplicitNumberFormatKeyForAxis(
+        xAxis, xCorrespondingCoordinateSystem, xChartDoc,
+        true /*bSearchForParallelAxisIfNothingIsFound*/);
+}
+
+sal_Int32 ChartView::getExplicitNumberFormatKeyForDataLabel(
+    const uno::Reference<beans::XPropertySet>& xSeriesOrPointProp)
+{
+    return 
DataSeriesHelper::getExplicitNumberFormatKeyForDataLabel(xSeriesOrPointProp);
+}
+
+sal_Int32 ChartView::getExplicitPercentageNumberFormatKeyForDataLabel(
+    const uno::Reference<beans::XPropertySet>& xSeriesOrPointProp,
+    const uno::Reference<util::XNumberFormatsSupplier>& xNumberFormatsSupplier)
+{
+    sal_Int32 nFormat = 0;
+    if (!xSeriesOrPointProp.is())
+        return nFormat;
+    if (!(xSeriesOrPointProp->getPropertyValue(u"PercentageNumberFormat"_ustr) 
>>= nFormat))
+    {
+        nFormat = 
DiagramHelper::getPercentNumberFormat(xNumberFormatsSupplier);
+    }
+    if (nFormat < 0)
+        nFormat = 0;
+    return nFormat;
+}
+
+awt::Rectangle ChartView::AddSubtractAxisTitleSizes(
+    ChartModel& rModel, ChartView* pChartView, const awt::Rectangle& 
rPositionAndSize,
+    bool bSubtract)
+{
+    awt::Rectangle aRet(rPositionAndSize);
+
+    //add axis title sizes to the diagram size
+    rtl::Reference<::chart::Title> xTitle_Height(
+        TitleHelper::getTitle(TitleHelper::TITLE_AT_STANDARD_X_AXIS_POSITION, 
rModel));
+    rtl::Reference<::chart::Title> xTitle_Width(
+        TitleHelper::getTitle(TitleHelper::TITLE_AT_STANDARD_Y_AXIS_POSITION, 
rModel));
+    rtl::Reference<::chart::Title> xSecondTitle_Height(
+        TitleHelper::getTitle(TitleHelper::SECONDARY_X_AXIS_TITLE, rModel));
+    rtl::Reference<::chart::Title> xSecondTitle_Width(
+        TitleHelper::getTitle(TitleHelper::SECONDARY_Y_AXIS_TITLE, rModel));
+    if (xTitle_Height.is() || xTitle_Width.is() || xSecondTitle_Height.is()
+        || xSecondTitle_Width.is())
+    {
+        if (pChartView)
+        {
+            //detect whether x axis points into x direction or not
+            if (lcl_getPropertySwapXAndYAxis(rModel.getFirstChartDiagram()))
+            {
+                std::swap(xTitle_Height, xTitle_Width);
+                std::swap(xSecondTitle_Height, xSecondTitle_Width);
+            }
+
+            sal_Int32 nTitleSpaceWidth = 0;
+            sal_Int32 nTitleSpaceHeight = 0;
+            sal_Int32 nSecondTitleSpaceWidth = 0;
+            sal_Int32 nSecondTitleSpaceHeight = 0;
+
+            if (xTitle_Height.is())
+            {
+                OUString aCID_X(
+                    
ObjectIdentifier::createClassifiedIdentifierForObject(xTitle_Height, &rModel));
+                nTitleSpaceHeight
+                    = pChartView->getRectangleOfObject(aCID_X, true).Height;
+                if (nTitleSpaceHeight)
+                    nTitleSpaceHeight += constDiagramTitleSpace;
+            }
+            if (xTitle_Width.is())
+            {
+                OUString aCID_Y(
+                    
ObjectIdentifier::createClassifiedIdentifierForObject(xTitle_Width, &rModel));
+                nTitleSpaceWidth = pChartView->getRectangleOfObject(aCID_Y, 
true).Width;
+                if (nTitleSpaceWidth)
+                    nTitleSpaceWidth += constDiagramTitleSpace;
+            }
+            if (xSecondTitle_Height.is())
+            {
+                OUString 
aCID_X(ObjectIdentifier::createClassifiedIdentifierForObject(
+                    xSecondTitle_Height, &rModel));
+                nSecondTitleSpaceHeight
+                    = pChartView->getRectangleOfObject(aCID_X, true).Height;
+                if (nSecondTitleSpaceHeight)
+                    nSecondTitleSpaceHeight += constDiagramTitleSpace;
+            }
+            if (xSecondTitle_Width.is())
+            {
+                OUString 
aCID_Y(ObjectIdentifier::createClassifiedIdentifierForObject(
+                    xSecondTitle_Width, &rModel));
+                nSecondTitleSpaceWidth
+                    += pChartView->getRectangleOfObject(aCID_Y, true).Width;
+                if (nSecondTitleSpaceWidth)
+                    nSecondTitleSpaceWidth += constDiagramTitleSpace;
+            }
+            if (bSubtract)
+            {
+                aRet.X += nTitleSpaceWidth;
+                aRet.Y += nSecondTitleSpaceHeight;
+                aRet.Width -= (nTitleSpaceWidth + nSecondTitleSpaceWidth);
+                aRet.Height -= (nTitleSpaceHeight + nSecondTitleSpaceHeight);
+            }
+            else
+            {
+                aRet.X -= nTitleSpaceWidth;
+                aRet.Y -= nSecondTitleSpaceHeight;
+                aRet.Width += nTitleSpaceWidth + nSecondTitleSpaceWidth;
+                aRet.Height += nTitleSpaceHeight + nSecondTitleSpaceHeight;
+            }
+        }
+    }
+    return aRet;
+}
+
 } //namespace chart
 
 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface *
diff --git a/chart2/source/view/main/ExplicitValueProvider.cxx 
b/chart2/source/view/main/ExplicitValueProvider.cxx
deleted file mode 100644
index c34fe64cce65..000000000000
--- a/chart2/source/view/main/ExplicitValueProvider.cxx
+++ /dev/null
@@ -1,190 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- *   Licensed to the Apache Software Foundation (ASF) under one or more
- *   contributor license agreements. See the NOTICE file distributed
- *   with this work for additional information regarding copyright
- *   ownership. The ASF licenses this file to you under the Apache
- *   License, Version 2.0 (the "License"); you may not use this file
- *   except in compliance with the License. You may obtain a copy of
- *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#include <chartview/ExplicitValueProvider.hxx>
-#include <AxisHelper.hxx>
-#include <ChartModel.hxx>
-#include <Diagram.hxx>
-#include <DiagramHelper.hxx>
-#include <unonames.hxx>
-#include <BaseCoordinateSystem.hxx>
-#include <TitleHelper.hxx>
-#include <ObjectIdentifier.hxx>
-#include <DataSeriesHelper.hxx>
-
-#include <comphelper/servicehelper.hxx>
-#include <comphelper/diagnose_ex.hxx>
-
-namespace chart
-{
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::chart2;
-using ::com::sun::star::uno::Reference;
-
-namespace
-{
-constexpr sal_Int32 constDiagramTitleSpace = 200; //=0,2 cm spacing
-
-bool lcl_getPropertySwapXAndYAxis(const rtl::Reference<Diagram>& xDiagram)
-{
-    bool bSwapXAndY = false;
-
-    if (xDiagram.is())
-    {
-        const std::vector<rtl::Reference<BaseCoordinateSystem>> aCooSysList(
-            xDiagram->getBaseCoordinateSystems());
-        if (!aCooSysList.empty())
-        {
-            try
-            {
-                aCooSysList[0]->getPropertyValue(u"SwapXAndYAxis"_ustr) >>= 
bSwapXAndY;
-            }
-            catch (const uno::Exception&)
-            {
-                TOOLS_WARN_EXCEPTION("chart2", "");
-            }
-        }
-    }
-    return bSwapXAndY;
-}
-
-} // end anonymous namespace
-
-sal_Int32 ExplicitValueProvider::getExplicitNumberFormatKeyForAxis(
-    const rtl::Reference<::chart::Axis>& xAxis,
-    const rtl::Reference<::chart::BaseCoordinateSystem>& 
xCorrespondingCoordinateSystem,
-    const rtl::Reference<::chart::ChartModel>& xChartDoc)
-{
-    return AxisHelper::getExplicitNumberFormatKeyForAxis(
-        xAxis, xCorrespondingCoordinateSystem, xChartDoc,
-        true /*bSearchForParallelAxisIfNothingIsFound*/);
-}
-
-sal_Int32 ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel(
-    const uno::Reference<beans::XPropertySet>& xSeriesOrPointProp)
-{
-    return 
DataSeriesHelper::getExplicitNumberFormatKeyForDataLabel(xSeriesOrPointProp);
-}
-
-sal_Int32 
ExplicitValueProvider::getExplicitPercentageNumberFormatKeyForDataLabel(
-    const uno::Reference<beans::XPropertySet>& xSeriesOrPointProp,
-    const uno::Reference<util::XNumberFormatsSupplier>& xNumberFormatsSupplier)
-{
-    sal_Int32 nFormat = 0;
-    if (!xSeriesOrPointProp.is())
-        return nFormat;
-    if (!(xSeriesOrPointProp->getPropertyValue(u"PercentageNumberFormat"_ustr) 
>>= nFormat))
-    {
-        nFormat = 
DiagramHelper::getPercentNumberFormat(xNumberFormatsSupplier);
-    }
-    if (nFormat < 0)
-        nFormat = 0;
-    return nFormat;
-}
-
-awt::Rectangle ExplicitValueProvider::AddSubtractAxisTitleSizes(
-    ChartModel& rModel, ExplicitValueProvider* pChartView, const 
awt::Rectangle& rPositionAndSize,
-    bool bSubtract)
-{
-    awt::Rectangle aRet(rPositionAndSize);
-
-    //add axis title sizes to the diagram size
-    rtl::Reference<::chart::Title> xTitle_Height(
-        TitleHelper::getTitle(TitleHelper::TITLE_AT_STANDARD_X_AXIS_POSITION, 
rModel));
-    rtl::Reference<::chart::Title> xTitle_Width(
-        TitleHelper::getTitle(TitleHelper::TITLE_AT_STANDARD_Y_AXIS_POSITION, 
rModel));
-    rtl::Reference<::chart::Title> xSecondTitle_Height(
-        TitleHelper::getTitle(TitleHelper::SECONDARY_X_AXIS_TITLE, rModel));
-    rtl::Reference<::chart::Title> xSecondTitle_Width(
-        TitleHelper::getTitle(TitleHelper::SECONDARY_Y_AXIS_TITLE, rModel));
-    if (xTitle_Height.is() || xTitle_Width.is() || xSecondTitle_Height.is()
-        || xSecondTitle_Width.is())
-    {
-        ExplicitValueProvider* pExplicitValueProvider = pChartView;
-        if (pExplicitValueProvider)
-        {
-            //detect whether x axis points into x direction or not
-            if (lcl_getPropertySwapXAndYAxis(rModel.getFirstChartDiagram()))
-            {
-                std::swap(xTitle_Height, xTitle_Width);
-                std::swap(xSecondTitle_Height, xSecondTitle_Width);
-            }
-
-            sal_Int32 nTitleSpaceWidth = 0;
-            sal_Int32 nTitleSpaceHeight = 0;
-            sal_Int32 nSecondTitleSpaceWidth = 0;
-            sal_Int32 nSecondTitleSpaceHeight = 0;
-
-            if (xTitle_Height.is())
-            {
-                OUString aCID_X(
-                    
ObjectIdentifier::createClassifiedIdentifierForObject(xTitle_Height, &rModel));
-                nTitleSpaceHeight
-                    = pExplicitValueProvider->getRectangleOfObject(aCID_X, 
true).Height;
-                if (nTitleSpaceHeight)
-                    nTitleSpaceHeight += constDiagramTitleSpace;
-            }
-            if (xTitle_Width.is())
-            {
-                OUString aCID_Y(
-                    
ObjectIdentifier::createClassifiedIdentifierForObject(xTitle_Width, &rModel));
-                nTitleSpaceWidth = 
pExplicitValueProvider->getRectangleOfObject(aCID_Y, true).Width;
-                if (nTitleSpaceWidth)
-                    nTitleSpaceWidth += constDiagramTitleSpace;
-            }
-            if (xSecondTitle_Height.is())
-            {
-                OUString 
aCID_X(ObjectIdentifier::createClassifiedIdentifierForObject(
-                    xSecondTitle_Height, &rModel));
-                nSecondTitleSpaceHeight
-                    = pExplicitValueProvider->getRectangleOfObject(aCID_X, 
true).Height;
-                if (nSecondTitleSpaceHeight)
-                    nSecondTitleSpaceHeight += constDiagramTitleSpace;
-            }
-            if (xSecondTitle_Width.is())
-            {
-                OUString 
aCID_Y(ObjectIdentifier::createClassifiedIdentifierForObject(
-                    xSecondTitle_Width, &rModel));
-                nSecondTitleSpaceWidth
-                    += pExplicitValueProvider->getRectangleOfObject(aCID_Y, 
true).Width;
-                if (nSecondTitleSpaceWidth)
-                    nSecondTitleSpaceWidth += constDiagramTitleSpace;
-            }
-            if (bSubtract)
-            {
-                aRet.X += nTitleSpaceWidth;
-                aRet.Y += nSecondTitleSpaceHeight;
-                aRet.Width -= (nTitleSpaceWidth + nSecondTitleSpaceWidth);
-                aRet.Height -= (nTitleSpaceHeight + nSecondTitleSpaceHeight);
-            }
-            else
-            {
-                aRet.X -= nTitleSpaceWidth;
-                aRet.Y -= nSecondTitleSpaceHeight;
-                aRet.Width += nTitleSpaceWidth + nSecondTitleSpaceWidth;
-                aRet.Height += nTitleSpaceHeight + nSecondTitleSpaceHeight;
-            }
-        }
-    }
-    return aRet;
-}
-
-} //namespace chart
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Reply via email to