diff options
Diffstat (limited to 'chart2/source/tools/DiagramHelper.cxx')
-rw-r--r-- | chart2/source/tools/DiagramHelper.cxx | 66 |
1 files changed, 19 insertions, 47 deletions
diff --git a/chart2/source/tools/DiagramHelper.cxx b/chart2/source/tools/DiagramHelper.cxx index 31ac5f1ae4ec..a8da65e5133d 100644 --- a/chart2/source/tools/DiagramHelper.cxx +++ b/chart2/source/tools/DiagramHelper.cxx @@ -35,7 +35,9 @@ #include "AxisHelper.hxx" #include "ContainerHelper.hxx" #include "ChartTypeHelper.hxx" +#include "ChartModelHelper.hxx" #include "CommonConverters.hxx" +#include "ExplicitCategoriesProvider.hxx" #include "servicenames_charttypes.hxx" #include <com/sun/star/chart/MissingValueTreatment.hpp> @@ -955,8 +957,7 @@ Reference< data::XLabeledDataSequence > return xResult; } -//static -void DiagramHelper::generateAutomaticCategoriesFromChartType( +void lcl_generateAutomaticCategoriesFromChartType( Sequence< rtl::OUString >& rRet, const Reference< XChartType >& xChartType ) { @@ -986,64 +987,35 @@ void DiagramHelper::generateAutomaticCategoriesFromChartType( } } -//static -Sequence< rtl::OUString > DiagramHelper::generateAutomaticCategories( - const Reference< XChartDocument >& xChartDoc ) +Sequence< rtl::OUString > DiagramHelper::generateAutomaticCategoriesFromCooSys( const Reference< XCoordinateSystem > & xCooSys ) { Sequence< rtl::OUString > aRet; - if(xChartDoc.is()) + + Reference< XChartTypeContainer > xTypeCntr( xCooSys, uno::UNO_QUERY ); + if( xTypeCntr.is() ) { - uno::Reference< chart2::XDiagram > xDia( xChartDoc->getFirstDiagram() ); - if(xDia.is()) + Sequence< Reference< XChartType > > aChartTypes( xTypeCntr->getChartTypes() ); + for( sal_Int32 nN=0; nN<aChartTypes.getLength(); nN++ ) { - Reference< data::XLabeledDataSequence > xCategories( DiagramHelper::getCategoriesFromDiagram( xDia ) ); - if( xCategories.is() ) - aRet = DataSequenceToStringSequence(xCategories->getValues()); - if( !aRet.getLength() ) - { - /* - //unused ranges are very problematic as they bear the risk to damage the rectangular structure completly - if( bUseUnusedDataAlso ) - { - Sequence< Reference< chart2::data::XLabeledDataSequence > > aUnusedSequences( xDia->getUnusedData() ); - ::std::vector< Reference< chart2::data::XLabeledDataSequence > > aUnusedCategoryVector( - DataSeriesHelper::getAllDataSequencesByRole( aUnusedSequences, C2U("categories") ) ); - if( aUnusedCategoryVector.size() && aUnusedCategoryVector[0].is() ) - aRet = DataSequenceToStringSequence(aUnusedCategoryVector[0]->getValues()); - } - */ - if( !aRet.getLength() ) - { - Reference< XCoordinateSystemContainer > xCooSysCnt( xDia, uno::UNO_QUERY ); - if( xCooSysCnt.is() ) - { - Sequence< Reference< XCoordinateSystem > > aCooSysSeq( xCooSysCnt->getCoordinateSystems() ); - if( aCooSysSeq.getLength() ) - aRet = DiagramHelper::generateAutomaticCategories( aCooSysSeq[0] ); - } - } - } + lcl_generateAutomaticCategoriesFromChartType( aRet, aChartTypes[nN] ); + if( aRet.getLength() ) + return aRet; } } return aRet; } //static -Sequence< rtl::OUString > DiagramHelper::generateAutomaticCategories( - const Reference< XCoordinateSystem > & xCooSys ) +Sequence< rtl::OUString > DiagramHelper::getExplicitSimpleCategories( + const Reference< XChartDocument >& xChartDoc ) { Sequence< rtl::OUString > aRet; - - Reference< XChartTypeContainer > xTypeCntr( xCooSys, uno::UNO_QUERY ); - if( xTypeCntr.is() ) + uno::Reference< frame::XModel > xChartModel( xChartDoc, uno::UNO_QUERY ); + if(xChartModel.is()) { - Sequence< Reference< XChartType > > aChartTypes( xTypeCntr->getChartTypes() ); - for( sal_Int32 nN=0; nN<aChartTypes.getLength(); nN++ ) - { - DiagramHelper::generateAutomaticCategoriesFromChartType( aRet, aChartTypes[nN] ); - if( aRet.getLength() ) - return aRet; - } + uno::Reference< chart2::XCoordinateSystem > xCooSys( ChartModelHelper::getFirstCoordinateSystem( xChartModel ) ); + ExplicitCategoriesProvider aExplicitCategoriesProvider( xCooSys, xChartModel ); + aRet = aExplicitCategoriesProvider.getSimpleCategories(); } return aRet; } |