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