28#include <com/sun/star/drawing/Direction3D.hpp>
36namespace chart {
class ExplicitCategoriesProvider; }
37namespace chart {
struct ExplicitScaleData; }
38namespace chart {
class ChartModel; }
42 class XNumberFormatsSupplier;
46 class XRegressionCurveCalculator;
53class NumberFormatterWrapper;
60 void setFormat( sal_Int32 nFormatKey, sal_Int32 nDimIndex, sal_Int32 nAxisIndex )
93 ,
bool bSeparateStackingForDifferentSigns
94 ,
double& rfMinimumY,
double& rfMaximumY, sal_Int32 nAxisIndex ) const;
96 ,
bool bSeparateStackingForDifferentSigns
97 ,
double& rfMinimumY,
double& rfMaximumY, sal_Int32 nAxisIndex );
140 virtual void addSeries( std::unique_ptr<VDataSeries> pSeries, sal_Int32 zSlot, sal_Int32 xSlot, sal_Int32 ySlot );
165 virtual double getMinimumYInRange(
double fMinimumX,
double fMaximumX, sal_Int32 nAxisIndex )
override;
166 virtual double getMaximumYInRange(
double fMinimumX,
double fMaximumX, sal_Int32 nAxisIndex )
override;
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,
201 const css::awt::Size& rEntryKeyAspectRatio
206 const css::awt::Size& rEntryKeyAspectRatio
208 , sal_Int32 nPointIndex
212 const css::awt::Size& rEntryKeyAspectRatio,
214 const css::uno::Reference< css::beans::XPropertySet >& xTextProperties,
216 const css::uno::Reference< css::uno::XComponentContext >& xContext
220 const css::awt::Size& rEntryKeyAspectRatio
222 ,
const css::uno::Reference<css::uno::XComponentContext>& xContext);
225 const css::awt::Size& rEntryKeyAspectRatio
228 ,
const css::uno::Reference<css::uno::XComponentContext>& xContext);
235 , sal_Int32 nDimensionCount
236 ,
bool bExcludingPositioning );
244 void setColorScheme(
const css::uno::Reference< css::chart2::XColorScheme >& xColorScheme );
276 double fValue,
bool bAsPercentage);
281 , sal_Int32 nDimensionCount
282 ,
bool bCategoryXAxis=
true );
338 , sal_Int32 nPointIndex
341 ,
const css::awt::Point& rScreenPosition2D
343 , sal_Int32 nOffset=0
344 , sal_Int32 nTextWidth = 0 );
365 ,
const css::drawing::Position3D & rPos
366 ,
const css::uno::Reference< css::beans::XPropertySet > & xErrorBarProperties
370 ,
const double* pfScaledLogicX
374 const css::drawing::Position3D& rUnscaledLogicPosition
378 ,
bool bUseXErrorData
379 ,
bool bUseYErrorData
383 const css::drawing::Position3D& rPos0
384 ,
const css::drawing::Position3D& rPos1
386 ,
const css::uno::Reference< css::beans::XPropertySet >& rErrorBorderProp );
388 void createErrorBar_X(
const css::drawing::Position3D& rUnscaledLogicPosition
392 void createErrorBar_Y(
const css::drawing::Position3D& rUnscaledLogicPosition
395 ,
double const * pfScaledLogicX );
400 ,
bool bMaySkipPointsInRegressionCalculation );
403 ,
const css::uno::Reference< css::beans::XPropertySet > & xEquationProperties
405 ,
const css::uno::Reference< css::chart2::XRegressionCurveCalculator > & xRegressionCurveCalculator
406 , css::awt::Point aDefaultPos );
419 std::vector< std::vector< VDataSeriesGroup > >
m_aZSlots;
This class provides methods for setting axis scales and for performing scene to screen transformation...
A list of series that have the same CoordinateSystem.
sal_Int32 m_nMaxPointCount
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
bool m_bMaxPointCountDirty
sal_Int32 getAttachedAxisIndexForFirstSeries() const
void calculateYMinAndMaxForCategoryRange(sal_Int32 nStartCategoryIndex, sal_Int32 nEndCategoryIndex, bool bSeparateStackingForDifferentSigns, double &rfMinimumY, double &rfMaximumY, sal_Int32 nAxisIndex)
VDataSeriesGroup()=delete
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)
bool m_bPointsWereSkipped
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)
bool WantToPlotInFrontOfAxisLine()
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
bool m_bPieLabelsAllowToMove
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.
tools::Long m_nTimeResolution
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
This structure contains the explicit values for a scale like Minimum and Maximum.