chart2/source/inc/ChartTypeTemplate.hxx | 5 chart2/source/model/template/AreaChartTypeTemplate.cxx | 3 chart2/source/model/template/AreaChartTypeTemplate.hxx | 2 chart2/source/model/template/BarChartTypeTemplate.cxx | 2 chart2/source/model/template/BarChartTypeTemplate.hxx | 2 chart2/source/model/template/ChartTypeTemplate.cxx | 88 +++++++++------- chart2/source/model/template/PieChartTypeTemplate.cxx | 12 +- chart2/source/model/template/PieChartTypeTemplate.hxx | 2 chart2/source/model/template/StockChartTypeTemplate.cxx | 2 chart2/source/model/template/StockChartTypeTemplate.hxx | 2 10 files changed, 70 insertions(+), 50 deletions(-)
New commits: commit ea6cbf9e42c772e0cb8814142dc8a0eeae14e2fa Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Sun Jan 23 16:45:27 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sun Jan 23 20:20:12 2022 +0100 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.gran...@collabora.co.uk> 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;