1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir #ifndef CHART2_DATASERIESHELPER_HXX 28*cdf0e10cSrcweir #define CHART2_DATASERIESHELPER_HXX 29*cdf0e10cSrcweir 30*cdf0e10cSrcweir #include <com/sun/star/chart2/data/XDataSequence.hpp> 31*cdf0e10cSrcweir #include <com/sun/star/chart2/data/XDataSource.hpp> 32*cdf0e10cSrcweir #include <com/sun/star/chart2/XDataSeries.hpp> 33*cdf0e10cSrcweir #include <com/sun/star/chart2/XDiagram.hpp> 34*cdf0e10cSrcweir #include <com/sun/star/chart2/XCoordinateSystem.hpp> 35*cdf0e10cSrcweir #include <com/sun/star/chart2/XChartType.hpp> 36*cdf0e10cSrcweir 37*cdf0e10cSrcweir #include "StackMode.hxx" 38*cdf0e10cSrcweir #include "charttoolsdllapi.hxx" 39*cdf0e10cSrcweir 40*cdf0e10cSrcweir #include <vector> 41*cdf0e10cSrcweir #include <functional> 42*cdf0e10cSrcweir #include <hash_set> 43*cdf0e10cSrcweir 44*cdf0e10cSrcweir namespace chart 45*cdf0e10cSrcweir { 46*cdf0e10cSrcweir 47*cdf0e10cSrcweir namespace DataSeriesHelper 48*cdf0e10cSrcweir { 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir ::rtl::OUString GetRole( 51*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 52*cdf0e10cSrcweir ::com::sun::star::chart2::data::XLabeledDataSequence >& xLabeledDataSequence ); 53*cdf0e10cSrcweir 54*cdf0e10cSrcweir /** Retrieves the data sequence in the given data source that matches the 55*cdf0e10cSrcweir given role. If more than one sequences match the role, the first match 56*cdf0e10cSrcweir is returned. If no sequence matches, an empty reference is returned. 57*cdf0e10cSrcweir 58*cdf0e10cSrcweir @param aSource 59*cdf0e10cSrcweir The data source containing all data sequences to be searched through. 60*cdf0e10cSrcweir 61*cdf0e10cSrcweir @param aRole 62*cdf0e10cSrcweir The role that is to be filtered out. 63*cdf0e10cSrcweir */ 64*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XLabeledDataSequence > 65*cdf0e10cSrcweir getDataSequenceByRole( const ::com::sun::star::uno::Reference< 66*cdf0e10cSrcweir ::com::sun::star::chart2::data::XDataSource > & xSource, 67*cdf0e10cSrcweir ::rtl::OUString aRole, 68*cdf0e10cSrcweir bool bMatchPrefix = false ); 69*cdf0e10cSrcweir 70*cdf0e10cSrcweir /** Retrieves all data sequences in the given data source that match the given 71*cdf0e10cSrcweir role. 72*cdf0e10cSrcweir 73*cdf0e10cSrcweir @param aSource 74*cdf0e10cSrcweir The data source containing all data sequences to be searched through. 75*cdf0e10cSrcweir 76*cdf0e10cSrcweir @param aRole 77*cdf0e10cSrcweir The role that is to be filtered out. 78*cdf0e10cSrcweir */ 79*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS ::std::vector< 80*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XLabeledDataSequence > > 81*cdf0e10cSrcweir getAllDataSequencesByRole( const ::com::sun::star::uno::Sequence< 82*cdf0e10cSrcweir ::com::sun::star::uno::Reference< 83*cdf0e10cSrcweir ::com::sun::star::chart2::data::XLabeledDataSequence > > & aDataSequences, 84*cdf0e10cSrcweir ::rtl::OUString aRole, 85*cdf0e10cSrcweir bool bMatchPrefix = false ); 86*cdf0e10cSrcweir 87*cdf0e10cSrcweir /** Retrieves all data sequences found in the given data series and puts them 88*cdf0e10cSrcweir into a data source. The order of sequences will match the order of the data 89*cdf0e10cSrcweir series. 90*cdf0e10cSrcweir */ 91*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS ::com::sun::star::uno::Reference< 92*cdf0e10cSrcweir ::com::sun::star::chart2::data::XDataSource > 93*cdf0e10cSrcweir getDataSource( const ::com::sun::star::uno::Sequence< 94*cdf0e10cSrcweir ::com::sun::star::uno::Reference< 95*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries > > & aSeries ); 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir 98*cdf0e10cSrcweir /** Get the label of a series (e.g. for the legend) 99*cdf0e10cSrcweir 100*cdf0e10cSrcweir @param rLabelSequenceRole 101*cdf0e10cSrcweir The data sequence contained in xSeries that has this role will be used 102*cdf0e10cSrcweir to take its label. 103*cdf0e10cSrcweir */ 104*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS ::rtl::OUString getDataSeriesLabel( 105*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 106*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries > & xSeries, 107*cdf0e10cSrcweir const ::rtl::OUString & rLabelSequenceRole ); 108*cdf0e10cSrcweir 109*cdf0e10cSrcweir /** Get the label of a labeled sequence including neccessary automatic generation 110*cdf0e10cSrcweir */ 111*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS ::rtl::OUString getLabelForLabeledDataSequence( 112*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 113*cdf0e10cSrcweir ::com::sun::star::chart2::data::XLabeledDataSequence > & xLabeledSeq ); 114*cdf0e10cSrcweir 115*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS void setStackModeAtSeries( 116*cdf0e10cSrcweir const ::com::sun::star::uno::Sequence< 117*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries > > & aSeries, 118*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 119*cdf0e10cSrcweir ::com::sun::star::chart2::XCoordinateSystem > & xCorrespondingCoordinateSystem, 120*cdf0e10cSrcweir StackMode eStackMode ); 121*cdf0e10cSrcweir 122*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS sal_Int32 getAttachedAxisIndex( 123*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries > & xSeries ); 124*cdf0e10cSrcweir 125*cdf0e10cSrcweir /// @param nAxisIndex, if -1 it is determined by the given data series via getAttachedAxisIndex 126*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS sal_Int32 getNumberFormatKeyFromAxis( 127*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries > & xSeries, 128*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 129*cdf0e10cSrcweir ::com::sun::star::chart2::XCoordinateSystem > & xCorrespondingCoordinateSystem, 130*cdf0e10cSrcweir sal_Int32 nDimensionIndex, 131*cdf0e10cSrcweir sal_Int32 nAxisIndex = -1 ); 132*cdf0e10cSrcweir 133*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS 134*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XCoordinateSystem > 135*cdf0e10cSrcweir getCoordinateSystemOfSeries( 136*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries > & xSeries, 137*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDiagram > & xDiagram ); 138*cdf0e10cSrcweir 139*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS 140*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartType > 141*cdf0e10cSrcweir getChartTypeOfSeries( 142*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDataSeries > & xSeries, 143*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XDiagram > & xDiagram ); 144*cdf0e10cSrcweir 145*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS void deleteSeries( 146*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 147*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries > & xSeries, 148*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 149*cdf0e10cSrcweir ::com::sun::star::chart2::XChartType > & xChartType ); 150*cdf0e10cSrcweir 151*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS void switchSymbolsOnOrOff( 152*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 153*cdf0e10cSrcweir ::com::sun::star::beans::XPropertySet > & xSeriesProperties, 154*cdf0e10cSrcweir bool bSymbolsOn, sal_Int32 nSeriesIndex ); 155*cdf0e10cSrcweir 156*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS void switchLinesOnOrOff( 157*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 158*cdf0e10cSrcweir ::com::sun::star::beans::XPropertySet > & xSeriesProperties, 159*cdf0e10cSrcweir bool bLinesOn ); 160*cdf0e10cSrcweir 161*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS 162*cdf0e10cSrcweir void makeLinesThickOrThin( const ::com::sun::star::uno::Reference< 163*cdf0e10cSrcweir ::com::sun::star::beans::XPropertySet > & xSeriesProperties, bool bThick ); 164*cdf0e10cSrcweir 165*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS void setPropertyAlsoToAllAttributedDataPoints( 166*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 167*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries >& xSeries, 168*cdf0e10cSrcweir const ::rtl::OUString& rPropertyName, 169*cdf0e10cSrcweir const ::com::sun::star::uno::Any& rPropertyValue ); 170*cdf0e10cSrcweir 171*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS bool hasAttributedDataPointDifferentValue( 172*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 173*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries >& xSeries, 174*cdf0e10cSrcweir const ::rtl::OUString& rPropertyName, 175*cdf0e10cSrcweir const ::com::sun::star::uno::Any& rPropertyValue ); 176*cdf0e10cSrcweir 177*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS bool areAllSeriesAttachedToSameAxis( 178*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartType >& xChartType, 179*cdf0e10cSrcweir sal_Int32 & rOutAxisIndex ); 180*cdf0e10cSrcweir 181*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS bool hasUnhiddenData( const ::com::sun::star::uno::Reference< 182*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries >& xSeries ); 183*cdf0e10cSrcweir 184*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS 185*cdf0e10cSrcweir sal_Int32 translateIndexFromHiddenToFullSequence( sal_Int32 nClippedIndex, const ::com::sun::star::uno::Reference< 186*cdf0e10cSrcweir ::com::sun::star::chart2::data::XDataSequence >& xDataSequence, bool bTranslate ); 187*cdf0e10cSrcweir 188*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS bool hasDataLabelsAtSeries( const ::com::sun::star::uno::Reference< 189*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries >& xSeries ); 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS bool hasDataLabelsAtPoints( const ::com::sun::star::uno::Reference< 192*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries >& xSeries ); 193*cdf0e10cSrcweir 194*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS bool hasDataLabelAtPoint( const ::com::sun::star::uno::Reference< 195*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries >& xSeries, sal_Int32 nPointIndex ); 196*cdf0e10cSrcweir 197*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS void insertDataLabelsToSeriesAndAllPoints( const ::com::sun::star::uno::Reference< 198*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries >& xSeries ); 199*cdf0e10cSrcweir 200*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS void insertDataLabelToPoint( const ::com::sun::star::uno::Reference< 201*cdf0e10cSrcweir ::com::sun::star::beans::XPropertySet >& xPointPropertySet ); 202*cdf0e10cSrcweir 203*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS void deleteDataLabelsFromSeriesAndAllPoints( const ::com::sun::star::uno::Reference< 204*cdf0e10cSrcweir ::com::sun::star::chart2::XDataSeries >& xSeries ); 205*cdf0e10cSrcweir 206*cdf0e10cSrcweir OOO_DLLPUBLIC_CHARTTOOLS void deleteDataLabelsFromPoint( const ::com::sun::star::uno::Reference< 207*cdf0e10cSrcweir ::com::sun::star::beans::XPropertySet >& xPointPropertySet ); 208*cdf0e10cSrcweir 209*cdf0e10cSrcweir } // namespace DataSeriesHelper 210*cdf0e10cSrcweir } // namespace chart 211*cdf0e10cSrcweir 212*cdf0e10cSrcweir // CHART2_DATASERIESHELPER_HXX 213*cdf0e10cSrcweir #endif 214