summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2022-01-23 16:45:27 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-01-23 20:20:12 +0100
commitea6cbf9e42c772e0cb8814142dc8a0eeae14e2fa (patch)
treea93a4faff0249d50be0e8b81aa5e0e4dbcca9f5e
parentb274c175a2f57cc414ccff127a2199692fc3b3b4 (diff)
use more concrete types in chart2, Diagram
Change-Id: Iaeb477d6c5760dc701291059c4f250c2f1aa0ed5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128828 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--chart2/source/inc/ChartTypeTemplate.hxx5
-rw-r--r--chart2/source/model/template/AreaChartTypeTemplate.cxx3
-rw-r--r--chart2/source/model/template/AreaChartTypeTemplate.hxx2
-rw-r--r--chart2/source/model/template/BarChartTypeTemplate.cxx2
-rw-r--r--chart2/source/model/template/BarChartTypeTemplate.hxx2
-rw-r--r--chart2/source/model/template/ChartTypeTemplate.cxx88
-rw-r--r--chart2/source/model/template/PieChartTypeTemplate.cxx12
-rw-r--r--chart2/source/model/template/PieChartTypeTemplate.hxx2
-rw-r--r--chart2/source/model/template/StockChartTypeTemplate.cxx2
-rw-r--r--chart2/source/model/template/StockChartTypeTemplate.hxx2
10 files changed, 70 insertions, 50 deletions
diff --git a/chart2/source/inc/ChartTypeTemplate.hxx b/chart2/source/inc/ChartTypeTemplate.hxx
index 2bcd1f256515..e4484981895a 100644
--- a/chart2/source/inc/ChartTypeTemplate.hxx
+++ b/chart2/source/inc/ChartTypeTemplate.hxx
@@ -37,6 +37,7 @@ namespace com::sun::star::uno { class XComponentContext; }
namespace chart
{
+class BaseCoordinateSystem;
class ChartType;
class Diagram;
class DataInterpreter;
@@ -111,7 +112,7 @@ public:
::sal_Int32 nSeriesIndex,
::sal_Int32 nSeriesCount );
virtual void resetStyles(
- const css::uno::Reference< css::chart2::XDiagram >& xDiagram );
+ const rtl::Reference< ::chart::Diagram >& xDiagram );
/// @throws css::uno::RuntimeException
void applyStyles(
@@ -215,6 +216,8 @@ public:
*/
void createAxes(
const css::uno::Sequence< css::uno::Reference< css::chart2::XCoordinateSystem > > & rCoordSys );
+ void createAxes(
+ const std::vector< rtl::Reference< ::chart::BaseCoordinateSystem > > & rCoordSys );
/** Give the number of requested axis per dimension here. Default is one
axis for each dimension
diff --git a/chart2/source/model/template/AreaChartTypeTemplate.cxx b/chart2/source/model/template/AreaChartTypeTemplate.cxx
index f72f610f24ae..5b6ef6c4d0d2 100644
--- a/chart2/source/model/template/AreaChartTypeTemplate.cxx
+++ b/chart2/source/model/template/AreaChartTypeTemplate.cxx
@@ -20,6 +20,7 @@
#include "AreaChartTypeTemplate.hxx"
#include "AreaChartType.hxx"
#include <servicenames_charttypes.hxx>
+#include <Diagram.hxx>
#include <DiagramHelper.hxx>
#include <DataSeriesHelper.hxx>
#include <PropertyHelper.hxx>
@@ -187,7 +188,7 @@ void AreaChartTypeTemplate::applyStyle(
DataSeriesHelper::setPropertyAlsoToAllAttributedDataPoints( xSeries, "BorderStyle", uno::Any( drawing::LineStyle_NONE ) );
}
-void AreaChartTypeTemplate::resetStyles( const Reference< chart2::XDiagram >& xDiagram )
+void AreaChartTypeTemplate::resetStyles( const rtl::Reference< ::chart::Diagram >& xDiagram )
{
ChartTypeTemplate::resetStyles( xDiagram );
std::vector< Reference< chart2::XDataSeries > > aSeriesVec(
diff --git a/chart2/source/model/template/AreaChartTypeTemplate.hxx b/chart2/source/model/template/AreaChartTypeTemplate.hxx
index e288fd234340..fe2d679ec81c 100644
--- a/chart2/source/model/template/AreaChartTypeTemplate.hxx
+++ b/chart2/source/model/template/AreaChartTypeTemplate.hxx
@@ -65,7 +65,7 @@ protected:
::sal_Int32 nSeriesIndex,
::sal_Int32 nSeriesCount ) override;
virtual void resetStyles(
- const css::uno::Reference< css::chart2::XDiagram >& xDiagram ) override;
+ const rtl::Reference< ::chart::Diagram >& xDiagram ) override;
// ____ ChartTypeTemplate ____
virtual rtl::Reference< ::chart::ChartType >
diff --git a/chart2/source/model/template/BarChartTypeTemplate.cxx b/chart2/source/model/template/BarChartTypeTemplate.cxx
index 266c07434319..947df608c78b 100644
--- a/chart2/source/model/template/BarChartTypeTemplate.cxx
+++ b/chart2/source/model/template/BarChartTypeTemplate.cxx
@@ -262,7 +262,7 @@ void BarChartTypeTemplate::applyStyle(
}
void BarChartTypeTemplate::resetStyles(
- const Reference< chart2::XDiagram >& xDiagram )
+ const rtl::Reference< ::chart::Diagram >& xDiagram )
{
ChartTypeTemplate::resetStyles( xDiagram );
std::vector< Reference< chart2::XDataSeries > > aSeriesVec(
diff --git a/chart2/source/model/template/BarChartTypeTemplate.hxx b/chart2/source/model/template/BarChartTypeTemplate.hxx
index 4364743082fe..af6e1096a7f1 100644
--- a/chart2/source/model/template/BarChartTypeTemplate.hxx
+++ b/chart2/source/model/template/BarChartTypeTemplate.hxx
@@ -75,7 +75,7 @@ protected:
::sal_Int32 nSeriesIndex,
::sal_Int32 nSeriesCount ) override;
virtual void resetStyles(
- const css::uno::Reference< css::chart2::XDiagram >& xDiagram ) override;
+ const rtl::Reference< ::chart::Diagram >& xDiagram ) override;
// ____ ChartTypeTemplate ____
virtual rtl::Reference< ::chart::ChartType >
diff --git a/chart2/source/model/template/ChartTypeTemplate.cxx b/chart2/source/model/template/ChartTypeTemplate.cxx
index a2451a430b3d..c1d91453016b 100644
--- a/chart2/source/model/template/ChartTypeTemplate.cxx
+++ b/chart2/source/model/template/ChartTypeTemplate.cxx
@@ -412,7 +412,7 @@ void ChartTypeTemplate::applyStyles( const Reference< chart2::XDiagram >& xDiagr
lcl_ensureCorrectMissingValueTreatment( xDiagram, getChartTypeForIndex( 0 ) );
}
-void ChartTypeTemplate::resetStyles( const Reference< chart2::XDiagram >& xDiagram )
+void ChartTypeTemplate::resetStyles( const rtl::Reference< ::chart::Diagram >& xDiagram )
{
// reset number format if we had percent stacking on
bool bPercent = (getStackMode(0) == StackMode::YStackedPercent);
@@ -435,49 +435,32 @@ void ChartTypeTemplate::resetStyles( const Reference< chart2::XDiagram >& xDiagr
}
//reset label placement if default
+ for( rtl::Reference< BaseCoordinateSystem > const & xCooSys : xDiagram->getBaseCoordinateSystems() )
{
- uno::Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY );
- if( xCooSysContainer.is() )
+ //iterate through all chart types in the current coordinate system
+ for( rtl::Reference< ChartType > const & xChartType : xCooSys->getChartTypes2() )
{
- const uno::Sequence< uno::Reference< XCoordinateSystem > > aCooSysList( xCooSysContainer->getCoordinateSystems() );
- for( uno::Reference< XCoordinateSystem > const & xCooSys : aCooSysList )
+ //iterate through all series in this chart type
+ const uno::Sequence< uno::Reference< XDataSeries > > aSeriesList( xChartType->getDataSeries() );
+ for( Reference< XDataSeries > const & xSeries : aSeriesList )
{
- //iterate through all chart types in the current coordinate system
- uno::Reference< XChartTypeContainer > xChartTypeContainer( xCooSys, uno::UNO_QUERY );
- OSL_ASSERT( xChartTypeContainer.is());
- if( !xChartTypeContainer.is() )
+ Reference< beans::XPropertySet > xSeriesProp( xSeries, uno::UNO_QUERY );
+ if(!xSeries.is() || !xSeriesProp.is() )
continue;
- const uno::Sequence< uno::Reference< XChartType > > aChartTypeList( xChartTypeContainer->getChartTypes() );
- for( uno::Reference< XChartType > const & xChartType : aChartTypeList )
- {
- //iterate through all series in this chart type
- uno::Reference< XDataSeriesContainer > xDataSeriesContainer( xChartType, uno::UNO_QUERY );
- OSL_ASSERT( xDataSeriesContainer.is());
- if( !xDataSeriesContainer.is() )
- continue;
-
- const uno::Sequence< uno::Reference< XDataSeries > > aSeriesList( xDataSeriesContainer->getDataSeries() );
- for( Reference< XDataSeries > const & xSeries : aSeriesList )
- {
- Reference< beans::XPropertySet > xSeriesProp( xSeries, uno::UNO_QUERY );
- if(!xSeries.is() || !xSeriesProp.is() )
- continue;
- uno::Sequence < sal_Int32 > aAvailablePlacements( ChartTypeHelper::getSupportedLabelPlacements(
- xChartType, isSwapXAndY(), xSeries ) );
- if(!aAvailablePlacements.hasElements())
- continue;
+ uno::Sequence < sal_Int32 > aAvailablePlacements( ChartTypeHelper::getSupportedLabelPlacements(
+ xChartType, isSwapXAndY(), xSeries ) );
+ if(!aAvailablePlacements.hasElements())
+ continue;
- sal_Int32 nDefaultPlacement = aAvailablePlacements[0];
+ sal_Int32 nDefaultPlacement = aAvailablePlacements[0];
- lcl_resetLabelPlacementIfDefault( xSeriesProp, nDefaultPlacement );
+ lcl_resetLabelPlacementIfDefault( xSeriesProp, nDefaultPlacement );
- uno::Sequence< sal_Int32 > aAttributedDataPointIndexList;
- if( xSeriesProp->getPropertyValue( "AttributedDataPoints" ) >>= aAttributedDataPointIndexList )
- for(sal_Int32 nN=aAttributedDataPointIndexList.getLength();nN--;)
- lcl_resetLabelPlacementIfDefault( xSeries->getDataPointByIndex(aAttributedDataPointIndexList[nN]), nDefaultPlacement );
- }
- }
+ uno::Sequence< sal_Int32 > aAttributedDataPointIndexList;
+ if( xSeriesProp->getPropertyValue( "AttributedDataPoints" ) >>= aAttributedDataPointIndexList )
+ for(sal_Int32 nN=aAttributedDataPointIndexList.getLength();nN--;)
+ lcl_resetLabelPlacementIfDefault( xSeries->getDataPointByIndex(aAttributedDataPointIndexList[nN]), nDefaultPlacement );
}
}
}
@@ -686,6 +669,39 @@ void ChartTypeTemplate::createAxes(
}
}
+void ChartTypeTemplate::createAxes(
+ const std::vector< rtl::Reference< BaseCoordinateSystem > > & rCoordSys )
+{
+ //create missing axes
+ if( rCoordSys.empty() )
+ return;
+
+ rtl::Reference< BaseCoordinateSystem > xCooSys( rCoordSys[0] );
+ if(!xCooSys.is())
+ return;
+
+ //create main axis in first coordinate system
+ sal_Int32 nDimCount = xCooSys->getDimension();
+ sal_Int32 nDim=0;
+ for( nDim=0; nDim<nDimCount; ++nDim )
+ {
+ sal_Int32 nAxisCount = getAxisCountByDimension( nDim );
+ if( nDim == 1 &&
+ nAxisCount < 2 && AxisHelper::isSecondaryYAxisNeeded( xCooSys ))
+ nAxisCount = 2;
+ for( sal_Int32 nAxisIndex = 0; nAxisIndex < nAxisCount; ++nAxisIndex )
+ {
+ Reference< XAxis > xAxis = AxisHelper::getAxis( nDim, nAxisIndex, xCooSys );
+ if( !xAxis.is())
+ {
+ // create and add axis
+ xAxis.set( AxisHelper::createAxis(
+ nDim, nAxisIndex, xCooSys, GetComponentContext() ));
+ }
+ }
+ }
+}
+
void ChartTypeTemplate::adaptAxes(
const Sequence< Reference< XCoordinateSystem > > & rCoordSys )
{
diff --git a/chart2/source/model/template/PieChartTypeTemplate.cxx b/chart2/source/model/template/PieChartTypeTemplate.cxx
index 320d41f9227a..5d8eef9da195 100644
--- a/chart2/source/model/template/PieChartTypeTemplate.cxx
+++ b/chart2/source/model/template/PieChartTypeTemplate.cxx
@@ -19,6 +19,7 @@
#include "PieChartTypeTemplate.hxx"
#include "PieChartType.hxx"
+#include <BaseCoordinateSystem.hxx>
#include <CommonConverters.hxx>
#include <ChartType.hxx>
#include <Diagram.hxx>
@@ -540,17 +541,16 @@ void PieChartTypeTemplate::applyStyle(
}
}
-void PieChartTypeTemplate::resetStyles( const Reference< chart2::XDiagram >& xDiagram )
+void PieChartTypeTemplate::resetStyles( const rtl::Reference< ::chart::Diagram >& xDiagram )
{
// reset axes and grids
- Reference< chart2::XCoordinateSystemContainer > xCooSysCnt( xDiagram, uno::UNO_QUERY );
- if( xCooSysCnt.is())
+ if( xDiagram.is())
{
- const Sequence< Reference< chart2::XCoordinateSystem > > aCooSysSeq( xCooSysCnt->getCoordinateSystems());
+ const std::vector< rtl::Reference< BaseCoordinateSystem > > aCooSysSeq( xDiagram->getBaseCoordinateSystems());
ChartTypeTemplate::createAxes( aCooSysSeq );
//reset scale orientation
- for( Reference< chart2::XCoordinateSystem > const & coords : aCooSysSeq )
+ for( rtl::Reference< BaseCoordinateSystem > const & coords : aCooSysSeq )
{
try
{
@@ -601,7 +601,7 @@ void PieChartTypeTemplate::resetStyles( const Reference< chart2::XDiagram >& xDi
}
//reset scene properties
- ThreeDHelper::setDefaultRotation( uno::Reference< beans::XPropertySet >( xDiagram, uno::UNO_QUERY ), false );
+ ThreeDHelper::setDefaultRotation( xDiagram, false );
}
// ____ XChartTypeTemplate ____
diff --git a/chart2/source/model/template/PieChartTypeTemplate.hxx b/chart2/source/model/template/PieChartTypeTemplate.hxx
index 307b0ee23f1d..022acfaed2e9 100644
--- a/chart2/source/model/template/PieChartTypeTemplate.hxx
+++ b/chart2/source/model/template/PieChartTypeTemplate.hxx
@@ -69,7 +69,7 @@ protected:
::sal_Int32 nSeriesIndex,
::sal_Int32 nSeriesCount ) override;
virtual void resetStyles(
- const css::uno::Reference< css::chart2::XDiagram >& xDiagram ) override;
+ const rtl::Reference< ::chart::Diagram >& xDiagram ) override;
// ____ ChartTypeTemplate ____
virtual sal_Int32 getDimension() const override;
diff --git a/chart2/source/model/template/StockChartTypeTemplate.cxx b/chart2/source/model/template/StockChartTypeTemplate.cxx
index afacb1c3b633..2daad8200977 100644
--- a/chart2/source/model/template/StockChartTypeTemplate.cxx
+++ b/chart2/source/model/template/StockChartTypeTemplate.cxx
@@ -234,7 +234,7 @@ void StockChartTypeTemplate::applyStyle(
}
void StockChartTypeTemplate::resetStyles(
- const Reference< chart2::XDiagram >& xDiagram )
+ const rtl::Reference< ::chart::Diagram >& xDiagram )
{
ChartTypeTemplate::resetStyles( xDiagram );
if( getDimension() == 3 )
diff --git a/chart2/source/model/template/StockChartTypeTemplate.hxx b/chart2/source/model/template/StockChartTypeTemplate.hxx
index 5ea72f65fb8d..fe7ba2272680 100644
--- a/chart2/source/model/template/StockChartTypeTemplate.hxx
+++ b/chart2/source/model/template/StockChartTypeTemplate.hxx
@@ -83,7 +83,7 @@ protected:
::sal_Int32 nSeriesIndex,
::sal_Int32 nSeriesCount ) override;
virtual void resetStyles(
- const css::uno::Reference< css::chart2::XDiagram >& xDiagram ) override;
+ const rtl::Reference< ::chart::Diagram >& xDiagram ) override;
// ChartTypeTemplate
virtual sal_Int32 getAxisCountByDimension( sal_Int32 nDimension ) override;