diff options
author | Mathias Bauer <mba@openoffice.org> | 2011-02-03 15:53:56 +0100 |
---|---|---|
committer | Mathias Bauer <mba@openoffice.org> | 2011-02-03 15:53:56 +0100 |
commit | 76f355864a8c03b64ebfc71139f525a1fc25836a (patch) | |
tree | 189737059bcece8ceacb7abf0c1e3834caa123c5 /chart2/source/model/template | |
parent | 894985ff00c217013cc360a77108fc68cd8647e7 (diff) | |
parent | 0ceb085ea2b49234664765161095f2e5911e2b3b (diff) |
CWS gnumake3: resync to m99
Diffstat (limited to 'chart2/source/model/template')
-rwxr-xr-x[-rw-r--r--] | chart2/source/model/template/BubbleDataInterpreter.cxx | 43 | ||||
-rwxr-xr-x | chart2/source/model/template/ChartTypeTemplate.cxx | 23 | ||||
-rwxr-xr-x | chart2/source/model/template/DataInterpreter.cxx | 8 | ||||
-rwxr-xr-x[-rw-r--r--] | chart2/source/model/template/DataInterpreter.hxx | 4 | ||||
-rwxr-xr-x[-rw-r--r--] | chart2/source/model/template/XYDataInterpreter.cxx | 31 |
5 files changed, 66 insertions, 43 deletions
diff --git a/chart2/source/model/template/BubbleDataInterpreter.cxx b/chart2/source/model/template/BubbleDataInterpreter.cxx index 1f26fff907e4..27fee7d35aff 100644..100755 --- a/chart2/source/model/template/BubbleDataInterpreter.cxx +++ b/chart2/source/model/template/BubbleDataInterpreter.cxx @@ -77,16 +77,17 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( Reference< data::XLabeledDataSequence > xCategories; bool bHasCategories = HasCategories( aArguments, aData ); + bool bUseCategoriesAsX = UseCategoriesAsX( aArguments ); - bool bHasXValues = false; + bool bSetXValues = false; sal_Int32 nDataSeqCount = aData.getLength(); - bHasXValues = bHasCategories ? ( (nDataSeqCount-1) > 2 && (nDataSeqCount-1) % 2 != 0 ) + bSetXValues = bHasCategories ? ( (nDataSeqCount-1) > 2 && (nDataSeqCount-1) % 2 != 0 ) :( nDataSeqCount > 2 && nDataSeqCount % 2 != 0 ); bool bCategoriesUsed = false; bool bNextIsYValues = bHasCategories ? nDataSeqCount>2 : nDataSeqCount>1; - for( sal_Int32 nDataIdx = 0; nDataIdx < aData.getLength(); ++nDataIdx ) + for( sal_Int32 nDataIdx = 0; nDataIdx < nDataSeqCount; ++nDataIdx ) { try { @@ -94,10 +95,17 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( { xCategories.set( aData[nDataIdx] ); if( xCategories.is()) + { SetRole( xCategories->getValues(), C2U("categories")); + if( bUseCategoriesAsX ) + { + bSetXValues = false; + bNextIsYValues = nDataSeqCount > 2; + } + } bCategoriesUsed = true; } - else if( !xValuesX.is() && bHasXValues ) + else if( !xValuesX.is() && bSetXValues ) { xValuesX.set( aData[nDataIdx] ); if( xValuesX.is()) @@ -115,7 +123,7 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( aSizeValuesVector.push_back( aData[nDataIdx] ); if( aData[nDataIdx].is()) SetRole( aData[nDataIdx]->getValues(), C2U("values-size")); - bNextIsYValues = true; + bNextIsYValues = (nDataSeqCount-(nDataIdx+1)) >= 2;//two or more left } } catch( uno::Exception & ex ) @@ -132,26 +140,19 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( Reference< data::XLabeledDataSequence > xClonedXValues = xValuesX; Reference< util::XCloneable > xCloneableX( xValuesX, uno::UNO_QUERY ); - for( size_t nCount = 0; nCount < aSizeValuesVector.size(); ++nCount, ++nSeriesIndex ) + for( size_t nN = 0; nN < aSizeValuesVector.size(); ++nN, ++nSeriesIndex ) { - sal_Int32 nDataSequenceCount = 2; - if( xValuesX.is() ) - nDataSequenceCount = 3; - else if( aYValuesVector.empty() ) - nDataSequenceCount = 1; - - Sequence< Reference< data::XLabeledDataSequence > > aNewData( nDataSequenceCount ); - sal_Int32 nDataIndex = 0; + vector< Reference< data::XLabeledDataSequence > > aNewData; if( xValuesX.is() ) { - if( nCount > 0 && xCloneableX.is() ) + if( nN > 0 && xCloneableX.is() ) xClonedXValues.set( xCloneableX->createClone(), uno::UNO_QUERY ); - aNewData[nDataIndex++] = xClonedXValues; + aNewData.push_back( xClonedXValues ); } - if( aYValuesVector.size() > nCount ) - aNewData[nDataIndex++] = aYValuesVector[nCount]; - if( aSizeValuesVector.size() > nCount ) - aNewData[nDataIndex++] = aSizeValuesVector[nCount]; + if( aYValuesVector.size() > nN ) + aNewData.push_back( aYValuesVector[nN] ); + if( aSizeValuesVector.size() > nN ) + aNewData.push_back( aSizeValuesVector[nN] ); Reference< XDataSeries > xSeries; if( nSeriesIndex < aSeriesToReUse.getLength()) @@ -161,7 +162,7 @@ chart2::InterpretedData SAL_CALL BubbleDataInterpreter::interpretDataSource( OSL_ASSERT( xSeries.is() ); Reference< data::XDataSink > xSink( xSeries, uno::UNO_QUERY ); OSL_ASSERT( xSink.is() ); - xSink->setData( aNewData ); + xSink->setData( ContainerHelper::ContainerToSequence( aNewData ) ); aSeriesVec.push_back( xSeries ); } diff --git a/chart2/source/model/template/ChartTypeTemplate.cxx b/chart2/source/model/template/ChartTypeTemplate.cxx index c922de69a2c7..d089a88bb30b 100755 --- a/chart2/source/model/template/ChartTypeTemplate.cxx +++ b/chart2/source/model/template/ChartTypeTemplate.cxx @@ -643,17 +643,30 @@ void ChartTypeTemplate::adaptScales( sal_Int32 nDim( xCooSys->getDimension()); if( nDim > 0 ) { - const sal_Int32 nMaxIndex = xCooSys->getMaximumAxisIndexByDimension(0); + const sal_Int32 nDimensionX = 0; + const sal_Int32 nMaxIndex = xCooSys->getMaximumAxisIndexByDimension(nDimensionX); for(sal_Int32 nI=0; nI<=nMaxIndex; ++nI) { - Reference< XAxis > xAxis( xCooSys->getAxisByDimension(0,nI) ); + Reference< XAxis > xAxis( xCooSys->getAxisByDimension(nDimensionX,nI) ); if( xAxis.is()) { ScaleData aData( xAxis->getScaleData() ); aData.Categories = xCategories; - aData.AxisType = bSupportsCategories ? AxisType::CATEGORY : AxisType::REALNUMBER; - if( bSupportsCategories ) - AxisHelper::removeExplicitScaling( aData ); + if(bSupportsCategories) + { + + Reference< XChartType > xChartType( getChartTypeForNewSeries(Sequence< Reference< XChartType > >() )); + bool bSupportsDates = ::chart::ChartTypeHelper::isSupportingDateAxis( xChartType, 2, nDimensionX ); + if( aData.AxisType != AxisType::CATEGORY && ( aData.AxisType != AxisType::DATE || !bSupportsDates) ) + { + aData.AxisType = AxisType::CATEGORY; + aData.AutoDateAxis = true; + AxisHelper::removeExplicitScaling( aData ); + } + } + else + aData.AxisType = AxisType::REALNUMBER; + xAxis->setScaleData( aData ); } } diff --git a/chart2/source/model/template/DataInterpreter.cxx b/chart2/source/model/template/DataInterpreter.cxx index b5aa13775e8e..686b02536d31 100755 --- a/chart2/source/model/template/DataInterpreter.cxx +++ b/chart2/source/model/template/DataInterpreter.cxx @@ -390,6 +390,14 @@ bool DataInterpreter::HasCategories( return bHasCategories; } +bool DataInterpreter::UseCategoriesAsX( const Sequence< beans::PropertyValue > & rArguments ) +{ + bool bUseCategoriesAsX = true; + if( rArguments.getLength() > 0 ) + GetProperty( rArguments, C2U(("UseCategoriesAsX"))) >>= bUseCategoriesAsX; + return bUseCategoriesAsX; +} + // ------------------------------------------------------------ Sequence< OUString > DataInterpreter::getSupportedServiceNames_Static() diff --git a/chart2/source/model/template/DataInterpreter.hxx b/chart2/source/model/template/DataInterpreter.hxx index a2d6201fc023..d0f2ee922059 100644..100755 --- a/chart2/source/model/template/DataInterpreter.hxx +++ b/chart2/source/model/template/DataInterpreter.hxx @@ -73,6 +73,10 @@ public: ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XLabeledDataSequence > > & rData ); + static bool UseCategoriesAsX( + const ::com::sun::star::uno::Sequence< + ::com::sun::star::beans::PropertyValue > & rArguments ); + protected: // ____ XDataInterpreter ____ virtual ::com::sun::star::chart2::InterpretedData SAL_CALL interpretDataSource( diff --git a/chart2/source/model/template/XYDataInterpreter.cxx b/chart2/source/model/template/XYDataInterpreter.cxx index 839c0cbac510..965e3a058f58 100644..100755 --- a/chart2/source/model/template/XYDataInterpreter.cxx +++ b/chart2/source/model/template/XYDataInterpreter.cxx @@ -75,11 +75,12 @@ chart2::InterpretedData SAL_CALL XYDataInterpreter::interpretDataSource( vector< Reference< data::XLabeledDataSequence > > aSequencesVec; Reference< data::XLabeledDataSequence > xCategories; - // check for categories. If true, the the categories bet parked in the axis scale, but not used via setting the Axistype to Not CATEGORY bool bHasCategories = HasCategories( aArguments, aData ); + bool bUseCategoriesAsX = UseCategoriesAsX( aArguments ); // parse data bool bCategoriesUsed = false; + bool bSetXValues = aData.getLength()>(bCategoriesUsed?2:1); for( sal_Int32 nDataIdx= 0; nDataIdx < aData.getLength(); ++nDataIdx ) { try @@ -88,10 +89,14 @@ chart2::InterpretedData SAL_CALL XYDataInterpreter::interpretDataSource( { xCategories.set( aData[nDataIdx] ); if( xCategories.is()) + { SetRole( xCategories->getValues(), C2U("categories")); + if( bUseCategoriesAsX ) + bSetXValues = false; + } bCategoriesUsed = true; } - else if( !xValuesX.is() && (aData.getLength()>(bCategoriesUsed?2:1)) ) + else if( !xValuesX.is() && bSetXValues ) { xValuesX.set( aData[nDataIdx] ); if( xValuesX.is()) @@ -123,22 +128,14 @@ chart2::InterpretedData SAL_CALL XYDataInterpreter::interpretDataSource( for( ;aSequencesVecIt != aSequencesVec.end(); ++aSequencesVecIt, ++nSeriesIndex ) { - Sequence< Reference< data::XLabeledDataSequence > > aNewData(xValuesX.is()?2:1); - if( aSequencesVecIt != aSequencesVec.begin() && - xCloneable.is() ) - { - xClonedXValues.set( xCloneable->createClone(), uno::UNO_QUERY ); - } + vector< Reference< data::XLabeledDataSequence > > aNewData; + if( aSequencesVecIt != aSequencesVec.begin() && xCloneable.is() ) + xClonedXValues.set( xCloneable->createClone(), uno::UNO_QUERY ); if( xValuesX.is() ) - { - aNewData[0] = xClonedXValues; - aNewData[1] = (*aSequencesVecIt); - } - else - { - aNewData[0] = (*aSequencesVecIt); - } + aNewData.push_back( xClonedXValues ); + + aNewData.push_back( *aSequencesVecIt ); Reference< XDataSeries > xSeries; if( nSeriesIndex < aSeriesToReUse.getLength()) @@ -148,7 +145,7 @@ chart2::InterpretedData SAL_CALL XYDataInterpreter::interpretDataSource( OSL_ASSERT( xSeries.is() ); Reference< data::XDataSink > xSink( xSeries, uno::UNO_QUERY ); OSL_ASSERT( xSink.is() ); - xSink->setData( aNewData ); + xSink->setData( ContainerHelper::ContainerToSequence( aNewData ) ); aSeriesVec.push_back( xSeries ); } |