summaryrefslogtreecommitdiffstats
path: root/chart2
diff options
context:
space:
mode:
authorBalazs Varga <balazs.varga991@gmail.com>2018-12-05 16:00:09 +0100
committerBartosz Kosiorek <gang65@poczta.onet.pl>2018-12-07 13:39:22 +0100
commit40144617ce05d7eff86eeb8a412c6991fe0b819e (patch)
tree4baebc95d1c2aa050eae8e6b62876f9071110f74 /chart2
parentUpgrade external/postgresql to postgresql-9.2.24 (diff)
downloadcore-40144617ce05d7eff86eeb8a412c6991fe0b819e.tar.gz
core-40144617ce05d7eff86eeb8a412c6991fe0b819e.zip
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.cxx21
-rw-r--r--chart2/source/view/inc/LegendEntryProvider.hxx4
-rw-r--r--chart2/source/view/inc/VSeriesPlotter.hxx4
-rw-r--r--chart2/source/view/main/VLegend.cxx2
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() );
}
}