diff options
author | Balazs Varga <balazs.varga991@gmail.com> | 2018-12-05 16:00:09 +0100 |
---|---|---|
committer | Bartosz Kosiorek <gang65@poczta.onet.pl> | 2018-12-07 13:39:22 +0100 |
commit | 40144617ce05d7eff86eeb8a412c6991fe0b819e (patch) | |
tree | 4baebc95d1c2aa050eae8e6b62876f9071110f74 /chart2 | |
parent | a01ac385ed16fbe4239938c9d31462691707e87b (diff) |
tdf#114163 Chart: fix order of legend names
Respecting the axis direction in case of
normal/stacked/percent stacked Bar chart and
the legend names will be in the right order.
Change-Id: If782393a33e48dae32f919d137e1d1148a85b0b0
Reviewed-on: https://gerrit.libreoffice.org/64632
Tested-by: Jenkins
Reviewed-by: Bartosz Kosiorek <gang65@poczta.onet.pl>
Diffstat (limited to 'chart2')
-rw-r--r-- | chart2/source/view/charttypes/VSeriesPlotter.cxx | 21 | ||||
-rw-r--r-- | chart2/source/view/inc/LegendEntryProvider.hxx | 4 | ||||
-rw-r--r-- | chart2/source/view/inc/VSeriesPlotter.hxx | 4 | ||||
-rw-r--r-- | chart2/source/view/main/VLegend.cxx | 2 |
4 files changed, 27 insertions, 4 deletions
diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx index ee76f7351d93..a79fadcc974b 100644 --- a/chart2/source/view/charttypes/VSeriesPlotter.cxx +++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx @@ -40,6 +40,7 @@ #include <DateHelper.hxx> #include <DiagramHelper.hxx> #include <defines.hxx> +#include <ChartModel.hxx> //only for creation: @todo remove if all plotter are uno components and instantiated via servicefactory #include "BarChart.hxx" @@ -66,6 +67,7 @@ #include <basegfx/vector/b2dvector.hxx> #include <com/sun/star/drawing/LineStyle.hpp> #include <com/sun/star/util/XCloneable.hpp> +#include <com/sun/star/chart2/XCoordinateSystemContainer.hpp> #include <com/sun/star/style/ParagraphAdjust.hpp> #include <com/sun/star/drawing/XShapes.hpp> @@ -2188,12 +2190,26 @@ std::vector< ViewLegendEntry > VSeriesPlotter::createLegendEntries( , const Reference< drawing::XShapes >& xTarget , const Reference< lang::XMultiServiceFactory >& xShapeFactory , const Reference< uno::XComponentContext >& xContext + , ChartModel& rModel ) { std::vector< ViewLegendEntry > aResult; if( xTarget.is() ) { + uno::Reference< XCoordinateSystemContainer > xCooSysCnt( rModel.getFirstDiagram(), uno::UNO_QUERY ); + Reference< chart2::XCoordinateSystem > xCooSys(xCooSysCnt->getCoordinateSystems()[0]); + Reference< beans::XPropertySet > xProp( xCooSys, uno::UNO_QUERY ); + bool bSwapXAndY = false; + + if( xProp.is()) try + { + xProp->getPropertyValue( "SwapXAndYAxis" ) >>= bSwapXAndY; + } + catch( const uno::Exception& ) + { + } + //iterate through all series bool bBreak = false; bool bFirstSeries = true; @@ -2234,7 +2250,10 @@ std::vector< ViewLegendEntry > VSeriesPlotter::createLegendEntries( StackingDirection eStackingDirection( pSeries->getStackingDirection() ); bReverse = ( eStackingDirection == StackingDirection_Y_STACKING ); - //todo: respect direction of axis in future + if( bSwapXAndY ) + { + bReverse = !bReverse; + } } if (bReverse) diff --git a/chart2/source/view/inc/LegendEntryProvider.hxx b/chart2/source/view/inc/LegendEntryProvider.hxx index 3ad8a94b8832..aff7a5d84116 100644 --- a/chart2/source/view/inc/LegendEntryProvider.hxx +++ b/chart2/source/view/inc/LegendEntryProvider.hxx @@ -25,6 +25,7 @@ #include <com/sun/star/uno/Sequence.h> #include <vector> +namespace chart { class ChartModel; } namespace com { namespace sun { namespace star { namespace beans { class XPropertySet; } } } } namespace com { namespace sun { namespace star { namespace chart2 { class XFormattedString2; } } } } namespace com { namespace sun { namespace star { namespace drawing { class XShape; } } } } @@ -75,7 +76,8 @@ public: const css::uno::Reference< css::beans::XPropertySet >& xTextProperties, const css::uno::Reference< css::drawing::XShapes >& xTarget, const css::uno::Reference< css::lang::XMultiServiceFactory >& xShapeFactory, - const css::uno::Reference< css::uno::XComponentContext >& xContext + const css::uno::Reference< css::uno::XComponentContext >& xContext, + ChartModel& rModel ) = 0; protected: diff --git a/chart2/source/view/inc/VSeriesPlotter.hxx b/chart2/source/view/inc/VSeriesPlotter.hxx index e181c7590a71..445411523359 100644 --- a/chart2/source/view/inc/VSeriesPlotter.hxx +++ b/chart2/source/view/inc/VSeriesPlotter.hxx @@ -33,6 +33,7 @@ namespace com { namespace sun { namespace star { namespace chart2 { class XChart namespace chart { class ExplicitCategoriesProvider; } namespace chart { struct ExplicitScaleData; } +namespace chart { class ChartModel; } namespace com { namespace sun { namespace star { namespace util { @@ -197,7 +198,8 @@ public: const css::uno::Reference< css::beans::XPropertySet >& xTextProperties, const css::uno::Reference< css::drawing::XShapes >& xTarget, const css::uno::Reference< css::lang::XMultiServiceFactory >& xShapeFactory, - const css::uno::Reference< css::uno::XComponentContext >& xContext + const css::uno::Reference< css::uno::XComponentContext >& xContext, + ChartModel& rModel ) override; virtual LegendSymbolStyle getLegendSymbolStyle(); diff --git a/chart2/source/view/main/VLegend.cxx b/chart2/source/view/main/VLegend.cxx index 52a4f78fd8c9..d201a2c72756 100644 --- a/chart2/source/view/main/VLegend.cxx +++ b/chart2/source/view/main/VLegend.cxx @@ -949,7 +949,7 @@ void VLegend::createShapes( { std::vector<ViewLegendEntry> aNewEntries = pLegendEntryProvider->createLegendEntries( aMaxSymbolExtent, eExpansion, xLegendProp, - xLegendContainer, m_xShapeFactory, m_xContext); + xLegendContainer, m_xShapeFactory, m_xContext, mrModel); aViewEntries.insert( aViewEntries.end(), aNewEntries.begin(), aNewEntries.end() ); } } |