chart2/source/controller/chartapiwrapper/AxisWrapper.cxx | 8 chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.cxx | 7 chart2/source/controller/dialogs/ObjectNameProvider.cxx | 3 chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx | 4 chart2/source/controller/dialogs/dlg_ObjectProperties.cxx | 3 chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx | 9 chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx | 7 chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx | 3 chart2/source/controller/main/ChartController_Insert.cxx | 3 chart2/source/controller/main/ChartController_Properties.cxx | 11 chart2/source/controller/main/ChartController_Tools.cxx | 3 chart2/source/controller/main/ChartController_Window.cxx | 8 chart2/source/controller/main/ControllerCommandDispatch.cxx | 1 chart2/source/controller/main/ObjectHierarchy.cxx | 16 chart2/source/controller/sidebar/ChartAxisPanel.cxx | 21 chart2/source/inc/Axis.hxx | 9 chart2/source/inc/AxisHelper.hxx | 51 + chart2/source/inc/BaseCoordinateSystem.hxx | 6 chart2/source/inc/ChartType.hxx | 4 chart2/source/inc/Diagram.hxx | 2 chart2/source/inc/DiagramHelper.hxx | 5 chart2/source/inc/ObjectIdentifier.hxx | 6 chart2/source/model/main/Axis.cxx | 2 chart2/source/model/main/BaseCoordinateSystem.cxx | 48 + chart2/source/model/main/Diagram.cxx | 22 chart2/source/model/template/BubbleChartType.cxx | 3 chart2/source/model/template/ChartType.cxx | 9 chart2/source/model/template/ChartTypeTemplate.cxx | 35 - chart2/source/model/template/NetChartType.cxx | 5 chart2/source/model/template/PieChartType.cxx | 3 chart2/source/model/template/PieChartTypeTemplate.cxx | 5 chart2/source/model/template/ScatterChartType.cxx | 3 chart2/source/tools/AxisHelper.cxx | 277 ++++++---- chart2/source/tools/DataSeriesHelper.cxx | 9 chart2/source/tools/DiagramHelper.cxx | 33 - chart2/source/tools/ExplicitCategoriesProvider.cxx | 9 chart2/source/tools/ObjectIdentifier.cxx | 37 + chart2/source/tools/ReferenceSizeProvider.cxx | 29 - chart2/source/tools/TitleHelper.cxx | 18 chart2/source/view/axes/VCartesianCoordinateSystem.cxx | 5 chart2/source/view/axes/VCoordinateSystem.cxx | 5 chart2/source/view/axes/VPolarCoordinateSystem.cxx | 5 chart2/source/view/inc/VCoordinateSystem.hxx | 4 chart2/source/view/main/ChartView.cxx | 15 solenv/clang-format/excludelist | 2 45 files changed, 511 insertions(+), 262 deletions(-)
New commits: commit 333ccb081b4ab62adce50ca4c93162b9baf984d0 Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Sat Feb 5 14:58:07 2022 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sat Feb 5 20:39:03 2022 +0100 use more concrete types in chart2, Axis Change-Id: If80b6487ad2b8ac75f98f798b839aff2b8a5c23e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129522 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx b/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx index db3e413ba919..21f952069205 100644 --- a/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx @@ -18,6 +18,7 @@ */ #include "AxisWrapper.hxx" +#include <Axis.hxx> #include <AxisHelper.hxx> #include <TitleHelper.hxx> #include "Chart2ModelContact.hxx" @@ -574,7 +575,7 @@ awt::Size AxisWrapper::getCurrentSizeForReference() Reference< chart2::XAxis > AxisWrapper::getAxis() { - Reference< chart2::XAxis > xAxis; + rtl::Reference< Axis > xAxis; try { sal_Int32 nDimensionIndex = 0; @@ -586,9 +587,8 @@ Reference< chart2::XAxis > AxisWrapper::getAxis() if( !xAxis.is() ) { xAxis = AxisHelper::createAxis( nDimensionIndex, bMainAxis, xDiagram, m_spChart2ModelContact->m_xContext ); - Reference< beans::XPropertySet > xProp( xAxis, uno::UNO_QUERY ); - if( xProp.is() ) - xProp->setPropertyValue("Show", uno::Any( false ) ); + if( xAxis.is() ) + xAxis->setPropertyValue("Show", uno::Any( false ) ); } } catch( const uno::Exception & ) diff --git a/chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.cxx index 4895e1c40b9d..2f7181cfbb0e 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.cxx @@ -25,6 +25,7 @@ #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/chart2/XAxis.hpp> #include <com/sun/star/chart2/XDiagram.hpp> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <WrappedProperty.hxx> #include "Chart2ModelContact.hxx" @@ -372,11 +373,11 @@ void WrappedAxisLabelExistenceProperty::setPropertyValue( const Any& rOuterValue return; rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - Reference< beans::XPropertySet > xProp( AxisHelper::getAxis( m_nDimensionIndex, m_bMain, xDiagram ), uno::UNO_QUERY ); + rtl::Reference< Axis > xProp = AxisHelper::getAxis( m_nDimensionIndex, m_bMain, xDiagram ); if( !xProp.is() && bNewValue ) { //create axis if needed - xProp.set( AxisHelper::createAxis( m_nDimensionIndex, m_bMain, xDiagram, m_spChart2ModelContact->m_xContext ), uno::UNO_QUERY ); + xProp = AxisHelper::createAxis( m_nDimensionIndex, m_bMain, xDiagram, m_spChart2ModelContact->m_xContext ); if( xProp.is() ) xProp->setPropertyValue( "Show", uno::Any( false ) ); } @@ -388,7 +389,7 @@ Any WrappedAxisLabelExistenceProperty::getPropertyValue( const Reference< beans: { Any aRet; rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - Reference< beans::XPropertySet > xProp( AxisHelper::getAxis( m_nDimensionIndex, m_bMain, xDiagram ), uno::UNO_QUERY ); + rtl::Reference< Axis > xProp = AxisHelper::getAxis( m_nDimensionIndex, m_bMain, xDiagram ); if( xProp.is() ) aRet = xProp->getPropertyValue( "DisplayLabels" ); else diff --git a/chart2/source/controller/dialogs/ObjectNameProvider.cxx b/chart2/source/controller/dialogs/ObjectNameProvider.cxx index cdee6567f544..d9c36482256b 100644 --- a/chart2/source/controller/dialogs/ObjectNameProvider.cxx +++ b/chart2/source/controller/dialogs/ObjectNameProvider.cxx @@ -24,6 +24,7 @@ #include <ObjectNameProvider.hxx> #include <ResId.hxx> #include <strings.hrc> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <ChartModel.hxx> #include <ChartModelHelper.hxx> @@ -425,7 +426,7 @@ OUString ObjectNameProvider::getGridName( const OUString& rObjectCID sal_Int32 nCooSysIndex = -1; sal_Int32 nDimensionIndex = -1; sal_Int32 nAxisIndex = -1; - Reference< XAxis > xAxis( ObjectIdentifier::getAxisForCID( rObjectCID , xChartModel ) ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( rObjectCID , xChartModel ); AxisHelper::getIndicesForAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ) , nCooSysIndex , nDimensionIndex, nAxisIndex ); diff --git a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx index 0008d6e7d00f..fcb0eefd3ba9 100644 --- a/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx +++ b/chart2/source/controller/dialogs/dlg_InsertErrorBars.cxx @@ -26,6 +26,7 @@ #include <ObjectIdentifier.hxx> #include <DiagramHelper.hxx> #include <Diagram.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <ObjectNameProvider.hxx> #include <DataSeries.hxx> @@ -76,10 +77,9 @@ double InsertErrorBarsDialog::getAxisMinorStepWidthForErrorBarDecimals( ExplicitValueProvider* pExplicitValueProvider( comphelper::getFromUnoTunnel<ExplicitValueProvider>(xChartView) ); if( pExplicitValueProvider ) { - Reference< XAxis > xAxis; rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) ); rtl::Reference< DataSeries > xSeries = ObjectIdentifier::getDataSeriesForCID( rSelectedObjectCID, xChartModel ); - xAxis = DiagramHelper::getAttachedAxis( xSeries, xDiagram ); + rtl::Reference< Axis > xAxis = DiagramHelper::getAttachedAxis( xSeries, xDiagram ); if(!xAxis.is()) xAxis = AxisHelper::getAxis( 1/*nDimensionIndex*/, true/*bMainAxis*/, xDiagram ); if(xAxis.is()) diff --git a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx index f16eb8f42807..583c71128514 100644 --- a/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx +++ b/chart2/source/controller/dialogs/dlg_ObjectProperties.cxx @@ -41,6 +41,7 @@ #include <DiagramHelper.hxx> #include <Diagram.hxx> #include <NumberFormatterWrapper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <ExplicitCategoriesProvider.hxx> #include <ChartModel.hxx> @@ -157,7 +158,7 @@ void ObjectPropertiesDialogParameter::init( const rtl::Reference<::chart::ChartM if( m_bHasScaleProperties ) { - uno::Reference< XAxis > xAxis( ObjectIdentifier::getAxisForCID( m_aObjectCID, xChartModel ) ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( m_aObjectCID, xChartModel ); if( xAxis.is() ) { //no scale page for series axis diff --git a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx index 69cc0ba83f95..40dd0616e5cb 100644 --- a/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx +++ b/chart2/source/controller/itemsetwrapper/AxisItemConverter.cxx @@ -27,6 +27,7 @@ #include "SchWhichPairs.hxx" #include <ChartModelHelper.hxx> #include <ChartModel.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <CommonConverters.hxx> #include <ChartType.hxx> @@ -358,7 +359,7 @@ void AxisItemConverter::FillSpecialItem( sal_uInt16 nWhichId, SfxItemSet & rOutI rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemOfAxis( m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ) ); - Reference< chart2::XAxis > xCrossingMainAxis( AxisHelper::getCrossingMainAxis( m_xAxis, xCooSys ) ); + rtl::Reference< Axis > xCrossingMainAxis = AxisHelper::getCrossingMainAxis( m_xAxis, xCooSys ); sal_Int32 nFormatKey = ExplicitValueProvider::getExplicitNumberFormatKeyForAxis( xCrossingMainAxis, xCooSys, m_xChartDoc); @@ -723,7 +724,7 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxItemSet sal_Int32 nAxisIndex=0; if( AxisHelper::getIndicesForAxis( m_xAxis, xCooSys, nDimensionIndex, nAxisIndex ) && nAxisIndex==0 ) { - Reference< beans::XPropertySet > xCrossingMainAxis( AxisHelper::getCrossingMainAxis( m_xAxis, xCooSys ), uno::UNO_QUERY ); + rtl::Reference< Axis > xCrossingMainAxis = AxisHelper::getCrossingMainAxis( m_xAxis, xCooSys ); if( xCrossingMainAxis.is() ) { double fValue = 0.0; @@ -758,7 +759,7 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxItemSet //move the parallel axes to the other side if necessary if( eAxisPos==css::chart::ChartAxisPosition_START || eAxisPos==css::chart::ChartAxisPosition_END ) { - Reference< beans::XPropertySet > xParallelAxis( AxisHelper::getParallelAxis( m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ), uno::UNO_QUERY ); + rtl::Reference< Axis > xParallelAxis = AxisHelper::getParallelAxis( m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ); if( xParallelAxis.is() ) { css::chart::ChartAxisPosition eOtherPos; @@ -841,7 +842,7 @@ bool AxisItemConverter::ApplySpecialItem( sal_uInt16 nWhichId, const SfxItemSet //move the parallel axes to the other side if necessary if( ePos==css::chart::ChartAxisLabelPosition_OUTSIDE_START || ePos==css::chart::ChartAxisLabelPosition_OUTSIDE_END ) { - Reference< beans::XPropertySet > xParallelAxis( AxisHelper::getParallelAxis( m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ), uno::UNO_QUERY ); + rtl::Reference< Axis > xParallelAxis = AxisHelper::getParallelAxis( m_xAxis, ChartModelHelper::findDiagram( m_xChartDoc ) ); if( xParallelAxis.is() ) { css::chart::ChartAxisLabelPosition eOtherPos; diff --git a/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx b/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx index b44d13f9fa97..a26cce3ee4e5 100644 --- a/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx +++ b/chart2/source/controller/itemsetwrapper/MultipleChartConverters.cxx @@ -30,6 +30,7 @@ #include <DataSeries.hxx> #include <TitleHelper.hxx> #include <TitleItemConverter.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <chartview/ExplicitValueProvider.hxx> #include <com/sun/star/chart2/XChartDocument.hpp> @@ -53,10 +54,10 @@ AllAxisItemConverter::AllAxisItemConverter( : MultipleItemConverter( rItemPool ) { rtl::Reference< Diagram > xDiagram( ChartModelHelper::findDiagram( xChartModel ) ); - const Sequence< Reference< XAxis > > aElementList( AxisHelper::getAllAxesOfDiagram( xDiagram ) ); - for( Reference< XAxis > const & axis : aElementList ) + const std::vector< rtl::Reference< Axis > > aElementList = AxisHelper::getAllAxesOfDiagram( xDiagram ); + for( rtl::Reference< Axis > const & axis : aElementList ) { - uno::Reference< beans::XPropertySet > xObjectProperties(axis, uno::UNO_QUERY); + uno::Reference< beans::XPropertySet > xObjectProperties(axis); m_aConverters.emplace_back( new ::chart::wrapper::AxisItemConverter( xObjectProperties, rItemPool, rDrawModel, xChartModel, nullptr, nullptr, diff --git a/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx b/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx index 1615c72d5549..aff808e82a15 100644 --- a/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx +++ b/chart2/source/controller/itemsetwrapper/SeriesOptionsItemConverter.cxx @@ -22,6 +22,7 @@ #include <ChartModelHelper.hxx> #include <ChartType.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <DiagramHelper.hxx> #include <Diagram.hxx> @@ -80,7 +81,7 @@ SeriesOptionsItemConverter::SeriesOptionsItemConverter( m_xCooSys = DataSeriesHelper::getCoordinateSystemOfSeries( xDataSeries, xDiagram ); if( m_xCooSys.is() ) { - uno::Reference< chart2::XAxis > xAxis( AxisHelper::getAxis( 1, 0, m_xCooSys ) ); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( 1, 0, m_xCooSys ); chart2::ScaleData aScale( xAxis->getScaleData() ); m_bClockwise = (aScale.Orientation == chart2::AxisOrientation_REVERSE); } diff --git a/chart2/source/controller/main/ChartController_Insert.cxx b/chart2/source/controller/main/ChartController_Insert.cxx index 00defbc33582..ae33e372b29c 100644 --- a/chart2/source/controller/main/ChartController_Insert.cxx +++ b/chart2/source/controller/main/ChartController_Insert.cxx @@ -29,6 +29,7 @@ #include <ChartModel.hxx> #include <ChartModelHelper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <TitleHelper.hxx> #include <DataSeries.hxx> @@ -707,7 +708,7 @@ void ChartController::executeDispatch_InsertAxisTitle() ActionDescriptionProvider::ActionType::Insert, SchResId( STR_OBJECT_TITLE )), m_xUndoManager ); - Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getChartModel() ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getChartModel() ); sal_Int32 nDimensionIndex = -1; sal_Int32 nCooSysIndex = -1; sal_Int32 nAxisIndex = -1; diff --git a/chart2/source/controller/main/ChartController_Properties.cxx b/chart2/source/controller/main/ChartController_Properties.cxx index b094833f317a..58bac63b0484 100644 --- a/chart2/source/controller/main/ChartController_Properties.cxx +++ b/chart2/source/controller/main/ChartController_Properties.cxx @@ -38,6 +38,7 @@ #include <RegressionEquationItemConverter.hxx> #include <ErrorBarItemConverter.hxx> #include <ChartModelHelper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <TitleHelper.hxx> #include <ChartType.hxx> @@ -378,7 +379,7 @@ OUString lcl_getAxisCIDForCommand( std::string_view rDispatchCommand, const rtl: } rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartModel ); - uno::Reference< XAxis > xAxis( AxisHelper::getAxis( nDimensionIndex, bMainAxis, xDiagram ) ); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( nDimensionIndex, bMainAxis, xDiagram ); return ObjectIdentifier::createClassifiedIdentifierForObject( xAxis, xChartModel ); } @@ -419,7 +420,7 @@ OUString lcl_getGridCIDForCommand( std::string_view rDispatchCommand, const rtl: nDimensionIndex=2; bMainGrid=false; } - uno::Reference< XAxis > xAxis( AxisHelper::getAxis( nDimensionIndex, true/*bMainAxis*/, xDiagram ) ); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( nDimensionIndex, true/*bMainAxis*/, xDiagram ); sal_Int32 nSubGridIndex= bMainGrid ? -1 : 0; OUString aCID( ObjectIdentifier::createClassifiedIdentifierForGrid( xAxis, xChartModel, nSubGridIndex ) ); @@ -592,7 +593,7 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt return rSelectedCID; else { - Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); return ObjectIdentifier::createClassifiedIdentifierForObject( xAxis , xChartDocument ); } } @@ -603,7 +604,7 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt return rSelectedCID; else { - Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); return ObjectIdentifier::createClassifiedIdentifierForGrid( xAxis, xChartDocument ); } @@ -615,7 +616,7 @@ OUString lcl_getObjectCIDForCommand( std::string_view rDispatchCommand, const rt return rSelectedCID; else { - Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( rSelectedCID, xChartDocument ); return ObjectIdentifier::createClassifiedIdentifierForGrid( xAxis, xChartDocument, 0 /*sub grid index*/ ); } } diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx index dd04d61f0360..9c8e2f02cbec 100644 --- a/chart2/source/controller/main/ChartController_Tools.cxx +++ b/chart2/source/controller/main/ChartController_Tools.cxx @@ -37,6 +37,7 @@ #include <DrawViewWrapper.hxx> #include <Legend.hxx> #include <LegendHelper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <RegressionCurveModel.hxx> #include <RegressionCurveHelper.hxx> @@ -114,7 +115,7 @@ bool lcl_deleteDataSeries( xUndoManager ); rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xModel ); - uno::Reference< chart2::XAxis > xAxis( DiagramHelper::getAttachedAxis( xSeries, xDiagram ) ); + rtl::Reference< Axis > xAxis = DiagramHelper::getAttachedAxis( xSeries, xDiagram ); DataSeriesHelper::deleteSeries( xSeries, xChartType ); diff --git a/chart2/source/controller/main/ChartController_Window.cxx b/chart2/source/controller/main/ChartController_Window.cxx index 2e9e599e47e7..5eb195b90643 100644 --- a/chart2/source/controller/main/ChartController_Window.cxx +++ b/chart2/source/controller/main/ChartController_Window.cxx @@ -47,6 +47,7 @@ #include <StatisticsHelper.hxx> #include <DataSeries.hxx> #include <DataSeriesHelper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <LegendHelper.hxx> #include <servicenames_charttypes.hxx> @@ -1195,7 +1196,7 @@ void ChartController::execute_Command( const CommandEvent& rCEvt ) else if( eObjectType == OBJECTTYPE_AXIS || eObjectType == OBJECTTYPE_GRID || eObjectType == OBJECTTYPE_SUBGRID ) { - Reference< XAxis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getChartModel() ); + rtl::Reference< Axis > xAxis = ObjectIdentifier::getAxisForCID( m_aSelection.getSelectedCID(), getChartModel() ); if( xAxis.is() && xDiagram.is() ) { sal_Int32 nDimensionIndex = -1; @@ -1206,10 +1207,7 @@ void ChartController::execute_Command( const CommandEvent& rCEvt ) bool bIsAxisVisible = AxisHelper::isAxisVisible( xAxis ); bool bIsMajorGridVisible = AxisHelper::isGridShown( nDimensionIndex, nCooSysIndex, true /*bMainGrid*/, xDiagram ); bool bIsMinorGridVisible = AxisHelper::isGridShown( nDimensionIndex, nCooSysIndex, false /*bMainGrid*/, xDiagram ); - bool bHasTitle = false; - uno::Reference< XTitled > xTitled( xAxis, uno::UNO_QUERY ); - if( xTitled.is()) - bHasTitle = !TitleHelper::getCompleteString( xTitled->getTitleObject() ).isEmpty(); + bool bHasTitle = !TitleHelper::getCompleteString( xAxis->getTitleObject() ).isEmpty(); if( eObjectType != OBJECTTYPE_AXIS && bIsAxisVisible ) lcl_insertMenuCommand( xPopupMenu, nUniqueId++, ".uno:FormatAxis" ); diff --git a/chart2/source/controller/main/ControllerCommandDispatch.cxx b/chart2/source/controller/main/ControllerCommandDispatch.cxx index a7d0ff5fc4f2..4e326eb313c7 100644 --- a/chart2/source/controller/main/ControllerCommandDispatch.cxx +++ b/chart2/source/controller/main/ControllerCommandDispatch.cxx @@ -22,6 +22,7 @@ #include <ChartModel.hxx> #include <DiagramHelper.hxx> #include <Diagram.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <TitleHelper.hxx> #include <LegendHelper.hxx> diff --git a/chart2/source/controller/main/ObjectHierarchy.cxx b/chart2/source/controller/main/ObjectHierarchy.cxx index 58f17fb7f279..0472cf23e9a6 100644 --- a/chart2/source/controller/main/ObjectHierarchy.cxx +++ b/chart2/source/controller/main/ObjectHierarchy.cxx @@ -23,6 +23,7 @@ #include <DiagramHelper.hxx> #include <Diagram.hxx> #include <RegressionCurveHelper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <chartview/ExplicitValueProvider.hxx> #include <ChartType.hxx> @@ -94,12 +95,11 @@ void lcl_getChildOIDs( } } -void lcl_addAxisTitle( const Reference< XAxis >& xAxis, ::chart::ObjectHierarchy::tChildContainer& rContainer, const rtl::Reference<::chart::ChartModel>& xChartModel ) +void lcl_addAxisTitle( const rtl::Reference< ::chart::Axis >& xAxis, ::chart::ObjectHierarchy::tChildContainer& rContainer, const rtl::Reference<::chart::ChartModel>& xChartModel ) { - Reference< XTitled > xAxisTitled( xAxis, uno::UNO_QUERY ); - if( xAxisTitled.is()) + if( xAxis.is()) { - Reference< XTitle > xAxisTitle( xAxisTitled->getTitleObject()); + Reference< XTitle > xAxisTitle( xAxis->getTitleObject()); if( xAxisTitle.is()) rContainer.emplace_back( ::chart::ObjectIdentifier::createClassifiedIdentifierForObject( xAxisTitle, xChartModel ) ); } @@ -153,8 +153,8 @@ void ObjectHierarchy::createTree( const rtl::Reference<::chart::ChartModel>& xCh if( !m_bOrderingForElementSelector ) { // Axis Titles. Note: These are interpreted of being top level - 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 ) lcl_addAxisTitle( axis, aTopLevelContainer, xChartDocument ); // Diagram @@ -223,7 +223,7 @@ void ObjectHierarchy::createAxesTree( if( !bSupportsAxesGrids ) return; - Sequence< Reference< XAxis > > aAxes( AxisHelper::getAllAxesOfDiagram( xDiagram, /* bOnlyVisible = */ true ) ); + std::vector< rtl::Reference< Axis > > aAxes = AxisHelper::getAllAxesOfDiagram( xDiagram, /* bOnlyVisible = */ true ); if( !m_bOrderingForElementSelector ) { for (const auto & rAxis : std::as_const(aAxes)) @@ -233,7 +233,7 @@ void ObjectHierarchy::createAxesTree( // get all axes, also invisible ones aAxes = AxisHelper::getAllAxesOfDiagram( xDiagram ); // Grids - for( Reference< XAxis > const & xAxis : std::as_const(aAxes) ) + for( rtl::Reference< Axis > const & xAxis : aAxes ) { if(!xAxis.is()) continue; diff --git a/chart2/source/controller/sidebar/ChartAxisPanel.cxx b/chart2/source/controller/sidebar/ChartAxisPanel.cxx index 2b6bc5535b27..b222691b74cf 100644 --- a/chart2/source/controller/sidebar/ChartAxisPanel.cxx +++ b/chart2/source/controller/sidebar/ChartAxisPanel.cxx @@ -29,6 +29,7 @@ #include "ChartAxisPanel.hxx" #include <ChartController.hxx> #include <ChartModel.hxx> +#include <Axis.hxx> using namespace css; using namespace css::uno; @@ -40,8 +41,7 @@ namespace { bool isLabelShown(const rtl::Reference<::chart::ChartModel>& xModel, const OUString& rCID) { - css::uno::Reference< css::beans::XPropertySet > xAxis( - ObjectIdentifier::getAxisForCID(rCID, xModel), uno::UNO_QUERY ); + rtl::Reference< ::chart::Axis > xAxis = ObjectIdentifier::getAxisForCID(rCID, xModel); if (!xAxis.is()) return false; @@ -58,8 +58,7 @@ bool isLabelShown(const rtl::Reference<::chart::ChartModel>& xModel, void setLabelShown(const rtl::Reference<::chart::ChartModel>& xModel, const OUString& rCID, bool bVisible) { - css::uno::Reference< css::beans::XPropertySet > xAxis( - ObjectIdentifier::getAxisForCID(rCID, xModel), uno::UNO_QUERY ); + rtl::Reference< ::chart::Axis > xAxis = ObjectIdentifier::getAxisForCID(rCID, xModel); if (!xAxis.is()) return; @@ -83,8 +82,7 @@ AxisLabelPosMap const aLabelPosMap[] = { sal_Int32 getLabelPosition(const rtl::Reference<::chart::ChartModel>& xModel, const OUString& rCID) { - css::uno::Reference< css::beans::XPropertySet > xAxis( - ObjectIdentifier::getAxisForCID(rCID, xModel), uno::UNO_QUERY ); + rtl::Reference< ::chart::Axis > xAxis = ObjectIdentifier::getAxisForCID(rCID, xModel); if (!xAxis.is()) return 0; @@ -107,8 +105,7 @@ sal_Int32 getLabelPosition(const rtl::Reference<::chart::ChartModel>& xModel, void setLabelPosition(const rtl::Reference<::chart::ChartModel>& xModel, const OUString& rCID, sal_Int32 nPos) { - css::uno::Reference< css::beans::XPropertySet > xAxis( - ObjectIdentifier::getAxisForCID(rCID, xModel), uno::UNO_QUERY ); + rtl::Reference< ::chart::Axis > xAxis = ObjectIdentifier::getAxisForCID(rCID, xModel); if (!xAxis.is()) return; @@ -178,8 +175,8 @@ OUString getCID(const css::uno::Reference<css::frame::XModel>& xModel) void setAxisRotation(const rtl::Reference<::chart::ChartModel>& xModel, const OUString& rCID, double nVal) { - css::uno::Reference< css::beans::XPropertySet > xAxis( - ObjectIdentifier::getAxisForCID(rCID, xModel), uno::UNO_QUERY ); + rtl::Reference< ::chart::Axis > xAxis = + ObjectIdentifier::getAxisForCID(rCID, xModel); if (!xAxis.is()) return; @@ -190,8 +187,8 @@ void setAxisRotation(const rtl::Reference<::chart::ChartModel>& xModel, double getAxisRotation(const rtl::Reference<::chart::ChartModel>& xModel, const OUString& rCID) { - css::uno::Reference< css::beans::XPropertySet > xAxis( - ObjectIdentifier::getAxisForCID(rCID, xModel), uno::UNO_QUERY ); + rtl::Reference< ::chart::Axis > xAxis = + ObjectIdentifier::getAxisForCID(rCID, xModel); if (!xAxis.is()) return 0; diff --git a/chart2/source/model/main/Axis.hxx b/chart2/source/inc/Axis.hxx similarity index 96% rename from chart2/source/model/main/Axis.hxx rename to chart2/source/inc/Axis.hxx index b85930a23456..7b5ce75fa6fa 100644 --- a/chart2/source/model/main/Axis.hxx +++ b/chart2/source/inc/Axis.hxx @@ -18,7 +18,7 @@ */ #pragma once -#include <OPropertySet.hxx> +#include "OPropertySet.hxx" #include <cppuhelper/basemutex.hxx> #include <cppuhelper/implbase.hxx> #include <comphelper/uno3.hxx> @@ -27,7 +27,8 @@ #include <com/sun/star/chart2/XAxis.hpp> #include <com/sun/star/chart2/XTitled.hpp> #include <com/sun/star/util/XCloneable.hpp> -#include <ModifyListenerHelper.hxx> +#include "ModifyListenerHelper.hxx" +#include "charttoolsdllapi.hxx" namespace chart { @@ -44,7 +45,7 @@ typedef ::cppu::WeakImplHelper< Axis_Base; } -class Axis final : +class OOO_DLLPUBLIC_CHARTTOOLS Axis final : public cppu::BaseMutex, public impl::Axis_Base, public ::property::OPropertySet @@ -75,6 +76,7 @@ private: // ____ OPropertySet ____ virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper() override; +public: // ____ XPropertySet ____ virtual css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() override; @@ -101,6 +103,7 @@ private: virtual void SAL_CALL removeModifyListener( const css::uno::Reference< css::util::XModifyListener >& aListener ) override; +private: // ____ XModifyListener ____ virtual void SAL_CALL modified( const css::lang::EventObject& aEvent ) override; diff --git a/chart2/source/inc/AxisHelper.hxx b/chart2/source/inc/AxisHelper.hxx index 4e2480a65eee..2cb10b832254 100644 --- a/chart2/source/inc/AxisHelper.hxx +++ b/chart2/source/inc/AxisHelper.hxx @@ -38,6 +38,7 @@ namespace com::sun::star::uno { class XComponentContext; } namespace chart { +class Axis; class BaseCoordinateSystem; class ChartType; class Diagram; @@ -56,21 +57,26 @@ public: static void checkDateAxis( css::chart2::ScaleData& rScale, ExplicitCategoriesProvider* pExplicitCategoriesProvider, bool bChartTypeAllowsDateAxis ); static css::chart2::ScaleData getDateCheckedScale( const css::uno::Reference< css::chart2::XAxis >& xAxis, ChartModel& rModel ); + static css::chart2::ScaleData getDateCheckedScale( const rtl::Reference< ::chart::Axis >& xAxis, ChartModel& rModel ); static sal_Int32 getExplicitNumberFormatKeyForAxis( const css::uno::Reference< css::chart2::XAxis >& xAxis , const rtl::Reference< ::chart::BaseCoordinateSystem >& xCorrespondingCoordinateSystem , const rtl::Reference< ::chart::ChartModel>& xChartDoc , bool bSearchForParallelAxisIfNothingIsFound ); + static sal_Int32 getExplicitNumberFormatKeyForAxis( + const rtl::Reference< ::chart::Axis >& xAxis + , const rtl::Reference< ::chart::BaseCoordinateSystem >& xCorrespondingCoordinateSystem + , const rtl::Reference< ::chart::ChartModel>& xChartDoc + , bool bSearchForParallelAxisIfNothingIsFound ); - static css::uno::Reference< - css::chart2::XAxis > + static rtl::Reference< ::chart::Axis > createAxis( sal_Int32 nDimensionIndex, bool bMainAxis , const rtl::Reference< ::chart::Diagram >& xDiagram , const css::uno::Reference< css::uno::XComponentContext >& xContext , ReferenceSizeProvider * pRefSizeProvider = nullptr ); - static css::uno::Reference< css::chart2::XAxis > + static rtl::Reference< ::chart::Axis > createAxis( sal_Int32 nDimensionIndex , sal_Int32 nAxisIndex // 0==main or 1==secondary axis @@ -97,13 +103,17 @@ public: , const rtl::Reference< ::chart::Diagram >& xDiagram ); static void makeAxisVisible( const css::uno::Reference< css::chart2::XAxis >& xAxis ); + static void makeAxisVisible( const rtl::Reference< ::chart::Axis >& xAxis ); static void makeGridVisible( const css::uno::Reference< css::beans::XPropertySet >& xGridProperties ); static void makeAxisInvisible( const css::uno::Reference< css::chart2::XAxis >& xAxis ); + static void makeAxisInvisible( const rtl::Reference< ::chart::Axis >& xAxis ); static void makeGridInvisible( const css::uno::Reference< css::beans::XPropertySet >& xGridProperties ); static void hideAxisIfNoDataIsAttached( const css::uno::Reference< css::chart2::XAxis >& xAxis , const rtl::Reference< ::chart::Diagram >& xDiagram); + static void hideAxisIfNoDataIsAttached( const rtl::Reference< ::chart::Axis >& xAxis + , const rtl::Reference< ::chart::Diagram >& xDiagram); SAL_DLLPRIVATE static bool areAxisLabelsVisible( const css::uno::Reference< css::beans::XPropertySet >& xAxisProperties ); static bool isAxisVisible( const css::uno::Reference< css::chart2::XAxis >& xAxis ); @@ -118,21 +128,31 @@ public: getCoordinateSystemOfAxis( const css::uno::Reference< css::chart2::XAxis >& xAxis , const rtl::Reference< ::chart::Diagram >& xDiagram ); + static rtl::Reference< ::chart::BaseCoordinateSystem > + getCoordinateSystemOfAxis( + const rtl::Reference< ::chart::Axis >& xAxis + , const rtl::Reference< ::chart::Diagram >& xDiagram ); - static css::uno::Reference< css::chart2::XAxis > + static rtl::Reference< ::chart::Axis > getAxis( sal_Int32 nDimensionIndex, bool bMainAxis , const rtl::Reference< ::chart::Diagram >& xDiagram ); - static css::uno::Reference< css::chart2::XAxis > + static rtl::Reference< ::chart::Axis > getAxis( sal_Int32 nDimensionIndex, sal_Int32 nAxisIndex , const rtl::Reference< ::chart::BaseCoordinateSystem >& xCooSys ); - static css::uno::Reference< css::chart2::XAxis > + static rtl::Reference< ::chart::Axis > getCrossingMainAxis( const css::uno::Reference< css::chart2::XAxis >& xAxis , const rtl::Reference< ::chart::BaseCoordinateSystem >& xCooSys ); + static rtl::Reference< ::chart::Axis > + getCrossingMainAxis( const rtl::Reference< ::chart::Axis >& xAxis + , const rtl::Reference< ::chart::BaseCoordinateSystem >& xCooSys ); - static css::uno::Reference< css::chart2::XAxis > + static rtl::Reference< ::chart::Axis > getParallelAxis( const css::uno::Reference< css::chart2::XAxis >& xAxis , const rtl::Reference< ::chart::Diagram >& xDiagram ); + static rtl::Reference< ::chart::Axis > + getParallelAxis( const rtl::Reference< ::chart::Axis >& xAxis + , const rtl::Reference< ::chart::Diagram >& xDiagram ); static css::uno::Reference< css::beans::XPropertySet > getGridProperties( const rtl::Reference< ::chart::BaseCoordinateSystem >& xCooSys @@ -144,28 +164,39 @@ public: static sal_Int32 getDimensionIndexOfAxis( const css::uno::Reference< css::chart2::XAxis >& xAxis , const rtl::Reference< ::chart::Diagram >& xDiagram ); + static sal_Int32 getDimensionIndexOfAxis( + const rtl::Reference< ::chart::Axis >& xAxis + , const rtl::Reference< ::chart::Diagram >& xDiagram ); static bool getIndicesForAxis( const css::uno::Reference< css::chart2::XAxis >& xAxis , const rtl::Reference< ::chart::BaseCoordinateSystem >& xCooSys , sal_Int32& rOutDimensionIndex, sal_Int32& rOutAxisIndex ); + static bool getIndicesForAxis( + const rtl::Reference< ::chart::Axis >& xAxis + , const rtl::Reference< ::chart::BaseCoordinateSystem >& xCooSys + , sal_Int32& rOutDimensionIndex, sal_Int32& rOutAxisIndex ); static bool getIndicesForAxis( const css::uno::Reference< css::chart2::XAxis >& xAxis , const rtl::Reference< ::chart::Diagram >& xDiagram , sal_Int32& rOutCooSysIndex, sal_Int32& rOutDimensionIndex, sal_Int32& rOutAxisIndex ); + static bool getIndicesForAxis( + const rtl::Reference< ::chart::Axis >& xAxis + , const rtl::Reference< ::chart::Diagram >& xDiagram + , sal_Int32& rOutCooSysIndex, sal_Int32& rOutDimensionIndex, sal_Int32& rOutAxisIndex ); /** @param bOnlyVisible if </TRUE>, only axes with property "Show" set to </sal_True> are returned */ - static css::uno::Sequence< css::uno::Reference< css::chart2::XAxis > > + static std::vector< rtl::Reference< ::chart::Axis > > getAllAxesOfDiagram( const rtl::Reference< ::chart::Diagram >& xDiagram , bool bOnlyVisible = false ); /** @param bOnlyVisible if </TRUE>, only axes with property "Show" set to </sal_True> are returned */ - SAL_DLLPRIVATE static std::vector< css::uno::Reference< css::chart2::XAxis > > + SAL_DLLPRIVATE static std::vector< rtl::Reference< ::chart::Axis > > getAllAxesOfCoordinateSystem( const rtl::Reference< ::chart::BaseCoordinateSystem >& xCooSys , bool bOnlyVisible = false ); @@ -190,6 +221,8 @@ public: static bool shouldAxisBeDisplayed( const css::uno::Reference< css::chart2::XAxis >& xAxis , const rtl::Reference< ::chart::BaseCoordinateSystem >& xCooSys ); + static bool shouldAxisBeDisplayed( const rtl::Reference< ::chart::Axis >& xAxis + , const rtl::Reference< ::chart::BaseCoordinateSystem >& xCooSys ); static bool isSecondaryYAxisNeeded( const rtl::Reference< ::chart::BaseCoordinateSystem >& xCooSys ); diff --git a/chart2/source/inc/BaseCoordinateSystem.hxx b/chart2/source/inc/BaseCoordinateSystem.hxx index 2241c8490b83..afb02c07f1f4 100644 --- a/chart2/source/inc/BaseCoordinateSystem.hxx +++ b/chart2/source/inc/BaseCoordinateSystem.hxx @@ -33,6 +33,7 @@ namespace chart { +class Axis; class ChartType; namespace impl @@ -96,6 +97,9 @@ public: virtual void SAL_CALL removeModifyListener( const css::uno::Reference< css::util::XModifyListener >& aListener ) override; + void setAxisByDimension( sal_Int32 nDimension, const rtl::Reference< ::chart::Axis >& xAxis, sal_Int32 nIndex ); + rtl::Reference< ::chart::Axis > getAxisByDimension2(sal_Int32 nDimension, sal_Int32 nIndex ) const; + void setChartTypes( const std::vector< rtl::Reference< ::chart::ChartType > >& aChartTypes ); const std::vector< rtl::Reference<::chart::ChartType > > & getChartTypes2() const { return m_aChartTypes; } @@ -120,7 +124,7 @@ protected: private: sal_Int32 m_nDimensionCount; - typedef std::vector< std::vector< css::uno::Reference< css::chart2::XAxis > > > tAxisVecVecType; + typedef std::vector< std::vector< rtl::Reference< ::chart::Axis > > > tAxisVecVecType; tAxisVecVecType m_aAllAxis; //outer sequence is the dimension; inner sequence is the axis index that indicates main or secondary axis std::vector< rtl::Reference<::chart::ChartType > > m_aChartTypes; }; diff --git a/chart2/source/inc/ChartType.hxx b/chart2/source/inc/ChartType.hxx index 4c95fac5a704..a84d79893d5a 100644 --- a/chart2/source/inc/ChartType.hxx +++ b/chart2/source/inc/ChartType.hxx @@ -35,6 +35,7 @@ namespace chart { +class BaseCoordinateSystem; class DataSeries; class ModifyEventForwarder; @@ -102,6 +103,9 @@ public: const std::vector< rtl::Reference< ::chart::DataSeries > >& aDataSeries ); const std::vector< rtl::Reference< ::chart::DataSeries > > & getDataSeries2() const { return m_aDataSeries; } + static rtl::Reference< ::chart::BaseCoordinateSystem > + createCoordinateSystem2( ::sal_Int32 DimensionCount ); + protected: // ____ XModifyListener ____ diff --git a/chart2/source/inc/Diagram.hxx b/chart2/source/inc/Diagram.hxx index 16beacd59894..07712e93dc65 100644 --- a/chart2/source/inc/Diagram.hxx +++ b/chart2/source/inc/Diagram.hxx @@ -144,6 +144,8 @@ public: tCoordinateSystemContainerType; const tCoordinateSystemContainerType & getBaseCoordinateSystems() { return m_aCoordSystems; } + void setCoordinateSystems( + const std::vector< rtl::Reference< ::chart::BaseCoordinateSystem > >& aCoordinateSystems ); const rtl::Reference< ::chart::Legend > & getLegend2() const { return m_xLegend; } void setLegend(const rtl::Reference< ::chart::Legend > &); diff --git a/chart2/source/inc/DiagramHelper.hxx b/chart2/source/inc/DiagramHelper.hxx index 3a83644696e4..d5f81f30d552 100644 --- a/chart2/source/inc/DiagramHelper.hxx +++ b/chart2/source/inc/DiagramHelper.hxx @@ -42,6 +42,7 @@ namespace com::sun::star::util { class XNumberFormatsSupplier; } namespace chart { +class Axis; class BaseCoordinateSystem; class ChartType; class ChartTypeManager; @@ -159,11 +160,11 @@ public: const css::uno::Reference< css::uno::XComponentContext > & xContext, bool bAdaptAxes=true ); - static css::uno::Reference< css::chart2::XAxis > getAttachedAxis( + static rtl::Reference< ::chart::Axis > getAttachedAxis( const css::uno::Reference< css::chart2::XDataSeries >& xSeries, const rtl::Reference< ::chart::Diagram >& xDiagram ); - static css::uno::Reference< css::chart2::XAxis > getAttachedAxis( + static rtl::Reference< ::chart::Axis > getAttachedAxis( const rtl::Reference< ::chart::DataSeries >& xSeries, const rtl::Reference< ::chart::Diagram >& xDiagram ); diff --git a/chart2/source/inc/ObjectIdentifier.hxx b/chart2/source/inc/ObjectIdentifier.hxx index 5e52fbfa1ac5..f4ce48011419 100644 --- a/chart2/source/inc/ObjectIdentifier.hxx +++ b/chart2/source/inc/ObjectIdentifier.hxx @@ -42,6 +42,7 @@ namespace com::sun::star::uno { class XInterface; } namespace chart { +class Axis; class BaseCoordinateSystem; class DataSeries; class Diagram; @@ -112,6 +113,9 @@ public: static OUString createClassifiedIdentifierForObject( const rtl::Reference< ::chart::Legend >& xObject , const rtl::Reference<::chart::ChartModel>& xChartModel ); + static OUString createClassifiedIdentifierForObject( + const rtl::Reference< ::chart::Axis >& xObject + , const rtl::Reference<::chart::ChartModel>& xChartModel ); static OUString createClassifiedIdentifierForParticle( const OUString& rParticle ); @@ -198,7 +202,7 @@ public: , const rtl::Reference< ::chart::ChartModel >& xChartDocument ); //return the axis object that belongs to rObjectCID if any - static css::uno::Reference< css::chart2::XAxis > + static rtl::Reference< ::chart::Axis > getAxisForCID( const OUString& rObjectCID , const rtl::Reference<::chart::ChartModel>& xChartModel ); diff --git a/chart2/source/model/main/Axis.cxx b/chart2/source/model/main/Axis.cxx index 9bae79cf8adc..9507f3719088 100644 --- a/chart2/source/model/main/Axis.cxx +++ b/chart2/source/model/main/Axis.cxx @@ -17,7 +17,7 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#include "Axis.hxx" +#include <Axis.hxx> #include "GridProperties.hxx" #include <CharacterProperties.hxx> #include <LinePropertiesHelper.hxx> diff --git a/chart2/source/model/main/BaseCoordinateSystem.cxx b/chart2/source/model/main/BaseCoordinateSystem.cxx index bc02bf753561..52ef7ffde0d7 100644 --- a/chart2/source/model/main/BaseCoordinateSystem.cxx +++ b/chart2/source/model/main/BaseCoordinateSystem.cxx @@ -22,7 +22,7 @@ #include <UserDefinedProperties.hxx> #include <CloneHelper.hxx> #include <ModifyListenerHelper.hxx> -#include "Axis.hxx" +#include <Axis.hxx> #include <ChartType.hxx> #include <com/sun/star/chart2/AxisType.hpp> #include <com/sun/star/container/NoSuchElementException.hpp> @@ -125,7 +125,7 @@ BaseCoordinateSystem::BaseCoordinateSystem( for( sal_Int32 nN=0; nN<m_nDimensionCount; nN++ ) { m_aAllAxis[nN].resize( 1 ); - Reference< chart2::XAxis > xAxis( new Axis ); + rtl::Reference< Axis > xAxis( new Axis ); m_aAllAxis[nN][0] = xAxis; ModifyListenerHelper::addListenerToAllElements( m_aAllAxis[nN], m_xModifyEventForwarder ); @@ -159,7 +159,7 @@ BaseCoordinateSystem::BaseCoordinateSystem( m_aAllAxis.resize(rSource.m_aAllAxis.size()); tAxisVecVecType::size_type nN=0; for( nN=0; nN<m_aAllAxis.size(); nN++ ) - CloneHelper::CloneRefVector<chart2::XAxis>( rSource.m_aAllAxis[nN], m_aAllAxis[nN] ); + CloneHelper::CloneRefVector( rSource.m_aAllAxis[nN], m_aAllAxis[nN] ); for (const auto & rxChartType : rSource.m_aChartTypes) m_aChartTypes.push_back(rxChartType->cloneChartType()); @@ -207,7 +207,33 @@ void SAL_CALL BaseCoordinateSystem::setAxisByDimension( m_aAllAxis[ nDimensionIndex ][nIndex] = nullptr; } - Reference< chart2::XAxis > xOldAxis( m_aAllAxis[ nDimensionIndex ][nIndex] ); + rtl::Reference< Axis > xOldAxis( m_aAllAxis[ nDimensionIndex ][nIndex] ); + if( xOldAxis.is()) + ModifyListenerHelper::removeListener( xOldAxis, m_xModifyEventForwarder ); + m_aAllAxis[ nDimensionIndex ][nIndex] = dynamic_cast<Axis*>(xAxis.get()); + if( xAxis.is()) + ModifyListenerHelper::addListener( xAxis, m_xModifyEventForwarder ); + fireModifyEvent(); +} + +void BaseCoordinateSystem::setAxisByDimension( + sal_Int32 nDimensionIndex, + const rtl::Reference< Axis >& xAxis, + sal_Int32 nIndex ) +{ + if( nDimensionIndex < 0 || nDimensionIndex >= getDimension() ) + throw lang::IndexOutOfBoundsException(); + + if( nIndex < 0 ) + throw lang::IndexOutOfBoundsException(); + + if( m_aAllAxis[ nDimensionIndex ].size() < o3tl::make_unsigned( nIndex+1 )) + { + m_aAllAxis[ nDimensionIndex ].resize( nIndex+1 ); + m_aAllAxis[ nDimensionIndex ][nIndex] = nullptr; + } + + rtl::Reference< Axis > xOldAxis( m_aAllAxis[ nDimensionIndex ][nIndex] ); if( xOldAxis.is()) ModifyListenerHelper::removeListener( xOldAxis, m_xModifyEventForwarder ); m_aAllAxis[ nDimensionIndex ][nIndex] = xAxis; @@ -230,6 +256,20 @@ Reference< chart2::XAxis > SAL_CALL BaseCoordinateSystem::getAxisByDimension( return m_aAllAxis[ nDimensionIndex ][nAxisIndex]; } +rtl::Reference< Axis > BaseCoordinateSystem::getAxisByDimension2( + sal_Int32 nDimensionIndex, sal_Int32 nAxisIndex ) const +{ + if( nDimensionIndex < 0 || nDimensionIndex >= m_nDimensionCount ) + throw lang::IndexOutOfBoundsException(); + + OSL_ASSERT( m_aAllAxis.size() == static_cast< size_t >( m_nDimensionCount)); + + if( nAxisIndex < 0 || nAxisIndex > static_cast<sal_Int32>(m_aAllAxis[ nDimensionIndex ].size()) ) + throw lang::IndexOutOfBoundsException(); + + return m_aAllAxis[ nDimensionIndex ][nAxisIndex]; +} + sal_Int32 SAL_CALL BaseCoordinateSystem::getMaximumAxisIndexByDimension( sal_Int32 nDimensionIndex ) { if( nDimensionIndex < 0 || nDimensionIndex >= getDimension() ) diff --git a/chart2/source/model/main/Diagram.cxx b/chart2/source/model/main/Diagram.cxx index 60bcbd5124f7..f160987addc3 100644 --- a/chart2/source/model/main/Diagram.cxx +++ b/chart2/source/model/main/Diagram.cxx @@ -524,6 +524,28 @@ void SAL_CALL Diagram::setCoordinateSystems( fireModifyEvent(); } +void Diagram::setCoordinateSystems( + const std::vector< rtl::Reference< BaseCoordinateSystem > >& aCoordinateSystems ) +{ + tCoordinateSystemContainerType aNew; + tCoordinateSystemContainerType aOld; + if( !aCoordinateSystems.empty() ) + { + OSL_ENSURE( aCoordinateSystems.size()<=1, "more than one coordinatesystem is not supported yet by the fileformat" ); + aNew.push_back( aCoordinateSystems[0] ); + } + { + MutexGuard aGuard( m_aMutex ); + std::swap( aOld, m_aCoordSystems ); + m_aCoordSystems = aNew; + } + for (auto & xSystem : aOld) + xSystem->removeModifyListener(m_xModifyEventForwarder); + for (auto & xSystem : aNew) + xSystem->addModifyListener(m_xModifyEventForwarder); + fireModifyEvent(); +} + // ____ XCloneable ____ Reference< util::XCloneable > SAL_CALL Diagram::createClone() { diff --git a/chart2/source/model/template/BubbleChartType.cxx b/chart2/source/model/template/BubbleChartType.cxx index c2d7d367ea65..8a23388ab336 100644 --- a/chart2/source/model/template/BubbleChartType.cxx +++ b/chart2/source/model/template/BubbleChartType.cxx @@ -21,6 +21,7 @@ #include <PropertyHelper.hxx> #include <servicenames_charttypes.hxx> #include <CartesianCoordinateSystem.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <AxisIndexDefines.hxx> #include <com/sun/star/chart2/AxisType.hpp> @@ -123,7 +124,7 @@ Reference< chart2::XCoordinateSystem > SAL_CALL for( sal_Int32 i=0; i<DimensionCount; ++i ) { - Reference< chart2::XAxis > xAxis( xResult->getAxisByDimension( i, MAIN_AXIS_INDEX ) ); + rtl::Reference< Axis > xAxis = xResult->getAxisByDimension2( i, MAIN_AXIS_INDEX ); if( !xAxis.is() ) { OSL_FAIL("a created coordinate system should have an axis for each dimension"); diff --git a/chart2/source/model/template/ChartType.cxx b/chart2/source/model/template/ChartType.cxx index 588b3fa653e9..eff91f9cc9bb 100644 --- a/chart2/source/model/template/ChartType.cxx +++ b/chart2/source/model/template/ChartType.cxx @@ -19,6 +19,7 @@ #include <ChartType.hxx> #include <CartesianCoordinateSystem.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <CloneHelper.hxx> #include <AxisIndexDefines.hxx> @@ -67,13 +68,19 @@ ChartType::~ChartType() // ____ XChartType ____ Reference< chart2::XCoordinateSystem > SAL_CALL ChartType::createCoordinateSystem( ::sal_Int32 DimensionCount ) +{ + return createCoordinateSystem2(DimensionCount); +} + +rtl::Reference< BaseCoordinateSystem > + ChartType::createCoordinateSystem2( ::sal_Int32 DimensionCount ) { rtl::Reference< CartesianCoordinateSystem > xResult = new CartesianCoordinateSystem( DimensionCount ); for( sal_Int32 i=0; i<DimensionCount; ++i ) { - Reference< chart2::XAxis > xAxis( xResult->getAxisByDimension( i, MAIN_AXIS_INDEX ) ); + rtl::Reference< Axis > xAxis = xResult->getAxisByDimension2( i, MAIN_AXIS_INDEX ); if( !xAxis.is() ) { OSL_FAIL("a created coordinate system should have an axis for each dimension"); diff --git a/chart2/source/model/template/ChartTypeTemplate.cxx b/chart2/source/model/template/ChartTypeTemplate.cxx index 902c54ed6a89..df4cb7d17c92 100644 --- a/chart2/source/model/template/ChartTypeTemplate.cxx +++ b/chart2/source/model/template/ChartTypeTemplate.cxx @@ -25,6 +25,7 @@ #include <DataSeries.hxx> #include <DataSource.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <Diagram.hxx> #include <DiagramHelper.hxx> @@ -420,18 +421,14 @@ void ChartTypeTemplate::resetStyles( const rtl::Reference< ::chart::Diagram >& x bool bPercent = (getStackMode(0) == StackMode::YStackedPercent); if( bPercent ) { - const Sequence< Reference< chart2::XAxis > > aAxisSeq( AxisHelper::getAllAxesOfDiagram( xDiagram ) ); - for( Reference< chart2::XAxis > const & axis : aAxisSeq ) + const std::vector< rtl::Reference< Axis > > aAxisSeq( AxisHelper::getAllAxesOfDiagram( xDiagram ) ); + for( rtl::Reference< Axis > const & axis : aAxisSeq ) { if( AxisHelper::getDimensionIndexOfAxis( axis, xDiagram )== 1 ) { - Reference< beans::XPropertySet > xAxisProp( axis, uno::UNO_QUERY ); - if( xAxisProp.is()) - { - // set number format to source format - xAxisProp->setPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT, uno::Any(true)); - xAxisProp->setPropertyValue(CHART_UNONAME_NUMFMT, uno::Any()); - } + // set number format to source format + axis->setPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT, uno::Any(true)); + axis->setPropertyValue(CHART_UNONAME_NUMFMT, uno::Any()); } } } @@ -499,7 +496,7 @@ void ChartTypeTemplate::createCoordinateSystems( rtl::Reference< ChartType > xChartType( getChartTypeForNewSeries(aFormerlyUsedChartTypes)); if( ! xChartType.is()) return; - Reference< XCoordinateSystem > xCooSys( xChartType->createCoordinateSystem( getDimension())); + rtl::Reference< BaseCoordinateSystem > xCooSys = ChartType::createCoordinateSystem2( getDimension()); if( ! xCooSys.is()) { // chart type wants no coordinate systems @@ -514,13 +511,13 @@ void ChartTypeTemplate::createCoordinateSystems( AxisHelper::makeGridVisible( xAxis->getGridProperties() ); } - Sequence< Reference< XCoordinateSystem > > aCoordinateSystems( - xDiagram->getCoordinateSystems()); + std::vector< rtl::Reference< BaseCoordinateSystem > > aCoordinateSystems( + xDiagram->getBaseCoordinateSystems()); - if( aCoordinateSystems.hasElements()) + if( !aCoordinateSystems.empty() ) { bool bOk = true; - for( sal_Int32 i=0; bOk && i<aCoordinateSystems.getLength(); ++i ) + for( sal_Int32 i=0; bOk && i<static_cast<sal_Int32>(aCoordinateSystems.size()); ++i ) bOk = bOk && ( xCooSys->getCoordinateSystemType() == aCoordinateSystems[i]->getCoordinateSystemType() && (xCooSys->getDimension() == aCoordinateSystems[i]->getDimension()) ); // coordinate systems are ok @@ -530,9 +527,9 @@ void ChartTypeTemplate::createCoordinateSystems( } //copy as much info from former coordinate system as possible: - if( aCoordinateSystems.hasElements() ) + if( !aCoordinateSystems.empty() ) { - Reference< XCoordinateSystem > xOldCooSys( aCoordinateSystems[0] ); + rtl::Reference< BaseCoordinateSystem > xOldCooSys( aCoordinateSystems[0] ); sal_Int32 nMaxDimensionCount = std::min( xCooSys->getDimension(), xOldCooSys->getDimension() ); for(sal_Int32 nDimensionIndex=0; nDimensionIndex<nMaxDimensionCount; nDimensionIndex++) @@ -540,7 +537,7 @@ void ChartTypeTemplate::createCoordinateSystems( const sal_Int32 nMaximumAxisIndex = xOldCooSys->getMaximumAxisIndexByDimension(nDimensionIndex); for(sal_Int32 nAxisIndex=0; nAxisIndex<=nMaximumAxisIndex; ++nAxisIndex) { - uno::Reference< XAxis > xAxis( xOldCooSys->getAxisByDimension( nDimensionIndex, nAxisIndex ) ); + rtl::Reference< Axis > xAxis = xOldCooSys->getAxisByDimension2( nDimensionIndex, nAxisIndex ); if( xAxis.is()) { xCooSys->setAxisByDimension( nDimensionIndex, xAxis, nAxisIndex ); @@ -573,7 +570,7 @@ void ChartTypeTemplate::adaptScales( const sal_Int32 nMaxIndex = xCooSys->getMaximumAxisIndexByDimension(nDimensionX); for(sal_Int32 nI=0; nI<=nMaxIndex; ++nI) { - Reference< XAxis > xAxis( xCooSys->getAxisByDimension(nDimensionX,nI) ); + rtl::Reference< Axis > xAxis = xCooSys->getAxisByDimension2(nDimensionX,nI); if( xAxis.is()) { ScaleData aData( xAxis->getScaleData() ); @@ -606,7 +603,7 @@ void ChartTypeTemplate::adaptScales( const sal_Int32 nMaxIndex = xCooSys->getMaximumAxisIndexByDimension(1); for(sal_Int32 nI=0; nI<=nMaxIndex; ++nI) { - Reference< chart2::XAxis > xAxis( xCooSys->getAxisByDimension( 1,nI )); + rtl::Reference< Axis > xAxis = xCooSys->getAxisByDimension2( 1,nI ); if( xAxis.is()) { bool bPercent = (getStackMode(0) == StackMode::YStackedPercent); diff --git a/chart2/source/model/template/NetChartType.cxx b/chart2/source/model/template/NetChartType.cxx index 971befddfca9..8441215818d8 100644 --- a/chart2/source/model/template/NetChartType.cxx +++ b/chart2/source/model/template/NetChartType.cxx @@ -22,6 +22,7 @@ #include <servicenames_charttypes.hxx> #include <AxisIndexDefines.hxx> #include <AxisHelper.hxx> +#include <Axis.hxx> #include <cppuhelper/supportsservice.hxx> #include <com/sun/star/chart2/AxisType.hpp> @@ -58,7 +59,7 @@ Reference< XCoordinateSystem > SAL_CALL rtl::Reference< PolarCoordinateSystem > xResult = new PolarCoordinateSystem( DimensionCount ); - Reference< XAxis > xAxis( xResult->getAxisByDimension( 0, MAIN_AXIS_INDEX ) ); + rtl::Reference< Axis > xAxis = xResult->getAxisByDimension2( 0, MAIN_AXIS_INDEX ); if( xAxis.is() ) { ScaleData aScaleData = xAxis->getScaleData(); @@ -68,7 +69,7 @@ Reference< XCoordinateSystem > SAL_CALL xAxis->setScaleData( aScaleData ); } - xAxis = xResult->getAxisByDimension( 1, MAIN_AXIS_INDEX ); + xAxis = xResult->getAxisByDimension2( 1, MAIN_AXIS_INDEX ); if( xAxis.is() ) { ScaleData aScaleData = xAxis->getScaleData(); diff --git a/chart2/source/model/template/PieChartType.cxx b/chart2/source/model/template/PieChartType.cxx index 1208283fcc1e..4727a47acc26 100644 --- a/chart2/source/model/template/PieChartType.cxx +++ b/chart2/source/model/template/PieChartType.cxx @@ -20,6 +20,7 @@ #include "PieChartType.hxx" #include <PropertyHelper.hxx> #include <PolarCoordinateSystem.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <servicenames_charttypes.hxx> #include <AxisIndexDefines.hxx> @@ -158,7 +159,7 @@ Reference< chart2::XCoordinateSystem > SAL_CALL for( sal_Int32 i=0; i<DimensionCount; ++i ) { - Reference< chart2::XAxis > xAxis( xResult->getAxisByDimension( i, MAIN_AXIS_INDEX ) ); + rtl::Reference< Axis > xAxis = xResult->getAxisByDimension2( i, MAIN_AXIS_INDEX ); if( !xAxis.is() ) { OSL_FAIL("a created coordinate system should have an axis for each dimension"); diff --git a/chart2/source/model/template/PieChartTypeTemplate.cxx b/chart2/source/model/template/PieChartTypeTemplate.cxx index 9b7ef05323fc..46a3e57e2a88 100644 --- a/chart2/source/model/template/PieChartTypeTemplate.cxx +++ b/chart2/source/model/template/PieChartTypeTemplate.cxx @@ -27,6 +27,7 @@ #include <servicenames_charttypes.hxx> #include <DataSeries.hxx> #include <DataSeriesHelper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <ThreeDHelper.hxx> #include <PropertyHelper.hxx> @@ -238,8 +239,8 @@ void PieChartTypeTemplate::adaptScales( { try { - Reference< chart2::XAxis > xAxis( AxisHelper::getAxis( 1 /*nDimensionIndex*/,0 /*nAxisIndex*/ - , coords ) ); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( 1 /*nDimensionIndex*/,0 /*nAxisIndex*/ + , coords ); if( xAxis.is() ) { chart2::ScaleData aScaleData( xAxis->getScaleData() ); diff --git a/chart2/source/model/template/ScatterChartType.cxx b/chart2/source/model/template/ScatterChartType.cxx index 63d46fed23b9..1835abc10a1d 100644 --- a/chart2/source/model/template/ScatterChartType.cxx +++ b/chart2/source/model/template/ScatterChartType.cxx @@ -21,6 +21,7 @@ #include <PropertyHelper.hxx> #include <servicenames_charttypes.hxx> #include <CartesianCoordinateSystem.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <AxisIndexDefines.hxx> #include <unonames.hxx> @@ -168,7 +169,7 @@ Reference< chart2::XCoordinateSystem > SAL_CALL for( sal_Int32 i=0; i<DimensionCount; ++i ) { - Reference< chart2::XAxis > xAxis( xResult->getAxisByDimension( i, MAIN_AXIS_INDEX ) ); + rtl::Reference< Axis > xAxis = xResult->getAxisByDimension2( i, MAIN_AXIS_INDEX ); if( !xAxis.is() ) { OSL_FAIL("a created coordinate system should have an axis for each dimension"); diff --git a/chart2/source/tools/AxisHelper.cxx b/chart2/source/tools/AxisHelper.cxx index 8f9b93cf8873..52225c48b413 100644 --- a/chart2/source/tools/AxisHelper.cxx +++ b/chart2/source/tools/AxisHelper.cxx @@ -22,6 +22,7 @@ #include <Diagram.hxx> #include <ChartTypeHelper.hxx> #include <ChartType.hxx> +#include <Axis.hxx> #include <AxisIndexDefines.hxx> #include <LabeledDataSequence.hxx> #include <LinePropertiesHelper.hxx> @@ -101,6 +102,13 @@ bool AxisHelper::isLogarithmic( const Reference< XScaling >& xScaling ) } chart2::ScaleData AxisHelper::getDateCheckedScale( const Reference< chart2::XAxis >& xAxis, ChartModel& rModel ) +{ + rtl::Reference< Axis > pAxis = dynamic_cast<Axis*>(xAxis.get()); + assert(pAxis || !xAxis); + return getDateCheckedScale(pAxis, rModel); +} + +chart2::ScaleData AxisHelper::getDateCheckedScale( const rtl::Reference< Axis >& xAxis, ChartModel& rModel ) { ScaleData aScale = xAxis->getScaleData(); rtl::Reference< BaseCoordinateSystem > xCooSys( ChartModelHelper::getFirstCoordinateSystem( &rModel ) ); @@ -140,19 +148,29 @@ sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis( , const rtl::Reference< BaseCoordinateSystem > & xCorrespondingCoordinateSystem , const rtl::Reference<ChartModel>& xChartDoc , bool bSearchForParallelAxisIfNothingIsFound ) +{ + rtl::Reference< Axis > pAxis = dynamic_cast<Axis*>(xAxis.get()); + assert(pAxis || !xAxis); + return getExplicitNumberFormatKeyForAxis(pAxis, xCorrespondingCoordinateSystem, xChartDoc, bSearchForParallelAxisIfNothingIsFound); +} + +sal_Int32 AxisHelper::getExplicitNumberFormatKeyForAxis( + 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< 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) { @@ -309,7 +327,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); } } @@ -319,7 +337,7 @@ 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 rtl::Reference< BaseCoordinateSystem >& xCooSys @@ -331,64 +349,52 @@ 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("CrossoverPosition") >>= 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("CrossoverPosition", 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 +rtl::Reference< Axis > AxisHelper::createAxis( sal_Int32 nDimensionIndex, bool bMainAxis , const rtl::Reference< Diagram >& xDiagram , const Reference< uno::XComponentContext >& xContext , ReferenceSizeProvider * pRefSizeProvider ) @@ -414,12 +420,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()); @@ -437,7 +443,7 @@ void AxisHelper::showGrid( sal_Int32 nDimensionIndex, sal_Int32 nCooSysIndex, bo 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 @@ -466,6 +472,16 @@ void AxisHelper::makeAxisVisible( const Reference< XAxis >& xAxis ) } } +void AxisHelper::makeAxisVisible( const rtl::Reference< Axis >& xAxis ) +{ + if( xAxis.is() ) + { + xAxis->setPropertyValue( "Show", uno::Any( true ) ); + LinePropertiesHelper::SetLineVisible( xAxis ); + xAxis->setPropertyValue( "DisplayLabels", uno::Any( true ) ); + } +} + void AxisHelper::makeGridVisible( const Reference< beans::XPropertySet >& xGridProperties ) { if( xGridProperties.is() ) @@ -490,14 +506,29 @@ void AxisHelper::makeAxisInvisible( const Reference< XAxis >& xAxis ) } } +void AxisHelper::makeAxisInvisible( const rtl::Reference< Axis >& xAxis ) +{ + if( xAxis.is() ) + { + xAxis->setPropertyValue( "Show", uno::Any( false ) ); + } +} + void AxisHelper::hideAxisIfNoDataIsAttached( const Reference< XAxis >& xAxis, const rtl::Reference< Diagram >& xDiagram ) +{ + rtl::Reference< Axis > pAxis = dynamic_cast<Axis*>(xAxis.get()); + assert(pAxis || !xAxis); + hideAxisIfNoDataIsAttached(pAxis, 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< rtl::Reference< DataSeries > > aSeriesVector = DiagramHelper::getDataSeriesFromDiagram( xDiagram ); for (auto const& series : aSeriesVector) { - uno::Reference< chart2::XAxis > xCurrentAxis = DiagramHelper::getAttachedAxis(series, xDiagram ); + rtl::Reference< Axis > xCurrentAxis = DiagramHelper::getAttachedAxis(series, xDiagram ); if( xCurrentAxis==xAxis ) { bOtherSeriesAttachedToThisAxis = true; @@ -518,7 +549,7 @@ void AxisHelper::hideGrid( sal_Int32 nDimensionIndex, sal_Int32 nCooSysIndex, bo 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; @@ -549,7 +580,7 @@ bool AxisHelper::isGridShown( sal_Int32 nDimensionIndex, sal_Int32 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; @@ -576,14 +607,14 @@ rtl::Reference< ::chart::BaseCoordinateSystem > AxisHelper::getCoordinateSystemB return nullptr; } -Reference< XAxis > AxisHelper::getAxis( sal_Int32 nDimensionIndex, bool bMainAxis +rtl::Reference< Axis > AxisHelper::getAxis( sal_Int32 nDimensionIndex, bool bMainAxis , const rtl::Reference< Diagram >& xDiagram ) { - Reference< XAxis > xRet; + rtl::Reference< Axis > xRet; try { rtl::Reference< BaseCoordinateSystem > xCooSys = AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ); - xRet.set( AxisHelper::getAxis( nDimensionIndex, bMainAxis ? 0 : 1, xCooSys ) ); + xRet = AxisHelper::getAxis( nDimensionIndex, bMainAxis ? 0 : 1, xCooSys ); } catch( const uno::Exception & ) { @@ -591,10 +622,10 @@ Reference< XAxis > AxisHelper::getAxis( sal_Int32 nDimensionIndex, bool bMainAxi return xRet; } -Reference< XAxis > AxisHelper::getAxis( sal_Int32 nDimensionIndex, sal_Int32 nAxisIndex +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; @@ -606,11 +637,19 @@ 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 +rtl::Reference< Axis > AxisHelper::getCrossingMainAxis( const Reference< chart2::XAxis >& xAxis + , const rtl::Reference< BaseCoordinateSystem >& xCooSys ) +{ + rtl::Reference< Axis > pAxis = dynamic_cast<Axis*>(xAxis.get()); + assert(pAxis || !xAxis); + return getCrossingMainAxis(pAxis, xCooSys); +} + +rtl::Reference< Axis > AxisHelper::getCrossingMainAxis( const rtl::Reference< Axis >& xAxis , const rtl::Reference< BaseCoordinateSystem >& xCooSys ) { sal_Int32 nDimensionIndex = 0; @@ -630,7 +669,7 @@ Reference< XAxis > AxisHelper::getCrossingMainAxis( const Reference< XAxis >& xA return AxisHelper::getAxis( nDimensionIndex, 0, xCooSys ); } -Reference< XAxis > AxisHelper::getParallelAxis( const Reference< XAxis >& xAxis +rtl::Reference< Axis > AxisHelper::getParallelAxis( const Reference< XAxis >& xAxis , const rtl::Reference< Diagram >& xDiagram ) { try @@ -700,7 +739,7 @@ Reference< beans::XPropertySet > AxisHelper::getGridProperties( { Reference< beans::XPropertySet > xRet; - Reference< XAxis > xAxis( AxisHelper::getAxis( nDimensionIndex, nAxisIndex, xCooSys ) ); + rtl::Reference< Axis > xAxis( AxisHelper::getAxis( nDimensionIndex, nAxisIndex, xCooSys ) ); if( xAxis.is() ) { if( nSubGridIndex<0 ) @@ -727,8 +766,29 @@ sal_Int32 AxisHelper::getDimensionIndexOfAxis( return nDimensionIndex; } +sal_Int32 AxisHelper::getDimensionIndexOfAxis( + const rtl::Reference< Axis >& xAxis + , const rtl::Reference< Diagram >& xDiagram ) +{ + sal_Int32 nDimensionIndex = -1; + sal_Int32 nCooSysIndex = -1; + sal_Int32 nAxisIndex = -1; + AxisHelper::getIndicesForAxis( xAxis, xDiagram, nCooSysIndex , nDimensionIndex, nAxisIndex ); + return nDimensionIndex; +} + bool AxisHelper::getIndicesForAxis( - const Reference< XAxis >& xAxis + const Reference< chart2::XAxis >& xAxis + , const rtl::Reference< BaseCoordinateSystem >& xCooSys + , sal_Int32& rOutDimensionIndex, sal_Int32& rOutAxisIndex ) +{ + rtl::Reference< Axis > pAxis = dynamic_cast<Axis*>(xAxis.get()); + assert(pAxis || !xAxis); + return getIndicesForAxis(pAxis, xCooSys, rOutDimensionIndex, rOutAxisIndex); +} + +bool AxisHelper::getIndicesForAxis( + const rtl::Reference< Axis >& xAxis , const rtl::Reference< BaseCoordinateSystem >& xCooSys , sal_Int32& rOutDimensionIndex, sal_Int32& rOutAxisIndex ) { @@ -740,14 +800,14 @@ bool AxisHelper::getIndicesForAxis( if( !xCooSys || !xAxis ) return false; - Reference< XAxis > xCurrentAxis; + rtl::Reference< Axis > 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++ ) { - xCurrentAxis = xCooSys->getAxisByDimension(nDimensionIndex,nAxisIndex); + xCurrentAxis = xCooSys->getAxisByDimension2(nDimensionIndex,nAxisIndex); if( xCurrentAxis == xAxis ) { rOutDimensionIndex = nDimensionIndex; @@ -759,7 +819,15 @@ bool AxisHelper::getIndicesForAxis( return false; } -bool AxisHelper::getIndicesForAxis( const Reference< XAxis >& xAxis, const rtl::Reference< Diagram >& xDiagram +bool AxisHelper::getIndicesForAxis( const Reference< chart2::XAxis >& xAxis, const rtl::Reference< Diagram >& xDiagram + , sal_Int32& rOutCooSysIndex, sal_Int32& rOutDimensionIndex, sal_Int32& rOutAxisIndex ) +{ + rtl::Reference< Axis > pAxis = dynamic_cast<Axis*>(xAxis.get()); + assert(pAxis || !xAxis); + return getIndicesForAxis(pAxis, xDiagram, rOutCooSysIndex, rOutDimensionIndex, rOutAxisIndex); +} + +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 @@ -781,11 +849,11 @@ bool AxisHelper::getIndicesForAxis( const Reference< XAxis >& xAxis, const rtl:: return false; } -std::vector< Reference< XAxis > > AxisHelper::getAllAxesOfCoordinateSystem( +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()) { @@ -800,15 +868,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( "Show") >>= bAddAxis) ) bAddAxis = false; } if( bAddAxis ) @@ -827,30 +893,28 @@ std::vector< Reference< XAxis > > AxisHelper::getAllAxesOfCoordinateSystem( return aAxisVector; } -Sequence< Reference< XAxis > > AxisHelper::getAllAxesOfDiagram( +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; for( rtl::Reference< BaseCoordinateSystem > const & coords : xDiagram->getBaseCoordinateSystems() ) { - std::vector< Reference< XAxis > > aAxesPerCooSys( AxisHelper::getAllAxesOfCoordinateSystem( coords, bOnlyVisible ) ); + 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 rtl::Reference< Diagram >& xDiagram ) { - const Sequence< Reference< XAxis > > aAllAxes( AxisHelper::getAllAxesOfDiagram( xDiagram ) ); + const std::vector< rtl::Reference< Axis > > aAllAxes = AxisHelper::getAllAxesOfDiagram( xDiagram ); std::vector< Reference< beans::XPropertySet > > aGridVector; - for( Reference< XAxis > const & xAxis : aAllAxes ) + for( rtl::Reference< Axis > const & xAxis : aAllAxes ) { - if(!xAxis.is()) - continue; Reference< beans::XPropertySet > xGridProperties( xAxis->getGridProperties() ); if( xGridProperties.is() ) aGridVector.push_back( xGridProperties ); @@ -934,6 +998,31 @@ bool AxisHelper::shouldAxisBeDisplayed( const Reference< XAxis >& xAxis return bRet; } +bool AxisHelper::shouldAxisBeDisplayed( const rtl::Reference< Axis >& xAxis + , const rtl::Reference< BaseCoordinateSystem >& xCooSys ) +{ + bool bRet = false; + + if( xAxis.is() && xCooSys.is() ) + { + sal_Int32 nDimensionIndex=-1; + sal_Int32 nAxisIndex=-1; + if( AxisHelper::getIndicesForAxis( xAxis, xCooSys, nDimensionIndex, nAxisIndex ) ) + { + sal_Int32 nDimensionCount = xCooSys->getDimension(); + rtl::Reference< ChartType > xChartType( AxisHelper::getChartTypeByIndex( xCooSys, 0 ) ); + + bool bMainAxis = (nAxisIndex==MAIN_AXIS_INDEX); + if( bMainAxis ) + bRet = ChartTypeHelper::isSupportingMainAxis(xChartType,nDimensionCount,nDimensionIndex); + else + bRet = ChartTypeHelper::isSupportingSecondaryAxis(xChartType,nDimensionCount); + } + } + + return bRet; +} + void AxisHelper::getAxisOrGridExistence( Sequence< sal_Bool >& rExistenceList , const rtl::Reference< Diagram>& xDiagram, bool bAxis ) { @@ -1004,6 +1093,15 @@ bool AxisHelper::changeVisibilityOfGrids( const rtl::Reference< Diagram >& xDiag rtl::Reference< BaseCoordinateSystem > AxisHelper::getCoordinateSystemOfAxis( const Reference< XAxis >& xAxis , const rtl::Reference< Diagram >& xDiagram ) +{ + rtl::Reference< Axis > pAxis = dynamic_cast<Axis*>(xAxis.get()); + assert(pAxis || !xAxis); + return getCoordinateSystemOfAxis(pAxis, xDiagram); +} + +rtl::Reference< BaseCoordinateSystem > AxisHelper::getCoordinateSystemOfAxis( + const rtl::Reference< Axis >& xAxis + , const rtl::Reference< Diagram >& xDiagram ) { if (!xDiagram) return nullptr; @@ -1011,10 +1109,9 @@ rtl::Reference< BaseCoordinateSystem > AxisHelper::getCoordinateSystemOfAxis( rtl::Reference< BaseCoordinateSystem > xRet; for( rtl::Reference< BaseCoordinateSystem > const & xCooSys : xDiagram->getBaseCoordinateSystems() ) { - 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 ); + auto aFound = std::find( aAllAxis.begin(), aAllAxis.end(), xAxis ); if( aFound != aAllAxis.end()) { xRet = xCooSys; diff --git a/chart2/source/tools/DataSeriesHelper.cxx b/chart2/source/tools/DataSeriesHelper.cxx index 964f2f05a436..830a94d0a240 100644 --- a/chart2/source/tools/DataSeriesHelper.cxx +++ b/chart2/source/tools/DataSeriesHelper.cxx @@ -25,6 +25,7 @@ #include <Diagram.hxx> #include <BaseCoordinateSystem.hxx> #include <LabeledDataSequence.hxx> +#include <Axis.hxx> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/chart2/DataPointLabel.hpp> @@ -503,8 +504,8 @@ void setStackModeAtSeries( for (auto const& axisIndex : aAxisIndexSet) { - Reference< chart2::XAxis > xAxis( - xCorrespondingCoordinateSystem->getAxisByDimension(1, axisIndex)); + rtl::Reference< Axis > xAxis = + xCorrespondingCoordinateSystem->getAxisByDimension2(1, axisIndex); if( xAxis.is()) { bool bPercent = (eStackMode == StackMode::YStackedPercent); @@ -551,8 +552,8 @@ sal_Int32 getNumberFormatKeyFromAxis( nAxisIndex = getAttachedAxisIndex( xSeries ); try { - Reference< beans::XPropertySet > xAxisProp( - xCorrespondingCoordinateSystem->getAxisByDimension( nDimensionIndex, nAxisIndex ), uno::UNO_QUERY ); + rtl::Reference< Axis > xAxisProp = + xCorrespondingCoordinateSystem->getAxisByDimension2( nDimensionIndex, nAxisIndex ); if( xAxisProp.is()) xAxisProp->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nResult; } diff --git a/chart2/source/tools/DiagramHelper.cxx b/chart2/source/tools/DiagramHelper.cxx index a20c8bbd7510..c45bb92e663e 100644 --- a/chart2/source/tools/DiagramHelper.cxx +++ b/chart2/source/tools/DiagramHelper.cxx @@ -21,6 +21,7 @@ #include <Diagram.hxx> #include <DataSeries.hxx> #include <DataSeriesHelper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <ChartType.hxx> #include <ChartTypeHelper.hxx> @@ -145,7 +146,7 @@ void DiagramHelper::setVertical( const sal_Int32 nMaximumScaleIndex = xCooSys->getMaximumAxisIndexByDimension(nDimIndex); for (sal_Int32 nI = 0; nI <= nMaximumScaleIndex; ++nI) { - Reference<chart2::XAxis> xAxis = xCooSys->getAxisByDimension(nDimIndex,nI); + rtl::Reference<Axis> xAxis = xCooSys->getAxisByDimension2(nDimIndex,nI); if (!xAxis.is()) continue; @@ -153,11 +154,7 @@ void DiagramHelper::setVertical( if (!bChanged) continue; - Reference< XTitled > xTitled( xAxis, uno::UNO_QUERY ); - if (!xTitled.is()) - continue; - - Reference< beans::XPropertySet > xTitleProps( xTitled->getTitleObject(), uno::UNO_QUERY ); + Reference< beans::XPropertySet > xTitleProps( xAxis->getTitleObject(), uno::UNO_QUERY ); if (!xTitleProps.is()) continue; @@ -247,7 +244,7 @@ void DiagramHelper::setStackMode( const sal_Int32 nMaximumScaleIndex = xCooSys->getMaximumAxisIndexByDimension(1); for(sal_Int32 nI=0; nI<=nMaximumScaleIndex; ++nI) { - Reference< chart2::XAxis > xAxis( xCooSys->getAxisByDimension( 1,nI )); + rtl::Reference< Axis > xAxis = xCooSys->getAxisByDimension2( 1,nI ); if( xAxis.is()) { chart2::ScaleData aScaleData = xAxis->getScaleData(); @@ -379,8 +376,8 @@ StackMode DiagramHelper::getStackModeFromChartType( if( nSeriesCount ) nAxisIndex = DataSeriesHelper::getAttachedAxisIndex(aSeries[0]); - Reference< chart2::XAxis > xAxis( - xCorrespondingCoordinateSystem->getAxisByDimension( 1,nAxisIndex )); + rtl::Reference< Axis > xAxis = + xCorrespondingCoordinateSystem->getAxisByDimension2( 1,nAxisIndex ); if( xAxis.is()) { chart2::ScaleData aScaleData = xAxis->getScaleData(); @@ -547,7 +544,7 @@ bool DiagramHelper::attachSeriesToAxis( bool bAttachToMainAxis if( bChanged && xDiagram.is() ) { - uno::Reference< XAxis > xAxis( AxisHelper::getAxis( 1, bAttachToMainAxis, xDiagram ) ); + rtl::Reference< Axis > xAxis = AxisHelper::getAxis( 1, bAttachToMainAxis, xDiagram ); if(!xAxis.is()) //create an axis if necessary xAxis = AxisHelper::createAxis( 1, bAttachToMainAxis, xDiagram, xContext ); if( bAdaptAxes ) @@ -560,14 +557,14 @@ bool DiagramHelper::attachSeriesToAxis( bool bAttachToMainAxis return bChanged; } -uno::Reference< XAxis > DiagramHelper::getAttachedAxis( +rtl::Reference< Axis > DiagramHelper::getAttachedAxis( const uno::Reference< XDataSeries >& xSeries, const rtl::Reference< Diagram >& xDiagram ) { return AxisHelper::getAxis( 1, DiagramHelper::isSeriesAttachedToMainAxis( xSeries ), xDiagram ); } -uno::Reference< XAxis > DiagramHelper::getAttachedAxis( +rtl::Reference< Axis > DiagramHelper::getAttachedAxis( const rtl::Reference< DataSeries >& xSeries, const rtl::Reference< Diagram >& xDiagram ) { @@ -697,7 +694,7 @@ std::vector< Reference< XAxis > > lcl_getAxisHoldingCategoriesFromDiagram( const sal_Int32 nMaximumScaleIndex = xCooSys->getMaximumAxisIndexByDimension(nN); for(sal_Int32 nI=0; nI<=nMaximumScaleIndex; ++nI) { - Reference< XAxis > xAxis = xCooSys->getAxisByDimension( nN,nI ); + rtl::Reference< Axis > xAxis = xCooSys->getAxisByDimension2( nN,nI ); OSL_ASSERT( xAxis.is()); if( xAxis.is()) { @@ -738,7 +735,7 @@ bool DiagramHelper::isCategoryDiagram( const sal_Int32 nMaximumScaleIndex = xCooSys->getMaximumAxisIndexByDimension(nN); for(sal_Int32 nI=0; nI<=nMaximumScaleIndex; ++nI) { - Reference< XAxis > xAxis = xCooSys->getAxisByDimension( nN,nI ); + rtl::Reference< Axis > xAxis = xCooSys->getAxisByDimension2( nN,nI ); OSL_ASSERT( xAxis.is()); if( xAxis.is()) { @@ -1009,10 +1006,10 @@ void DiagramHelper::switchToDateCategories( const rtl::Reference<::chart::ChartM { ControllerLockGuardUNO aCtrlLockGuard( xChartDoc ); - Reference< chart2::XCoordinateSystem > xCooSys( ChartModelHelper::getFirstCoordinateSystem( xChartDoc ) ); + rtl::Reference< BaseCoordinateSystem > xCooSys = ChartModelHelper::getFirstCoordinateSystem( xChartDoc ); if( xCooSys.is() ) { - Reference< XAxis > xAxis( xCooSys->getAxisByDimension(0,0) ); + rtl::Reference< Axis > xAxis = xCooSys->getAxisByDimension2(0,0); lcl_switchToDateCategories( xChartDoc, xAxis ); } } @@ -1024,10 +1021,10 @@ void DiagramHelper::switchToTextCategories( const rtl::Reference<::chart::ChartM { ControllerLockGuardUNO aCtrlLockGuard( xChartDoc ); - Reference< chart2::XCoordinateSystem > xCooSys( ChartModelHelper::getFirstCoordinateSystem( xChartDoc ) ); + rtl::Reference< BaseCoordinateSystem > xCooSys = ChartModelHelper::getFirstCoordinateSystem( xChartDoc ); if( xCooSys.is() ) { - Reference< XAxis > xAxis( xCooSys->getAxisByDimension(0,0) ); + rtl::Reference< Axis > xAxis = xCooSys->getAxisByDimension2(0,0); lcl_switchToTextCategories( xChartDoc, xAxis ); } } diff --git a/chart2/source/tools/ExplicitCategoriesProvider.cxx b/chart2/source/tools/ExplicitCategoriesProvider.cxx index b388ed0576a5..9def633272b3 100644 --- a/chart2/source/tools/ExplicitCategoriesProvider.cxx +++ b/chart2/source/tools/ExplicitCategoriesProvider.cxx @@ -21,6 +21,7 @@ #include <DiagramHelper.hxx> #include <ChartType.hxx> #include <ChartTypeHelper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <DataSourceHelper.hxx> #include <ChartModel.hxx> @@ -61,7 +62,7 @@ ExplicitCategoriesProvider::ExplicitCategoriesProvider( const rtl::Reference< Ba if( xCooSysModel.is() ) { // TODO: handle different category names on the primary and secondary category axis. - uno::Reference< XAxis > xAxis( xCooSysModel->getAxisByDimension(0,0) ); + rtl::Reference< Axis > xAxis = xCooSysModel->getAxisByDimension2(0,0); if( xAxis.is() ) { ScaleData aScale( xAxis->getScaleData() ); @@ -180,7 +181,7 @@ void ExplicitCategoriesProvider::convertCategoryAnysToText( uno::Sequence< OUStr rtl::Reference< BaseCoordinateSystem > xCooSysModel( ChartModelHelper::getFirstCoordinateSystem( &rModel ) ); if( xCooSysModel.is() ) { - Reference< chart2::XAxis > xAxis( xCooSysModel->getAxisByDimension(0,0) ); + rtl::Reference< Axis > xAxis = xCooSysModel->getAxisByDimension2(0,0); nAxisNumberFormat = AxisHelper::getExplicitNumberFormatKeyForAxis( xAxis, xCooSysModel, &rModel, false ); } @@ -408,13 +409,13 @@ static bool lcl_fillDateCategories( const uno::Reference< data::XDataSequence >& bool bOwnData = false; bool bOwnDataAnddAxisHasAnyFormat = false; bool bOwnDataAnddAxisHasDateFormat = false; - Reference< XCoordinateSystem > xCooSysModel( ChartModelHelper::getFirstCoordinateSystem( &rModel ) ); + rtl::Reference< BaseCoordinateSystem > xCooSysModel( ChartModelHelper::getFirstCoordinateSystem( &rModel ) ); if( xCooSysModel.is() ) { if( rModel.hasInternalDataProvider() ) { bOwnData = true; - Reference< beans::XPropertySet > xAxisProps( xCooSysModel->getAxisByDimension(0,0), uno::UNO_QUERY ); + rtl::Reference< Axis > xAxisProps = xCooSysModel->getAxisByDimension2(0,0); sal_Int32 nAxisNumberFormat = 0; if (xAxisProps.is() && (xAxisProps->getPropertyValue(CHART_UNONAME_NUMFMT) >>= nAxisNumberFormat)) { diff --git a/chart2/source/tools/ObjectIdentifier.cxx b/chart2/source/tools/ObjectIdentifier.cxx index 6ac81020f4b6..a34c3a33d13e 100644 --- a/chart2/source/tools/ObjectIdentifier.cxx +++ b/chart2/source/tools/ObjectIdentifier.cxx @@ -26,6 +26,7 @@ #include <ChartModel.hxx> #include <ChartModelHelper.hxx> #include <ChartType.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <servicenames_charttypes.hxx> #include <DiagramHelper.hxx> @@ -395,6 +396,34 @@ OUString ObjectIdentifier::createClassifiedIdentifierForObject( return OUString(); } +OUString ObjectIdentifier::createClassifiedIdentifierForObject( + const rtl::Reference<::chart::Axis>& xAxis + , const rtl::Reference<::chart::ChartModel>& xChartModel ) +{ + try + { + //axis + if( xAxis.is() ) + { + rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemOfAxis( xAxis, ChartModelHelper::findDiagram( xChartModel ) ) ); + OUString aCooSysParticle( createParticleForCoordinateSystem( xCooSys, xChartModel ) ); + sal_Int32 nDimensionIndex=-1; + sal_Int32 nAxisIndex=-1; + AxisHelper::getIndicesForAxis( xAxis, xCooSys, nDimensionIndex, nAxisIndex ); + OUString aAxisParticle( createParticleForAxis( nDimensionIndex, nAxisIndex ) ); + return createClassifiedIdentifierForParticles( aCooSysParticle, aAxisParticle ); + } + } + catch(const uno::Exception&) + { + DBG_UNHANDLED_EXCEPTION("chart2"); + } + + OSL_FAIL("give object could not be identified in createClassifiedIdentifierForObject"); + + return OUString(); +} + OUString ObjectIdentifier::createClassifiedIdentifierForParticle( const OUString& rParticle ) { @@ -1108,10 +1137,10 @@ Reference< beans::XPropertySet > ObjectIdentifier::getObjectPropertySet( sal_Int32 nAxisIndex = -1; lcl_parseAxisIndices( nDimensionIndex, nAxisIndex, rObjectCID ); - Reference< chart2::XAxis > xAxis( - AxisHelper::getAxis( nDimensionIndex, nAxisIndex, xCooSys ) ); + rtl::Reference< Axis > xAxis = + AxisHelper::getAxis( nDimensionIndex, nAxisIndex, xCooSys ); if( xAxis.is() ) - xObjectProperties.set( xAxis, uno::UNO_QUERY ); + xObjectProperties = xAxis; } break; case OBJECTTYPE_AXIS_UNITLABEL: @@ -1226,7 +1255,7 @@ Reference< beans::XPropertySet > ObjectIdentifier::getObjectPropertySet( return xObjectProperties; } -Reference< XAxis > ObjectIdentifier::getAxisForCID( +rtl::Reference< Axis > ObjectIdentifier::getAxisForCID( const OUString& rObjectCID , const rtl::Reference<::chart::ChartModel>& xChartModel ) { diff --git a/chart2/source/tools/ReferenceSizeProvider.cxx b/chart2/source/tools/ReferenceSizeProvider.cxx index a8b35f008b5b..0b99582dde70 100644 --- a/chart2/source/tools/ReferenceSizeProvider.cxx +++ b/chart2/source/tools/ReferenceSizeProvider.cxx @@ -24,6 +24,7 @@ #include <DataSeries.hxx> #include <DiagramHelper.hxx> #include <Diagram.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/chart2/XTitled.hpp> @@ -245,19 +246,13 @@ ReferenceSizeProvider::AutoResizeState ReferenceSizeProvider::getAutoResizeState 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 @@ -323,13 +318,11 @@ void ReferenceSizeProvider::setAutoResizeState( ReferenceSizeProvider::AutoResiz setValuesAtPropertySet( xLegendProp ); // 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 diff --git a/chart2/source/tools/TitleHelper.cxx b/chart2/source/tools/TitleHelper.cxx index 06ffe005d67f..58d4d6980aa6 100644 --- a/chart2/source/tools/TitleHelper.cxx +++ b/chart2/source/tools/TitleHelper.cxx @@ -20,6 +20,7 @@ #include <TitleHelper.hxx> #include <ChartModel.hxx> #include <ChartModelHelper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <DiagramHelper.hxx> #include <Diagram.hxx> @@ -65,23 +66,23 @@ uno::Reference< XTitled > lcl_getTitleParentFromDiagram( break; case TitleHelper::X_AXIS_TITLE: if( xDiagram.is()) - xResult.set( AxisHelper::getAxis( 0, true, xDiagram ), uno::UNO_QUERY ); + xResult = AxisHelper::getAxis( 0, true, xDiagram ); break; case TitleHelper::Y_AXIS_TITLE: ... etc. - the rest is truncated