summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2022-05-16 16:10:02 +0900
committerTomaž Vajngerl <quikee@gmail.com>2022-08-17 14:00:01 +0200
commitd1e1ee1fafc179ccb45ba8be5b54359ed112b16f (patch)
tree1e48c4d9babc445a6c5dc85da62b49ecf740549d /chart2
parent196deec93caecf5ae863520d9f8c827cc0ea82c3 (diff)
chart2: add DataTable to AxisProperties, take account at rendering
The Diagram model has the DataTable class, but now we need to take this into account at rendering. First add the DataTable to AxisProperties, to decide if the data table should be rendered or not. Change-Id: Ia18fcffccc632e4d36011544066072ae3cdfbfc7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137152 Tested-by: Tomaž Vajngerl <quikee@gmail.com> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit 6b481f8bb44a14ebbfe010476cf2ca3728e7d539) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/138404 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Diffstat (limited to 'chart2')
-rw-r--r--chart2/source/model/inc/Diagram.hxx2
-rw-r--r--chart2/source/view/axes/VAxisProperties.cxx8
-rw-r--r--chart2/source/view/axes/VAxisProperties.hxx7
-rw-r--r--chart2/source/view/axes/VCartesianCoordinateSystem.cxx7
-rw-r--r--chart2/source/view/axes/VPolarCoordinateSystem.cxx9
5 files changed, 27 insertions, 6 deletions
diff --git a/chart2/source/model/inc/Diagram.hxx b/chart2/source/model/inc/Diagram.hxx
index 2f207d3fad70..b59e0e38f78a 100644
--- a/chart2/source/model/inc/Diagram.hxx
+++ b/chart2/source/model/inc/Diagram.hxx
@@ -144,6 +144,7 @@ private:
virtual void SAL_CALL removeModifyListener(
const css::uno::Reference< css::util::XModifyListener >& aListener ) override;
+public:
void setDataTable(const rtl::Reference<::chart::DataTable>& xNewDataTable);
rtl::Reference<::chart::DataTable> const& getDataTableRef() const
@@ -151,6 +152,7 @@ private:
return m_xDataTable;
};
+private:
// ____ XModifyListener ____
virtual void SAL_CALL modified(
const css::lang::EventObject& aEvent ) override;
diff --git a/chart2/source/view/axes/VAxisProperties.cxx b/chart2/source/view/axes/VAxisProperties.cxx
index 44a41422eee1..48cc3569f46d 100644
--- a/chart2/source/view/axes/VAxisProperties.cxx
+++ b/chart2/source/view/axes/VAxisProperties.cxx
@@ -153,7 +153,8 @@ TickmarkProperties AxisProperties::getBiggestTickmarkProperties()
}
AxisProperties::AxisProperties( const uno::Reference< XAxis >& xAxisModel
- , ExplicitCategoriesProvider* pExplicitCategoriesProvider )
+ , ExplicitCategoriesProvider* pExplicitCategoriesProvider
+ , rtl::Reference<::chart::DataTable> const& xDataTableModel)
: m_xAxisModel(xAxisModel)
, m_nDimensionIndex(0)
, m_bIsMainAxis(true)
@@ -173,6 +174,7 @@ AxisProperties::AxisProperties( const uno::Reference< XAxis >& xAxisModel
, m_bComplexCategories(false)
, m_pExplicitCategoriesProvider(pExplicitCategoriesProvider)
, m_bLimitSpaceForLabels(false)
+ , m_xDataTableModel(xDataTableModel)
{
}
@@ -257,7 +259,9 @@ void AxisProperties::init( bool bCartesian )
if( bCartesian )
{
if (m_nDimensionIndex == 0)
- m_bDisplayDataTable = false;
+ {
+ m_bDisplayDataTable = m_xDataTableModel.is();
+ }
if( m_nDimensionIndex == 0 && m_nAxisType == AxisType::CATEGORY
&& m_pExplicitCategoriesProvider && m_pExplicitCategoriesProvider->hasComplexCategories() )
diff --git a/chart2/source/view/axes/VAxisProperties.hxx b/chart2/source/view/axes/VAxisProperties.hxx
index bf159053c3c5..425792da689b 100644
--- a/chart2/source/view/axes/VAxisProperties.hxx
+++ b/chart2/source/view/axes/VAxisProperties.hxx
@@ -20,6 +20,7 @@
#include "TickmarkProperties.hxx"
#include <LabelAlignment.hxx>
+#include <DataTable.hxx>
#include <com/sun/star/chart/ChartAxisLabelPosition.hpp>
#include <com/sun/star/chart/ChartAxisMarkPosition.hpp>
@@ -137,10 +138,12 @@ struct AxisProperties final
bool m_bLimitSpaceForLabels;
- //methods:
+ rtl::Reference<::chart::DataTable> m_xDataTableModel;
+ //methods:
AxisProperties( const css::uno::Reference< css::chart2::XAxis >& xAxisModel
- , ExplicitCategoriesProvider* pExplicitCategoriesProvider );
+ , ExplicitCategoriesProvider* pExplicitCategoriesProvider
+ , rtl::Reference<::chart::DataTable> const& xDataTableModel);
void init(bool bCartesian=false);//init from model data (m_xAxisModel)
diff --git a/chart2/source/view/axes/VCartesianCoordinateSystem.cxx b/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
index 19f3ddb93bf3..d3c71361f27c 100644
--- a/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VCartesianCoordinateSystem.cxx
@@ -21,9 +21,11 @@
#include "VCartesianGrid.hxx"
#include "VCartesianAxis.hxx"
#include <AxisIndexDefines.hxx>
+#include <DataTable.hxx>
#include <AxisHelper.hxx>
#include <cppuhelper/implbase.hxx>
#include <ChartModel.hxx>
+#include <Diagram.hxx>
#include <com/sun/star/chart2/XCoordinateSystem.hpp>
#include <com/sun/star/chart2/data/XTextualDataSequence.hpp>
#include <com/sun/star/chart2/AxisType.hpp>
@@ -129,7 +131,10 @@ void VCartesianCoordinateSystem::createVAxisList(
if(!xAxis.is() || !AxisHelper::shouldAxisBeDisplayed( xAxis, m_xCooSysModel ))
continue;
- AxisProperties aAxisProperties(xAxis,getExplicitCategoriesProvider());
+ uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram());
+ auto pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
+ AxisProperties aAxisProperties(xAxis, getExplicitCategoriesProvider(), pDiagram->getDataTableRef());
aAxisProperties.m_nDimensionIndex = nDimensionIndex;
aAxisProperties.m_bSwapXAndY = bSwapXAndY;
aAxisProperties.m_bIsMainAxis = (nAxisIndex==0);
diff --git a/chart2/source/view/axes/VPolarCoordinateSystem.cxx b/chart2/source/view/axes/VPolarCoordinateSystem.cxx
index 7ac020fdc3ab..be8f4baac53c 100644
--- a/chart2/source/view/axes/VPolarCoordinateSystem.cxx
+++ b/chart2/source/view/axes/VPolarCoordinateSystem.cxx
@@ -22,7 +22,10 @@
#include "VPolarAxis.hxx"
#include <AxisIndexDefines.hxx>
#include <AxisHelper.hxx>
+#include <Diagram.hxx>
+#include <DataTable.hxx>
#include <ChartModel.hxx>
+#include <Diagram.hxx>
#include <com/sun/star/chart2/XCoordinateSystem.hpp>
namespace chart
@@ -89,7 +92,11 @@ void VPolarCoordinateSystem::createVAxisList(
Reference< XAxis > xAxis( getAxisByDimension(nDimensionIndex,nAxisIndex) );
if(!xAxis.is() || !AxisHelper::shouldAxisBeDisplayed( xAxis, m_xCooSysModel ))
continue;
- AxisProperties aAxisProperties(xAxis,getExplicitCategoriesProvider());
+
+ uno::Reference<chart2::XDiagram> xDiagram(xChartDoc->getFirstDiagram());
+ auto pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
+ AxisProperties aAxisProperties(xAxis,getExplicitCategoriesProvider(), pDiagram->getDataTableRef());
aAxisProperties.init();
if(aAxisProperties.m_bDisplayLabels)
aAxisProperties.m_nNumberFormatKey = getNumberFormatKeyForAxis(xAxis, xChartDoc);