summaryrefslogtreecommitdiff
path: root/chart2/source
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2022-01-21 18:43:59 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2022-01-22 08:17:54 +0100
commit98f360b261d7b36fa63b10fadb86cf6f381cbd36 (patch)
treea30f8bb8a5d3f9dbbf71b58642689e2b5617672d /chart2/source
parent571438a34ad9aba0d496a89e8345851331740fbd (diff)
use more concrete types in chart2, BaseCoordinateSystem
Change-Id: Iea726c410829fbd3f116ecead76610e356ef83ca Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128739 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'chart2/source')
-rw-r--r--chart2/source/model/template/StockChartTypeTemplate.cxx13
-rw-r--r--chart2/source/tools/AxisHelper.cxx29
-rw-r--r--chart2/source/tools/DiagramHelper.cxx262
3 files changed, 128 insertions, 176 deletions
diff --git a/chart2/source/model/template/StockChartTypeTemplate.cxx b/chart2/source/model/template/StockChartTypeTemplate.cxx
index 9f54c44cbca4..3cd5ec0e5c92 100644
--- a/chart2/source/model/template/StockChartTypeTemplate.cxx
+++ b/chart2/source/model/template/StockChartTypeTemplate.cxx
@@ -21,6 +21,8 @@
#include <DataSeriesHelper.hxx>
#include "StockDataInterpreter.hxx"
#include <DiagramHelper.hxx>
+#include <Diagram.hxx>
+#include <BaseCoordinateSystem.hxx>
#include <servicenames_charttypes.hxx>
#include <com/sun/star/chart2/XChartTypeContainer.hpp>
#include <com/sun/star/chart2/XDataSeriesContainer.hpp>
@@ -371,6 +373,8 @@ sal_Bool SAL_CALL StockChartTypeTemplate::matchesTemplate(
if( ! xDiagram.is())
return bResult;
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
try
{
@@ -385,14 +389,9 @@ sal_Bool SAL_CALL StockChartTypeTemplate::matchesTemplate(
Reference< chart2::XChartType > xLineChartType;
sal_Int32 nNumberOfChartTypes = 0;
- Reference< XCoordinateSystemContainer > xCooSysCnt(
- xDiagram, uno::UNO_QUERY_THROW );
- const Sequence< Reference< XCoordinateSystem > > aCooSysSeq(
- xCooSysCnt->getCoordinateSystems());
- for( Reference< XCoordinateSystem > const & coords : aCooSysSeq )
+ for( rtl::Reference< BaseCoordinateSystem > const & coords : pDiagram->getBaseCoordinateSystems() )
{
- Reference< XChartTypeContainer > xCTCnt( coords, uno::UNO_QUERY_THROW );
- const Sequence< Reference< XChartType > > aChartTypeSeq( xCTCnt->getChartTypes());
+ const Sequence< Reference< XChartType > > aChartTypeSeq( coords->getChartTypes());
for( Reference< XChartType > const & chartType : aChartTypeSeq )
{
if( chartType.is())
diff --git a/chart2/source/tools/AxisHelper.cxx b/chart2/source/tools/AxisHelper.cxx
index d936cf59c92b..38bdb6f4f98f 100644
--- a/chart2/source/tools/AxisHelper.cxx
+++ b/chart2/source/tools/AxisHelper.cxx
@@ -777,17 +777,15 @@ bool AxisHelper::getIndicesForAxis( const Reference< XAxis >& xAxis, const Refer
rOutDimensionIndex = -1;
rOutAxisIndex = -1;
- Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY );
- if(xCooSysContainer.is())
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
+ const std::vector< rtl::Reference< BaseCoordinateSystem > > & aCooSysList = pDiagram->getBaseCoordinateSystems();
+ for( sal_Int32 nC=0; nC < static_cast<sal_Int32>(aCooSysList.size()); ++nC )
{
- Sequence< Reference< XCoordinateSystem > > aCooSysList = xCooSysContainer->getCoordinateSystems();
- for( sal_Int32 nC=0; nC<aCooSysList.getLength(); ++nC )
+ if( AxisHelper::getIndicesForAxis( xAxis, aCooSysList[nC], rOutDimensionIndex, rOutAxisIndex ) )
{
- if( AxisHelper::getIndicesForAxis( xAxis, aCooSysList[nC], rOutDimensionIndex, rOutAxisIndex ) )
- {
- rOutCooSysIndex = nC;
- return true;
- }
+ rOutCooSysIndex = nC;
+ return true;
}
}
@@ -844,17 +842,14 @@ Sequence< Reference< XAxis > > AxisHelper::getAllAxesOfDiagram(
const Reference< XDiagram >& xDiagram
, bool bOnlyVisible )
{
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
std::vector< Reference< XAxis > > aAxisVector;
- Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY );
- if(xCooSysContainer.is())
+ for( rtl::Reference< BaseCoordinateSystem > const & coords : pDiagram->getBaseCoordinateSystems() )
{
- const Sequence< Reference< XCoordinateSystem > > aCooSysList = xCooSysContainer->getCoordinateSystems();
- for( Reference< XCoordinateSystem > const & coords : aCooSysList )
- {
- std::vector< Reference< XAxis > > aAxesPerCooSys( AxisHelper::getAllAxesOfCoordinateSystem( coords, bOnlyVisible ) );
- aAxisVector.insert( aAxisVector.end(), aAxesPerCooSys.begin(), aAxesPerCooSys.end() );
- }
+ std::vector< Reference< XAxis > > aAxesPerCooSys( AxisHelper::getAllAxesOfCoordinateSystem( coords, bOnlyVisible ) );
+ aAxisVector.insert( aAxisVector.end(), aAxesPerCooSys.begin(), aAxesPerCooSys.end() );
}
return comphelper::containerToSequence( aAxisVector );
diff --git a/chart2/source/tools/DiagramHelper.cxx b/chart2/source/tools/DiagramHelper.cxx
index 1aa9ad5cc381..7d9136e7291a 100644
--- a/chart2/source/tools/DiagramHelper.cxx
+++ b/chart2/source/tools/DiagramHelper.cxx
@@ -120,30 +120,24 @@ void DiagramHelper::setVertical(
{
try
{
- Reference< XCoordinateSystemContainer > xCnt( xDiagram, uno::UNO_QUERY );
- if (!xCnt.is())
+ if (!xDiagram.is())
return;
- const Sequence< Reference<XCoordinateSystem> > aCooSys = xCnt->getCoordinateSystems();
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
+
uno::Any aValue;
aValue <<= bVertical;
- for( uno::Reference< XCoordinateSystem > const & xCooSys : aCooSys )
+ for( rtl::Reference< BaseCoordinateSystem > const & xCooSys : pDiagram->getBaseCoordinateSystems() )
{
- Reference< beans::XPropertySet > xProp( xCooSys, uno::UNO_QUERY );
bool bChanged = false;
- if (xProp.is())
- {
- bool bOldSwap = false;
- if( !(xProp->getPropertyValue("SwapXAndYAxis") >>= bOldSwap)
- || bVertical != bOldSwap )
- bChanged = true;
+ bool bOldSwap = false;
+ if( !(xCooSys->getPropertyValue("SwapXAndYAxis") >>= bOldSwap)
+ || bVertical != bOldSwap )
+ bChanged = true;
- if( bChanged )
- xProp->setPropertyValue("SwapXAndYAxis", aValue);
- }
-
- if (!xCooSys.is())
- continue;
+ if( bChanged )
+ xCooSys->setPropertyValue("SwapXAndYAxis", aValue);
const sal_Int32 nDimensionCount = xCooSys->getDimension();
sal_Int32 nDimIndex = 0;
@@ -198,20 +192,16 @@ bool DiagramHelper::getVertical( const uno::Reference< chart2::XDiagram > & xDia
rbFound = false;
rbAmbiguous = false;
- Reference< XCoordinateSystemContainer > xCnt( xDiagram, uno::UNO_QUERY );
- if (!xCnt.is())
+ if (!xDiagram.is())
return false;
- const Sequence< Reference<XCoordinateSystem> > aCooSys = xCnt->getCoordinateSystems();
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
- for (Reference<XCoordinateSystem> const & coords : aCooSys)
+ for (rtl::Reference<BaseCoordinateSystem> const & coords : pDiagram->getBaseCoordinateSystems())
{
- Reference<beans::XPropertySet> xProp(coords, uno::UNO_QUERY);
- if (!xProp.is())
- continue;
-
bool bCurrent = false;
- if (xProp->getPropertyValue("SwapXAndYAxis") >>= bCurrent)
+ if (coords->getPropertyValue("SwapXAndYAxis") >>= bCurrent)
{
if (!rbFound)
{
@@ -233,6 +223,8 @@ void DiagramHelper::setStackMode(
StackMode eStackMode
)
{
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
try
{
bool bValueFound = false;
@@ -255,11 +247,7 @@ void DiagramHelper::setStackMode(
bPercent = true;
//iterate through all coordinate systems
- uno::Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY );
- if( !xCooSysContainer.is() )
- return;
- const uno::Sequence< uno::Reference< XCoordinateSystem > > aCooSysList( xCooSysContainer->getCoordinateSystems() );
- for( uno::Reference< XCoordinateSystem > const & xCooSys : aCooSysList )
+ for( rtl::Reference< BaseCoordinateSystem > const & xCooSys : pDiagram->getBaseCoordinateSystems() )
{
//set correct percent stacking
const sal_Int32 nMaximumScaleIndex = xCooSys->getMaximumAxisIndexByDimension(1);
@@ -280,10 +268,7 @@ void DiagramHelper::setStackMode(
}
}
//iterate through all chart types in the current coordinate system
- uno::Reference< XChartTypeContainer > xChartTypeContainer( xCooSys, uno::UNO_QUERY );
- if( !xChartTypeContainer.is() )
- continue;
- uno::Sequence< uno::Reference< XChartType > > aChartTypeList( xChartTypeContainer->getChartTypes() );
+ uno::Sequence< uno::Reference< XChartType > > aChartTypeList( xCooSys->getChartTypes() );
if (!aChartTypeList.hasElements())
continue;
@@ -317,18 +302,16 @@ StackMode DiagramHelper::getStackMode( const Reference< XDiagram > & xDiagram, b
StackMode eGlobalStackMode = StackMode::NONE;
- //iterate through all coordinate systems
- uno::Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY );
- if( !xCooSysContainer.is() )
+ if( !xDiagram.is() )
return eGlobalStackMode;
- const uno::Sequence< uno::Reference< XCoordinateSystem > > aCooSysList( xCooSysContainer->getCoordinateSystems() );
- for( uno::Reference< XCoordinateSystem > const & xCooSys : aCooSysList )
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
+
+ //iterate through all coordinate systems
+ for( rtl::Reference< BaseCoordinateSystem > const & xCooSys : pDiagram->getBaseCoordinateSystems() )
{
//iterate through all chart types in the current coordinate system
- uno::Reference< XChartTypeContainer > xChartTypeContainer( xCooSys, uno::UNO_QUERY );
- if( !xChartTypeContainer.is() )
- continue;
- uno::Sequence< uno::Reference< XChartType > > aChartTypeList( xChartTypeContainer->getChartTypes() );
+ uno::Sequence< uno::Reference< XChartType > > aChartTypeList( xCooSys->getChartTypes() );
for( sal_Int32 nT = 0; nT < aChartTypeList.getLength(); ++nT )
{
uno::Reference< XChartType > xChartType( aChartTypeList[nT] );
@@ -435,22 +418,20 @@ sal_Int32 DiagramHelper::getDimension( const Reference< XDiagram > & xDiagram )
{
// -1: not yet set
sal_Int32 nResult = -1;
+ if (!xDiagram)
+ return nResult;
+
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
try
{
- Reference< XCoordinateSystemContainer > xCooSysCnt( xDiagram, uno::UNO_QUERY );
- if( xCooSysCnt.is() )
+ for( rtl::Reference< BaseCoordinateSystem > const & xCooSys : pDiagram->getBaseCoordinateSystems() )
{
- const Sequence< Reference< XCoordinateSystem > > aCooSysSeq(
- xCooSysCnt->getCoordinateSystems());
-
- for( Reference< XCoordinateSystem > const & xCooSys : aCooSysSeq )
+ if(xCooSys.is())
{
- if(xCooSys.is())
- {
- nResult = xCooSys->getDimension();
- break;
- }
+ nResult = xCooSys->getDimension();
+ break;
}
}
}
@@ -468,6 +449,8 @@ void DiagramHelper::setDimension(
{
if( ! xDiagram.is())
return;
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
if( DiagramHelper::getDimension( xDiagram ) == nNewDimensionCount )
return;
@@ -480,23 +463,19 @@ void DiagramHelper::setDimension(
bool bIsSupportingOnlyDeepStackingFor3D=false;
//change all coordinate systems:
- Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY_THROW );
- const Sequence< Reference< XCoordinateSystem > > aCooSysList( xCooSysContainer->getCoordinateSystems() );
- for( Reference<XCoordinateSystem> const & xOldCooSys : aCooSysList )
+ auto aCoordSystems = pDiagram->getBaseCoordinateSystems();
+ for( rtl::Reference<BaseCoordinateSystem> const & xOldCooSys : aCoordSystems )
{
- Reference< XCoordinateSystem > xNewCooSys;
+ rtl::Reference< BaseCoordinateSystem > xNewCooSys;
- Reference< XChartTypeContainer > xChartTypeContainer( xOldCooSys, uno::UNO_QUERY );
- if( !xChartTypeContainer.is() )
- continue;
-
- const Sequence< Reference< XChartType > > aChartTypeList( xChartTypeContainer->getChartTypes() );
+ const Sequence< Reference< XChartType > > aChartTypeList( xOldCooSys->getChartTypes() );
for( Reference< XChartType > const & xChartType : aChartTypeList )
{
bIsSupportingOnlyDeepStackingFor3D = ChartTypeHelper::isSupportingOnlyDeepStackingFor3D( xChartType );
if(!xNewCooSys.is())
{
- xNewCooSys = xChartType->createCoordinateSystem( nNewDimensionCount );
+ xNewCooSys = dynamic_cast<BaseCoordinateSystem*>(xChartType->createCoordinateSystem( nNewDimensionCount ).get());
+ assert(xNewCooSys);
break;
}
//@todo make sure that all following charttypes are also capable of the new dimension
@@ -620,24 +599,18 @@ uno::Reference< XChartType > DiagramHelper::getChartTypeOfSeries(
return nullptr;
if(!xDiagram.is())
return nullptr;
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
//iterate through the model to find the given xSeries
//the found parent indicates the charttype
//iterate through all coordinate systems
- uno::Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY );
- if( !xCooSysContainer.is())
- return nullptr;
- const uno::Sequence< uno::Reference< XCoordinateSystem > > aCooSysList( xCooSysContainer->getCoordinateSystems() );
- for( uno::Reference< XCoordinateSystem > const & xCooSys : aCooSysList )
+ for( rtl::Reference< BaseCoordinateSystem > const & xCooSys : pDiagram->getBaseCoordinateSystems() )
{
//iterate through all chart types in the current coordinate system
- uno::Reference< XChartTypeContainer > xChartTypeContainer( xCooSys, uno::UNO_QUERY );
- OSL_ASSERT( xChartTypeContainer.is());
- if( !xChartTypeContainer.is() )
- continue;
- const uno::Sequence< uno::Reference< XChartType > > aChartTypeList( xChartTypeContainer->getChartTypes() );
+ const uno::Sequence< uno::Reference< XChartType > > aChartTypeList( xCooSys->getChartTypes() );
for( uno::Reference< XChartType > const & xChartType : aChartTypeList )
{
//iterate through all series in this chart type
@@ -662,17 +635,16 @@ std::vector< Reference< XDataSeries > >
const Reference< XDiagram > & xDiagram )
{
std::vector< Reference< XDataSeries > > aResult;
+ if (!xDiagram)
+ return aResult;
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
try
{
- Reference< XCoordinateSystemContainer > xCooSysCnt(
- xDiagram, uno::UNO_QUERY_THROW );
- const Sequence< Reference< XCoordinateSystem > > aCooSysSeq(
- xCooSysCnt->getCoordinateSystems());
- for( Reference< XCoordinateSystem > const & coords : aCooSysSeq )
+ for( rtl::Reference< BaseCoordinateSystem > const & coords : pDiagram->getBaseCoordinateSystems() )
{
- Reference< XChartTypeContainer > xCTCnt( coords, uno::UNO_QUERY_THROW );
- const Sequence< Reference< XChartType > > aChartTypeSeq( xCTCnt->getChartTypes());
+ const Sequence< Reference< XChartType > > aChartTypeSeq( coords->getChartTypes());
for( Reference< XChartType> const & chartType : aChartTypeSeq )
{
Reference< XDataSeriesContainer > xDSCnt( chartType, uno::UNO_QUERY_THROW );
@@ -692,27 +664,24 @@ std::vector< Reference< XDataSeries > >
Sequence< Sequence< Reference< XDataSeries > > >
DiagramHelper::getDataSeriesGroups( const Reference< XDiagram > & xDiagram )
{
+ if (!xDiagram)
+ return {};
+
vector< Sequence< Reference< XDataSeries > > > aResult;
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
//iterate through all coordinate systems
- Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY );
- if( xCooSysContainer.is() )
+ for( rtl::Reference< BaseCoordinateSystem > const & coords : pDiagram->getBaseCoordinateSystems() )
{
- const Sequence< Reference< XCoordinateSystem > > aCooSysList( xCooSysContainer->getCoordinateSystems() );
- for( Reference< XCoordinateSystem > const & coords : aCooSysList )
+ //iterate through all chart types in the current coordinate system
+ const Sequence< Reference< XChartType > > aChartTypeList( coords->getChartTypes() );
+ for( Reference< XChartType > const & chartType : aChartTypeList )
{
- //iterate through all chart types in the current coordinate system
- Reference< XChartTypeContainer > xChartTypeContainer( coords, uno::UNO_QUERY );
- if( !xChartTypeContainer.is() )
+ Reference< XDataSeriesContainer > xDataSeriesContainer( chartType, uno::UNO_QUERY );
+ if( !xDataSeriesContainer.is() )
continue;
- const Sequence< Reference< XChartType > > aChartTypeList( xChartTypeContainer->getChartTypes() );
- for( Reference< XChartType > const & chartType : aChartTypeList )
- {
- Reference< XDataSeriesContainer > xDataSeriesContainer( chartType, uno::UNO_QUERY );
- if( !xDataSeriesContainer.is() )
- continue;
- aResult.push_back( xDataSeriesContainer->getDataSeries() );
- }
+ aResult.push_back( xDataSeriesContainer->getDataSeries() );
}
}
return comphelper::containerToSequence( aResult );
@@ -721,21 +690,19 @@ Sequence< Sequence< Reference< XDataSeries > > >
Reference< XChartType >
DiagramHelper::getChartTypeByIndex( const Reference< XDiagram >& xDiagram, sal_Int32 nIndex )
{
+ if (!xDiagram)
+ return nullptr;
+
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
+
Reference< XChartType > xChartType;
//iterate through all coordinate systems
- Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY );
- if( ! xCooSysContainer.is())
- return xChartType;
-
- const Sequence< Reference< XCoordinateSystem > > aCooSysList( xCooSysContainer->getCoordinateSystems() );
sal_Int32 nTypesSoFar = 0;
- for( Reference< XCoordinateSystem > const & coords : aCooSysList )
+ for( rtl::Reference< BaseCoordinateSystem > const & coords : pDiagram->getBaseCoordinateSystems() )
{
- Reference< XChartTypeContainer > xChartTypeContainer( coords, uno::UNO_QUERY );
- if( !xChartTypeContainer.is() )
- continue;
- Sequence< Reference< XChartType > > aChartTypeList( xChartTypeContainer->getChartTypes() );
+ Sequence< Reference< XChartType > > aChartTypeList( coords->getChartTypes() );
if( nIndex >= 0 && nIndex < (nTypesSoFar + aChartTypeList.getLength()) )
{
xChartType.set( aChartTypeList[nIndex - nTypesSoFar] );
@@ -751,7 +718,7 @@ namespace
{
std::vector< Reference< XAxis > > lcl_getAxisHoldingCategoriesFromDiagram(
- const Reference< XDiagram > & xDiagram )
+ const rtl::Reference< Diagram > & xDiagram )
{
std::vector< Reference< XAxis > > aRet;
@@ -759,11 +726,7 @@ std::vector< Reference< XAxis > > lcl_getAxisHoldingCategoriesFromDiagram(
Reference< XAxis > xFallBack;
try
{
- Reference< XCoordinateSystemContainer > xCooSysCnt(
- xDiagram, uno::UNO_QUERY_THROW );
- const Sequence< Reference< XCoordinateSystem > > aCooSysSeq(
- xCooSysCnt->getCoordinateSystems());
- for( Reference< XCoordinateSystem > const & xCooSys : aCooSysSeq )
+ for( rtl::Reference< BaseCoordinateSystem > const & xCooSys : xDiagram->getBaseCoordinateSystems() )
{
OSL_ASSERT( xCooSys.is());
for( sal_Int32 nN = xCooSys->getDimension(); nN--; )
@@ -805,13 +768,10 @@ bool DiagramHelper::isCategoryDiagram(
{
try
{
- Reference< XCoordinateSystemContainer > xCooSysCnt(
- xDiagram, uno::UNO_QUERY_THROW );
- const Sequence< Reference< XCoordinateSystem > > aCooSysSeq(
- xCooSysCnt->getCoordinateSystems());
- for( Reference< XCoordinateSystem > const & xCooSys : aCooSysSeq )
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
+ for( rtl::Reference< BaseCoordinateSystem > const & xCooSys : pDiagram->getBaseCoordinateSystems() )
{
- OSL_ASSERT( xCooSys.is());
for( sal_Int32 nN = xCooSys->getDimension(); nN--; )
{
const sal_Int32 nMaximumScaleIndex = xCooSys->getMaximumAxisIndexByDimension(nN);
@@ -843,8 +803,10 @@ void DiagramHelper::setCategoriesToDiagram(
bool bSetAxisType /* = false */,
bool bCategoryAxis /* = true */ )
{
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
std::vector< Reference< chart2::XAxis > > aCatAxes(
- lcl_getAxisHoldingCategoriesFromDiagram( xDiagram ));
+ lcl_getAxisHoldingCategoriesFromDiagram( pDiagram ));
for (const Reference< chart2::XAxis >& xCatAxis : aCatAxes)
{
@@ -869,11 +831,13 @@ Reference< data::XLabeledDataSequence >
const Reference< XDiagram > & xDiagram )
{
Reference< data::XLabeledDataSequence > xResult;
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
try
{
std::vector< Reference< chart2::XAxis > > aCatAxes(
- lcl_getAxisHoldingCategoriesFromDiagram( xDiagram ));
+ lcl_getAxisHoldingCategoriesFromDiagram( pDiagram ));
//search for first categories
if (!aCatAxes.empty())
{
@@ -1193,28 +1157,24 @@ Sequence< Reference< XChartType > >
DiagramHelper::getChartTypesFromDiagram(
const Reference< XDiagram > & xDiagram )
{
- std::vector< Reference< XChartType > > aResult;
+ if(!xDiagram)
+ return {};
- if(xDiagram.is())
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(pDiagram);
+ std::vector< Reference< XChartType > > aResult;
+ try
{
- try
+ for( rtl::Reference< BaseCoordinateSystem > const & coords : pDiagram->getBaseCoordinateSystems() )
{
- Reference< XCoordinateSystemContainer > xCooSysCnt(
- xDiagram, uno::UNO_QUERY_THROW );
- const Sequence< Reference< XCoordinateSystem > > aCooSysSeq(
- xCooSysCnt->getCoordinateSystems());
- for( Reference< XCoordinateSystem > const & coords : aCooSysSeq )
- {
- Reference< XChartTypeContainer > xCTCnt( coords, uno::UNO_QUERY_THROW );
- const Sequence< Reference< XChartType > > aChartTypeSeq( xCTCnt->getChartTypes());
- aResult.insert( aResult.end(), aChartTypeSeq.begin(), aChartTypeSeq.end() );
- }
- }
- catch( const uno::Exception & )
- {
- DBG_UNHANDLED_EXCEPTION("chart2");
+ const Sequence< Reference< XChartType > > aChartTypeSeq( coords->getChartTypes());
+ aResult.insert( aResult.end(), aChartTypeSeq.begin(), aChartTypeSeq.end() );
}
}
+ catch( const uno::Exception & )
+ {
+ DBG_UNHANDLED_EXCEPTION("chart2");
+ }
return comphelper::containerToSequence( aResult );
}
@@ -1265,7 +1225,7 @@ namespace
*/
bool lcl_moveSeriesOrCheckIfMoveIsAllowed(
- const Reference< XDiagram >& xDiagram,
+ const rtl::Reference< Diagram >& xDiagram,
const Reference< XDataSeries >& xGivenDataSeries,
bool bForward,
bool bDoMove )
@@ -1274,24 +1234,18 @@ bool lcl_moveSeriesOrCheckIfMoveIsAllowed(
try
{
- uno::Reference< XCoordinateSystemContainer > xCooSysContainer( xDiagram, uno::UNO_QUERY );
-
- if( xGivenDataSeries.is() && xCooSysContainer.is() )
+ if( xGivenDataSeries.is() && xDiagram.is() )
{
//find position of series.
bool bFound = false;
- uno::Sequence< uno::Reference< XCoordinateSystem > > aCooSysList( xCooSysContainer->getCoordinateSystems() );
+ const std::vector< rtl::Reference< BaseCoordinateSystem > > & aCooSysList( xDiagram->getBaseCoordinateSystems() );
- for( sal_Int32 nCS = 0; !bFound && nCS < aCooSysList.getLength(); ++nCS )
+ for( sal_Int32 nCS = 0; !bFound && nCS < static_cast<sal_Int32>(aCooSysList.size()); ++nCS )
{
- uno::Reference< XCoordinateSystem > xCooSys( aCooSysList[nCS] );
+ const rtl::Reference< BaseCoordinateSystem > & xCooSys( aCooSysList[nCS] );
//iterate through all chart types in the current coordinate system
- uno::Reference< XChartTypeContainer > xChartTypeContainer( xCooSys, uno::UNO_QUERY );
- OSL_ASSERT( xChartTypeContainer.is());
- if( !xChartTypeContainer.is() )
- continue;
- uno::Sequence< uno::Reference< XChartType > > aChartTypeList( xChartTypeContainer->getChartTypes() );
+ uno::Sequence< uno::Reference< XChartType > > aChartTypeList( xCooSys->getChartTypes() );
uno::Reference< XChartType > xFormerChartType;
for( sal_Int32 nT = 0; !bFound && nT < aChartTypeList.getLength(); ++nT )
@@ -1420,8 +1374,10 @@ bool DiagramHelper::isSeriesMoveable(
{
const bool bDoMove = false;
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(!xDiagram || pDiagram);
bool bIsMoveable = lcl_moveSeriesOrCheckIfMoveIsAllowed(
- xDiagram, xGivenDataSeries, bForward, bDoMove );
+ pDiagram, xGivenDataSeries, bForward, bDoMove );
return bIsMoveable;
}
@@ -1430,8 +1386,10 @@ bool DiagramHelper::moveSeries( const Reference< XDiagram >& xDiagram, const Ref
{
const bool bDoMove = true;
+ Diagram* pDiagram = dynamic_cast<Diagram*>(xDiagram.get());
+ assert(!xDiagram || pDiagram);
bool bMoved = lcl_moveSeriesOrCheckIfMoveIsAllowed(
- xDiagram, xGivenDataSeries, bForward, bDoMove );
+ pDiagram, xGivenDataSeries, bForward, bDoMove );
return bMoved;
}