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