22#include <com/sun/star/chart/DataLabelPlacement.hpp>
23#include <com/sun/star/chart2/RelativePosition.hpp>
24#include <com/sun/star/chart/ErrorBarStyle.hpp>
25#include <com/sun/star/chart2/DataPointLabel.hpp>
26#include <com/sun/star/drawing/Hatch.hpp>
27#include <com/sun/star/chart2/XChartDocument.hpp>
28#include <com/sun/star/chart2/XDataPointCustomLabelField.hpp>
29#include <com/sun/star/chart2/DataPointCustomLabelField.hpp>
30#include <com/sun/star/chart2/DataPointCustomLabelFieldType.hpp>
31#include <com/sun/star/chart2/XDataSeries.hpp>
32#include <com/sun/star/chart2/XRegressionCurve.hpp>
33#include <com/sun/star/chart2/XRegressionCurveContainer.hpp>
34#include <com/sun/star/chart2/data/XDataSink.hpp>
35#include <com/sun/star/chart2/data/LabeledDataSequence.hpp>
36#include <com/sun/star/lang/XMultiServiceFactory.hpp>
37#include <com/sun/star/drawing/FillStyle.hpp>
40#include <osl/diagnose.h>
49#include <oox/token/properties.hxx>
50#include <oox/token/tokens.hxx>
68Reference< XLabeledDataSequence > lclCreateLabeledDataSequence(
69 const ConverterRoot& rParent,
70 DataSourceModel* pValues,
const OUString& rRole,
71 TextModel* pTitle =
nullptr )
74 Reference< XDataSequence > xValueSeq;
77 DataSourceConverter aSourceConv( rParent, *pValues );
78 xValueSeq = aSourceConv.createDataSequence( rRole );
82 Reference< XDataSequence > xTitleSeq;
85 TextConverter aTextConv( rParent, *pTitle );
86 xTitleSeq = aTextConv.createDataSequence(
"label" );
90 Reference< XLabeledDataSequence > xLabeledSeq;
91 if( xValueSeq.is() || xTitleSeq.is() )
93 xLabeledSeq = LabeledDataSequence::create(rParent.getComponentContext());
94 if( xLabeledSeq.is() )
96 xLabeledSeq->setValues( xValueSeq );
97 xLabeledSeq->setLabel( xTitleSeq );
103void convertTextProperty(
PropertySet& rPropSet, ObjectFormatter& rFormatter,
111void lclConvertLabelFormatting(
PropertySet& rPropSet, ObjectFormatter& rFormatter,
112 DataLabelModelBase& rDataLabel,
const TypeGroupConverter& rTypeGroup,
113 bool bDataSeriesLabel,
bool bCustomLabelField,
bool bHasInternalData,
bool bMSO2007Doc )
115 const TypeGroupInfo& rTypeInfo = rTypeGroup.getTypeInfo();
124 bool bHasAnyElement =
true;
127 bHasAnyElement = rDataLabel.moaSeparator.has_value() || rDataLabel.monLabelPos.has_value() ||
128 rDataLabel.mobShowCatName.has_value() || rDataLabel.mobShowLegendKey.has_value() ||
129 rDataLabel.mobShowPercent.has_value() || rDataLabel.mobShowSerName.has_value() ||
130 rDataLabel.mobShowVal.has_value();
133 bool bShowValue = !rDataLabel.mbDeleted && rDataLabel.mobShowVal.value_or( !bMSO2007Doc );
134 bool bShowPercent = !rDataLabel.mbDeleted && rDataLabel.mobShowPercent.value_or( !bMSO2007Doc ) && (rTypeInfo.meTypeCategory ==
TYPECATEGORY_PIE);
135 bool bShowCateg = !rDataLabel.mbDeleted && rDataLabel.mobShowCatName.value_or( !bMSO2007Doc );
136 bool bShowSerName = !rDataLabel.mbDeleted && rDataLabel.mobShowSerName.value_or( !bMSO2007Doc );
137 bool bShowSymbol = !rDataLabel.mbDeleted && rDataLabel.mobShowLegendKey.value_or( !bMSO2007Doc );
140 if( bHasInternalData && bShowValue && !bShowPercent )
141 rDataLabel.maNumberFormat.mbSourceLinked =
false;
144 if( bHasAnyElement || rDataLabel.mbDeleted )
146 DataPointLabel aPointLabel( bShowValue, bShowPercent, bShowCateg, bShowSymbol, bCustomLabelField, bShowSerName );
150 if( rDataLabel.mbDeleted )
154 rFormatter.convertNumberFormat( rPropSet, rDataLabel.maNumberFormat,
false, bShowPercent );
157 if( bDataSeriesLabel || (rDataLabel.mxTextProp.is() && !rDataLabel.mxTextProp->getParagraphs().empty()) )
158 convertTextProperty(rPropSet, rFormatter, rDataLabel.mxTextProp);
163 if( bShowPercent && !bShowValue && ( bDataSeriesLabel || rDataLabel.moaSeparator.has_value() ) )
164 rPropSet.
setProperty( PROP_LabelSeparator, rDataLabel.moaSeparator.value_or(
"\n" ) );
165 else if( bDataSeriesLabel || rDataLabel.moaSeparator.has_value() )
166 rPropSet.
setProperty( PROP_LabelSeparator, rDataLabel.moaSeparator.value_or(
"; " ) );
169 if( !(bDataSeriesLabel || rDataLabel.monLabelPos.has_value()) )
172 namespace csscd = ::com::sun::star::chart::DataLabelPlacement;
173 sal_Int32 nPlacement = -1;
174 switch( rDataLabel.monLabelPos.value_or( XML_TOKEN_INVALID ) )
176 case XML_outEnd: nPlacement = csscd::OUTSIDE;
break;
177 case XML_inEnd: nPlacement = csscd::INSIDE;
break;
178 case XML_ctr: nPlacement = csscd::CENTER;
break;
179 case XML_inBase: nPlacement = csscd::NEAR_ORIGIN;
break;
180 case XML_t: nPlacement = csscd::TOP;
break;
181 case XML_b: nPlacement = csscd::BOTTOM;
break;
182 case XML_l: nPlacement = csscd::LEFT;
break;
183 case XML_r: nPlacement = csscd::RIGHT;
break;
184 case XML_bestFit: nPlacement = csscd::AVOID_OVERLAP;
break;
187 if( !bDataSeriesLabel && nPlacement == -1 )
190 if( nPlacement == -1 )
191 nPlacement = rTypeInfo.mnDefLabelPos;
193 rPropSet.
setProperty( PROP_LabelPlacement, nPlacement );
200 if (rLP.maLineFill.moFillType.has_value() && rLP.maLineFill.moFillType.value() == XML_noFill)
203 if (rLP.moLineWidth.has_value())
209 const Color& aColor = rLP.maLineFill.maFillColor;
210 ::Color nColor = aColor.getColor(rGraphicHelper);
216 FillProperties& rFP = rShape.getFillProperties();
218 if (rFP.moFillType.has_value() && rFP.moFillType.value() == XML_solidFill)
220 rPropSet.
setProperty(PROP_LabelFillStyle, drawing::FillStyle_SOLID);
222 const Color& aColor = rFP.maFillColor;
223 ::Color nColor = aColor.getColor(rGraphicHelper);
226 else if(rFP.moFillType.has_value() && rFP.moFillType.value() == XML_pattFill)
228 rPropSet.
setProperty(PROP_LabelFillStyle, drawing::FillStyle_HATCH);
229 rPropSet.
setProperty(PROP_LabelFillBackground,
true);
231 Color aHatchColor( rFP.maPatternProps.maPattFgColor );
232 drawing::Hatch aHatch =
createHatch(rFP.maPatternProps.moPattPreset.value(), aHatchColor.getColor(rGraphicHelper, 0));
235 rPropSet.
setProperty(PROP_LabelFillHatchName, sHatchName);
237 const Color& aColor = rFP.maPatternProps.maPattBgColor;
238 ::Color nColor = aColor.getColor(rGraphicHelper);
244DataPointCustomLabelFieldType lcl_ConvertFieldNameToFieldEnum( std::u16string_view rField )
246 if (rField == u
"VALUE")
247 return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_VALUE;
248 else if (rField == u
"SERIESNAME")
249 return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_SERIESNAME;
250 else if (rField == u
"CATEGORYNAME")
251 return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CATEGORYNAME;
252 else if (rField == u
"CELLREF")
253 return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLREF;
254 else if (rField == u
"CELLRANGE")
255 return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLRANGE;
256 else if (rField == u
"PERCENTAGE")
257 return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_PERCENTAGE;
259 return DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT;
275 if (!rxDataSeries.is())
285 lclConvertLabelFormatting( aPropSet,
getFormatter(),
mrModel, rTypeGroup,
false, bCustomLabelField, bHasInternalData, bMSO2007Doc );
293 aPropSet.
setProperty(PROP_CustomLabelPosition, aPos);
294 sal_Int32 nPlacement = -1;
296 && nPlacement == css::chart::DataLabelPlacement::AVOID_OVERLAP)
308 if( bCustomLabelField )
312 auto& rParagraphs =
mrModel.
mxText->mxTextBody->getParagraphs();
314 int nSequenceSize = 0;
315 for(
auto& pParagraph : rParagraphs )
316 nSequenceSize += pParagraph->getRuns().size();
318 int nParagraphs = rParagraphs.size();
319 if( nParagraphs > 1 )
320 nSequenceSize += nParagraphs - 1;
322 std::optional< OUString > oaLabelText;
323 std::optional< OUString > oaCellRange;
329 oaCellRange = pLabelSource->
mxDataSeq->maFormula;
330 const auto& rLabelMap = pLabelSource->
mxDataSeq->maData;
332 if (rKV != rLabelMap.end())
334 oaLabelText.emplace();
335 rKV->second >>= *oaLabelText;
340 uno::Sequence< css::uno::Reference< XDataPointCustomLabelField > > aSequence( nSequenceSize );
341 auto aSequenceRange = asNonConstRange(aSequence);
345 for(
auto& pParagraph : rParagraphs )
347 for(
auto& pRun : pParagraph->getRuns() )
349 css::uno::Reference< XDataPointCustomLabelField > xCustomLabel = DataPointCustomLabelField::create( xContext );
354 pRun->getTextCharacterProperties().pushToPropSet( aPropertySet,
getFilter() );
358 DataPointCustomLabelFieldType
eType = lcl_ConvertFieldNameToFieldEnum( pField->getType() );
360 if (
eType == DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_CELLRANGE && oaCellRange.has_value())
362 xCustomLabel->setCellRange( oaCellRange.value() );
363 xCustomLabel->setString( oaLabelText.value_or(
"") );
364 xCustomLabel->setDataLabelsRange(
true );
367 xCustomLabel->setString( pField->getText() );
369 xCustomLabel->setFieldType(
eType );
370 xCustomLabel->setGuid( pField->getUuid() );
374 xCustomLabel->setString( pRun->getText() );
375 xCustomLabel->setFieldType( DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_TEXT );
377 aSequenceRange[
nPos++ ] = xCustomLabel;
380 if( nParagraphs > 1 &&
nPos < nSequenceSize )
382 css::uno::Reference< XDataPointCustomLabelField > xCustomLabel = DataPointCustomLabelField::create( xContext );
383 xCustomLabel->setFieldType( DataPointCustomLabelFieldType::DataPointCustomLabelFieldType_NEWLINE );
384 xCustomLabel->setString(
"\n");
385 aSequenceRange[
nPos++ ] = xCustomLabel;
418 const std::shared_ptr<TextParagraph>& rLabelsParagraph = rLabels.
mxTextProp->getParagraphs()[0];
427 || rLabel.
mxText->mxTextBody->getParagraphs().empty())
432 const std::shared_ptr<TextParagraph>& rLabelParagraph
433 = rLabel.
mxText->mxTextBody->getParagraphs()[0];
436 TextCharacterProperties aCharProps;
437 aCharProps.assignUsed(rLabelsParagraph->getProperties().getTextCharacterProperties());
438 aCharProps.assignUsed(rLabelParagraph->getProperties().getTextCharacterProperties());
439 rLabelParagraph->getProperties().getTextCharacterProperties().assignUsed(aCharProps);
451 lclConvertLabelFormatting( aPropSet,
getFormatter(),
mrModel, rTypeGroup,
true,
false, bHasInternalData, bMSO2007Doc );
470 if (pointLabel->maNumberFormat.maFormatCode.isEmpty())
472 InheritFromDataLabelsTextProps(
mrModel, *pointLabel);
492 if( !(bShowPos || bShowNeg) )
505 namespace cssc = ::com::sun::star::chart;
517 ::std::vector< Reference< XLabeledDataSequence > > aLabeledSeqVec;
523 aLabeledSeqVec.push_back( xValueSeq );
530 aLabeledSeqVec.push_back( xValueSeq );
533 if( aLabeledSeqVec.empty() )
558 OSL_FAIL(
"ErrorBarConverter::convertFromModel - unknown error bar type" );
570 case XML_x: aSeriesProp.
setProperty( PROP_ErrorBarX, xErrorBar );
break;
571 case XML_y: aSeriesProp.
setProperty( PROP_ErrorBarY, xErrorBar );
break;
572 default: OSL_FAIL(
"ErrorBarConverter::convertFromModel - invalid error bar direction" );
578 OSL_FAIL(
"ErrorBarConverter::convertFromModel - error while creating error bars" );
585 switch( eSourceType )
590 case XML_x: aRole =
"error-bars-x-positive";
break;
591 case XML_y: aRole =
"error-bars-y-positive";
break;
597 case XML_x: aRole =
"error-bars-x-negative";
break;
598 case XML_y: aRole =
"error-bars-y-negative";
break;
602 OSL_ENSURE( !aRole.isEmpty(),
"ErrorBarConverter::createLabeledDataSequence - invalid error bar direction" );
603 return lclCreateLabeledDataSequence( *
this,
mrModel.
maSources.
get( eSourceType ).get(), aRole );
635 OUString aServiceName;
639 aServiceName =
"com.sun.star.chart2.ExponentialRegressionCurve";
642 aServiceName =
"com.sun.star.chart2.LinearRegressionCurve";
645 aServiceName =
"com.sun.star.chart2.LogarithmicRegressionCurve";
648 aServiceName =
"com.sun.star.chart2.MovingAverageRegressionCurve";
651 aServiceName =
"com.sun.star.chart2.PolynomialRegressionCurve";
654 aServiceName =
"com.sun.star.chart2.PotentialRegressionCurve";
657 OSL_FAIL(
"TrendlineConverter::convertFromModel - unknown trendline type" );
659 if( !aServiceName.isEmpty() )
685 PropertySet aLabelProp( xRegCurve->getEquationProperties() );
700 xRegCurveCont->addRegressionCurve( xRegCurve );
705 OSL_FAIL(
"TrendlineConverter::convertFromModel - error while creating trendline" );
782 sal_Int32 nDataPointCount = 0;
787 ::std::vector< Reference< XLabeledDataSequence > > aLabeledSeqVec;
790 if( xYValueSeq.is() )
792 aLabeledSeqVec.push_back( xYValueSeq );
795 nDataPointCount = xValues->getData().getLength();
797 if (!nDataPointCount)
805 if( xXValueSeq.is() )
806 aLabeledSeqVec.push_back( xXValueSeq );
811 if( xSizeValueSeq.is() )
812 aLabeledSeqVec.push_back( xSizeValueSeq );
816 if( !aLabeledSeqVec.empty() )
836#if OOX_CHART_SMOOTHED_PER_SERIES
856 aSeriesProp.
setProperty( PROP_VaryColorsByPoint, bVaryColorsByPoint );
867 if( bVaryColorsByPoint )
897 if( xLabels->maNumberFormat.maFormatCode.isEmpty() )
902 xLabels->maNumberFormat.maFormatCode =
pValues->mxDataSeq->maFormatCode;
918 return lclCreateLabeledDataSequence( *
this,
pValues, rRole, pTitle );
const PropertyValue * pValues
Provides helper functions for colors, device measurement conversion, graphics, and graphic objects ha...
Contains tables for named drawing objects for a document model.
OUString insertFillHatch(const css::drawing::Hatch &rHatch)
A wrapper for a UNO property set.
bool getProperty(Type &orValue, sal_Int32 nPropId) const
Gets the specified property from the property set.
bool setProperty(sal_Int32 nPropId, const Type &rValue)
Puts the passed value into the property set.
mapped_type get(key_type nKey) const
Returns a reference to the object associated to the passed key, or an empty reference on error.
ModelObjectHelper & getModelObjectHelperForModel(const css::uno::Reference< css::lang::XMultiServiceFactory > &xFactory) const
bool isMSO2007Document() const
Base class of all converter classes.
const ModelType & getModel() const
::oox::core::XmlFilterBase & getFilter() const
Returns the filter object of the imported/exported document.
css::uno::Reference< css::chart2::XChartDocument > const & getChartDocument() const
Returns the API chart document model.
ObjectFormatter & getFormatter() const
Returns the object formatter.
css::uno::Reference< css::uno::XInterface > createInstance(const OUString &rServiceName) const
Creates an instance for the passed service name, using the process service factory.
css::uno::Reference< css::uno::XComponentContext > const & getComponentContext() const
void convertFromModel(const css::uno::Reference< css::chart2::XDataSeries > &rxDataSeries, const TypeGroupConverter &rTypeGroup)
Converts OOXML data label settings for the passed data point.
DataLabelConverter(const ConverterRoot &rParent, DataLabelModel &rModel)
virtual ~DataLabelConverter() override
DataLabelsConverter(const ConverterRoot &rParent, DataLabelsModel &rModel)
void convertFromModel(const css::uno::Reference< css::chart2::XDataSeries > &rxDataSeries, const TypeGroupConverter &rTypeGroup)
Converts OOXML data label settings for the passed data series.
virtual ~DataLabelsConverter() override
virtual ~DataPointConverter() override
DataPointConverter(const ConverterRoot &rParent, DataPointModel &rModel)
void convertFromModel(const css::uno::Reference< css::chart2::XDataSeries > &rxDataSeries, const TypeGroupConverter &rTypeGroup, const SeriesModel &rSeries)
Converts settings for a data point in the passed series.
css::uno::Reference< css::chart2::data::XLabeledDataSequence > createLabeledDataSequence(ErrorBarModel::SourceType eSourceType)
virtual ~ErrorBarConverter() override
ErrorBarConverter(const ConverterRoot &rParent, ErrorBarModel &rModel)
void convertFromModel(const css::uno::Reference< css::chart2::XDataSeries > &rxDataSeries)
Converts an OOXML errorbar and inserts it into the passed data series.
ModelType & getOrCreate()
css::uno::Reference< css::chart2::XDataSeries > createDataSeries(const TypeGroupConverter &rTypeGroup, bool bVaryColorsByPoint)
Creates a data series object with initialized source links.
css::uno::Reference< css::chart2::data::XLabeledDataSequence > createCategorySequence(const OUString &rRole)
Creates a labeled data sequence object from category data link.
css::uno::Reference< css::chart2::data::XLabeledDataSequence > createValueSequence(const OUString &rRole)
Creates a labeled data sequence object from value data link.
SeriesConverter(const ConverterRoot &rParent, SeriesModel &rModel)
css::uno::Reference< css::chart2::data::XLabeledDataSequence > createLabeledDataSequence(SeriesModel::SourceType eSourceType, const OUString &rRole, bool bUseTextLabel)
virtual ~SeriesConverter() override
void convertFromModel(const css::uno::Reference< css::chart2::XDataSeries > &rxDataSeries)
Converts an OOXML trendline and inserts it into the passed data series.
virtual ~TrendlineConverter() override
TrendlineConverter(const ConverterRoot &rParent, TrendlineModel &rModel)
TrendlineLabelConverter(const ConverterRoot &rParent, TrendlineLabelModel &rModel)
virtual ~TrendlineLabelConverter() override
void convertFromModel(PropertySet &rPropSet)
Converts the OOXML trendline label.
void convertBarGeometry(PropertySet &rPropSet, sal_Int32 nOoxShape) const
Sets the passed OOXML bar 3D geometry at the passed property set.
void convertPieExplosion(PropertySet &rPropSet, sal_Int32 nOoxExplosion) const
Sets the passed OOXML pie explosion at the passed property set.
bool isSeriesFrameFormat() const
Returns true, if this chart type supports area formatting for its series.
void convertMarker(PropertySet &rPropSet, sal_Int32 nOoxSymbol, sal_Int32 nOoxSize, const ModelRef< Shape > &xShapeProps) const
Sets the passed OOXML marker style at the passed property set.
ObjectType getSeriesObjectType() const
Returns the object type for a series depending on the chart type.
void convertLineSmooth(PropertySet &rPropSet, bool bOoxSmooth) const
Sets the passed OOXML line smoothing at the passed property set.
const TypeGroupInfo & getTypeInfo() const
Returns the type info struct that describes this chart type group.
Reference< XSingleServiceFactory > xFactory
static drawing::Hatch createHatch(sal_Int32 nHatchToken, ::Color nColor)
css::uno::Sequence< DstElementType > containerToSequence(const SrcType &i_Container)
@ TYPECATEGORY_PIE
Radar charts (linear or filled).
ObjectType
Enumerates different object types for specific automatic formatting behaviour.
@ OBJECTTYPE_ERRORBAR
Trend line label.
@ OBJECTTYPE_TRENDLINELABEL
Data series trend line.
@ OBJECTTYPE_DATALABEL
Filled series in 3D charts.
@ OBJECTTYPE_TRENDLINE
Labels for data points.
@ TYPEID_BUBBLE
Scatter (XY) chart.
sal_Int32 convertEmuToHmm(sal_Int64 nValue)
Converts the passed 64-bit integer value from EMUs to 1/100 mm.
ModelRef< TextBody > TextBodyRef
TextBodyRef mxTextProp
Data label frame formatting.
std::optional< bool > mobShowDataLabelsRange
True = show data point value.
NumberFormat maNumberFormat
Data label text formatting.
const DataLabelsModel & mrParent
Manual or linked text for this data point label.
sal_Int32 mnIndex
Reference to the labels container.
TextRef mxText
Layout/position of the data point label frame.
const DataSourceModel * mpLabelsSource
Formatting of connector lines between data points and labels.
DataLabelVector maPointLabels
std::optional< sal_Int32 > monMarkerSize
Pie slice moved from pie center.
sal_Int32 mnIndex
True = show bubbles with 3D shade.
std::optional< sal_Int32 > monExplosion
Data point marker formatting.
ShapeRef mxMarkerProp
Fill bitmap settings.
std::optional< sal_Int32 > monMarkerSymbol
Size of the series line marker (2...72).
PictureOptionsRef mxPicOptions
Data point formatting.
DataSequenceRef mxDataSeq
@ MINUS
Plus error bar values.
sal_Int32 mnValueType
Type of the error bars (plus/minus/both).
sal_Int32 mnTypeId
Direction of the error bars (x/y).
ShapeRef mxShapeProp
Source ranges for manual error bar values.
double mfValue
Error line formatting.
sal_Int32 mnDirection
Fixed value for several error bar types.
sal_Int32 mnMarkerSymbol
Size of the series line marker (2...72).
DataPointVector maPoints
All trendlines of this series.
TrendlineVector maTrendlines
All error bars of this series.
sal_Int32 mnExplosion
3D bar shape type.
DataLabelsRef mxLabels
Series title source.
ErrorBarVector maErrorBars
Series source ranges.
@ VALUES
Data point categories.
@ POINTS
Data point values.
sal_Int32 mnMarkerSize
Series index used for automatic formatting.
sal_Int32 mnIndex
Pie slice moved from pie center.
std::optional< sal_Int32 > monShape
Data point label settings for all points.
PictureOptionsRef mxPicOptions
Series formatting.
ShapeRef mxMarkerProp
Fill bitmap settings.
TextRef mxText
Data point marker formatting.
ShapeRef mxShapeProp
Explicit formatted data points.
bool mbSmooth
True = invert negative data points.
TextBodyRef mxTextProp
Label frame formatting.
TrendlineLabelRef mxLabel
Trendline formatting.
sal_Int32 mnTypeId
Moving average period in range [2, 255].
std::optional< double > mfBackward
User-defined name of the trendline.
bool mbDispRSquared
True = show equation of the trendline.
bool mbDispEquation
Type of the trendline.
OUString maName
Trendline label text object.
std::optional< double > mfIntercept
Size of trendline behind last data point.
sal_Int32 mnPeriod
Polynomial order in range [2, 6].
sal_Int32 mnOrder
Crossing point with Y axis.
std::optional< double > mfForward
Size of trendline before first data point.
Contains info for a chart type related to the OpenOffice.org chart module.
bool mbPictureOptions
True = data points can be stacked on each other.
bool mbCategoryAxis
True = only first series visible (e.g. pie charts).
TypeCategory meTypeCategory
Unique chart type identifier.
DataLabelsRef mxLabels
List of axis identifiers used by this chart type.
sal_Int32 mnShape
relative size of second pie/bar in pie-to charts (percent).
constexpr OUStringLiteral PROP_ForceIntercept
constexpr OUStringLiteral PROP_InterceptValue
constexpr OUStringLiteral PROP_ShowNegativeError
constexpr OUStringLiteral PROP_ShowCustomLeaderLines
constexpr OUStringLiteral PROP_ErrorBarStyle
constexpr OUStringLiteral PROP_LabelPlacement
constexpr OUStringLiteral PROP_CurveName
constexpr OUStringLiteral PROP_ExtrapolateForward
constexpr OUStringLiteral PROP_NegativeError
constexpr OUStringLiteral PROP_ExtrapolateBackward
constexpr OUStringLiteral PROP_PositiveError
constexpr OUStringLiteral PROP_PolynomialDegree
constexpr OUStringLiteral PROP_MovingAveragePeriod
constexpr OUStringLiteral PROP_Weight
constexpr OUStringLiteral PROP_ShowPositiveError