LibreOffice Module chart2 (master) 1
VSeriesPlotter.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19#pragma once
20
21#include <memory>
22#include "PlotterBase.hxx"
23#include "VDataSeries.hxx"
24#include "LabelAlignment.hxx"
28#include <com/sun/star/drawing/Direction3D.hpp>
29#include <rtl/ref.hxx>
30#include <svx/unoshape.hxx>
31
32namespace com::sun::star::awt { struct Point; }
33namespace com::sun::star::chart2 { class XChartType; }
34
35
36namespace chart { class ExplicitCategoriesProvider; }
37namespace chart { struct ExplicitScaleData; }
38namespace chart { class ChartModel; }
39
40namespace com::sun::star {
41 namespace util {
42 class XNumberFormatsSupplier;
43 }
44 namespace chart2 {
45 class XColorScheme;
46 class XRegressionCurveCalculator;
47 }
48}
49
50namespace chart {
51
52class ChartType;
53class NumberFormatterWrapper;
54
56{
57public:
59
60 void setFormat( sal_Int32 nFormatKey, sal_Int32 nDimIndex, sal_Int32 nAxisIndex )
61 {
62 m_aNumberFormatMap[tFullAxisIndex(nDimIndex,nAxisIndex)] = nFormatKey;
63 }
64
65private:
66 typedef std::pair< sal_Int32, sal_Int32 > tFullAxisIndex;
67 std::map< tFullAxisIndex, sal_Int32 > m_aNumberFormatMap;
68};
69
75{
76public:
77 VDataSeriesGroup() = delete;
78 VDataSeriesGroup( std::unique_ptr<VDataSeries> pSeries );
81
82 void addSeries( std::unique_ptr<VDataSeries> pSeries );//takes ownership of pSeries
83 sal_Int32 getSeriesCount() const;
84 void deleteSeries();
85
86 sal_Int32 getPointCount() const;
87 sal_Int32 getAttachedAxisIndexForFirstSeries() const;
88
89 void getMinimumAndMaximumX( double& rfMinimum, double& rfMaximum ) const;
90 void getMinimumAndMaximumYInContinuousXRange( double& rfMinY, double& rfMaxY, double fMinX, double fMaxX, sal_Int32 nAxisIndex ) const;
91
92 void calculateYMinAndMaxForCategory( sal_Int32 nCategoryIndex
93 , bool bSeparateStackingForDifferentSigns
94 , double& rfMinimumY, double& rfMaximumY, sal_Int32 nAxisIndex ) const;
95 void calculateYMinAndMaxForCategoryRange( sal_Int32 nStartCategoryIndex, sal_Int32 nEndCategoryIndex
96 , bool bSeparateStackingForDifferentSigns
97 , double& rfMinimumY, double& rfMaximumY, sal_Int32 nAxisIndex );
98
99 std::vector< std::unique_ptr<VDataSeries> > m_aSeriesVector;
100
101private:
102 //cached values
104 {
106
110 };
111
113 mutable sal_Int32 m_nMaxPointCount;
114 typedef std::map< sal_Int32, CachedYValues > tCachedYValuesPerAxisIndexMap;
115 mutable std::vector< tCachedYValuesPerAxisIndexMap > m_aListOfCachedYValues;
116};
117
119{
120public:
121 VSeriesPlotter() = delete;
122
123 virtual ~VSeriesPlotter() override;
124
140 virtual void addSeries( std::unique_ptr<VDataSeries> pSeries, sal_Int32 zSlot, sal_Int32 xSlot, sal_Int32 ySlot );
141
144 virtual css::drawing::Direction3D getPreferredDiagramAspectRatio() const;
145
158 void addSecondaryValueScale( const ExplicitScaleData& rScale, sal_Int32 nAxisIndex );
159
160 // MinimumAndMaximumSupplier
161
162 virtual double getMinimumX() override;
163 virtual double getMaximumX() override;
164
165 virtual double getMinimumYInRange( double fMinimumX, double fMaximumX, sal_Int32 nAxisIndex ) override;
166 virtual double getMaximumYInRange( double fMinimumX, double fMaximumX, sal_Int32 nAxisIndex ) override;
167
168 virtual double getMinimumZ() override;
169 virtual double getMaximumZ() override;
170
171 virtual bool isExpandBorderToIncrementRhythm( sal_Int32 nDimensionIndex ) override;
172 virtual bool isExpandIfValuesCloseToBorder( sal_Int32 nDimensionIndex ) override;
173 virtual bool isExpandWideValuesToZero( sal_Int32 nDimensionIndex ) override;
174 virtual bool isExpandNarrowValuesTowardZero( sal_Int32 nDimensionIndex ) override;
175 virtual bool isSeparateStackingForDifferentSigns( sal_Int32 nDimensionIndex ) override;
176
178 virtual void setTimeResolutionOnXAxis( tools::Long nTimeResolution, const Date& rNullDate ) override;
179
180 void getMinimumAndMaximumX( double& rfMinimum, double& rfMaximum ) const;
181 void getMinimumAndMaximumYInContinuousXRange( double& rfMinY, double& rfMaxY, double fMinX, double fMaxX, sal_Int32 nAxisIndex ) const;
182
183
184 // Methods for handling legends and legend entries.
185
186 virtual std::vector< ViewLegendEntry > createLegendEntries(
187 const css::awt::Size& rEntryKeyAspectRatio,
188 css::chart2::LegendPosition eLegendPosition,
189 const css::uno::Reference< css::beans::XPropertySet >& xTextProperties,
191 const css::uno::Reference< css::uno::XComponentContext >& xContext,
192 ChartModel& rModel
193 ) override;
194
196 virtual css::awt::Size getPreferredLegendKeyAspectRatio() override;
197
198 virtual css::uno::Any getExplicitSymbol( const VDataSeries& rSeries, sal_Int32 nPointIndex/*-1 for series symbol*/ );
199
201 const css::awt::Size& rEntryKeyAspectRatio
202 , const VDataSeries& rSeries
203 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
204
206 const css::awt::Size& rEntryKeyAspectRatio
207 , const VDataSeries& rSeries
208 , sal_Int32 nPointIndex
209 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
210
211 std::vector< ViewLegendEntry > createLegendEntriesForSeries(
212 const css::awt::Size& rEntryKeyAspectRatio,
213 const VDataSeries& rSeries,
214 const css::uno::Reference< css::beans::XPropertySet >& xTextProperties,
216 const css::uno::Reference< css::uno::XComponentContext >& xContext
217 );
218
219 std::vector<ViewLegendSymbol> createSymbols(
220 const css::awt::Size& rEntryKeyAspectRatio
221 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget
222 , const css::uno::Reference<css::uno::XComponentContext>& xContext);
223
224 std::vector<ViewLegendSymbol> createSymbolsForSeries(
225 const css::awt::Size& rEntryKeyAspectRatio
226 , const VDataSeries& rSeries
227 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget
228 , const css::uno::Reference<css::uno::XComponentContext>& xContext);
229
230 std::vector<VDataSeries*> getAllSeries();
231 std::vector<VDataSeries const*> getAllSeries() const;
232
233 // This method creates a series plotter of the requested type; e.g. : return new PieChart...
235 , sal_Int32 nDimensionCount
236 , bool bExcludingPositioning /*for pie and donut charts labels and exploded segments are excluded from the given size*/);
237
238 sal_Int32 getPointCount() const;
239
240 // Methods for number formats and color schemes
241
242 void setNumberFormatsSupplier( const css::uno::Reference< css::util::XNumberFormatsSupplier > & xNumFmtSupplier );
243
244 void setColorScheme( const css::uno::Reference< css::chart2::XColorScheme >& xColorScheme );
245
246 void setExplicitCategoriesProvider( ExplicitCategoriesProvider* pExplicitCategoriesProvider );
247
249
250 //get series names for the z axis labels
251 css::uno::Sequence<OUString> getSeriesNames() const;
252
253 //get all series names
254 css::uno::Sequence<OUString> getAllSeriesNames() const;
255
256 void setPageReferenceSize( const css::awt::Size & rPageRefSize );
257 //better performance for big data
258 void setCoordinateSystemResolution( const css::uno::Sequence< sal_Int32 >& rCoordinateSystemResolution );
260 void setPieLabelsAllowToMove( bool bIsPieOrDonut ) { m_bPieLabelsAllowToMove = bIsPieOrDonut; };
261 void setAvailableOuterRect( const basegfx::B2IRectangle& aAvailableOuterRect ) { m_aAvailableOuterRect = aAvailableOuterRect; };
262
263 //return the depth for a logic 1
264 double getTransformedDepth() const;
265
266 void releaseShapes();
267
268 virtual void rearrangeLabelToAvoidOverlapIfRequested( const css::awt::Size& rPageSize );
269
271 virtual bool shouldSnapRectToUsedArea();
272
275 OUString getLabelTextForValue(VDataSeries const & rDataSeries, sal_Int32 nPointIndex,
276 double fValue, bool bAsPercentage);
277
278protected:
279
281 , sal_Int32 nDimensionCount
282 , bool bCategoryXAxis=true );
283
284 // Methods for group shapes.
285
287 getSeriesGroupShape( VDataSeries* pDataSeries
288 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
289
290 //the following group shapes will be created as children of SeriesGroupShape on demand
291 //they can be used to assure that some parts of a series shape are always in front of others (e.g. symbols in front of lines)
292 //parameter xTarget will be used as parent for the series group shape
295 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
298 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
299
303 getLabelsGroupShape( VDataSeries& rDataSeries
304 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
305
308 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget, bool bYError );
309
337 , VDataSeries& rDataSeries
338 , sal_Int32 nPointIndex
339 , double fValue
340 , double fSumValue
341 , const css::awt::Point& rScreenPosition2D
342 , LabelAlignment eAlignment
343 , sal_Int32 nOffset=0
344 , sal_Int32 nTextWidth = 0 );
345
363 void createErrorBar(
365 , const css::drawing::Position3D & rPos
366 , const css::uno::Reference< css::beans::XPropertySet > & xErrorBarProperties
367 , const VDataSeries& rVDataSeries
368 , sal_Int32 nIndex
369 , bool bVertical
370 , const double* pfScaledLogicX
371 );
372
374 const css::drawing::Position3D& rUnscaledLogicPosition
375 , VDataSeries& rVDataSeries
376 , sal_Int32 nIndex
377 , const rtl::Reference<SvxShapeGroupAnyD>& rTarget
378 , bool bUseXErrorData
379 , bool bUseYErrorData
380 );
381
382 static void addErrorBorder(
383 const css::drawing::Position3D& rPos0
384 , const css::drawing::Position3D& rPos1
385 , const rtl::Reference<SvxShapeGroupAnyD>& rTarget
386 , const css::uno::Reference< css::beans::XPropertySet >& rErrorBorderProp );
387
388 void createErrorBar_X( const css::drawing::Position3D& rUnscaledLogicPosition
389 , VDataSeries& rVDataSeries, sal_Int32 nPointIndex
390 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget );
391
392 void createErrorBar_Y( const css::drawing::Position3D& rUnscaledLogicPosition
393 , VDataSeries& rVDataSeries, sal_Int32 nPointIndex
394 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget
395 , double const * pfScaledLogicX );
396
397 void createRegressionCurvesShapes( VDataSeries const & rVDataSeries
398 , const rtl::Reference<SvxShapeGroupAnyD>& xTarget
399 , const rtl::Reference<SvxShapeGroupAnyD>& xEquationTarget
400 , bool bMaySkipPointsInRegressionCalculation );
401
402 void createRegressionCurveEquationShapes( const OUString & rEquationCID
403 , const css::uno::Reference< css::beans::XPropertySet > & xEquationProperties
404 , const rtl::Reference<SvxShapeGroupAnyD>& xEquationTarget
405 , const css::uno::Reference< css::chart2::XRegressionCurveCalculator > & xRegressionCurveCalculator
406 , css::awt::Point aDefaultPos );
407
408 virtual PlottingPositionHelper& getPlottingPositionHelper( sal_Int32 nAxisIndex ) const;//nAxisIndex indicates whether the position belongs to the main axis ( nAxisIndex==0 ) or secondary axis ( nAxisIndex==1 )
409
411
412 OUString getCategoryName( sal_Int32 nPointIndex ) const;
413
414protected:
416
418
419 std::vector< std::vector< VDataSeriesGroup > > m_aZSlots;
420
421 bool m_bCategoryXAxis;//true->xvalues are indices (this would not be necessary if series for category chart wouldn't have x-values)
424
425 std::unique_ptr< NumberFormatterWrapper > m_apNumberFormatterWrapper;
426
427 css::uno::Reference< css::chart2::XColorScheme > m_xColorScheme;
428
430
431 //better performance for big data
432 css::uno::Sequence< sal_Int32 > m_aCoordinateSystemResolution;
436 css::awt::Size m_aPageReferenceSize;
437
438private:
439 typedef std::map< sal_Int32 , ExplicitScaleData > tSecondaryValueScales;
441
442 typedef std::map< sal_Int32 , std::unique_ptr<PlottingPositionHelper> > tSecondaryPosHelperMap;
444};
445
446} //namespace chart
447
448/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
std::map< tFullAxisIndex, sal_Int32 > m_aNumberFormatMap
void setFormat(sal_Int32 nFormatKey, sal_Int32 nDimIndex, sal_Int32 nAxisIndex)
std::pair< sal_Int32, sal_Int32 > tFullAxisIndex
This class provides methods for setting axis scales and for performing scene to screen transformation...
Definition: PlotterBase.hxx:43
A list of series that have the same CoordinateSystem.
void calculateYMinAndMaxForCategory(sal_Int32 nCategoryIndex, bool bSeparateStackingForDifferentSigns, double &rfMinimumY, double &rfMaximumY, sal_Int32 nAxisIndex) const
std::vector< tCachedYValuesPerAxisIndexMap > m_aListOfCachedYValues
void getMinimumAndMaximumX(double &rfMinimum, double &rfMaximum) const
sal_Int32 getPointCount() const
sal_Int32 getAttachedAxisIndexForFirstSeries() const
void calculateYMinAndMaxForCategoryRange(sal_Int32 nStartCategoryIndex, sal_Int32 nEndCategoryIndex, bool bSeparateStackingForDifferentSigns, double &rfMinimumY, double &rfMaximumY, sal_Int32 nAxisIndex)
sal_Int32 getSeriesCount() const
void getMinimumAndMaximumYInContinuousXRange(double &rfMinY, double &rfMaxY, double fMinX, double fMaxX, sal_Int32 nAxisIndex) const
std::map< sal_Int32, CachedYValues > tCachedYValuesPerAxisIndexMap
std::vector< std::unique_ptr< VDataSeries > > m_aSeriesVector
void addSeries(std::unique_ptr< VDataSeries > pSeries)
virtual std::vector< ViewLegendEntry > createLegendEntries(const css::awt::Size &rEntryKeyAspectRatio, css::chart2::LegendPosition eLegendPosition, const css::uno::Reference< css::beans::XPropertySet > &xTextProperties, const rtl::Reference< SvxShapeGroupAnyD > &xTarget, const css::uno::Reference< css::uno::XComponentContext > &xContext, ChartModel &rModel) override
bool PointsWereSkipped() const
ExplicitCategoriesProvider * m_pExplicitCategoriesProvider
void getMinimumAndMaximumX(double &rfMinimum, double &rfMaximum) const
virtual bool isExpandWideValuesToZero(sal_Int32 nDimensionIndex) override
std::vector< ViewLegendSymbol > createSymbolsForSeries(const css::awt::Size &rEntryKeyAspectRatio, const VDataSeries &rSeries, const rtl::Reference< SvxShapeGroupAnyD > &xTarget, const css::uno::Reference< css::uno::XComponentContext > &xContext)
void createErrorBar_X(const css::drawing::Position3D &rUnscaledLogicPosition, VDataSeries &rVDataSeries, sal_Int32 nPointIndex, const rtl::Reference< SvxShapeGroupAnyD > &xTarget)
css::uno::Sequence< sal_Int32 > m_aCoordinateSystemResolution
double getTransformedDepth() const
static rtl::Reference< SvxShapeGroup > getLabelsGroupShape(VDataSeries &rDataSeries, const rtl::Reference< SvxShapeGroupAnyD > &xTarget)
This method creates a 2D group shape for containing all text shapes needed for this series; the group...
void addSecondaryValueScale(const ExplicitScaleData &rScale, sal_Int32 nAxisIndex)
this enables you to handle series on the same x axis with different y axis the property AttachedAxisI...
std::vector< ViewLegendEntry > createLegendEntriesForSeries(const css::awt::Size &rEntryKeyAspectRatio, const VDataSeries &rSeries, const css::uno::Reference< css::beans::XPropertySet > &xTextProperties, const rtl::Reference< SvxShapeGroupAnyD > &xTarget, const css::uno::Reference< css::uno::XComponentContext > &xContext)
rtl::Reference< SvxShapeText > createDataLabel(const rtl::Reference< SvxShapeGroupAnyD > &xTarget, VDataSeries &rDataSeries, sal_Int32 nPointIndex, double fValue, double fSumValue, const css::awt::Point &rScreenPosition2D, LabelAlignment eAlignment, sal_Int32 nOffset=0, sal_Int32 nTextWidth=0)
This method creates a text shape for a label related to a data point and append it to the root text s...
ExplicitCategoriesProvider * getExplicitCategoriesProvider()
css::awt::Size m_aPageReferenceSize
void createErrorBar_Y(const css::drawing::Position3D &rUnscaledLogicPosition, VDataSeries &rVDataSeries, sal_Int32 nPointIndex, const rtl::Reference< SvxShapeGroupAnyD > &xTarget, double const *pfScaledLogicX)
virtual double getMinimumX() override
virtual bool isExpandNarrowValuesTowardZero(sal_Int32 nDimensionIndex) override
css::uno::Reference< css::chart2::XColorScheme > m_xColorScheme
static void addErrorBorder(const css::drawing::Position3D &rPos0, const css::drawing::Position3D &rPos1, const rtl::Reference< SvxShapeGroupAnyD > &rTarget, const css::uno::Reference< css::beans::XPropertySet > &rErrorBorderProp)
rtl::Reference< SvxShapeGroup > createLegendSymbolForSeries(const css::awt::Size &rEntryKeyAspectRatio, const VDataSeries &rSeries, const rtl::Reference< SvxShapeGroupAnyD > &xTarget)
sal_Int32 getPointCount() const
virtual ~VSeriesPlotter() override
PlottingPositionHelper * m_pMainPosHelper
virtual double getMaximumYInRange(double fMinimumX, double fMaximumX, sal_Int32 nAxisIndex) override
void setNumberFormatsSupplier(const css::uno::Reference< css::util::XNumberFormatsSupplier > &xNumFmtSupplier)
void setAvailableOuterRect(const basegfx::B2IRectangle &aAvailableOuterRect)
static VSeriesPlotter * createSeriesPlotter(const rtl::Reference< ::chart::ChartType > &xChartTypeModel, sal_Int32 nDimensionCount, bool bExcludingPositioning)
std::unique_ptr< NumberFormatterWrapper > m_apNumberFormatterWrapper
virtual bool isExpandIfValuesCloseToBorder(sal_Int32 nDimensionIndex) override
virtual tools::Long calculateTimeResolutionOnXAxis() override
virtual void setTimeResolutionOnXAxis(tools::Long nTimeResolution, const Date &rNullDate) override
std::map< sal_Int32, ExplicitScaleData > tSecondaryValueScales
rtl::Reference< SvxShapeGroupAnyD > getSeriesGroupShapeBackChild(VDataSeries *pDataSeries, const rtl::Reference< SvxShapeGroupAnyD > &xTarget)
virtual css::awt::Size getPreferredLegendKeyAspectRatio() override
tSecondaryValueScales m_aSecondaryValueScales
rtl::Reference< SvxShapeGroupAnyD > getSeriesGroupShape(VDataSeries *pDataSeries, const rtl::Reference< SvxShapeGroupAnyD > &xTarget)
void createRegressionCurveEquationShapes(const OUString &rEquationCID, const css::uno::Reference< css::beans::XPropertySet > &xEquationProperties, const rtl::Reference< SvxShapeGroupAnyD > &xEquationTarget, const css::uno::Reference< css::chart2::XRegressionCurveCalculator > &xRegressionCurveCalculator, css::awt::Point aDefaultPos)
virtual double getMaximumZ() override
std::vector< ViewLegendSymbol > createSymbols(const css::awt::Size &rEntryKeyAspectRatio, const rtl::Reference< SvxShapeGroupAnyD > &xTarget, const css::uno::Reference< css::uno::XComponentContext > &xContext)
virtual PlottingPositionHelper & getPlottingPositionHelper(sal_Int32 nAxisIndex) const
void setPageReferenceSize(const css::awt::Size &rPageRefSize)
virtual bool shouldSnapRectToUsedArea()
void setCoordinateSystemResolution(const css::uno::Sequence< sal_Int32 > &rCoordinateSystemResolution)
virtual double getMaximumX() override
std::vector< std::vector< VDataSeriesGroup > > m_aZSlots
virtual LegendSymbolStyle getLegendSymbolStyle()
void createRegressionCurvesShapes(VDataSeries const &rVDataSeries, const rtl::Reference< SvxShapeGroupAnyD > &xTarget, const rtl::Reference< SvxShapeGroupAnyD > &xEquationTarget, bool bMaySkipPointsInRegressionCalculation)
rtl::Reference< ::chart::ChartType > m_xChartTypeModel
void setPieLabelsAllowToMove(bool bIsPieOrDonut)
virtual double getMinimumYInRange(double fMinimumX, double fMaximumX, sal_Int32 nAxisIndex) override
virtual css::drawing::Direction3D getPreferredDiagramAspectRatio() const
a value <= 0 for a directions means that this direction can be stretched arbitrary
basegfx::B2IRectangle m_aAvailableOuterRect
rtl::Reference< SvxShapeGroupAnyD > getSeriesGroupShapeFrontChild(VDataSeries *pDataSeries, const rtl::Reference< SvxShapeGroupAnyD > &xTarget)
virtual css::uno::Any getExplicitSymbol(const VDataSeries &rSeries, sal_Int32 nPointIndex)
VSeriesPlotter(rtl::Reference< ::chart::ChartType > xChartTypeModel, sal_Int32 nDimensionCount, bool bCategoryXAxis=true)
void createErrorRectangle(const css::drawing::Position3D &rUnscaledLogicPosition, VDataSeries &rVDataSeries, sal_Int32 nIndex, const rtl::Reference< SvxShapeGroupAnyD > &rTarget, bool bUseXErrorData, bool bUseYErrorData)
virtual void rearrangeLabelToAvoidOverlapIfRequested(const css::awt::Size &rPageSize)
css::uno::Sequence< OUString > getAllSeriesNames() const
virtual bool isSeparateStackingForDifferentSigns(sal_Int32 nDimensionIndex) override
rtl::Reference< SvxShapeGroupAnyD > getErrorBarsGroupShape(VDataSeries &rDataSeries, const rtl::Reference< SvxShapeGroupAnyD > &xTarget, bool bYError)
virtual void addSeries(std::unique_ptr< VDataSeries > pSeries, sal_Int32 zSlot, sal_Int32 xSlot, sal_Int32 ySlot)
A new series can be positioned relative to other series in a chart.
rtl::Reference< SvxShapeGroup > createLegendSymbolForPoint(const css::awt::Size &rEntryKeyAspectRatio, const VDataSeries &rSeries, sal_Int32 nPointIndex, const rtl::Reference< SvxShapeGroupAnyD > &xTarget)
css::uno::Sequence< OUString > getSeriesNames() const
tSecondaryPosHelperMap m_aSecondaryPosHelperMap
VDataSeries * getFirstSeries() const
std::vector< VDataSeries * > getAllSeries()
virtual bool isExpandBorderToIncrementRhythm(sal_Int32 nDimensionIndex) override
std::map< sal_Int32, std::unique_ptr< PlottingPositionHelper > > tSecondaryPosHelperMap
OUString getCategoryName(sal_Int32 nPointIndex) const
void createErrorBar(const rtl::Reference< SvxShapeGroupAnyD > &xTarget, const css::drawing::Position3D &rPos, const css::uno::Reference< css::beans::XPropertySet > &xErrorBarProperties, const VDataSeries &rVDataSeries, sal_Int32 nIndex, bool bVertical, const double *pfScaledLogicX)
creates two T-shaped error bars in both directions (up/down or left/right depending on the bVertical ...
void setColorScheme(const css::uno::Reference< css::chart2::XColorScheme > &xColorScheme)
virtual double getMinimumZ() override
OUString getLabelTextForValue(VDataSeries const &rDataSeries, sal_Int32 nPointIndex, double fValue, bool bAsPercentage)
This method returns a text string representation of the passed numeric value by exploiting a NumberFo...
void setExplicitCategoriesProvider(ExplicitCategoriesProvider *pExplicitCategoriesProvider)
void getMinimumAndMaximumYInContinuousXRange(double &rfMinY, double &rfMaxY, double fMinX, double fMaxX, sal_Int32 nAxisIndex) const
long Long
This structure contains the explicit values for a scale like Minimum and Maximum.