diff options
Diffstat (limited to 'chart2/source/tools/ReferenceSizeProvider.cxx')
-rw-r--r-- | chart2/source/tools/ReferenceSizeProvider.cxx | 162 |
1 files changed, 74 insertions, 88 deletions
diff --git a/chart2/source/tools/ReferenceSizeProvider.cxx b/chart2/source/tools/ReferenceSizeProvider.cxx index ba9b497dac20..714fa83b425c 100644 --- a/chart2/source/tools/ReferenceSizeProvider.cxx +++ b/chart2/source/tools/ReferenceSizeProvider.cxx @@ -19,20 +19,20 @@ #include <ReferenceSizeProvider.hxx> #include <RelativeSizeHelper.hxx> -#include <ChartModelHelper.hxx> -#include <DiagramHelper.hxx> +#include <ChartModel.hxx> +#include <DataSeries.hxx> +#include <DataSeriesProperties.hxx> #include <Diagram.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> -#include <com/sun/star/chart2/XChartDocument.hpp> -#include <com/sun/star/chart2/XTitled.hpp> -#include <com/sun/star/chart2/XTitle.hpp> -#include <com/sun/star/chart2/XDataSeries.hpp> -#include <tools/diagnose_ex.h> +#include <Legend.hxx> +#include <comphelper/diagnose_ex.hxx> #include <vector> using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; +using namespace ::chart::DataSeriesProperties; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Sequence; @@ -42,7 +42,7 @@ namespace chart ReferenceSizeProvider::ReferenceSizeProvider( awt::Size aPageSize, - const Reference< XChartDocument > & xChartDoc ) : + const rtl::Reference<::chart::ChartModel> & xChartDoc ) : m_aPageSize( aPageSize ), m_xChartDoc( xChartDoc ), m_bUseAutoScale( getAutoResizeState( xChartDoc ) == AUTO_RESIZE_YES ) @@ -92,36 +92,35 @@ void ReferenceSizeProvider::setValuesAtTitle( void ReferenceSizeProvider::setValuesAtAllDataSeries() { - Reference< XDiagram > xDiagram( ChartModelHelper::findDiagram( m_xChartDoc )); + rtl::Reference< Diagram > xDiagram( m_xChartDoc->getFirstChartDiagram()); + if (!xDiagram) + return; // DataSeries/Points - std::vector< Reference< XDataSeries > > aSeries( - DiagramHelper::getDataSeriesFromDiagram( xDiagram )); + std::vector< rtl::Reference< DataSeries > > aSeries = + xDiagram->getDataSeries(); for (auto const& elem : aSeries) { - Reference< beans::XPropertySet > xSeriesProp(elem, uno::UNO_QUERY ); - if( xSeriesProp.is()) + // data points + Sequence< sal_Int32 > aPointIndexes; + try { - // data points - Sequence< sal_Int32 > aPointIndexes; - try - { - if( xSeriesProp->getPropertyValue( "AttributedDataPoints") >>= aPointIndexes ) - { - for( sal_Int32 idx : std::as_const(aPointIndexes) ) - setValuesAtPropertySet( - elem->getDataPointByIndex( idx ) ); - } - } - catch (const uno::Exception&) + // "AttributedDataPoints" + if( elem->getFastPropertyValue( PROP_DATASERIES_ATTRIBUTED_DATA_POINTS) >>= aPointIndexes ) { - DBG_UNHANDLED_EXCEPTION("chart2"); + for (sal_Int32 idx : aPointIndexes) + setValuesAtPropertySet( + elem->getDataPointByIndex( idx ) ); } - - //it is important to correct the datapoint properties first as they do reference the series properties - setValuesAtPropertySet( xSeriesProp ); } + catch (const uno::Exception&) + { + DBG_UNHANDLED_EXCEPTION("chart2"); + } + + //it is important to correct the datapoint properties first as they do reference the series properties + setValuesAtPropertySet( elem ); } } @@ -132,7 +131,7 @@ void ReferenceSizeProvider::setValuesAtPropertySet( if( ! xProp.is()) return; - static constexpr OUStringLiteral aRefSizeName = u"ReferencePageSize"; + static constexpr OUString aRefSizeName = u"ReferencePageSize"_ustr; try { @@ -218,84 +217,73 @@ void ReferenceSizeProvider::impl_getAutoResizeFromTitled( with state NO, AUTO_RESIZE_AMBIGUOUS is returned. */ ReferenceSizeProvider::AutoResizeState ReferenceSizeProvider::getAutoResizeState( - const Reference< XChartDocument > & xChartDoc ) + const rtl::Reference<::chart::ChartModel> & xChartDoc ) { AutoResizeState eResult = AUTO_RESIZE_UNKNOWN; // Main Title - Reference< XTitled > xDocTitled( xChartDoc, uno::UNO_QUERY ); - if( xDocTitled.is()) - impl_getAutoResizeFromTitled( xDocTitled, eResult ); + if( xChartDoc.is()) + impl_getAutoResizeFromTitled( xChartDoc, eResult ); if( eResult == AUTO_RESIZE_AMBIGUOUS ) return eResult; // diagram is needed by the rest of the objects - Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram( xChartDoc ); + rtl::Reference< Diagram > xDiagram = xChartDoc->getFirstChartDiagram(); if( ! xDiagram.is()) return eResult; // Sub Title - Reference< XTitled > xDiaTitled( xDiagram, uno::UNO_QUERY ); - if( xDiaTitled.is()) - impl_getAutoResizeFromTitled( xDiaTitled, eResult ); + if( xDiagram.is()) + impl_getAutoResizeFromTitled( xDiagram, eResult ); if( eResult == AUTO_RESIZE_AMBIGUOUS ) return eResult; // Legend - Reference< beans::XPropertySet > xLegendProp( xDiagram->getLegend(), uno::UNO_QUERY ); - if( xLegendProp.is()) - getAutoResizeFromPropSet( xLegendProp, eResult ); + rtl::Reference< Legend > xLegend( xDiagram->getLegend2() ); + if( xLegend.is()) + getAutoResizeFromPropSet( xLegend, eResult ); if( eResult == AUTO_RESIZE_AMBIGUOUS ) return eResult; // Axes (incl. Axis Titles) - const Sequence< Reference< XAxis > > aAxes( AxisHelper::getAllAxesOfDiagram( xDiagram ) ); - for( Reference< XAxis > const & axis : aAxes ) + const std::vector< rtl::Reference< Axis > > aAxes = AxisHelper::getAllAxesOfDiagram( xDiagram ); + for( rtl::Reference< Axis > const & axis : aAxes ) { - Reference< beans::XPropertySet > xProp( axis, uno::UNO_QUERY ); - if( xProp.is()) - getAutoResizeFromPropSet( xProp, eResult ); - Reference< XTitled > xTitled( axis, uno::UNO_QUERY ); - if( xTitled.is()) - { - impl_getAutoResizeFromTitled( xTitled, eResult ); - if( eResult == AUTO_RESIZE_AMBIGUOUS ) - return eResult; - } + getAutoResizeFromPropSet( axis, eResult ); + impl_getAutoResizeFromTitled( axis, eResult ); + if( eResult == AUTO_RESIZE_AMBIGUOUS ) + return eResult; } // DataSeries/Points - std::vector< Reference< XDataSeries > > aSeries( - DiagramHelper::getDataSeriesFromDiagram( xDiagram )); + std::vector< rtl::Reference< DataSeries > > aSeries = + xDiagram->getDataSeries(); for (auto const& elem : aSeries) { - Reference< beans::XPropertySet > xSeriesProp(elem, uno::UNO_QUERY); - if( xSeriesProp.is()) - { - getAutoResizeFromPropSet( xSeriesProp, eResult ); - if( eResult == AUTO_RESIZE_AMBIGUOUS ) - return eResult; + getAutoResizeFromPropSet( elem, eResult ); + if( eResult == AUTO_RESIZE_AMBIGUOUS ) + return eResult; - // data points - Sequence< sal_Int32 > aPointIndexes; - try + // data points + Sequence< sal_Int32 > aPointIndexes; + try + { + // "AttributedDataPoints" + if( elem->getFastPropertyValue( PROP_DATASERIES_ATTRIBUTED_DATA_POINTS) >>= aPointIndexes ) { - if( xSeriesProp->getPropertyValue( "AttributedDataPoints") >>= aPointIndexes ) + for (sal_Int32 idx : aPointIndexes) { - for( sal_Int32 idx : std::as_const(aPointIndexes) ) - { - getAutoResizeFromPropSet( - elem->getDataPointByIndex( idx ), eResult ); - if( eResult == AUTO_RESIZE_AMBIGUOUS ) - return eResult; - } + getAutoResizeFromPropSet( + elem->getDataPointByIndex( idx ), eResult ); + if( eResult == AUTO_RESIZE_AMBIGUOUS ) + return eResult; } } - catch (const uno::Exception&) - { - DBG_UNHANDLED_EXCEPTION("chart2"); - } + } + catch (const uno::Exception&) + { + DBG_UNHANDLED_EXCEPTION("chart2"); } } @@ -315,29 +303,27 @@ void ReferenceSizeProvider::setAutoResizeState( ReferenceSizeProvider::AutoResiz m_bUseAutoScale = (eNewState == AUTO_RESIZE_YES); // Main Title - impl_setValuesAtTitled( Reference< XTitled >( m_xChartDoc, uno::UNO_QUERY )); + impl_setValuesAtTitled( m_xChartDoc ); // diagram is needed by the rest of the objects - Reference< XDiagram > xDiagram = ChartModelHelper::findDiagram( m_xChartDoc ); + rtl::Reference< Diagram > xDiagram = m_xChartDoc->getFirstChartDiagram(); if( ! xDiagram.is()) return; // Sub Title - impl_setValuesAtTitled( Reference< XTitled >( xDiagram, uno::UNO_QUERY )); + impl_setValuesAtTitled( xDiagram ); // Legend - Reference< beans::XPropertySet > xLegendProp( xDiagram->getLegend(), uno::UNO_QUERY ); - if( xLegendProp.is()) - setValuesAtPropertySet( xLegendProp ); + rtl::Reference< Legend > xLegend( xDiagram->getLegend2() ); + if( xLegend.is()) + setValuesAtPropertySet( xLegend ); // Axes (incl. Axis Titles) - const Sequence< Reference< XAxis > > aAxes( AxisHelper::getAllAxesOfDiagram( xDiagram ) ); - for( Reference< XAxis > const & axis : aAxes ) + const std::vector< rtl::Reference< Axis > > aAxes = AxisHelper::getAllAxesOfDiagram( xDiagram ); + for( rtl::Reference< Axis > const & axis : aAxes ) { - Reference< beans::XPropertySet > xProp( axis, uno::UNO_QUERY ); - if( xProp.is()) - setValuesAtPropertySet( xProp ); - impl_setValuesAtTitled( Reference< XTitled >( axis, uno::UNO_QUERY )); + setValuesAtPropertySet( axis ); + impl_setValuesAtTitled( axis ); } // DataSeries/Points |