LibreOffice Module oox (master)  1
textparagraphproperties.cxx
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 
21 
22 #include <com/sun/star/text/XNumberingRulesSupplier.hpp>
23 #include <com/sun/star/container/XIndexReplace.hpp>
24 #include <com/sun/star/text/HoriOrientation.hpp>
25 #include <com/sun/star/awt/FontDescriptor.hpp>
26 #include <com/sun/star/awt/XBitmap.hpp>
27 #include <com/sun/star/graphic/XGraphic.hpp>
28 #include <com/sun/star/beans/PropertyValue.hpp>
29 #include <com/sun/star/style/NumberingType.hpp>
30 #include <com/sun/star/style/TabStop.hpp>
31 #include <com/sun/star/style/ParagraphAdjust.hpp>
32 #include <com/sun/star/drawing/XDrawPage.hpp>
33 
34 #include <osl/diagnose.h>
35 
38 #include <oox/token/properties.hxx>
39 #include <oox/token/tokens.hxx>
40 
41 #if OSL_DEBUG_LEVEL > 0
42 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
43 #include <com/sun/star/text/XText.hpp>
44 #include <com/sun/star/drawing/XShape.hpp>
45 #include <oox/ppt/pptimport.hxx>
46 #include <oox/ppt/slidepersist.hxx>
47 #endif
48 
49 using namespace ::oox::core;
50 using namespace ::com::sun::star::uno;
51 using namespace ::com::sun::star::beans;
52 using namespace ::com::sun::star::style;
53 using namespace ::com::sun::star::text;
54 using namespace ::com::sun::star::container;
55 using ::com::sun::star::awt::FontDescriptor;
56 
57 namespace oox::drawingml {
58 
60 : maBulletColorPtr( std::make_shared<Color>() )
61 {
62 }
63 
64 bool BulletList::is() const
65 {
66  return mnNumberingType.hasValue();
67 }
68 
69 void BulletList::setBulletChar( const OUString & sChar )
70 {
71  mnNumberingType <<= NumberingType::CHAR_SPECIAL;
72  msBulletChar <<= sChar;
73 }
74 
75 void BulletList::setGraphic( css::uno::Reference< css::graphic::XGraphic > const & rXGraphic )
76 {
77  mnNumberingType <<= NumberingType::BITMAP;
78  maGraphic <<= rXGraphic;
79 }
80 
82 {
83  mnNumberingType <<= NumberingType::NUMBER_NONE;
84 }
85 
87 {
88  msNumberingSuffix <<= OUString( ")" );
89  msNumberingPrefix <<= OUString( "(" );
90 }
91 
93 {
94  msNumberingSuffix <<= OUString( ")" );
95  msNumberingPrefix <<= OUString();
96 }
97 
99 {
100  msNumberingSuffix <<= OUString( "." );
101  msNumberingPrefix <<= OUString();
102 }
103 
105 {
106  msNumberingSuffix <<= OUString();
107  msNumberingPrefix <<= OUString();
108 }
109 
111 {
112  msNumberingSuffix <<= OUString( "-" );
113  msNumberingPrefix <<= OUString();
114 }
115 
116 void BulletList::setType( sal_Int32 nType )
117 {
118  OSL_ASSERT((nType & sal_Int32(0xFFFF0000))==0);
119  switch( nType )
120  {
121  case XML_alphaLcParenBoth:
122  mnNumberingType <<= NumberingType::CHARS_LOWER_LETTER;
124  break;
125  case XML_alphaLcParenR:
126  mnNumberingType <<= NumberingType::CHARS_LOWER_LETTER;
128  break;
129  case XML_alphaLcPeriod:
130  mnNumberingType <<= NumberingType::CHARS_LOWER_LETTER;
131  setSuffixPeriod();
132  break;
133  case XML_alphaUcParenBoth:
134  mnNumberingType <<= NumberingType::CHARS_UPPER_LETTER;
136  break;
137  case XML_alphaUcParenR:
138  mnNumberingType <<= NumberingType::CHARS_UPPER_LETTER;
140  break;
141  case XML_alphaUcPeriod:
142  mnNumberingType <<= NumberingType::CHARS_UPPER_LETTER;
143  setSuffixPeriod();
144  break;
145  case XML_arabic1Minus:
146  case XML_arabic2Minus:
147  case XML_arabicDbPeriod:
148  case XML_arabicDbPlain:
149  // TODO
150  break;
151  case XML_arabicParenBoth:
152  mnNumberingType <<= NumberingType::ARABIC;
154  break;
155  case XML_arabicParenR:
156  mnNumberingType <<= NumberingType::ARABIC;
158  break;
159  case XML_arabicPeriod:
160  mnNumberingType <<= NumberingType::ARABIC;
161  setSuffixPeriod();
162  break;
163  case XML_arabicPlain:
164  mnNumberingType <<= NumberingType::ARABIC;
165  setSuffixNone();
166  break;
167  case XML_circleNumDbPlain:
168  case XML_circleNumWdBlackPlain:
169  case XML_circleNumWdWhitePlain:
170  mnNumberingType <<= NumberingType::CIRCLE_NUMBER;
171  break;
172  case XML_ea1ChsPeriod:
173  mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH;
174  setSuffixPeriod();
175  break;
176  case XML_ea1ChsPlain:
177  mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH;
178  setSuffixNone();
179  break;
180  case XML_ea1ChtPeriod:
181  mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH_TW;
182  setSuffixPeriod();
183  break;
184  case XML_ea1ChtPlain:
185  mnNumberingType <<= NumberingType::NUMBER_UPPER_ZH_TW;
186  setSuffixNone();
187  break;
188  case XML_ea1JpnChsDbPeriod:
189  case XML_ea1JpnKorPeriod:
190  case XML_ea1JpnKorPlain:
191  break;
192  case XML_hebrew2Minus:
193  mnNumberingType <<= NumberingType::CHARS_HEBREW;
195  break;
196  case XML_hindiAlpha1Period:
197  case XML_hindiAlphaPeriod:
198  case XML_hindiNumParenR:
199  case XML_hindiNumPeriod:
200  // TODO
201  break;
202  case XML_romanLcParenBoth:
203  mnNumberingType <<= NumberingType::ROMAN_LOWER;
205  break;
206  case XML_romanLcParenR:
207  mnNumberingType <<= NumberingType::ROMAN_LOWER;
209  break;
210  case XML_romanLcPeriod:
211  mnNumberingType <<= NumberingType::ROMAN_LOWER;
212  setSuffixPeriod();
213  break;
214  case XML_romanUcParenBoth:
215  mnNumberingType <<= NumberingType::ROMAN_UPPER;
217  break;
218  case XML_romanUcParenR:
219  mnNumberingType <<= NumberingType::ROMAN_UPPER;
221  break;
222  case XML_romanUcPeriod:
223  mnNumberingType <<= NumberingType::ROMAN_UPPER;
224  setSuffixPeriod();
225  break;
226  case XML_thaiAlphaParenBoth:
227  case XML_thaiNumParenBoth:
228  mnNumberingType <<= NumberingType::CHARS_THAI;
230  break;
231  case XML_thaiAlphaParenR:
232  case XML_thaiNumParenR:
233  mnNumberingType <<= NumberingType::CHARS_THAI;
235  break;
236  case XML_thaiAlphaPeriod:
237  case XML_thaiNumPeriod:
238  mnNumberingType <<= NumberingType::CHARS_THAI;
239  setSuffixPeriod();
240  break;
241  }
242 }
243 
244 void BulletList::setBulletSize(sal_Int16 nSize)
245 {
246  mnSize <<= nSize;
247 }
248 
249 void BulletList::setBulletAspectRatio(double nAspectRatio)
250 {
251  mnAspectRatio <<= nAspectRatio;
252 }
253 
254 void BulletList::setFontSize(sal_Int16 nSize)
255 {
256  mnFontSize <<= nSize;
257 }
258 
259 void BulletList::apply( const BulletList& rSource )
260 {
261  if ( rSource.maBulletColorPtr->isUsed() )
263  if ( rSource.mbBulletColorFollowText.hasValue() )
265  if ( rSource.mbBulletFontFollowText.hasValue() )
268  if ( rSource.msBulletChar.hasValue() )
269  msBulletChar = rSource.msBulletChar;
270  if ( rSource.mnStartAt.hasValue() )
271  mnStartAt = rSource.mnStartAt;
272  if ( rSource.mnNumberingType.hasValue() )
274  if ( rSource.msNumberingPrefix.hasValue() )
276  if ( rSource.msNumberingSuffix.hasValue() )
278  if ( rSource.mnSize.hasValue() )
279  mnSize = rSource.mnSize;
280  if ( rSource.mnAspectRatio.hasValue() )
281  mnAspectRatio = rSource.mnAspectRatio;
282  if ( rSource.mnFontSize.hasValue() )
283  mnFontSize = rSource.mnFontSize;
284  if ( rSource.maStyleName.hasValue() )
285  maStyleName = rSource.maStyleName;
286  if ( rSource.maGraphic.hasValue() )
287  maGraphic = rSource.maGraphic;
288 }
289 
290 void BulletList::pushToPropMap( const ::oox::core::XmlFilterBase* pFilterBase, PropertyMap& rPropMap ) const
291 {
292  if( msNumberingPrefix.hasValue() )
293  rPropMap.setAnyProperty( PROP_Prefix, msNumberingPrefix);
294  if( msNumberingSuffix.hasValue() )
295  rPropMap.setAnyProperty( PROP_Suffix, msNumberingSuffix);
296  if( mnStartAt.hasValue() )
297  rPropMap.setAnyProperty( PROP_StartWith, mnStartAt);
298  rPropMap.setProperty( PROP_Adjust, HoriOrientation::LEFT);
299 
300  if( mnNumberingType.hasValue() )
301  rPropMap.setAnyProperty( PROP_NumberingType, mnNumberingType);
302 
303  OUString aBulletFontName;
304  sal_Int16 nBulletFontPitch = 0;
305  sal_Int16 nBulletFontFamily = 0;
306  bool bSymbolFont = false;
307  if( pFilterBase) {
308  if (maBulletFont.getFontData( aBulletFontName, nBulletFontPitch, nBulletFontFamily, *pFilterBase ) )
309  {
310  FontDescriptor aFontDesc;
311  sal_Int16 nFontSize = 0;
312  if( mnFontSize >>= nFontSize )
313  aFontDesc.Height = nFontSize;
314 
315  // TODO move the to the TextFont struct.
316  aFontDesc.Name = aBulletFontName;
317  aFontDesc.Pitch = nBulletFontPitch;
318  aFontDesc.Family = nBulletFontFamily;
319  if ( aBulletFontName.equalsIgnoreAsciiCase("Wingdings") ||
320  aBulletFontName.equalsIgnoreAsciiCase("Wingdings 2") ||
321  aBulletFontName.equalsIgnoreAsciiCase("Wingdings 3") ||
322  aBulletFontName.equalsIgnoreAsciiCase("Monotype Sorts") ||
323  aBulletFontName.equalsIgnoreAsciiCase("Monotype Sorts 2") ||
324  aBulletFontName.equalsIgnoreAsciiCase("Webdings") ||
325  aBulletFontName.equalsIgnoreAsciiCase("StarBats") ||
326  aBulletFontName.equalsIgnoreAsciiCase("StarMath") ||
327  aBulletFontName.equalsIgnoreAsciiCase("ZapfDingbats") ) {
328  aFontDesc.CharSet = RTL_TEXTENCODING_SYMBOL;
329  bSymbolFont = true;
330  }
331  rPropMap.setProperty( PROP_BulletFont, aFontDesc);
332  rPropMap.setProperty( PROP_BulletFontName, aBulletFontName);
333  }
334  }
335  if ( msBulletChar.hasValue() ) {
336  OUString sBuChar;
337 
338  msBulletChar >>= sBuChar;
339 
340  if( pFilterBase && sBuChar.getLength() == 1 && maBulletFont.getFontData( aBulletFontName, nBulletFontPitch, nBulletFontFamily, *pFilterBase ) && bSymbolFont )
341  {
342  sal_Unicode nBuChar = sBuChar.toChar();
343  nBuChar &= 0x00ff;
344  nBuChar |= 0xf000;
345  sBuChar = OUString( &nBuChar, 1 );
346  }
347 
348  rPropMap.setProperty( PROP_BulletChar, sBuChar);
349  }
350  if ( maGraphic.hasValue() )
351  {
352  Reference<css::awt::XBitmap> xBitmap(maGraphic, UNO_QUERY);
353  if (xBitmap.is())
354  rPropMap.setProperty(PROP_GraphicBitmap, xBitmap);
355  }
356  if( mnSize.hasValue() )
357  rPropMap.setAnyProperty( PROP_BulletRelSize, mnSize);
358  if ( maStyleName.hasValue() )
359  rPropMap.setAnyProperty( PROP_CharStyleName, maStyleName);
360  if (pFilterBase ) {
361  bool bFollowTextColor = false;
362  mbBulletColorFollowText >>= bFollowTextColor;
363  if ( maBulletColorPtr->isUsed() && !bFollowTextColor )
364  rPropMap.setProperty( PROP_BulletColor, maBulletColorPtr->getColor( pFilterBase->getGraphicHelper() ));
365  }
366 }
367 
369 : mnLevel( 0 )
370 {
371 }
372 
374 {
376  maBulletList.apply( rSourceProps.maBulletList );
378  if ( rSourceProps.maParaTopMargin.bHasValue )
379  maParaTopMargin = rSourceProps.maParaTopMargin;
380  if ( rSourceProps.maParaBottomMargin.bHasValue )
381  maParaBottomMargin = rSourceProps.maParaBottomMargin;
382  if ( rSourceProps.moParaLeftMargin )
383  moParaLeftMargin = rSourceProps.moParaLeftMargin;
384  if ( rSourceProps.moFirstLineIndentation )
386  if( rSourceProps.mnLevel )
387  mnLevel = rSourceProps.mnLevel;
388  if( rSourceProps.moParaAdjust )
389  moParaAdjust = rSourceProps.moParaAdjust;
390  if( rSourceProps.maLineSpacing.bHasValue )
391  maLineSpacing = rSourceProps.maLineSpacing;
392 }
393 
394 void TextParagraphProperties::pushToPropSet( const ::oox::core::XmlFilterBase* pFilterBase,
395  const Reference < XPropertySet >& xPropSet, PropertyMap& rioBulletMap, const BulletList* pMasterBuList, bool bApplyBulletMap, float fCharacterSize,
396  bool bPushDefaultValues ) const
397 {
398  PropertySet aPropSet( xPropSet );
400 
401  sal_Int32 nNumberingType = NumberingType::NUMBER_NONE;
402  if ( maBulletList.mnNumberingType.hasValue() )
403  {
404  maBulletList.mnNumberingType >>= nNumberingType;
405  aPropSet.setProperty< sal_Int16 >( PROP_NumberingLevel, getLevel() );
406  }
407  else if ( pMasterBuList && pMasterBuList->mnNumberingType.hasValue() )
408  pMasterBuList->mnNumberingType >>= nNumberingType;
409  if ( nNumberingType == NumberingType::NUMBER_NONE )
410  aPropSet.setProperty< sal_Int16 >( PROP_NumberingLevel, -1 );
411 
412  maBulletList.pushToPropMap( pFilterBase, rioBulletMap );
413 
414  if ( maParaTopMargin.bHasValue || bPushDefaultValues )
415  aPropSet.setProperty( PROP_ParaTopMargin, maParaTopMargin.toMargin( fCharacterSize != 0.0 ? fCharacterSize : getCharHeightPoints ( 12.0 ) ) );
416  if ( maParaBottomMargin.bHasValue || bPushDefaultValues )
417  aPropSet.setProperty( PROP_ParaBottomMargin, maParaBottomMargin.toMargin( fCharacterSize != 0.0 ? fCharacterSize : getCharHeightPoints ( 12.0 ) ) );
418 
419  std::optional< sal_Int32 > noParaLeftMargin( moParaLeftMargin );
420  std::optional< sal_Int32 > noFirstLineIndentation( moFirstLineIndentation );
421 
422  if ( nNumberingType != NumberingType::NUMBER_NONE )
423  {
424  if ( noParaLeftMargin )
425  {
426  aPropSet.setProperty<sal_Int32>( PROP_ParaLeftMargin, 0);
427  rioBulletMap.setProperty( PROP_LeftMargin, *noParaLeftMargin);
428  noParaLeftMargin.reset();
429  }
430  if ( noFirstLineIndentation )
431  {
432  // Force Paragraph property as zero - impress seems to use the value from previous
433  // (non) bullet line if not set to zero explicitly :(
434  aPropSet.setProperty<sal_Int32>( PROP_ParaFirstLineIndent, 0);
435  rioBulletMap.setProperty( PROP_FirstLineOffset, *noFirstLineIndentation);
436  noFirstLineIndentation.reset();
437  }
438  if ( nNumberingType != NumberingType::BITMAP && !rioBulletMap.hasProperty( PROP_BulletColor ) && pFilterBase )
439  rioBulletMap.setProperty( PROP_BulletColor, maTextCharacterProperties.maFillProperties.getBestSolidColor().getColor( pFilterBase->getGraphicHelper()));
440  }
441 
442  if ( bApplyBulletMap )
443  {
445  aPropSet.getProperty( xNumRule, PROP_NumberingRules );
446  OSL_ENSURE( xNumRule.is(), "can't get Numbering rules");
447 
448  try
449  {
450  if( xNumRule.is() )
451  {
452  if( !rioBulletMap.empty() )
453  {
454  // fix default bullet size to be 100%
455  if( !rioBulletMap.hasProperty( PROP_BulletRelSize ) )
456  rioBulletMap.setProperty<sal_Int16>( PROP_BulletRelSize, 100);
457  Sequence< PropertyValue > aBulletPropSeq = rioBulletMap.makePropertyValueSequence();
458  xNumRule->replaceByIndex( getLevel(), makeAny( aBulletPropSeq ) );
459  }
460 
461  aPropSet.setProperty( PROP_NumberingRules, xNumRule );
462  }
463  }
464  catch (const Exception &)
465  {
466  // Don't warn for now, expected to fail for Writer.
467  }
468  }
469  if ( noParaLeftMargin )
470  aPropSet.setProperty( PROP_ParaLeftMargin, *noParaLeftMargin);
471  if ( noFirstLineIndentation )
472  {
473  aPropSet.setProperty( PROP_ParaFirstLineIndent, *noFirstLineIndentation );
474  if( bPushDefaultValues )
475  {
476  // Reset TabStops - these would be auto calculated by Impress
477  TabStop aTabStop;
478  aTabStop.Position = 0;
479  Sequence< TabStop > aSeq { aTabStop };
480  aPropSet.setProperty( PROP_ParaTabStops, aSeq );
481  }
482  }
483 
484  if ( moParaAdjust )
485  {
486  aPropSet.setProperty( PROP_ParaAdjust, *moParaAdjust);
487  }
488  else
489  {
490  aPropSet.setProperty( PROP_ParaAdjust, css::style::ParagraphAdjust_LEFT);
491  }
492 
493  if ( maLineSpacing.bHasValue )
494  {
495  aPropSet.setProperty( PROP_ParaLineSpacing, maLineSpacing.toLineSpacing());
496  }
497  else
498  {
499  aPropSet.setProperty( PROP_ParaLineSpacing, css::style::LineSpacing( css::style::LineSpacingMode::PROP, 100 ));
500  }
501 }
502 
503 float TextParagraphProperties::getCharHeightPoints( float fDefault ) const
504 {
506 }
507 
508 #ifdef DBG_UTIL
509 // Note: Please don't remove this function. This is required for
510 // debugging pptx import problems.
512 {
513  Reference< css::drawing::XShape > xShape( oox::ppt::PowerPointImport::mpDebugFilterBase->getModelFactory()->createInstance( "com.sun.star.presentation.TitleTextShape" ), UNO_QUERY );
514  Reference< css::text::XText > xText( xShape, UNO_QUERY );
515 
517  if (xDebugPage.is())
518  xDebugPage->add( xShape );
519 
520  PropertyMap emptyMap;
521 
522  xText->setString( "debug" );
523  Reference< css::text::XTextCursor > xStart = xText->createTextCursor();
524  xStart->gotoEnd( true );
525  Reference< XPropertySet > xPropSet( xStart, UNO_QUERY );
526  pushToPropSet( nullptr, xPropSet, emptyMap, nullptr, false, 0 );
527  PropertySet aPropSet( xPropSet );
528  aPropSet.dump();
529 }
530 #endif
531 }
532 
533 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
std::optional< css::style::ParagraphAdjust > moParaAdjust
A helper that maps property identifiers to property values.
Definition: propertymap.hxx:52
bool getProperty(Type &orValue, sal_Int32 nPropId) const
Gets the specified property from the property set.
Definition: propertyset.hxx:94
void assignAll(const PropertyMap &rPropMap)
Inserts all properties contained in the passed property map.
sal_Int16 mnLevel
bool setProperty(sal_Int32 nPropId, Type &&rValue)
Sets the specified property to the passed value.
Definition: propertymap.hxx:70
Color getBestSolidColor() const
Tries to resolve current settings to a solid color, e.g.
css::style::LineSpacing toLineSpacing() const
Definition: textspacing.hxx:43
std::shared_ptr< T > make_shared(Args &&...args)
float getCharHeightPoints(float fDefault) const
Returns the largest character size of this paragraph.
bool getFontData(OUString &rFontName, sal_Int16 &rnFontPitch, sal_Int16 &rnFontFamily, const ::oox::core::XmlFilterBase &rFilter) const
Returns the font name, pitch, and family; tries to resolve theme placeholder names, e.g.
Definition: textfont.cxx:78
void setBulletChar(const OUString &sChar)
float getCharHeightPoints(float fDefault) const
Returns the current character size.
void setProperties(const css::uno::Sequence< OUString > &rPropNames, const css::uno::Sequence< css::uno::Any > &rValues)
Puts the passed properties into the property set.
sal_uInt16 sal_Unicode
::oox::drawingml::TextFont maBulletFont
void setBulletAspectRatio(double nAspectRatio)
sal_Int32 toMargin(float fFontSize) const
Definition: textspacing.hxx:55
bool hasProperty(sal_Int32 nPropId) const
Returns true, if the map contains a property with the passed identifier.
static XmlFilterBase * mpDebugFilterBase
Definition: pptimport.hxx:81
::Color getColor(const GraphicHelper &rGraphicHelper,::Color nPhClr=API_RGB_TRANSPARENT) const
Returns the final RGB color value.
Definition: color.cxx:481
void apply(const TextParagraphProperties &rSourceProps)
bool setAnyProperty(sal_Int32 nPropId, const css::uno::Any &rValue)
Sets the specified property to the passed value.
HRESULT createInstance(REFIID iid, Ifc **ppIfc)
css::uno::Sequence< css::beans::PropertyValue > makePropertyValueSequence() const
Returns a sequence of property values, filled with all contained properties.
A wrapper for a UNO property set.
Definition: propertyset.hxx:57
void setGraphic(css::uno::Reference< css::graphic::XGraphic > const &rXGraphic)
bool empty() const
if(aStr!=aBuf) UpdateName_Impl(m_xFollowLb.get()
void pushToPropSet(const ::oox::core::XmlFilterBase *pFilterBase, const css::uno::Reference< css::beans::XPropertySet > &xPropSet, PropertyMap &rioBulletList, const BulletList *pMasterBuList, bool bApplyBulletList, float fFontSize, bool bPushDefaultValues=false) const
Sequence< sal_Int8 > aSeq
void assignUsed(const TextCharacterProperties &rSourceProps)
Overwrites all members that are explicitly set in rSourceProps.
static css::uno::WeakReference< css::drawing::XDrawPage > mxDebugPage
std::shared_ptr< ::oox::drawingml::Color > maBulletColorPtr
void pushToPropMap(const ::oox::core::XmlFilterBase *pFilterBase, PropertyMap &xPropMap) const
void assignIfUsed(const TextFont &rTextFont)
Overwrites this text font with the passed text font, if it is used.
Definition: textfont.cxx:72
bool setProperty(sal_Int32 nPropId, const Type &rValue)
Puts the passed value into the property set.
css::uno::Any SAL_CALL makeAny(const SharedUNOComponent< INTERFACE, COMPONENT > &value)