22#include <com/sun/star/chart2/XChartDocument.hpp>
23#include <com/sun/star/lang/XMultiServiceFactory.hpp>
24#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
25#include <com/sun/star/util/XNumberFormatTypes.hpp>
26#include <osl/thread.h>
27#include <osl/diagnose.h>
28#include <rtl/strbuf.hxx>
39#include <oox/token/properties.hxx>
40#include <oox/token/tokens.hxx>
52using ::oox::core::XmlFilterBase;
56struct AutoFormatPatternEntry
63#define AUTOFORMAT_PATTERN_COLOR( color_token ) \
64 { color_token, XML_TOKEN_INVALID, 0 }
66#define AUTOFORMAT_PATTERN_COLORMOD( color_token, mod_token, mod_value ) \
67 { color_token, mod_token, mod_value }
69#define AUTOFORMAT_PATTERN_END() \
70 AUTOFORMAT_PATTERN_COLOR( XML_TOKEN_INVALID )
72const AutoFormatPatternEntry spAutoFormatPattern1[] =
83const AutoFormatPatternEntry spAutoFormatPattern2[] =
94const AutoFormatPatternEntry spAutoFormatPattern3[] =
105const AutoFormatPatternEntry spAutoFormatPattern4[] =
116#undef AUTOFORMAT_PATTERN_COLOR
117#undef AUTOFORMAT_PATTERN_COLORMOD
118#undef AUTOFORMAT_PATTERN_END
120struct AutoFormatEntry
133#define AUTOFORMAT_COLOR( first, last, themed_style, color_token ) \
134 { first, last, themed_style, color_token, XML_TOKEN_INVALID, 0, 100, nullptr, false }
136#define AUTOFORMAT_COLORMOD( first, last, themed_style, color_token, mod_token, mod_value ) \
137 { first, last, themed_style, color_token, mod_token, mod_value, 100, nullptr, false }
139#define AUTOFORMAT_ACCENTSMOD( first, themed_style, mod_token, mod_value ) \
140 AUTOFORMAT_COLORMOD( first, first, themed_style, XML_accent1, mod_token, mod_value ), \
141 AUTOFORMAT_COLORMOD( first + 1, first + 1, themed_style, XML_accent2, mod_token, mod_value ), \
142 AUTOFORMAT_COLORMOD( first + 2, first + 2, themed_style, XML_accent3, mod_token, mod_value ), \
143 AUTOFORMAT_COLORMOD( first + 3, first + 3, themed_style, XML_accent4, mod_token, mod_value ), \
144 AUTOFORMAT_COLORMOD( first + 4, first + 4, themed_style, XML_accent5, mod_token, mod_value ), \
145 AUTOFORMAT_COLORMOD( first + 5, first + 5, themed_style, XML_accent6, mod_token, mod_value )
147#define AUTOFORMAT_PATTERN( first, last, themed_style, line_width, pattern ) \
148 { first, last, themed_style, XML_TOKEN_INVALID, XML_TOKEN_INVALID, 0, line_width, pattern, false }
150#define AUTOFORMAT_FADED( first, last, themed_style, color_token, line_width ) \
151 { first, last, themed_style, color_token, XML_TOKEN_INVALID, 0, line_width, nullptr, true }
153#define AUTOFORMAT_FADEDACCENTS( first, themed_style, line_width ) \
154 AUTOFORMAT_FADED( first, first, themed_style, XML_accent1, line_width ), \
155 AUTOFORMAT_FADED( first + 1, first + 1, themed_style, XML_accent2, line_width ), \
156 AUTOFORMAT_FADED( first + 2, first + 2, themed_style, XML_accent3, line_width ), \
157 AUTOFORMAT_FADED( first + 3, first + 3, themed_style, XML_accent4, line_width ), \
158 AUTOFORMAT_FADED( first + 4, first + 4, themed_style, XML_accent5, line_width ), \
159 AUTOFORMAT_FADED( first + 5, first + 5, themed_style, XML_accent6, line_width )
161#define AUTOFORMAT_INVISIBLE( first, last ) \
162 AUTOFORMAT_COLOR( first, last, -1, XML_TOKEN_INVALID )
164#define AUTOFORMAT_END() \
165 AUTOFORMAT_INVISIBLE( -1, -1 )
167const AutoFormatEntry spNoFormats[] =
173const AutoFormatEntry spChartSpaceFill[] =
181const AutoFormatEntry spDataTableLines[] =
189const AutoFormatEntry spPlotArea2dFills[] =
198const AutoFormatEntry spWallFloorLines[] =
206const AutoFormatEntry spWallFloorFills[] =
215const AutoFormatEntry spAxisLines[] =
222const AutoFormatEntry spMajorGridLines[] =
229const AutoFormatEntry spMinorGridLines[] =
236const AutoFormatEntry spOtherLines[] =
245const AutoFormatEntry spLinearSeriesLines[] =
268const AutoFormatEntry spFilledSeriesLines[] =
280const AutoFormatEntry spFilledSeries2dFills[] =
303const AutoFormatEntry spFilledSeries3dFills[] =
326const AutoFormatEntry spUpDownBarLines[] =
336const AutoFormatEntry spUpBarFills[] =
357const AutoFormatEntry spDownBarFills[] =
380#undef AUTOFORMAT_COLOR
381#undef AUTOFORMAT_COLORMOD
382#undef AUTOFORMAT_ACCENTSMOD
383#undef AUTOFORMAT_PATTERN
384#undef AUTOFORMAT_FADED
385#undef AUTOFORMAT_FADEDACCENTS
386#undef AUTOFORMAT_INVISIBLE
389const AutoFormatEntry* lclGetAutoFormatEntry(
const AutoFormatEntry* pEntries, sal_Int32 nStyle )
391 for( ; pEntries && (pEntries->mnFirstStyleIdx >= 0); ++pEntries )
392 if( (pEntries->mnFirstStyleIdx <= nStyle) && (nStyle <= pEntries->mnLastStyleIdx) )
408#define AUTOTEXT_COLOR( first, last, themed_font, color_token, def_font_size, rel_font_size, bold ) \
409 { first, last, themed_font, color_token, def_font_size, rel_font_size, bold }
411#define AUTOTEXT_END() \
412 AUTOTEXT_COLOR( -1, -1, XML_none, XML_TOKEN_INVALID, 1000, 100, false )
414const AutoTextEntry spChartTitleTexts[] =
421const AutoTextEntry spAxisTitleTexts[] =
428const AutoTextEntry spOtherTexts[] =
438const AutoTextEntry* lclGetAutoTextEntry(
const AutoTextEntry* pEntries, sal_Int32 nStyle )
440 for( ; pEntries && (pEntries->mnFirstStyleIdx >= 0); ++pEntries )
441 if( (pEntries->mnFirstStyleIdx <= nStyle) && (nStyle <= pEntries->mnLastStyleIdx) )
451 PROP_LineCap, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
456 PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID
462 PROP_LineCap, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
463 PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
464 PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID,
465 PROP_INVALID, PROP_INVALID, PROP_INVALID,
466 PROP_INVALID, PROP_INVALID,
467 PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID
475 PROP_BorderTransparency,
499 PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID, PROP_INVALID
503const ShapePropertyInfo saCommonPropInfo( spnCommonPropIds,
false,
true,
true,
true,
true );
505const ShapePropertyInfo saLinearPropInfo( spnLinearPropIds,
false,
true,
true,
true,
true );
507const ShapePropertyInfo saFilledPropInfo( spnFilledPropIds,
false,
true,
true,
true,
true );
510struct ObjectTypeFormatEntry
518 ObjectTypeFormatEntry(
ObjectType eObjType,
const ShapePropertyInfo& rPropInfo,
519 const AutoFormatEntry* pAutoLines,
520 const AutoFormatEntry* pAutoFills,
521 const AutoTextEntry* pAutoTexts,
528#define TYPEFORMAT_FRAME( obj_type, prop_type, auto_texts, auto_lines, auto_fills ) \
529 { obj_type, prop_type, auto_lines, auto_fills, auto_texts, true }
531#define TYPEFORMAT_LINE( obj_type, prop_type, auto_texts, auto_lines ) \
532 { obj_type, prop_type, auto_lines, nullptr, auto_texts, false }
534const ObjectTypeFormatEntry spObjTypeFormatEntries[] =
565#undef TYPEFORMAT_FRAME
566#undef TYPEFORMAT_LINE
568void lclConvertPictureOptions( FillProperties& orFillProps,
const PictureOptionsModel& rPicOptions )
570 bool bStacked = (rPicOptions.mnPictureFormat == XML_stack) || (rPicOptions.mnPictureFormat == XML_stackScale);
571 orFillProps.maBlipProps.moBitmapMode = bStacked ? XML_tile : XML_stretch;
576struct ObjectFormatterData;
580class DetailFormatterBase
583 explicit DetailFormatterBase(
585 const AutoFormatEntry* pAutoFormatEntry );
586 explicit DetailFormatterBase(
588 const AutoTextEntry* pAutoTextEntry );
592 ::Color getPhColor( sal_Int32 nSeriesIdx )
const;
596 ::Color getSchemeColor( sal_Int32 nColorToken, sal_Int32 nModToken, sal_Int32 nModValue )
const;
599 typedef ::std::vector< ::Color > ColorPatternVec;
606class LineFormatter :
public DetailFormatterBase
609 explicit LineFormatter(
611 const AutoFormatEntry* pAutoFormatEntry,
615 void convertFormatting(
616 ShapePropertyMap& rPropMap,
618 sal_Int32 nSeriesIdx );
624class FillFormatter :
public DetailFormatterBase
627 explicit FillFormatter(
629 const AutoFormatEntry* pAutoFormatEntry,
633 void convertFormatting(
634 ShapePropertyMap& rPropMap,
636 const PictureOptionsModel* pPicOptions,
637 sal_Int32 nSeriesIdx );
643class TextFormatter :
public DetailFormatterBase
646 explicit TextFormatter(
648 const AutoTextEntry* pAutoTextEntry,
652 void convertFormatting(
653 PropertySet& rPropSet,
654 const TextCharacterProperties* pTextProps );
656 void convertFormatting(
657 PropertySet& rPropSet,
665class ObjectTypeFormatter
668 explicit ObjectTypeFormatter(
670 const ObjectTypeFormatEntry& rEntry,
671 const ChartSpaceModel& rChartSpace,
675 void convertFrameFormatting(
676 PropertySet& rPropSet,
678 const PictureOptionsModel* pPicOptions,
679 sal_Int32 nSeriesIdx );
682 void convertTextFormatting(
683 PropertySet& rPropSet,
687 void convertFormatting(
688 PropertySet& rPropSet,
693 void convertTextFormatting(
694 PropertySet& rPropSet,
695 const TextCharacterProperties& rTextProps );
698 void convertAutomaticFill(
699 PropertySet& rPropSet,
700 sal_Int32 nSeriesIdx );
733DetailFormatterBase::DetailFormatterBase(
ObjectFormatterData& rData,
const AutoFormatEntry* pAutoFormatEntry ) :
737 if( !pAutoFormatEntry )
740 if( pAutoFormatEntry->mpPattern )
743 for(
const AutoFormatPatternEntry* pPatternEntry = pAutoFormatEntry->mpPattern; pPatternEntry->mnColorToken != XML_TOKEN_INVALID; ++pPatternEntry )
744 maColorPattern.push_back( getSchemeColor( pPatternEntry->mnColorToken, pPatternEntry->mnModToken, pPatternEntry->mnModValue ) );
746 else if( pAutoFormatEntry->mnColorToken != XML_TOKEN_INVALID )
749 mnPhClr = getSchemeColor( pAutoFormatEntry->mnColorToken, pAutoFormatEntry->mnModToken, pAutoFormatEntry->mnModValue );
750 if( pAutoFormatEntry->mbFadedColor )
755DetailFormatterBase::DetailFormatterBase( ObjectFormatterData& rData,
const AutoTextEntry* pAutoTextEntry ) :
759 if( pAutoTextEntry && (pAutoTextEntry->mnColorToken != XML_TOKEN_INVALID) )
760 mnPhClr = getSchemeColor( pAutoTextEntry->mnColorToken, XML_TOKEN_INVALID, 0 );
763::Color DetailFormatterBase::getPhColor( sal_Int32 nSeriesIdx )
const
800 size_t nCycleIdx =
static_cast< size_t >( nSeriesIdx /
maColorPattern.size() );
802 double fShadeTint =
static_cast< double >( nCycleIdx + 1 ) / (nMaxCycleIdx + 2) * 1.4 - 0.7;
803 if( fShadeTint != 0.0 )
806 aColor.setSrgbClr( nPhClr );
807 aColor.addChartTintTransformation( fShadeTint );
814::Color DetailFormatterBase::getSchemeColor( sal_Int32 nColorToken, sal_Int32 nModToken, sal_Int32 nModValue )
const
817 aColor.setSchemeClr( nColorToken );
818 if( nModToken != XML_TOKEN_INVALID )
819 aColor.addTransformation( nModToken, nModValue );
823LineFormatter::LineFormatter( ObjectFormatterData& rData,
const AutoFormatEntry* pAutoFormatEntry,
const ObjectType eObjType ) :
824 DetailFormatterBase(rData, pAutoFormatEntry)
826 if( !pAutoFormatEntry )
829 mxAutoLine = std::make_shared<LineProperties>();
830 mxAutoLine->maLineFill.moFillType = XML_noFill;
831 if(
const Theme* pTheme =
mrData.mrFilter.getCurrentTheme() )
832 if(
const LineProperties* pLineProps = pTheme->getLineStyle( pAutoFormatEntry->mnThemedIdx ) )
837 OUString aFilterName;
839 if (!aFilterName.startsWithIgnoreAsciiCase(
"Impress"))
844 mxAutoLine->maLineFill.maFillColor.setSrgbClr(0xD9D9D9);
849 mxAutoLine->moLineWidth =
mxAutoLine->moLineWidth.value() * pAutoFormatEntry->mnRelLineWidth / 100;
852void LineFormatter::convertFormatting( ShapePropertyMap& rPropMap,
const ModelRef< Shape >& rxShapeProp, sal_Int32 nSeriesIdx )
857 if( rxShapeProp.
is() )
858 aLineProps.assignUsed( rxShapeProp->getLineProperties() );
862FillFormatter::FillFormatter( ObjectFormatterData& rData,
const AutoFormatEntry* pAutoFormatEntry,
const ObjectType eObjType ) :
863 DetailFormatterBase( rData, pAutoFormatEntry )
865 if( !pAutoFormatEntry )
868 mxAutoFill = std::make_shared<FillProperties>();
871 if(
const Theme* pTheme =
mrData.mrFilter.getCurrentTheme() )
872 if(
const FillProperties* pFillProps = pTheme->getFillStyle( pAutoFormatEntry->mnThemedIdx ) )
877 mxAutoFill->moFillType = rData.mrFilter.getGraphicHelper().getDefaultChartAreaFillStyle();
881void FillFormatter::convertFormatting( ShapePropertyMap& rPropMap,
const ModelRef< Shape >& rxShapeProp,
const PictureOptionsModel* pPicOptions, sal_Int32 nSeriesIdx )
883 FillProperties aFillProps;
887 aFillProps.assignUsed( rxShapeProp->getFillProperties() );
889 lclConvertPictureOptions( aFillProps, *pPicOptions );
897 return (rxTextProp.
is() && !rxTextProp->getParagraphs().empty()) ?
898 &rxTextProp->getParagraphs().front()->getProperties().getTextCharacterProperties() :
nullptr;
903TextFormatter::TextFormatter( ObjectFormatterData& rData,
const AutoTextEntry* pAutoTextEntry,
const ModelRef< TextBody >& rxGlobalTextProp ) :
904 DetailFormatterBase( rData, pAutoTextEntry )
906 if( !pAutoTextEntry )
909 mxAutoText = std::make_shared<TextCharacterProperties>();
910 if(
const Theme* pTheme =
mrData.mrFilter.getCurrentTheme() )
911 if(
const TextCharacterProperties* pTextProps = pTheme->getFontStyle( pAutoTextEntry->mnThemedFont ) )
913 ::Color nTextColor = getPhColor( -1 );
914 if( sal_Int32(nTextColor) >= 0 ) {
915 mxAutoText->maFillProperties.maFillColor.setSrgbClr( nTextColor );
916 mxAutoText->maFillProperties.moFillType = XML_solidFill;
918 mxAutoText->moHeight = pAutoTextEntry->mnDefFontSize;
921 if(
const TextCharacterProperties* pTextProps = lclGetTextProperties( rxGlobalTextProp ) )
924 if( pTextProps->moHeight.has_value() )
925 mxAutoText->moHeight = pTextProps->moHeight.value() * pAutoTextEntry->mnRelFontSize / 100;
929void TextFormatter::convertFormatting( PropertySet& rPropSet,
const TextCharacterProperties* pTextProps )
931 TextCharacterProperties aTextProps;
935 aTextProps.assignUsed( *pTextProps );
939void TextFormatter::convertFormatting( PropertySet& rPropSet,
const ModelRef< TextBody >& rxTextProp )
941 convertFormatting( rPropSet, lclGetTextProperties( rxTextProp ) );
944ObjectTypeFormatter::ObjectTypeFormatter( ObjectFormatterData& rData,
const ObjectTypeFormatEntry& rEntry,
const ChartSpaceModel& rChartSpace,
const ObjectType eObjType ) :
953void ObjectTypeFormatter::convertFrameFormatting( PropertySet& rPropSet,
const ModelRef< Shape >& rxShapeProp,
const PictureOptionsModel* pPicOptions, sal_Int32 nSeriesIdx )
956 maLineFormatter.convertFormatting( aPropMap, rxShapeProp, nSeriesIdx );
958 maFillFormatter.convertFormatting( aPropMap, rxShapeProp, pPicOptions, nSeriesIdx );
959 rPropSet.setProperties( aPropMap );
962void ObjectTypeFormatter::convertTextFormatting( PropertySet& rPropSet,
const ModelRef< TextBody >& rxTextProp )
969 convertFrameFormatting( rPropSet, rxShapeProp,
nullptr, -1 );
970 convertTextFormatting( rPropSet, rxTextProp );
973void ObjectTypeFormatter::convertTextFormatting( PropertySet& rPropSet,
const TextCharacterProperties& rTextProps )
978void ObjectTypeFormatter::convertAutomaticFill( PropertySet& rPropSet, sal_Int32 nSeriesIdx )
982 maFillFormatter.convertFormatting( aPropMap, xShapeProp,
nullptr, nSeriesIdx );
983 rPropSet.setProperties( aPropMap );
988 maModelObjHelper(
Reference< XMultiServiceFactory >( rxChartDoc, UNO_QUERY ) ),
992 for(
auto const &rEntry : spObjTypeFormatEntries)
993 maTypeFormatters[ rEntry.meObjType ] = std::make_shared<ObjectTypeFormatter>( *
this, rEntry, rChartSpace, rEntry.meObjType );
998 mxNumFmts = xNumFmtsSupp->getNumberFormats();
1004 OSL_ENSURE(
mxNumFmts.is() &&
mxNumTypes.is(),
"ObjectFormatterData::ObjectFormatterData - cannot get number formats" );
1009 OSL_ENSURE(
maTypeFormatters.
has( eObjType ),
"ObjectFormatterData::getTypeFormatter - unknown object type" );
1024 mxData->mnMaxSeriesIdx = nMaxSeriesIdx;
1029 return mxData->mnMaxSeriesIdx;
1034 if( ObjectTypeFormatter* pFormat =
mxData->getTypeFormatter( eObjType ) )
1035 pFormat->convertFrameFormatting( rPropSet, rxShapeProp,
nullptr, nSeriesIdx );
1040 if( ObjectTypeFormatter* pFormat =
mxData->getTypeFormatter( eObjType ) )
1041 pFormat->convertFrameFormatting( rPropSet, rxShapeProp, &rPicOptions, nSeriesIdx );
1046 if( ObjectTypeFormatter* pFormat =
mxData->getTypeFormatter( eObjType ) )
1047 pFormat->convertTextFormatting( rPropSet, rxTextProp );
1052 if( ObjectTypeFormatter* pFormat =
mxData->getTypeFormatter( eObjType ) )
1053 pFormat->convertFormatting( rPropSet, rxShapeProp, rxTextProp );
1058 if( ObjectTypeFormatter* pFormat =
mxData->getTypeFormatter( eObjType ) )
1059 pFormat->convertTextFormatting( rPropSet, rTextProps );
1064 if( !rxTextProp.
is() )
1067 bool bStacked =
false;
1068 if( bSupportsStacked )
1070 sal_Int32 nVert = rxTextProp->getTextProperties().moVert.value_or( XML_horz );
1071 bStacked = (nVert == XML_wordArtVert) || (nVert == XML_wordArtVertRtl);
1072 rPropSet.
setProperty( PROP_StackCharacters, bStacked );
1077 double fAngle =
static_cast< double >( bStacked ? 0 : rxTextProp->getTextProperties().moTextAreaRotation.value_or( nDefaultRotation ) );
1079 if ( fAngle < -5400000.0 || fAngle > 5400000.0 )
1083 fAngle = getDoubleIntervalValue< double >( -fAngle / 60000.0, 0.0, 360.0 );
1089 if( !rxTextProp.
is() )
1096 PropertyMap& aPropMap = rxTextProp->getTextProperties().maPropertyMap;
1100 if( aValue.hasValue() )
1102 bool bValue =
false;
1111 if( !
mxData->mxNumFmts.is() )
1114 const bool bGeneral = rNumberFormat.
maFormatCode.equalsIgnoreAsciiCase(
"general");
1115 const bool bPercent = !bAxis && bShowPercent && !rNumberFormat.
mbSourceLinked;
1118 if (bPercent && bGeneral)
1122 sal_Int32
nIndex = bGeneral && !bPercent ?
1123 mxData->mxNumTypes->getStandardIndex(
mxData->maFromLocale ) :
1124 mxData->mxNumFmts->addNewConverted( sFormatCode,
mxData->maEnUsLocale,
mxData->maFromLocale );
1130 OSL_FAIL( OStringBuffer(
"ObjectFormatter::convertNumberFormat - cannot create number format '" +
1143 if( ObjectTypeFormatter* pFormat =
mxData->getTypeFormatter( eObjType ) )
1144 pFormat->convertAutomaticFill( rPropSet, nSeriesIdx );
1149 return !rxShapeProp || !rxShapeProp->getFillProperties().moFillType.has_value();
static sal_Int32 getDefaultChartAreaLineStyle()
Returns chartspace automatic default border style.
static sal_Int16 getDefaultChartAreaLineWidth()
Returns chartspace automatic default border width in Emu.
Contains tables for named drawing objects for a document model.
A helper that maps property identifiers to property values.
css::uno::Any getProperty(sal_Int32 nPropId)
bool hasProperty(sal_Int32 nPropId) const
Returns true, if the map contains a property with the passed identifier.
A wrapper for a UNO property set.
bool setProperty(sal_Int32 nPropId, const Type &rValue)
Puts the passed value into the property set.
bool has(key_type nKey) const
Returns true, if the object associated to the passed key exists.
mapped_type get(key_type nKey) const
Returns a reference to the object associated to the passed key, or an empty reference on error.
GraphicHelper & getGraphicHelper() const
Returns a helper for the handling of graphics and graphic objects.
std::shared_ptr< T > make_shared(Args &&... args)
ObjectType
Enumerates different object types for specific automatic formatting behaviour.
@ OBJECTTYPE_PLOTAREA3D
Plot area containing axes and data series in 2D charts.
@ OBJECTTYPE_ERRORBAR
Trend line label.
@ OBJECTTYPE_FILLEDSERIES2D
Linear series in 2D line/radarline/scatter charts.
@ OBJECTTYPE_FLOOR
Background and side wall in 3D charts.
@ OBJECTTYPE_AXIS
Floor in 3D charts.
@ OBJECTTYPE_MINORGRIDLINE
Axis major grid line.
@ OBJECTTYPE_TRENDLINELABEL
Data series trend line.
@ OBJECTTYPE_DATATABLE
Down-bar in line/stock charts.
@ OBJECTTYPE_HILOLINE
Drop lines between data points and X axis.
@ OBJECTTYPE_AXISTITLE
Axis line, labels, tick marks.
@ OBJECTTYPE_FILLEDSERIES3D
Filled series in 2D bar/area/radararea/bubble/pie/surface charts.
@ OBJECTTYPE_DATALABEL
Filled series in 3D charts.
@ OBJECTTYPE_LINEARSERIES2D
Axis minor grid line.
@ OBJECTTYPE_WALL
Plot area containing axes and data series in 3D charts.
@ OBJECTTYPE_LEGEND
Chart title.
@ OBJECTTYPE_CHARTTITLE
Chart background.
@ OBJECTTYPE_UPBAR
High/low lines in line/stock charts.
@ OBJECTTYPE_AXISUNIT
Axis title.
@ OBJECTTYPE_MAJORGRIDLINE
Axis unit label.
@ OBJECTTYPE_LEADERLINE
Data point connector lines.
@ OBJECTTYPE_SERLINE
Data series error indicator line.
@ OBJECTTYPE_DROPLINE
Leader lines between pie slice and data label.
@ OBJECTTYPE_DOWNBAR
Up-bar in line/stock charts.
@ OBJECTTYPE_TRENDLINE
Labels for data points.
@ OBJECTTYPE_PLOTAREA2D
Legend.
const sal_Int32 THEMED_STYLE_INTENSE
const sal_Int32 THEMED_STYLE_SUBTLE
std::shared_ptr< TextCharacterProperties > TextCharacterPropertiesPtr
o3tl::enumarray< ShapeProperty, sal_Int32 > ShapePropertyIds
std::shared_ptr< FillProperties > FillPropertiesPtr
std::shared_ptr< LineProperties > LinePropertiesPtr
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
const PowerPointImport & mrFilter
constexpr OUStringLiteral PROP_LineDashName
constexpr OUStringLiteral PROP_FillBitmapMode
constexpr OUStringLiteral PROP_FillTransparence
constexpr OUStringLiteral PROP_TextWordWrap
constexpr OUStringLiteral PROP_FillTransparenceGradientName
constexpr OUStringLiteral PROP_FillBitmapPositionOffsetX
constexpr OUStringLiteral PROP_FillGradientName
constexpr OUStringLiteral PROP_FillBackground
constexpr OUStringLiteral PROP_Transparency
constexpr OUStringLiteral PROP_LineColor
constexpr OUStringLiteral PROP_LineWidth
constexpr OUStringLiteral PROP_FillHatchName
constexpr OUStringLiteral PROP_TextRotation
constexpr OUStringLiteral PROP_FillBitmapPositionOffsetY
constexpr OUStringLiteral PROP_BorderColor
constexpr OUStringLiteral PROP_FillColor
constexpr OUStringLiteral PROP_FillBitmapName
constexpr OUStringLiteral PROP_LinkNumberFormatToSource
constexpr OUStringLiteral PROP_FillBitmapRectanglePoint
constexpr OUStringLiteral PROP_PercentageNumberFormat
constexpr OUStringLiteral PROP_NumberFormat
constexpr OUStringLiteral PROP_LineStyle
constexpr OUStringLiteral PROP_FillBitmapSizeX
constexpr OUStringLiteral PROP_LineCap
constexpr OUStringLiteral PROP_FillBitmapSizeY
constexpr OUStringLiteral PROP_LineTransparence
constexpr OUStringLiteral PROP_FillStyle