diff options
Diffstat (limited to 'chart2/source/tools/AxisHelper.cxx')
-rw-r--r-- | chart2/source/tools/AxisHelper.cxx | 594 |
1 files changed, 270 insertions, 324 deletions
diff --git a/chart2/source/tools/AxisHelper.cxx b/chart2/source/tools/AxisHelper.cxx index 77bf0555ec97..51336ebc5a49 100644 --- a/chart2/source/tools/AxisHelper.cxx +++ b/chart2/source/tools/AxisHelper.cxx @@ -19,36 +19,38 @@ #include <AxisHelper.hxx> #include <DiagramHelper.hxx> +#include <Diagram.hxx> #include <ChartTypeHelper.hxx> +#include <ChartType.hxx> +#include <Axis.hxx> #include <AxisIndexDefines.hxx> +#include <DataSource.hxx> #include <LinePropertiesHelper.hxx> #include <servicenames_coosystems.hxx> +#include <DataSeries.hxx> #include <DataSeriesHelper.hxx> #include <Scaling.hxx> #include <ChartModel.hxx> -#include <ChartModelHelper.hxx> #include <DataSourceHelper.hxx> #include <ReferenceSizeProvider.hxx> #include <ExplicitCategoriesProvider.hxx> #include <unonames.hxx> +#include <BaseCoordinateSystem.hxx> +#include <GridProperties.hxx> +#include <o3tl/safeint.hxx> #include <unotools/saveopt.hxx> #include <com/sun/star/chart/ChartAxisPosition.hpp> #include <com/sun/star/chart2/AxisType.hpp> -#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp> -#include <com/sun/star/chart2/XChartTypeContainer.hpp> -#include <com/sun/star/chart2/XDataSeriesContainer.hpp> -#include <com/sun/star/chart2/data/XDataSource.hpp> -#include <rtl/math.hxx> #include <sal/log.hxx> #include <com/sun/star/lang/XServiceName.hpp> #include <com/sun/star/uno/XComponentContext.hpp> -#include <comphelper/sequence.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> +#include <cstddef> #include <map> namespace chart @@ -74,16 +76,13 @@ ScaleData AxisHelper::createDefaultScale() aScaleData.AxisType = chart2::AxisType::REALNUMBER; aScaleData.AutoDateAxis = true; aScaleData.ShiftedCategoryPosition = false; - Sequence< SubIncrement > aSubIncrements(1); - aSubIncrements[0] = SubIncrement(); - aScaleData.IncrementData.SubIncrements = aSubIncrements; + aScaleData.IncrementData.SubIncrements = { SubIncrement() }; return aScaleData; } void AxisHelper::removeExplicitScaling( ScaleData& rScaleData ) { - uno::Any aEmpty; - rScaleData.Minimum = rScaleData.Maximum = rScaleData.Origin = aEmpty; + rScaleData.Minimum = rScaleData.Maximum = rScaleData.Origin = uno::Any(); rScaleData.Scaling = nullptr; ScaleData aDefaultScale( createDefaultScale() ); rScaleData.IncrementData = aDefaultScale.IncrementData; @@ -97,22 +96,22 @@ bool AxisHelper::isLogarithmic( const Reference< XScaling >& xScaling ) && xServiceName->getServiceName() == "com.sun.star.chart2.LogarithmicScaling"; } -chart2::ScaleData AxisHelper::getDateCheckedScale( const Reference< chart2::XAxis >& xAxis, ChartModel& rModel ) +chart2::ScaleData AxisHelper::getDateCheckedScale( const rtl::Reference< Axis >& xAxis, ChartModel& rModel ) { ScaleData aScale = xAxis->getScaleData(); - Reference< chart2::XCoordinateSystem > xCooSys( ChartModelHelper::getFirstCoordinateSystem( rModel ) ); + rtl::Reference< BaseCoordinateSystem > xCooSys( rModel.getFirstCoordinateSystem() ); if( aScale.AutoDateAxis && aScale.AxisType == AxisType::CATEGORY ) { sal_Int32 nDimensionIndex=0; sal_Int32 nAxisIndex=0; AxisHelper::getIndicesForAxis(xAxis, xCooSys, nDimensionIndex, nAxisIndex ); - bool bChartTypeAllowsDateAxis = ChartTypeHelper::isSupportingDateAxis( AxisHelper::getChartTypeByIndex( xCooSys, 0 ), nDimensionIndex ); + auto xChartType = AxisHelper::getChartTypeByIndex(xCooSys, 0); + bool bChartTypeAllowsDateAxis = xChartType.is() ? xChartType->isSupportingDateAxis(nDimensionIndex) : true; if( bChartTypeAllowsDateAxis ) aScale.AxisType = AxisType::DATE; } if( aScale.AxisType == AxisType::DATE ) { - ExplicitCategoriesProvider aExplicitCategoriesProvider( xCooSys, rModel ); - if( !aExplicitCategoriesProvider.isDateAxis() ) + if( !xCooSys || !xCooSys->getExplicitCategoriesProvider(rModel).isDateAxis() ) aScale.AxisType = AxisType::CATEGORY; } return aScale; @@ -133,41 +132,33 @@ void AxisHelper::checkDateAxis( chart2::ScaleData& rScale, ExplicitCategoriesPro } sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis( - const Reference< chart2::XAxis >& xAxis - , const Reference< chart2::XCoordinateSystem > & xCorrespondingCoordinateSystem - , const Reference<chart2::XChartDocument>& xChartDoc + const rtl::Reference< Axis >& xAxis + , const rtl::Reference< BaseCoordinateSystem > & xCorrespondingCoordinateSystem + , const rtl::Reference<ChartModel>& xChartDoc , bool bSearchForParallelAxisIfNothingIsFound ) { sal_Int32 nNumberFormatKey(0); sal_Int32 nAxisIndex = 0; sal_Int32 nDimensionIndex = 1; AxisHelper::getIndicesForAxis( xAxis, xCorrespondingCoordinateSystem, nDimensionIndex, nAxisIndex ); - Reference<util::XNumberFormatsSupplier> const xNumberFormatsSupplier(xChartDoc, uno::UNO_QUERY); - Reference< beans::XPropertySet > xProp( xAxis, uno::UNO_QUERY ); - if (!xProp.is()) + if (!xAxis.is()) return 0; bool bLinkToSource = true; - xProp->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkToSource; - xProp->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nNumberFormatKey; + xAxis->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) >>= bLinkToSource; + xAxis->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nNumberFormatKey; if (bLinkToSource) { bool bFormatSet = false; //check whether we have a percent scale -> use percent format - ChartModel* pModel = nullptr; - if( xNumberFormatsSupplier.is() ) + if (xChartDoc) { - pModel = dynamic_cast<ChartModel*>( xChartDoc.get() ); - assert(pModel); - } - if (pModel) - { - ScaleData aData = AxisHelper::getDateCheckedScale( xAxis, *pModel ); + ScaleData aData = AxisHelper::getDateCheckedScale( xAxis, *xChartDoc ); if( aData.AxisType==AxisType::PERCENT ) { - sal_Int32 nPercentFormat = DiagramHelper::getPercentNumberFormat( xNumberFormatsSupplier ); + sal_Int32 nPercentFormat = DiagramHelper::getPercentNumberFormat( xChartDoc ); if( nPercentFormat != -1 ) { nNumberFormatKey = nPercentFormat; @@ -182,27 +173,27 @@ sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis( if( xSeq.is() && !( xChartDoc.is() && xChartDoc->hasInternalDataProvider()) ) nNumberFormatKey = xSeq->getNumberFormatKeyByIndex( -1 ); else - nNumberFormatKey = DiagramHelper::getDateNumberFormat( xNumberFormatsSupplier ); + nNumberFormatKey = DiagramHelper::getDateNumberFormat( xChartDoc ); bFormatSet = true; } } else if( xChartDoc.is() && xChartDoc->hasInternalDataProvider() && nDimensionIndex == 0 ) //maybe date axis { - Reference< chart2::XDiagram > xDiagram( xChartDoc->getFirstDiagram() ); - if( DiagramHelper::isSupportingDateAxis( xDiagram ) ) + rtl::Reference< Diagram > xDiagram( xChartDoc->getFirstChartDiagram() ); + if( xDiagram->isSupportingDateAxis() ) { - nNumberFormatKey = DiagramHelper::getDateNumberFormat( xNumberFormatsSupplier ); + nNumberFormatKey = DiagramHelper::getDateNumberFormat( xChartDoc ); } else { - Reference< data::XDataSource > xSource( DataSourceHelper::getUsedData( xChartDoc ) ); + rtl::Reference< DataSource > xSource = DataSourceHelper::getUsedData( *xChartDoc ); if( xSource.is() ) { - std::vector< Reference< chart2::data::XLabeledDataSequence > > aXValues( - DataSeriesHelper::getAllDataSequencesByRole( xSource->getDataSequences(), "values-x" ) ); + std::vector< uno::Reference< chart2::data::XLabeledDataSequence > > aXValues( + DataSeriesHelper::getAllDataSequencesByRole( xSource->getDataSequences(), u"values-x"_ustr ) ); if( aXValues.empty() ) { - Reference< data::XLabeledDataSequence > xCategories( DiagramHelper::getCategoriesFromDiagram( xDiagram ) ); + uno::Reference< chart2::data::XLabeledDataSequence > xCategories( xDiagram->getCategories() ); if( xCategories.is() ) { Reference< data::XDataSequence > xSeq( xCategories->getValues()); @@ -221,7 +212,7 @@ sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis( } } if( bHasValidDoubles ) - nNumberFormatKey = DiagramHelper::getDateNumberFormat( xNumberFormatsSupplier ); + nNumberFormatKey = DiagramHelper::getDateNumberFormat( xChartDoc ); } } } @@ -238,31 +229,26 @@ sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis( try { - Reference< XChartTypeContainer > xCTCnt( xCorrespondingCoordinateSystem, uno::UNO_QUERY_THROW ); OUString aRoleToMatch; if( nDimensionIndex == 0 ) aRoleToMatch = "values-x"; - const Sequence< Reference< XChartType > > aChartTypes( xCTCnt->getChartTypes()); - for( Reference< XChartType > const & chartType : aChartTypes ) + const std::vector< rtl::Reference< ChartType > > & aChartTypes( xCorrespondingCoordinateSystem->getChartTypes2()); + for( rtl::Reference< ChartType > const & chartType : aChartTypes ) { if( nDimensionIndex != 0 ) aRoleToMatch = ChartTypeHelper::getRoleOfSequenceForYAxisNumberFormatDetection( chartType ); - Reference< XDataSeriesContainer > xDSCnt( chartType, uno::UNO_QUERY_THROW ); - const Sequence< Reference< XDataSeries > > aDataSeriesSeq( xDSCnt->getDataSeries()); - for( Reference< chart2::XDataSeries > const & xDataSeries : aDataSeriesSeq ) + for( rtl::Reference< DataSeries > const & xDataSeries : chartType->getDataSeries2() ) { - Reference< data::XDataSource > xSource( xDataSeries, uno::UNO_QUERY_THROW ); - if( nDimensionIndex == 1 ) { //only take those series into account that are attached to this axis - sal_Int32 nAttachedAxisIndex = DataSeriesHelper::getAttachedAxisIndex(xDataSeries); + sal_Int32 nAttachedAxisIndex = xDataSeries->getAttachedAxisIndex(); if( nAttachedAxisIndex != nAxisIndex ) continue; } Reference< data::XLabeledDataSequence > xLabeledSeq( - DataSeriesHelper::getDataSequenceByRole( xSource, aRoleToMatch ) ); + DataSeriesHelper::getDataSequenceByRole( xDataSeries, aRoleToMatch ) ); if( !xLabeledSeq.is() && nDimensionIndex==0 ) { @@ -315,7 +301,7 @@ sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis( if( !bNumberFormatKeyFoundViaAttachedData && nDimensionIndex == 1 ) { sal_Int32 nParallelAxisIndex = (nAxisIndex==1) ?0 :1; - Reference< XAxis > xParallelAxis( AxisHelper::getAxis( 1, nParallelAxisIndex, xCorrespondingCoordinateSystem ) ); + rtl::Reference< Axis > xParallelAxis = AxisHelper::getAxis( 1, nParallelAxisIndex, xCorrespondingCoordinateSystem ); nNumberFormatKey = AxisHelper::getExplicitNumberFormatKeyForAxis(xParallelAxis, xCorrespondingCoordinateSystem, xChartDoc, false); } } @@ -325,10 +311,10 @@ sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis( return nNumberFormatKey; } -Reference< XAxis > AxisHelper::createAxis( +rtl::Reference< Axis > AxisHelper::createAxis( sal_Int32 nDimensionIndex , sal_Int32 nAxisIndex // 0==main or 1==secondary axis - , const Reference< XCoordinateSystem >& xCooSys + , const rtl::Reference< BaseCoordinateSystem >& xCooSys , const Reference< uno::XComponentContext > & xContext , ReferenceSizeProvider * pRefSizeProvider ) { @@ -337,65 +323,53 @@ Reference< XAxis > AxisHelper::createAxis( if( nDimensionIndex >= xCooSys->getDimension() ) return nullptr; - Reference< XAxis > xAxis( xContext->getServiceManager()->createInstanceWithContext( - "com.sun.star.chart2.Axis", xContext ), uno::UNO_QUERY ); + rtl::Reference< Axis > xAxis = new Axis(); - OSL_ASSERT( xAxis.is()); - if( xAxis.is()) + xCooSys->setAxisByDimension( nDimensionIndex, xAxis, nAxisIndex ); + + if( nAxisIndex>0 )//when inserting secondary axes copy some things from the main axis { - xCooSys->setAxisByDimension( nDimensionIndex, xAxis, nAxisIndex ); + css::chart::ChartAxisPosition eNewAxisPos( css::chart::ChartAxisPosition_END ); - if( nAxisIndex>0 )//when inserting secondary axes copy some things from the main axis + rtl::Reference< Axis > xMainAxis = xCooSys->getAxisByDimension2( nDimensionIndex, 0 ); + if( xMainAxis.is() ) { - css::chart::ChartAxisPosition eNewAxisPos( css::chart::ChartAxisPosition_END ); - - Reference< XAxis > xMainAxis( xCooSys->getAxisByDimension( nDimensionIndex, 0 ) ); - if( xMainAxis.is() ) - { - ScaleData aScale = xAxis->getScaleData(); - ScaleData aMainScale = xMainAxis->getScaleData(); - - aScale.AxisType = aMainScale.AxisType; - aScale.AutoDateAxis = aMainScale.AutoDateAxis; - aScale.Categories = aMainScale.Categories; - aScale.Orientation = aMainScale.Orientation; - aScale.ShiftedCategoryPosition = aMainScale.ShiftedCategoryPosition; - - xAxis->setScaleData( aScale ); - - //ensure that the second axis is not placed on the main axis - Reference< beans::XPropertySet > xMainProp( xMainAxis, uno::UNO_QUERY ); - if( xMainProp.is() ) - { - css::chart::ChartAxisPosition eMainAxisPos( css::chart::ChartAxisPosition_ZERO ); - xMainProp->getPropertyValue("CrossoverPosition") >>= eMainAxisPos; - if( eMainAxisPos == css::chart::ChartAxisPosition_END ) - eNewAxisPos = css::chart::ChartAxisPosition_START; - } - } - - Reference< beans::XPropertySet > xProp( xAxis, uno::UNO_QUERY ); - if( xProp.is() ) - xProp->setPropertyValue("CrossoverPosition", uno::Any(eNewAxisPos) ); + ScaleData aScale = xAxis->getScaleData(); + ScaleData aMainScale = xMainAxis->getScaleData(); + + aScale.AxisType = aMainScale.AxisType; + aScale.AutoDateAxis = aMainScale.AutoDateAxis; + aScale.Categories = aMainScale.Categories; + aScale.Orientation = aMainScale.Orientation; + aScale.ShiftedCategoryPosition = aMainScale.ShiftedCategoryPosition; + + xAxis->setScaleData( aScale ); + + //ensure that the second axis is not placed on the main axis + css::chart::ChartAxisPosition eMainAxisPos( css::chart::ChartAxisPosition_ZERO ); + xMainAxis->getPropertyValue(u"CrossoverPosition"_ustr) >>= eMainAxisPos; + if( eMainAxisPos == css::chart::ChartAxisPosition_END ) + eNewAxisPos = css::chart::ChartAxisPosition_START; } - Reference< beans::XPropertySet > xProp( xAxis, uno::UNO_QUERY ); - if( xProp.is() ) try - { - // set correct initial AutoScale - if( pRefSizeProvider ) - pRefSizeProvider->setValuesAtPropertySet( xProp ); - } - catch( const uno::Exception& ) - { - TOOLS_WARN_EXCEPTION("chart2", "" ); - } + xAxis->setPropertyValue(u"CrossoverPosition"_ustr, uno::Any(eNewAxisPos) ); + } + + try + { + // set correct initial AutoScale + if( pRefSizeProvider ) + pRefSizeProvider->setValuesAtPropertySet( xAxis ); + } + catch( const uno::Exception& ) + { + TOOLS_WARN_EXCEPTION("chart2", "" ); } return xAxis; } -Reference< XAxis > AxisHelper::createAxis( sal_Int32 nDimensionIndex, bool bMainAxis - , const Reference< chart2::XDiagram >& xDiagram +rtl::Reference< Axis > AxisHelper::createAxis( sal_Int32 nDimensionIndex, bool bMainAxis + , const rtl::Reference< Diagram >& xDiagram , const Reference< uno::XComponentContext >& xContext , ReferenceSizeProvider * pRefSizeProvider ) { @@ -404,7 +378,7 @@ Reference< XAxis > AxisHelper::createAxis( sal_Int32 nDimensionIndex, bool bMain return nullptr; sal_Int32 nAxisIndex = bMainAxis ? MAIN_AXIS_INDEX : SECONDARY_AXIS_INDEX; - Reference< XCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ); + rtl::Reference< BaseCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ); // create axis return AxisHelper::createAxis( @@ -412,7 +386,7 @@ Reference< XAxis > AxisHelper::createAxis( sal_Int32 nDimensionIndex, bool bMain } void AxisHelper::showAxis( sal_Int32 nDimensionIndex, bool bMainAxis - , const Reference< chart2::XDiagram >& xDiagram + , const rtl::Reference< Diagram >& xDiagram , const Reference< uno::XComponentContext >& xContext , ReferenceSizeProvider * pRefSizeProvider ) { @@ -420,12 +394,12 @@ void AxisHelper::showAxis( sal_Int32 nDimensionIndex, bool bMainAxis return; bool bNewAxisCreated = false; - Reference< XAxis > xAxis( AxisHelper::getAxis( nDimensionIndex, bMainAxis, xDiagram ) ); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( nDimensionIndex, bMainAxis, xDiagram ); if( !xAxis.is() && xContext.is() ) { // create axis bNewAxisCreated = true; - xAxis.set( AxisHelper::createAxis( nDimensionIndex, bMainAxis, xDiagram, xContext, pRefSizeProvider ) ); + xAxis = AxisHelper::createAxis( nDimensionIndex, bMainAxis, xDiagram, xContext, pRefSizeProvider ); } OSL_ASSERT( xAxis.is()); @@ -434,76 +408,73 @@ void AxisHelper::showAxis( sal_Int32 nDimensionIndex, bool bMainAxis } void AxisHelper::showGrid( sal_Int32 nDimensionIndex, sal_Int32 nCooSysIndex, bool bMainGrid - , const Reference< XDiagram >& xDiagram ) + , const rtl::Reference< Diagram >& xDiagram ) { if( !xDiagram.is() ) return; - Reference< XCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, nCooSysIndex ); + rtl::Reference< BaseCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, nCooSysIndex ); if(!xCooSys.is()) return; - Reference< XAxis > xAxis( AxisHelper::getAxis( nDimensionIndex, MAIN_AXIS_INDEX, xCooSys ) ); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( nDimensionIndex, MAIN_AXIS_INDEX, xCooSys ); if(!xAxis.is()) { //hhhh todo create axis without axis visibility - } - if(!xAxis.is()) return; + } if( bMainGrid ) - AxisHelper::makeGridVisible( xAxis->getGridProperties() ); + AxisHelper::makeGridVisible( xAxis->getGridProperties2() ); else { - const Sequence< Reference< beans::XPropertySet > > aSubGrids( xAxis->getSubGridProperties() ); + std::vector< rtl::Reference< GridProperties > > aSubGrids( xAxis->getSubGridProperties2() ); for( auto const & i : aSubGrids ) AxisHelper::makeGridVisible( i ); } } -void AxisHelper::makeAxisVisible( const Reference< XAxis >& xAxis ) +void AxisHelper::makeAxisVisible( const rtl::Reference< Axis >& xAxis ) { - Reference< beans::XPropertySet > xProps( xAxis, uno::UNO_QUERY ); - if( xProps.is() ) + if( xAxis.is() ) { - xProps->setPropertyValue( "Show", uno::Any( true ) ); - LinePropertiesHelper::SetLineVisible( xProps ); - xProps->setPropertyValue( "DisplayLabels", uno::Any( true ) ); + xAxis->setPropertyValue( u"Show"_ustr, uno::Any( true ) ); + LinePropertiesHelper::SetLineVisible( xAxis ); + xAxis->setPropertyValue( u"DisplayLabels"_ustr, uno::Any( true ) ); } } -void AxisHelper::makeGridVisible( const Reference< beans::XPropertySet >& xGridProperties ) +void AxisHelper::makeGridVisible( const rtl::Reference< GridProperties >& xGridProperties ) { if( xGridProperties.is() ) { - xGridProperties->setPropertyValue( "Show", uno::Any( true ) ); + xGridProperties->setPropertyValue( u"Show"_ustr, uno::Any( true ) ); LinePropertiesHelper::SetLineVisible( xGridProperties ); } } void AxisHelper::hideAxis( sal_Int32 nDimensionIndex, bool bMainAxis - , const Reference< XDiagram >& xDiagram ) + , const rtl::Reference< Diagram >& xDiagram ) { AxisHelper::makeAxisInvisible( AxisHelper::getAxis( nDimensionIndex, bMainAxis, xDiagram ) ); } -void AxisHelper::makeAxisInvisible( const Reference< XAxis >& xAxis ) +void AxisHelper::makeAxisInvisible( const rtl::Reference< Axis >& xAxis ) { - Reference< beans::XPropertySet > xProps( xAxis, uno::UNO_QUERY ); - if( xProps.is() ) + if( xAxis.is() ) { - xProps->setPropertyValue( "Show", uno::Any( false ) ); + xAxis->setPropertyValue( u"Show"_ustr, uno::Any( false ) ); } } -void AxisHelper::hideAxisIfNoDataIsAttached( const Reference< XAxis >& xAxis, const Reference< XDiagram >& xDiagram ) +void AxisHelper::hideAxisIfNoDataIsAttached( const rtl::Reference< Axis >& xAxis, const rtl::Reference< Diagram >& xDiagram ) { //axis is hidden if no data is attached anymore but data is available bool bOtherSeriesAttachedToThisAxis = false; - std::vector< Reference< chart2::XDataSeries > > aSeriesVector( DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + std::vector< rtl::Reference< DataSeries > > aSeriesVector = xDiagram->getDataSeries(); for (auto const& series : aSeriesVector) { - uno::Reference< chart2::XAxis > xCurrentAxis = DiagramHelper::getAttachedAxis(series, xDiagram ); + rtl::Reference< Axis > xCurrentAxis = xDiagram->getAttachedAxis(series); if( xCurrentAxis==xAxis ) { bOtherSeriesAttachedToThisAxis = true; @@ -515,82 +486,81 @@ void AxisHelper::hideAxisIfNoDataIsAttached( const Reference< XAxis >& xAxis, co } void AxisHelper::hideGrid( sal_Int32 nDimensionIndex, sal_Int32 nCooSysIndex, bool bMainGrid - , const Reference< XDiagram >& xDiagram ) + , const rtl::Reference< Diagram >& xDiagram ) { if( !xDiagram.is() ) return; - Reference< XCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, nCooSysIndex ); + rtl::Reference< BaseCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, nCooSysIndex ); if(!xCooSys.is()) return; - Reference< XAxis > xAxis( AxisHelper::getAxis( nDimensionIndex, MAIN_AXIS_INDEX, xCooSys ) ); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( nDimensionIndex, MAIN_AXIS_INDEX, xCooSys ); if(!xAxis.is()) return; if( bMainGrid ) - AxisHelper::makeGridInvisible( xAxis->getGridProperties() ); + AxisHelper::makeGridInvisible( xAxis->getGridProperties2() ); else { - const Sequence< Reference< beans::XPropertySet > > aSubGrids( xAxis->getSubGridProperties() ); + std::vector< rtl::Reference< ::chart::GridProperties > > aSubGrids( xAxis->getSubGridProperties2() ); for( auto const & i : aSubGrids) AxisHelper::makeGridInvisible( i ); } } -void AxisHelper::makeGridInvisible( const Reference< beans::XPropertySet >& xGridProperties ) +void AxisHelper::makeGridInvisible( const rtl::Reference< ::chart::GridProperties >& xGridProperties ) { if( xGridProperties.is() ) { - xGridProperties->setPropertyValue( "Show", uno::Any( false ) ); + xGridProperties->setPropertyValue( u"Show"_ustr, uno::Any( false ) ); } } bool AxisHelper::isGridShown( sal_Int32 nDimensionIndex, sal_Int32 nCooSysIndex, bool bMainGrid - , const Reference< css::chart2::XDiagram >& xDiagram ) + , const rtl::Reference< Diagram >& xDiagram ) { bool bRet = false; - Reference< XCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, nCooSysIndex ); + rtl::Reference< BaseCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, nCooSysIndex ); if(!xCooSys.is()) return bRet; - Reference< XAxis > xAxis( AxisHelper::getAxis( nDimensionIndex, MAIN_AXIS_INDEX, xCooSys ) ); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( nDimensionIndex, MAIN_AXIS_INDEX, xCooSys ); if(!xAxis.is()) return bRet; if( bMainGrid ) - bRet = AxisHelper::isGridVisible( xAxis->getGridProperties() ); + bRet = AxisHelper::isGridVisible( xAxis->getGridProperties2() ); else { - Sequence< Reference< beans::XPropertySet > > aSubGrids( xAxis->getSubGridProperties() ); - if( aSubGrids.hasElements() ) + std::vector< rtl::Reference< ::chart::GridProperties > > aSubGrids( xAxis->getSubGridProperties2() ); + if( !aSubGrids.empty() ) bRet = AxisHelper::isGridVisible( aSubGrids[0] ); } return bRet; } -Reference< XCoordinateSystem > AxisHelper::getCoordinateSystemByIndex( - const Reference< XDiagram >& xDiagram, sal_Int32 nIndex ) +rtl::Reference< ::chart::BaseCoordinateSystem > AxisHelper::getCoordinateSystemByIndex( + const rtl::Reference< Diagram >& xDiagram, sal_Int32 nIndex ) { - Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY ); - if(!xCooSysContainer.is()) + if(!xDiagram.is()) return nullptr; - Sequence< Reference< XCoordinateSystem > > aCooSysList = xCooSysContainer->getCoordinateSystems(); - if(0<=nIndex && nIndex<aCooSysList.getLength()) + auto aCooSysList = xDiagram->getBaseCoordinateSystems(); + if(0<=nIndex && o3tl::make_unsigned(nIndex) < aCooSysList.size()) return aCooSysList[nIndex]; return nullptr; } -Reference< XAxis > AxisHelper::getAxis( sal_Int32 nDimensionIndex, bool bMainAxis - , const Reference< XDiagram >& xDiagram ) +rtl::Reference< Axis > AxisHelper::getAxis( sal_Int32 nDimensionIndex, bool bMainAxis + , const rtl::Reference< Diagram >& xDiagram ) { - Reference< XAxis > xRet; + rtl::Reference< Axis > xRet; try { - Reference< XCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ); - xRet.set( AxisHelper::getAxis( nDimensionIndex, bMainAxis ? 0 : 1, xCooSys ) ); + rtl::Reference< BaseCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ); + xRet = AxisHelper::getAxis( nDimensionIndex, bMainAxis ? 0 : 1, xCooSys ); } catch( const uno::Exception & ) { @@ -598,10 +568,10 @@ Reference< XAxis > AxisHelper::getAxis( sal_Int32 nDimensionIndex, bool bMainAxi return xRet; } -Reference< XAxis > AxisHelper::getAxis( sal_Int32 nDimensionIndex, sal_Int32 nAxisIndex - , const Reference< XCoordinateSystem >& xCooSys ) +rtl::Reference< Axis > AxisHelper::getAxis( sal_Int32 nDimensionIndex, sal_Int32 nAxisIndex + , const rtl::Reference< BaseCoordinateSystem >& xCooSys ) { - Reference< XAxis > xRet; + rtl::Reference< Axis > xRet; if(!xCooSys.is()) return xRet; @@ -613,12 +583,12 @@ Reference< XAxis > AxisHelper::getAxis( sal_Int32 nDimensionIndex, sal_Int32 nAx assert(nAxisIndex >= 0); assert(nDimensionIndex >= 0); - xRet.set( xCooSys->getAxisByDimension( nDimensionIndex, nAxisIndex ) ); + xRet = xCooSys->getAxisByDimension2( nDimensionIndex, nAxisIndex ); return xRet; } -Reference< XAxis > AxisHelper::getCrossingMainAxis( const Reference< XAxis >& xAxis - , const Reference< XCoordinateSystem >& xCooSys ) +rtl::Reference< Axis > AxisHelper::getCrossingMainAxis( const rtl::Reference< Axis >& xAxis + , const rtl::Reference< BaseCoordinateSystem >& xCooSys ) { sal_Int32 nDimensionIndex = 0; sal_Int32 nAxisIndex = 0; @@ -627,8 +597,7 @@ Reference< XAxis > AxisHelper::getCrossingMainAxis( const Reference< XAxis >& xA { nDimensionIndex=1; bool bSwapXY = false; - Reference< beans::XPropertySet > xCooSysProp( xCooSys, uno::UNO_QUERY ); - if( xCooSysProp.is() && (xCooSysProp->getPropertyValue( "SwapXAndYAxis" ) >>= bSwapXY) && bSwapXY ) + if( (xCooSys->getPropertyValue( u"SwapXAndYAxis"_ustr ) >>= bSwapXY) && bSwapXY ) nDimensionIndex=0; } else if( nDimensionIndex==1 ) @@ -638,8 +607,8 @@ Reference< XAxis > AxisHelper::getCrossingMainAxis( const Reference< XAxis >& xA return AxisHelper::getAxis( nDimensionIndex, 0, xCooSys ); } -Reference< XAxis > AxisHelper::getParallelAxis( const Reference< XAxis >& xAxis - , const Reference< XDiagram >& xDiagram ) +rtl::Reference< Axis > AxisHelper::getParallelAxis( const rtl::Reference< Axis >& xAxis + , const rtl::Reference< Diagram >& xDiagram ) { try { @@ -659,65 +628,64 @@ Reference< XAxis > AxisHelper::getParallelAxis( const Reference< XAxis >& xAxis } bool AxisHelper::isAxisShown( sal_Int32 nDimensionIndex, bool bMainAxis - , const Reference< XDiagram >& xDiagram ) + , const rtl::Reference< Diagram >& xDiagram ) { return AxisHelper::isAxisVisible( AxisHelper::getAxis( nDimensionIndex, bMainAxis, xDiagram ) ); } -bool AxisHelper::isAxisVisible( const Reference< XAxis >& xAxis ) +bool AxisHelper::isAxisVisible( const rtl::Reference< Axis >& xAxis ) { bool bRet = false; - Reference< beans::XPropertySet > xProps( xAxis, uno::UNO_QUERY ); - if( xProps.is() ) + if( xAxis.is() ) { - xProps->getPropertyValue( "Show" ) >>= bRet; - bRet = bRet && ( LinePropertiesHelper::IsLineVisible( xProps ) - || areAxisLabelsVisible( xProps ) ); + xAxis->getPropertyValue( u"Show"_ustr ) >>= bRet; + bRet = bRet && ( LinePropertiesHelper::IsLineVisible( xAxis ) + || areAxisLabelsVisible( xAxis ) ); } return bRet; } -bool AxisHelper::areAxisLabelsVisible( const Reference< beans::XPropertySet >& xAxisProperties ) +bool AxisHelper::areAxisLabelsVisible( const rtl::Reference< Axis >& xAxis ) { bool bRet = false; - if( xAxisProperties.is() ) + if( xAxis.is() ) { - xAxisProperties->getPropertyValue( "DisplayLabels" ) >>= bRet; + xAxis->getPropertyValue( u"DisplayLabels"_ustr ) >>= bRet; } return bRet; } -bool AxisHelper::isGridVisible( const Reference< beans::XPropertySet >& xGridProperies ) +bool AxisHelper::isGridVisible( const rtl::Reference< ::chart::GridProperties >& xGridproperties ) { bool bRet = false; - if( xGridProperies.is() ) + if( xGridproperties.is() ) { - xGridProperies->getPropertyValue( "Show" ) >>= bRet; - bRet = bRet && LinePropertiesHelper::IsLineVisible( xGridProperies ); + xGridproperties->getPropertyValue( u"Show"_ustr ) >>= bRet; + bRet = bRet && LinePropertiesHelper::IsLineVisible( xGridproperties ); } return bRet; } -Reference< beans::XPropertySet > AxisHelper::getGridProperties( - const Reference< XCoordinateSystem >& xCooSys +rtl::Reference< GridProperties > AxisHelper::getGridProperties( + const rtl::Reference< BaseCoordinateSystem >& xCooSys , sal_Int32 nDimensionIndex, sal_Int32 nAxisIndex, sal_Int32 nSubGridIndex ) { - Reference< beans::XPropertySet > xRet; + rtl::Reference< GridProperties > xRet; - Reference< XAxis > xAxis( AxisHelper::getAxis( nDimensionIndex, nAxisIndex, xCooSys ) ); + rtl::Reference< Axis > xAxis( AxisHelper::getAxis( nDimensionIndex, nAxisIndex, xCooSys ) ); if( xAxis.is() ) { if( nSubGridIndex<0 ) - xRet.set( xAxis->getGridProperties() ); + xRet = xAxis->getGridProperties2(); else { - Sequence< Reference< beans::XPropertySet > > aSubGrids( xAxis->getSubGridProperties() ); - if (nSubGridIndex < aSubGrids.getLength()) - xRet.set( aSubGrids[nSubGridIndex] ); + std::vector< rtl::Reference< GridProperties > > aSubGrids( xAxis->getSubGridProperties2() ); + if (nSubGridIndex < static_cast<sal_Int32>(aSubGrids.size())) + xRet = aSubGrids[nSubGridIndex]; } } @@ -725,8 +693,8 @@ Reference< beans::XPropertySet > AxisHelper::getGridProperties( } sal_Int32 AxisHelper::getDimensionIndexOfAxis( - const Reference< XAxis >& xAxis - , const Reference< XDiagram >& xDiagram ) + const rtl::Reference< Axis >& xAxis + , const rtl::Reference< Diagram >& xDiagram ) { sal_Int32 nDimensionIndex = -1; sal_Int32 nCooSysIndex = -1; @@ -736,8 +704,8 @@ sal_Int32 AxisHelper::getDimensionIndexOfAxis( } bool AxisHelper::getIndicesForAxis( - const Reference< XAxis >& xAxis - , const Reference< XCoordinateSystem >& xCooSys + const rtl::Reference< Axis >& xAxis + , const rtl::Reference< BaseCoordinateSystem >& xCooSys , sal_Int32& rOutDimensionIndex, sal_Int32& rOutAxisIndex ) { //returns true if indices are found @@ -745,29 +713,29 @@ bool AxisHelper::getIndicesForAxis( rOutDimensionIndex = -1; rOutAxisIndex = -1; - if( xCooSys.is() && xAxis.is() ) + if( !xCooSys || !xAxis ) + return false; + + rtl::Reference< Axis > xCurrentAxis; + sal_Int32 nDimensionCount( xCooSys->getDimension() ); + for( sal_Int32 nDimensionIndex = 0; nDimensionIndex < nDimensionCount; nDimensionIndex++ ) { - Reference< XAxis > xCurrentAxis; - sal_Int32 nDimensionCount( xCooSys->getDimension() ); - for( sal_Int32 nDimensionIndex = 0; nDimensionIndex < nDimensionCount; nDimensionIndex++ ) + sal_Int32 nMaxAxisIndex = xCooSys->getMaximumAxisIndexByDimension(nDimensionIndex); + for( sal_Int32 nAxisIndex = 0; nAxisIndex <= nMaxAxisIndex; nAxisIndex++ ) { - sal_Int32 nMaxAxisIndex = xCooSys->getMaximumAxisIndexByDimension(nDimensionIndex); - for( sal_Int32 nAxisIndex = 0; nAxisIndex <= nMaxAxisIndex; nAxisIndex++ ) - { - xCurrentAxis = xCooSys->getAxisByDimension(nDimensionIndex,nAxisIndex); - if( xCurrentAxis == xAxis ) - { - rOutDimensionIndex = nDimensionIndex; - rOutAxisIndex = nAxisIndex; - return true; - } - } + xCurrentAxis = xCooSys->getAxisByDimension2(nDimensionIndex,nAxisIndex); + if( xCurrentAxis == xAxis ) + { + rOutDimensionIndex = nDimensionIndex; + rOutAxisIndex = nAxisIndex; + return true; + } } } return false; } -bool AxisHelper::getIndicesForAxis( const Reference< XAxis >& xAxis, const Reference< XDiagram >& xDiagram +bool AxisHelper::getIndicesForAxis( const rtl::Reference< Axis >& xAxis, const rtl::Reference< Diagram >& xDiagram , sal_Int32& rOutCooSysIndex, sal_Int32& rOutDimensionIndex, sal_Int32& rOutAxisIndex ) { //returns true if indices are found @@ -776,28 +744,24 @@ bool AxisHelper::getIndicesForAxis( const Reference< XAxis >& xAxis, const Refer rOutDimensionIndex = -1; rOutAxisIndex = -1; - Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY ); - if(xCooSysContainer.is()) + const std::vector< rtl::Reference< BaseCoordinateSystem > > aCooSysList = xDiagram->getBaseCoordinateSystems(); + for( std::size_t nC=0; nC < aCooSysList.size(); ++nC ) { - Sequence< Reference< XCoordinateSystem > > aCooSysList = xCooSysContainer->getCoordinateSystems(); - for( sal_Int32 nC=0; nC<aCooSysList.getLength(); ++nC ) + if( AxisHelper::getIndicesForAxis( xAxis, aCooSysList[nC], rOutDimensionIndex, rOutAxisIndex ) ) { - if( AxisHelper::getIndicesForAxis( xAxis, aCooSysList[nC], rOutDimensionIndex, rOutAxisIndex ) ) - { - rOutCooSysIndex = nC; - return true; - } + rOutCooSysIndex = nC; + return true; } } return false; } -std::vector< Reference< XAxis > > AxisHelper::getAllAxesOfCoordinateSystem( - const Reference< XCoordinateSystem >& xCooSys +std::vector< rtl::Reference< Axis > > AxisHelper::getAllAxesOfCoordinateSystem( + const rtl::Reference< BaseCoordinateSystem >& xCooSys , bool bOnlyVisible /* = false */ ) { - std::vector< Reference< XAxis > > aAxisVector; + std::vector< rtl::Reference< Axis > > aAxisVector; if(xCooSys.is()) { @@ -812,15 +776,13 @@ std::vector< Reference< XAxis > > AxisHelper::getAllAxesOfCoordinateSystem( { try { - Reference< XAxis > xAxis( xCooSys->getAxisByDimension( nDimensionIndex, nAxisIndex ) ); + rtl::Reference< Axis > xAxis = xCooSys->getAxisByDimension2( nDimensionIndex, nAxisIndex ); if( xAxis.is() ) { bool bAddAxis = true; if( bOnlyVisible ) { - Reference< beans::XPropertySet > xAxisProp( xAxis, uno::UNO_QUERY ); - if( !xAxisProp.is() || - !(xAxisProp->getPropertyValue( "Show") >>= bAddAxis) ) + if( !(xAxis->getPropertyValue( u"Show"_ustr) >>= bAddAxis) ) bAddAxis = false; } if( bAddAxis ) @@ -839,99 +801,89 @@ std::vector< Reference< XAxis > > AxisHelper::getAllAxesOfCoordinateSystem( return aAxisVector; } -Sequence< Reference< XAxis > > AxisHelper::getAllAxesOfDiagram( - const Reference< XDiagram >& xDiagram +std::vector< rtl::Reference< Axis > > AxisHelper::getAllAxesOfDiagram( + const rtl::Reference< Diagram >& xDiagram , bool bOnlyVisible ) { - std::vector< Reference< XAxis > > aAxisVector; + std::vector< rtl::Reference< Axis > > aAxisVector; - Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY ); - if(xCooSysContainer.is()) + for( rtl::Reference< BaseCoordinateSystem > const & coords : xDiagram->getBaseCoordinateSystems() ) { - const Sequence< Reference< XCoordinateSystem > > aCooSysList = xCooSysContainer->getCoordinateSystems(); - for( Reference< XCoordinateSystem > const & coords : aCooSysList ) - { - std::vector< Reference< XAxis > > aAxesPerCooSys( AxisHelper::getAllAxesOfCoordinateSystem( coords, bOnlyVisible ) ); - aAxisVector.insert( aAxisVector.end(), aAxesPerCooSys.begin(), aAxesPerCooSys.end() ); - } + std::vector< rtl::Reference< Axis > > aAxesPerCooSys = AxisHelper::getAllAxesOfCoordinateSystem( coords, bOnlyVisible ); + aAxisVector.insert( aAxisVector.end(), aAxesPerCooSys.begin(), aAxesPerCooSys.end() ); } - return comphelper::containerToSequence( aAxisVector ); + return aAxisVector; } -Sequence< Reference< beans::XPropertySet > > AxisHelper::getAllGrids( const Reference< XDiagram >& xDiagram ) +std::vector< rtl::Reference< GridProperties > > AxisHelper::getAllGrids( const rtl::Reference< Diagram >& xDiagram ) { - const Sequence< Reference< XAxis > > aAllAxes( AxisHelper::getAllAxesOfDiagram( xDiagram ) ); - std::vector< Reference< beans::XPropertySet > > aGridVector; + const std::vector< rtl::Reference< Axis > > aAllAxes = AxisHelper::getAllAxesOfDiagram( xDiagram ); + std::vector< rtl::Reference< GridProperties > > aGridVector; - for( Reference< XAxis > const & xAxis : aAllAxes ) + for( rtl::Reference< Axis > const & xAxis : aAllAxes ) { - if(!xAxis.is()) - continue; - Reference< beans::XPropertySet > xGridProperties( xAxis->getGridProperties() ); + rtl::Reference< GridProperties > xGridProperties( xAxis->getGridProperties2() ); if( xGridProperties.is() ) aGridVector.push_back( xGridProperties ); - const Sequence< Reference< beans::XPropertySet > > aSubGrids( xAxis->getSubGridProperties() ); - for( Reference< beans::XPropertySet > const & xSubGrid : aSubGrids ) + std::vector< rtl::Reference< GridProperties > > aSubGrids( xAxis->getSubGridProperties2() ); + for( rtl::Reference< GridProperties > const & xSubGrid : aSubGrids ) { if( xSubGrid.is() ) aGridVector.push_back( xSubGrid ); } } - return comphelper::containerToSequence( aGridVector ); + return aGridVector; } void AxisHelper::getAxisOrGridPossibilities( Sequence< sal_Bool >& rPossibilityList - , const Reference< XDiagram>& xDiagram, bool bAxis ) + , const rtl::Reference< Diagram>& xDiagram, bool bAxis ) { rPossibilityList.realloc(6); + sal_Bool* pPossibilityList = rPossibilityList.getArray(); - sal_Int32 nDimensionCount = DiagramHelper::getDimension( xDiagram ); + sal_Int32 nDimensionCount = -1; + if (xDiagram) + nDimensionCount = xDiagram->getDimension(); //set possibilities: sal_Int32 nIndex=0; - Reference< XChartType > xChartType = DiagramHelper::getChartTypeByIndex( xDiagram, 0 ); + rtl::Reference< ChartType > xChartType; + if (xDiagram) + xChartType = xDiagram->getChartTypeByIndex( 0 ); for(nIndex=0;nIndex<3;nIndex++) - rPossibilityList[nIndex]=ChartTypeHelper::isSupportingMainAxis(xChartType,nDimensionCount,nIndex); + pPossibilityList[nIndex] = xChartType.is() ? xChartType->isSupportingMainAxis(nDimensionCount, nIndex) : true; for(nIndex=3;nIndex<6;nIndex++) if( bAxis ) - rPossibilityList[nIndex]=ChartTypeHelper::isSupportingSecondaryAxis(xChartType,nDimensionCount); + pPossibilityList[nIndex] = xChartType.is() ? xChartType->isSupportingSecondaryAxis(nDimensionCount) : true; else - rPossibilityList[nIndex] = rPossibilityList[nIndex-3]; + pPossibilityList[nIndex] = rPossibilityList[nIndex-3]; } -bool AxisHelper::isSecondaryYAxisNeeded( const Reference< XCoordinateSystem >& xCooSys ) +bool AxisHelper::isSecondaryYAxisNeeded( const rtl::Reference< BaseCoordinateSystem >& xCooSys ) { - Reference< chart2::XChartTypeContainer > xCTCnt( xCooSys, uno::UNO_QUERY ); - if( xCTCnt.is() ) + if( !xCooSys.is() ) + return false; + + const std::vector< rtl::Reference< ChartType > > & aChartTypes( xCooSys->getChartTypes2() ); + for( rtl::Reference< ChartType > const & chartType : aChartTypes ) { - const Sequence< Reference< chart2::XChartType > > aChartTypes( xCTCnt->getChartTypes() ); - for( Reference< chart2::XChartType > const & chartType : aChartTypes ) + const std::vector< rtl::Reference< DataSeries > > & aSeriesList = chartType->getDataSeries2(); + for( sal_Int32 nS = aSeriesList.size(); nS-- ; ) { - Reference< XDataSeriesContainer > xSeriesContainer( chartType, uno::UNO_QUERY ); - if( !xSeriesContainer.is() ) - continue; - - Sequence< Reference< XDataSeries > > aSeriesList( xSeriesContainer->getDataSeries() ); - for( sal_Int32 nS = aSeriesList.getLength(); nS-- ; ) - { - Reference< beans::XPropertySet > xProp( aSeriesList[nS], uno::UNO_QUERY ); - if(xProp.is()) - { - sal_Int32 nAttachedAxisIndex = 0; - if( ( xProp->getPropertyValue( "AttachedAxisIndex" ) >>= nAttachedAxisIndex ) && nAttachedAxisIndex>0 ) - return true; - } - } + sal_Int32 nAttachedAxisIndex = 0; + if( ( aSeriesList[nS]->getPropertyValue( u"AttachedAxisIndex"_ustr ) >>= nAttachedAxisIndex ) && + nAttachedAxisIndex>0 ) + return true; } } return false; } -bool AxisHelper::shouldAxisBeDisplayed( const Reference< XAxis >& xAxis - , const Reference< XCoordinateSystem >& xCooSys ) +bool AxisHelper::shouldAxisBeDisplayed( const rtl::Reference< Axis >& xAxis + , const rtl::Reference< BaseCoordinateSystem >& xCooSys ) { bool bRet = false; @@ -942,44 +894,45 @@ bool AxisHelper::shouldAxisBeDisplayed( const Reference< XAxis >& xAxis if( AxisHelper::getIndicesForAxis( xAxis, xCooSys, nDimensionIndex, nAxisIndex ) ) { sal_Int32 nDimensionCount = xCooSys->getDimension(); - Reference< XChartType > xChartType( AxisHelper::getChartTypeByIndex( xCooSys, 0 ) ); + rtl::Reference< ChartType > xChartType( AxisHelper::getChartTypeByIndex( xCooSys, 0 ) ); bool bMainAxis = (nAxisIndex==MAIN_AXIS_INDEX); if( bMainAxis ) - bRet = ChartTypeHelper::isSupportingMainAxis(xChartType,nDimensionCount,nDimensionIndex); + bRet = xChartType.is() ? xChartType->isSupportingMainAxis(nDimensionCount, nDimensionIndex) : true; else - bRet = ChartTypeHelper::isSupportingSecondaryAxis(xChartType,nDimensionCount); + bRet = xChartType.is() ? xChartType->isSupportingSecondaryAxis(nDimensionCount) : true; } } return bRet; } -void AxisHelper::getAxisOrGridExcistence( Sequence< sal_Bool >& rExistenceList - , const Reference< XDiagram>& xDiagram, bool bAxis ) +void AxisHelper::getAxisOrGridExistence( Sequence< sal_Bool >& rExistenceList + , const rtl::Reference< Diagram>& xDiagram, bool bAxis ) { rExistenceList.realloc(6); + sal_Bool* pExistenceList = rExistenceList.getArray(); if(bAxis) { sal_Int32 nN; for(nN=0;nN<3;nN++) - rExistenceList[nN] = AxisHelper::isAxisShown( nN, true, xDiagram ); + pExistenceList[nN] = AxisHelper::isAxisShown( nN, true, xDiagram ); for(nN=3;nN<6;nN++) - rExistenceList[nN] = AxisHelper::isAxisShown( nN%3, false, xDiagram ); + pExistenceList[nN] = AxisHelper::isAxisShown( nN%3, false, xDiagram ); } else { sal_Int32 nN; for(nN=0;nN<3;nN++) - rExistenceList[nN] = AxisHelper::isGridShown( nN, 0, true, xDiagram ); + pExistenceList[nN] = AxisHelper::isGridShown( nN, 0, true, xDiagram ); for(nN=3;nN<6;nN++) - rExistenceList[nN] = AxisHelper::isGridShown( nN%3, 0, false, xDiagram ); + pExistenceList[nN] = AxisHelper::isGridShown( nN%3, 0, false, xDiagram ); } } -bool AxisHelper::changeVisibilityOfAxes( const Reference< XDiagram >& xDiagram +bool AxisHelper::changeVisibilityOfAxes( const rtl::Reference< Diagram >& xDiagram , const Sequence< sal_Bool >& rOldExistenceList , const Sequence< sal_Bool >& rNewExistenceList , const Reference< uno::XComponentContext >& xContext @@ -1002,7 +955,7 @@ bool AxisHelper::changeVisibilityOfAxes( const Reference< XDiagram >& xDiagram return bChanged; } -bool AxisHelper::changeVisibilityOfGrids( const Reference< XDiagram >& xDiagram +bool AxisHelper::changeVisibilityOfGrids( const rtl::Reference< Diagram >& xDiagram , const Sequence< sal_Bool >& rOldExistenceList , const Sequence< sal_Bool >& rNewExistenceList ) { @@ -1021,48 +974,43 @@ bool AxisHelper::changeVisibilityOfGrids( const Reference< XDiagram >& xDiagram return bChanged; } -Reference< XCoordinateSystem > AxisHelper::getCoordinateSystemOfAxis( - const Reference< XAxis >& xAxis - , const Reference< XDiagram >& xDiagram ) +rtl::Reference< BaseCoordinateSystem > AxisHelper::getCoordinateSystemOfAxis( + const rtl::Reference< Axis >& xAxis + , const rtl::Reference< Diagram >& xDiagram ) { - Reference< XCoordinateSystem > xRet; + if (!xDiagram) + return nullptr; - Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY ); - if( xCooSysContainer.is() ) + rtl::Reference< BaseCoordinateSystem > xRet; + for( rtl::Reference< BaseCoordinateSystem > const & xCooSys : xDiagram->getBaseCoordinateSystems() ) { - const Sequence< Reference< XCoordinateSystem > > aCooSysList( xCooSysContainer->getCoordinateSystems() ); - for( Reference< XCoordinateSystem > const & xCooSys : aCooSysList ) - { - std::vector< Reference< XAxis > > aAllAxis( AxisHelper::getAllAxesOfCoordinateSystem( xCooSys ) ); + std::vector< rtl::Reference< Axis > > aAllAxis = AxisHelper::getAllAxesOfCoordinateSystem( xCooSys ); - std::vector< Reference< XAxis > >::iterator aFound = - std::find( aAllAxis.begin(), aAllAxis.end(), xAxis ); - if( aFound != aAllAxis.end()) - { - xRet.set( xCooSys ); - break; - } + auto aFound = std::find( aAllAxis.begin(), aAllAxis.end(), xAxis ); + if( aFound != aAllAxis.end()) + { + xRet = xCooSys; + break; } } return xRet; } -Reference< XChartType > AxisHelper::getChartTypeByIndex( const Reference< XCoordinateSystem >& xCooSys, sal_Int32 nIndex ) +rtl::Reference< ChartType > AxisHelper::getChartTypeByIndex( const rtl::Reference< BaseCoordinateSystem >& xCooSys, sal_Int32 nIndex ) { - Reference< XChartType > xChartType; + rtl::Reference< ChartType > xChartType; - Reference< XChartTypeContainer > xChartTypeContainer( xCooSys, uno::UNO_QUERY ); - if( xChartTypeContainer.is() ) + if( xCooSys.is() ) { - Sequence< Reference< XChartType > > aChartTypeList( xChartTypeContainer->getChartTypes() ); - if( nIndex >= 0 && nIndex < aChartTypeList.getLength() ) - xChartType.set( aChartTypeList[nIndex] ); + const std::vector< rtl::Reference< ChartType > > aChartTypeList( xCooSys->getChartTypes2() ); + if( nIndex >= 0 && o3tl::make_unsigned(nIndex) < aChartTypeList.size() ) + xChartType = aChartTypeList[nIndex]; } return xChartType; } -void AxisHelper::setRTLAxisLayout( const Reference< XCoordinateSystem >& xCooSys ) +void AxisHelper::setRTLAxisLayout( const rtl::Reference< BaseCoordinateSystem >& xCooSys ) { if( !xCooSys.is() ) return; @@ -1072,9 +1020,7 @@ void AxisHelper::setRTLAxisLayout( const Reference< XCoordinateSystem >& xCooSys return; bool bVertical = false; - Reference< beans::XPropertySet > xCooSysProp( xCooSys, uno::UNO_QUERY ); - if( xCooSysProp.is() ) - xCooSysProp->getPropertyValue( "SwapXAndYAxis" ) >>= bVertical; + xCooSys->getPropertyValue( u"SwapXAndYAxis"_ustr ) >>= bVertical; sal_Int32 nHorizontalAxisDimension = bVertical ? 1 : 0; sal_Int32 nVerticalAxisDimension = bVertical ? 0 : 1; @@ -1082,7 +1028,7 @@ void AxisHelper::setRTLAxisLayout( const Reference< XCoordinateSystem >& xCooSys try { //reverse direction for horizontal main axis - Reference< chart2::XAxis > xHorizontalMainAxis( AxisHelper::getAxis( nHorizontalAxisDimension, MAIN_AXIS_INDEX, xCooSys ) ); + rtl::Reference< Axis > xHorizontalMainAxis = AxisHelper::getAxis( nHorizontalAxisDimension, MAIN_AXIS_INDEX, xCooSys ); if( xHorizontalMainAxis.is() ) { chart2::ScaleData aScale = xHorizontalMainAxis->getScaleData(); @@ -1091,7 +1037,7 @@ void AxisHelper::setRTLAxisLayout( const Reference< XCoordinateSystem >& xCooSys } //mathematical direction for vertical main axis - Reference< chart2::XAxis > xVerticalMainAxis( AxisHelper::getAxis( nVerticalAxisDimension, MAIN_AXIS_INDEX, xCooSys ) ); + rtl::Reference< Axis > xVerticalMainAxis = AxisHelper::getAxis( nVerticalAxisDimension, MAIN_AXIS_INDEX, xCooSys ); if( xVerticalMainAxis.is() ) { chart2::ScaleData aScale = xVerticalMainAxis->getScaleData(); @@ -1107,7 +1053,7 @@ void AxisHelper::setRTLAxisLayout( const Reference< XCoordinateSystem >& xCooSys try { //reverse direction for horizontal secondary axis - Reference< chart2::XAxis > xHorizontalSecondaryAxis( AxisHelper::getAxis( nHorizontalAxisDimension, SECONDARY_AXIS_INDEX, xCooSys ) ); + rtl::Reference< Axis > xHorizontalSecondaryAxis = AxisHelper::getAxis( nHorizontalAxisDimension, SECONDARY_AXIS_INDEX, xCooSys ); if( xHorizontalSecondaryAxis.is() ) { chart2::ScaleData aScale = xHorizontalSecondaryAxis->getScaleData(); @@ -1116,7 +1062,7 @@ void AxisHelper::setRTLAxisLayout( const Reference< XCoordinateSystem >& xCooSys } //mathematical direction for vertical secondary axis - Reference< chart2::XAxis > xVerticalSecondaryAxis( AxisHelper::getAxis( nVerticalAxisDimension, SECONDARY_AXIS_INDEX, xCooSys ) ); + rtl::Reference< Axis > xVerticalSecondaryAxis = AxisHelper::getAxis( nVerticalAxisDimension, SECONDARY_AXIS_INDEX, xCooSys ); if( xVerticalSecondaryAxis.is() ) { chart2::ScaleData aScale = xVerticalSecondaryAxis->getScaleData(); @@ -1130,16 +1076,16 @@ void AxisHelper::setRTLAxisLayout( const Reference< XCoordinateSystem >& xCooSys } } -Reference< XChartType > AxisHelper::getFirstChartTypeWithSeriesAttachedToAxisIndex( const Reference< chart2::XDiagram >& xDiagram, const sal_Int32 nAttachedAxisIndex ) +rtl::Reference< ChartType > AxisHelper::getFirstChartTypeWithSeriesAttachedToAxisIndex( const rtl::Reference< Diagram >& xDiagram, const sal_Int32 nAttachedAxisIndex ) { - Reference< XChartType > xChartType; - std::vector< Reference< XDataSeries > > aSeriesVector( DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + rtl::Reference< ChartType > xChartType; + std::vector< rtl::Reference< DataSeries > > aSeriesVector = xDiagram->getDataSeries(); for (auto const& series : aSeriesVector) { - sal_Int32 nCurrentIndex = DataSeriesHelper::getAttachedAxisIndex(series); + sal_Int32 nCurrentIndex = series->getAttachedAxisIndex(); if( nAttachedAxisIndex == nCurrentIndex ) { - xChartType = DiagramHelper::getChartTypeOfSeries(xDiagram, series); + xChartType = xDiagram->getChartTypeOfSeries(series); if(xChartType.is()) break; } @@ -1149,7 +1095,7 @@ Reference< XChartType > AxisHelper::getFirstChartTypeWithSeriesAttachedToAxisInd bool AxisHelper::isAxisPositioningEnabled() { - const SvtSaveOptions::ODFSaneDefaultVersion nCurrentVersion(SvtSaveOptions().GetODFSaneDefaultVersion()); + const SvtSaveOptions::ODFSaneDefaultVersion nCurrentVersion(GetODFSaneDefaultVersion()); return nCurrentVersion >= SvtSaveOptions::ODFSVER_012; } |