LibreOffice Module sw (master)  1
vbaparagraphformat.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 #include "vbaparagraphformat.hxx"
20 #include <vbahelper/vbahelper.hxx>
21 #include <basic/sberrors.hxx>
22 #include <com/sun/star/style/LineSpacingMode.hpp>
23 #include <ooo/vba/word/WdLineSpacing.hpp>
24 #include <ooo/vba/word/WdParagraphAlignment.hpp>
25 #include <ooo/vba/word/WdOutlineLevel.hpp>
26 #include <com/sun/star/style/ParagraphAdjust.hpp>
27 #include <com/sun/star/style/BreakType.hpp>
28 #include <com/sun/star/beans/XPropertySet.hpp>
29 #include "vbatabstops.hxx"
30 
31 using namespace ::ooo::vba;
32 using namespace ::com::sun::star;
33 
34 const sal_Int16 CHARACTER_INDENT_FACTOR = 12;
35 const sal_Int16 PERCENT100 = 100;
36 const sal_Int16 PERCENT150 = 150;
37 const sal_Int16 PERCENT200 = 200;
38 
39 SwVbaParagraphFormat::SwVbaParagraphFormat( const uno::Reference< ooo::vba::XHelperInterface >& rParent, const uno::Reference< uno::XComponentContext >& rContext, const uno::Reference< beans::XPropertySet >& rParaProps ) : SwVbaParagraphFormat_BASE( rParent, rContext ), mxParaProps( rParaProps )
40 {
41 }
42 
44 {
45 }
46 
48 {
49  style::ParagraphAdjust aParaAdjust = style::ParagraphAdjust_LEFT;
50  mxParaProps->getPropertyValue("ParaAdjust") >>= aParaAdjust;
51  return getMSWordAlignment( aParaAdjust );
52 }
53 
54 void SAL_CALL SwVbaParagraphFormat::setAlignment( sal_Int32 _alignment )
55 {
56  style::ParagraphAdjust aParaAdjust = getOOoAlignment( _alignment );
57  mxParaProps->setPropertyValue("ParaAdjust", uno::makeAny( aParaAdjust ) );
58 }
59 
61 {
62  sal_Int32 indent = 0;
63  mxParaProps->getPropertyValue("ParaFirstLineIndent") >>= indent;
64  return static_cast<float>( Millimeter::getInPoints( indent ) );
65 }
66 
67 void SAL_CALL SwVbaParagraphFormat::setFirstLineIndent( float _firstlineindent )
68 {
69  sal_Int32 indent = Millimeter::getInHundredthsOfOneMillimeter( _firstlineindent );
70  mxParaProps->setPropertyValue("ParaFirstLineIndent", uno::makeAny( indent ) );
71 }
72 
74 {
75  bool bKeep = false;
76  mxParaProps->getPropertyValue("ParaKeepTogether") >>= bKeep;
77  return uno::makeAny ( bKeep );
78 }
79 
80 void SAL_CALL SwVbaParagraphFormat::setKeepTogether( const uno::Any& _keeptogether )
81 {
82  bool bKeep = false;
83  if( _keeptogether >>= bKeep )
84  {
85  mxParaProps->setPropertyValue("ParaKeepTogether", uno::makeAny( bKeep ) );
86  }
87  else
88  {
89  DebugHelper::runtimeexception( ERRCODE_BASIC_BAD_PARAMETER );
90  }
91 }
92 
94 {
95  bool bKeep = false;
96  mxParaProps->getPropertyValue("ParaSplit") >>= bKeep;
97  return uno::makeAny ( bKeep );
98 }
99 
100 void SAL_CALL SwVbaParagraphFormat::setKeepWithNext( const uno::Any& _keepwithnext )
101 {
102  bool bKeep = false;
103  if( _keepwithnext >>= bKeep )
104  {
105  mxParaProps->setPropertyValue("ParaSplit", uno::makeAny( bKeep ) );
106  }
107  else
108  {
109  DebugHelper::runtimeexception( ERRCODE_BASIC_BAD_PARAMETER );
110  }
111 }
112 
114 {
115  bool bHypn = false;
116  mxParaProps->getPropertyValue("ParaIsHyphenation") >>= bHypn;
117  return uno::makeAny ( bHypn );
118 }
119 
120 void SAL_CALL SwVbaParagraphFormat::setHyphenation( const uno::Any& _hyphenation )
121 {
122  bool bHypn = false;
123  if( _hyphenation >>= bHypn )
124  {
125  mxParaProps->setPropertyValue("ParaIsHyphenation", uno::makeAny( bHypn ) );
126  }
127  else
128  {
129  DebugHelper::runtimeexception( ERRCODE_BASIC_BAD_PARAMETER );
130  }
131 }
132 
134 {
135  style::LineSpacing aLineSpacing;
136  mxParaProps->getPropertyValue("ParaLineSpacing") >>= aLineSpacing;
137  return getMSWordLineSpacing( aLineSpacing );
138 }
139 
140 void SAL_CALL SwVbaParagraphFormat::setLineSpacing( float _linespacing )
141 {
142  style::LineSpacing aLineSpacing;
143  mxParaProps->getPropertyValue("ParaLineSpacing") >>= aLineSpacing;
144  aLineSpacing = getOOoLineSpacing( _linespacing, aLineSpacing.Mode );
145  mxParaProps->setPropertyValue("ParaLineSpacing", uno::makeAny( aLineSpacing ) );
146 }
147 
149 {
150  style::LineSpacing aLineSpacing;
151  mxParaProps->getPropertyValue("ParaLineSpacing") >>= aLineSpacing;
152  return getMSWordLineSpacingRule( aLineSpacing );
153 }
154 
155 void SAL_CALL SwVbaParagraphFormat::setLineSpacingRule( sal_Int32 _linespacingrule )
156 {
157  style::LineSpacing aLineSpacing = getOOoLineSpacingFromRule( _linespacingrule );
158  mxParaProps->setPropertyValue("ParaLineSpacing", uno::makeAny( aLineSpacing ) );
159 }
160 
162 {
163  bool noLineNum = false;
164  mxParaProps->getPropertyValue("ParaLineNumberCount") >>= noLineNum;
165  return uno::makeAny ( noLineNum );
166 }
167 
168 void SAL_CALL SwVbaParagraphFormat::setNoLineNumber( const uno::Any& _nolinenumber )
169 {
170  bool noLineNum = false;
171  if( _nolinenumber >>= noLineNum )
172  {
173  mxParaProps->setPropertyValue("ParaLineNumberCount", uno::makeAny( noLineNum ) );
174  }
175  else
176  {
177  DebugHelper::runtimeexception( ERRCODE_BASIC_BAD_PARAMETER );
178  }
179 }
180 
182 {
183  sal_Int32 nLevel = word::WdOutlineLevel::wdOutlineLevelBodyText;
184  OUString aHeading;
185  const OUString HEADING = "Heading";
186  mxParaProps->getPropertyValue("ParaStyleName") >>= aHeading;
187  if( aHeading.startsWith( HEADING ) )
188  {
189  // get the sub string after "Heading"
190  nLevel = aHeading.copy( HEADING.getLength() ).toInt32();
191  }
192  return nLevel;
193 }
194 
195 void SAL_CALL SwVbaParagraphFormat::setOutlineLevel( sal_Int32 _outlinelevel )
196 {
197  if( _outlinelevel != getOutlineLevel() )
198  {
199  // TODO: in my test in msword, there is no effect for this function.
200  }
201 }
202 
204 {
205  style::BreakType aBreakType;
206  mxParaProps->getPropertyValue("BreakType") >>= aBreakType;
207  bool bBreakBefore = ( aBreakType == style::BreakType_PAGE_BEFORE || aBreakType == style::BreakType_PAGE_BOTH );
208  return uno::makeAny( bBreakBefore );
209 }
210 
211 void SAL_CALL SwVbaParagraphFormat::setPageBreakBefore( const uno::Any& _breakbefore )
212 {
213  bool bBreakBefore = false;
214  if( _breakbefore >>= bBreakBefore )
215  {
216  style::BreakType aBreakType;
217  mxParaProps->getPropertyValue("BreakType") >>= aBreakType;
218  if( bBreakBefore )
219  {
220  if( aBreakType == style::BreakType_NONE )
221  aBreakType = style::BreakType_PAGE_BEFORE;
222  else if ( aBreakType == style::BreakType_PAGE_AFTER )
223  aBreakType = style::BreakType_PAGE_BOTH;
224  }
225  else
226  {
227  if( aBreakType == style::BreakType_PAGE_BOTH )
228  aBreakType = style::BreakType_PAGE_AFTER;
229  else if ( aBreakType == style::BreakType_PAGE_BEFORE )
230  aBreakType = style::BreakType_PAGE_AFTER;
231  }
232  mxParaProps->setPropertyValue("BreakType", uno::makeAny( aBreakType ) );
233  }
234  else
235  {
236  DebugHelper::runtimeexception( ERRCODE_BASIC_BAD_PARAMETER );
237  }
238 }
239 
241 {
242  sal_Int32 nSpace = 0;
243  mxParaProps->getPropertyValue("ParaTopMargin") >>= nSpace;
244  return static_cast<float>( Millimeter::getInPoints( nSpace ) );
245 }
246 
247 void SAL_CALL SwVbaParagraphFormat::setSpaceBefore( float _space )
248 {
249  sal_Int32 nSpace = Millimeter::getInHundredthsOfOneMillimeter( _space );
250  mxParaProps->setPropertyValue("ParaTopMargin", uno::makeAny( nSpace ) );
251 }
252 
254 {
255  sal_Int32 nSpace = 0;
256  mxParaProps->getPropertyValue("ParaBottomMargin") >>= nSpace;
257  return static_cast<float>( Millimeter::getInPoints( nSpace ) );
258 }
259 
260 void SAL_CALL SwVbaParagraphFormat::setSpaceAfter( float _space )
261 {
262  sal_Int32 nSpace = Millimeter::getInHundredthsOfOneMillimeter( _space );
263  mxParaProps->setPropertyValue("ParaBottomMargin", uno::makeAny( nSpace ) );
264 }
265 
267 {
268  sal_Int32 nIndent = 0;
269  mxParaProps->getPropertyValue("ParaLeftMargin") >>= nIndent;
270  return static_cast<float>( Millimeter::getInPoints( nIndent ) );
271 }
272 
273 void SAL_CALL SwVbaParagraphFormat::setLeftIndent( float _leftindent )
274 {
275  sal_Int32 nIndent = Millimeter::getInHundredthsOfOneMillimeter( _leftindent );
276  mxParaProps->setPropertyValue("ParaLeftMargin", uno::makeAny( nIndent ) );
277 }
278 
280 {
281  sal_Int32 nIndent = 0;
282  mxParaProps->getPropertyValue("ParaRightMargin") >>= nIndent;
283  return static_cast<float>( Millimeter::getInPoints( nIndent ) );
284 }
285 
286 void SAL_CALL SwVbaParagraphFormat::setRightIndent( float _rightindent )
287 {
288  sal_Int32 nIndent = Millimeter::getInHundredthsOfOneMillimeter( _rightindent );
289  mxParaProps->setPropertyValue("ParaRightMargin", uno::makeAny( nIndent ) );
290 }
291 
293 {
294  return uno::makeAny( uno::Reference< word::XTabStops >( new SwVbaTabStops( this, mxContext, mxParaProps ) ) );
295 }
296 
297 void SAL_CALL SwVbaParagraphFormat::setTabStops( const uno::Any& /*_tabstops*/ )
298 {
299  throw uno::RuntimeException("Not implemented" );
300 }
301 
303 {
304  sal_Int8 nWidow = 0;
305  mxParaProps->getPropertyValue("ParaWidows") >>= nWidow;
306  sal_Int8 nOrphan = 0;
307  mxParaProps->getPropertyValue("ParaOrphans") >>= nOrphan;
308  // if the amount of single lines on one page > 1 and the same of start and end of the paragraph,
309  // true is returned.
310  bool bWidow = ( nWidow > 1 && nOrphan == nWidow );
311  return uno::makeAny( bWidow );
312 }
313 
314 void SAL_CALL SwVbaParagraphFormat::setWidowControl( const uno::Any& _widowcontrol )
315 {
316  // if we get true, the part of the paragraph on one page has to be
317  // at least two lines
318  bool bWidow = false;
319  if( _widowcontrol >>= bWidow )
320  {
321  sal_Int8 nControl = bWidow? 2:1;
322  mxParaProps->setPropertyValue("ParaWidows", uno::makeAny( nControl ) );
323  mxParaProps->setPropertyValue("ParaOrphans", uno::makeAny( nControl ) );
324  }
325  else
326  {
327  DebugHelper::runtimeexception( ERRCODE_BASIC_BAD_PARAMETER );
328  }
329 }
330 
331 style::LineSpacing SwVbaParagraphFormat::getOOoLineSpacing( float _lineSpace, sal_Int16 mode )
332 {
333  style::LineSpacing aLineSpacing;
334  if( mode != style::LineSpacingMode::MINIMUM && mode != style::LineSpacingMode::FIX )
335  {
336  // special behaviour of word: if the space is set to these values, the rule and
337  // the height are changed accordingly
338  if( _lineSpace == CHARACTER_INDENT_FACTOR )
339  {
340  aLineSpacing.Mode = style::LineSpacingMode::PROP;
341  aLineSpacing.Height = PERCENT100;
342  }
343  else if( _lineSpace == CHARACTER_INDENT_FACTOR * 1.5 ) // no rounding issues, == 18
344  {
345  aLineSpacing.Mode = style::LineSpacingMode::PROP;
346  aLineSpacing.Height = PERCENT150;
347  }
348  else if( _lineSpace == CHARACTER_INDENT_FACTOR * 2 )
349  {
350  aLineSpacing.Mode = style::LineSpacingMode::PROP;
351  aLineSpacing.Height = PERCENT200;
352  }
353  else
354  {
355  aLineSpacing.Mode = style::LineSpacingMode::FIX;
356  aLineSpacing.Height = static_cast<sal_Int16>( Millimeter::getInHundredthsOfOneMillimeter( _lineSpace ) );
357  }
358  }
359  else
360  {
361  aLineSpacing.Mode = mode;
362  aLineSpacing.Height = static_cast<sal_Int16>( Millimeter::getInHundredthsOfOneMillimeter( _lineSpace ) );
363  }
364  return aLineSpacing;
365 }
366 
367 style::LineSpacing SwVbaParagraphFormat::getOOoLineSpacingFromRule( sal_Int32 _linespacingrule )
368 {
369  style::LineSpacing aLineSpacing;
370  switch( _linespacingrule )
371  {
372  case word::WdLineSpacing::wdLineSpace1pt5:
373  {
374  aLineSpacing.Mode = style::LineSpacingMode::PROP;
375  aLineSpacing.Height = PERCENT150;
376  break;
377  }
378  case word::WdLineSpacing::wdLineSpaceAtLeast:
379  {
380  aLineSpacing.Mode = style::LineSpacingMode::MINIMUM;
381  aLineSpacing.Height = getCharHeight();
382  break;
383  }
384  case word::WdLineSpacing::wdLineSpaceDouble:
385  {
386  aLineSpacing.Mode = style::LineSpacingMode::PROP;
387  aLineSpacing.Height = getCharHeight();
388  break;
389  }
390  case word::WdLineSpacing::wdLineSpaceExactly:
391  case word::WdLineSpacing::wdLineSpaceMultiple:
392  {
393  aLineSpacing.Mode = style::LineSpacingMode::FIX;
394  aLineSpacing.Height = getCharHeight();
395  break;
396  }
397  case word::WdLineSpacing::wdLineSpaceSingle:
398  {
399  aLineSpacing.Mode = style::LineSpacingMode::PROP;
400  aLineSpacing.Height = PERCENT100;
401  break;
402  }
403  default:
404  {
405  DebugHelper::runtimeexception( ERRCODE_BASIC_BAD_PARAMETER );
406  break;
407  }
408  }
409  return aLineSpacing;
410 }
411 
412 float SwVbaParagraphFormat::getMSWordLineSpacing( style::LineSpacing const & rLineSpacing )
413 {
414  float wdLineSpacing = 0;
415  if( rLineSpacing.Mode != style::LineSpacingMode::PROP )
416  {
417  wdLineSpacing = static_cast<float>( Millimeter::getInPoints( rLineSpacing.Height ) );
418  }
419  else
420  {
421  wdLineSpacing = static_cast<float>( CHARACTER_INDENT_FACTOR * rLineSpacing.Height ) / PERCENT100;
422  }
423  return wdLineSpacing;
424 }
425 
426 sal_Int32 SwVbaParagraphFormat::getMSWordLineSpacingRule( style::LineSpacing const & rLineSpacing )
427 {
428  sal_Int32 wdLineSpacing = word::WdLineSpacing::wdLineSpaceSingle;
429  switch( rLineSpacing.Mode )
430  {
431  case style::LineSpacingMode::PROP:
432  {
433  switch( rLineSpacing.Height )
434  {
435  case PERCENT100:
436  {
437  wdLineSpacing = word::WdLineSpacing::wdLineSpaceSingle;
438  break;
439  }
440  case PERCENT150:
441  {
442  wdLineSpacing = word::WdLineSpacing::wdLineSpace1pt5;
443  break;
444  }
445  case PERCENT200:
446  {
447  wdLineSpacing = word::WdLineSpacing::wdLineSpaceDouble;
448  break;
449  }
450  default:
451  {
452  wdLineSpacing = word::WdLineSpacing::wdLineSpaceMultiple;
453  }
454  }
455  break;
456  }
457  case style::LineSpacingMode::MINIMUM:
458  {
459  wdLineSpacing = word::WdLineSpacing::wdLineSpaceAtLeast;
460  break;
461  }
462  case style::LineSpacingMode::FIX:
463  case style::LineSpacingMode::LEADING:
464  {
465  wdLineSpacing = word::WdLineSpacing::wdLineSpaceExactly;
466  break;
467  }
468  default:
469  {
470  DebugHelper::runtimeexception( ERRCODE_BASIC_BAD_PARAMETER );
471  }
472  }
473  return wdLineSpacing;
474 }
475 
477 {
478  float fCharHeight = 0.0;
479  mxParaProps->getPropertyValue("CharHeight") >>= fCharHeight;
480  return static_cast<sal_Int16>( Millimeter::getInHundredthsOfOneMillimeter( fCharHeight ) );
481 }
482 
483 style::ParagraphAdjust SwVbaParagraphFormat::getOOoAlignment( sal_Int32 _alignment )
484 {
485  style::ParagraphAdjust nParaAjust = style::ParagraphAdjust_LEFT;
486  switch( _alignment )
487  {
488  case word::WdParagraphAlignment::wdAlignParagraphCenter:
489  {
490  nParaAjust = style::ParagraphAdjust_CENTER;
491  break;
492  }
493  case word::WdParagraphAlignment::wdAlignParagraphJustify:
494  {
495  nParaAjust = style::ParagraphAdjust_BLOCK;
496  break;
497  }
498  case word::WdParagraphAlignment::wdAlignParagraphLeft:
499  {
500  nParaAjust = style::ParagraphAdjust_LEFT;
501  break;
502  }
503  case word::WdParagraphAlignment::wdAlignParagraphRight:
504  {
505  nParaAjust = style::ParagraphAdjust_RIGHT;
506  break;
507  }
508  default:
509  {
510  DebugHelper::runtimeexception( ERRCODE_BASIC_BAD_PARAMETER );
511  }
512  }
513  return nParaAjust;
514 }
515 
516 sal_Int32 SwVbaParagraphFormat::getMSWordAlignment( style::ParagraphAdjust _alignment )
517 {
518  sal_Int32 wdAlignment = word::WdParagraphAlignment::wdAlignParagraphLeft;
519  switch( _alignment )
520  {
521  case style::ParagraphAdjust_CENTER:
522  {
523  wdAlignment = word::WdParagraphAlignment::wdAlignParagraphCenter;
524  break;
525  }
526  case style::ParagraphAdjust_LEFT:
527  {
528  wdAlignment = word::WdParagraphAlignment::wdAlignParagraphLeft;
529  break;
530  }
531  case style::ParagraphAdjust_BLOCK:
532  {
533  wdAlignment = word::WdParagraphAlignment::wdAlignParagraphJustify;
534  break;
535  }
536  case style::ParagraphAdjust_RIGHT:
537  {
538  wdAlignment = word::WdParagraphAlignment::wdAlignParagraphRight;
539  break;
540  }
541  default:
542  {
543  DebugHelper::basicexception( ERRCODE_BASIC_BAD_PARAMETER, OUString() );
544  }
545  }
546  return wdAlignment;
547 }
548 
549 OUString
551 {
552  return "SwVbaParagraphFormat";
553 }
554 
555 uno::Sequence< OUString >
557 {
558  static uno::Sequence< OUString > const aServiceNames
559  {
560  "ooo.vba.word.ParagraphFormat"
561  };
562  return aServiceNames;
563 }
564 
565 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
virtual void SAL_CALL setLineSpacingRule(::sal_Int32 _linespacingrule) override
static float getMSWordLineSpacing(css::style::LineSpacing const &rLineSpacing)
virtual css::uno::Any SAL_CALL getTabStops() override
const sal_Int16 PERCENT200
signed char sal_Int8
virtual void SAL_CALL setSpaceAfter(float _spaceafter) override
virtual float SAL_CALL getLineSpacing() override
sal_Int32 toInt32(OUString const &rStr)
virtual void SAL_CALL setKeepTogether(const css::uno::Any &_keeptogether) override
virtual ::sal_Int32 SAL_CALL getAlignment() override
virtual void SAL_CALL setLineSpacing(float _linespacing) override
Sequence< OUString > aServiceNames
virtual css::uno::Any SAL_CALL getPageBreakBefore() override
virtual void SAL_CALL setNoLineNumber(const css::uno::Any &_nolinenumber) override
virtual ::sal_Int32 SAL_CALL getLineSpacingRule() override
SwVbaParagraphFormat(const css::uno::Reference< ooo::vba::XHelperInterface > &rParent, const css::uno::Reference< css::uno::XComponentContext > &rContext, const css::uno::Reference< css::beans::XPropertySet > &rParaProps)
virtual css::uno::Any SAL_CALL getKeepTogether() override
virtual float SAL_CALL getSpaceBefore() override
virtual void SAL_CALL setLeftIndent(float _leftindent) override
virtual ::sal_Int32 SAL_CALL getOutlineLevel() override
virtual void SAL_CALL setOutlineLevel(::sal_Int32 _outlinelevel) override
static sal_Int32 getMSWordLineSpacingRule(css::style::LineSpacing const &rLineSpacing)
static css::style::LineSpacing getOOoLineSpacing(float _lineSpace, sal_Int16 mode)
const sal_Int16 CHARACTER_INDENT_FACTOR
virtual float SAL_CALL getRightIndent() override
virtual void SAL_CALL setFirstLineIndent(float _firstlineindent) override
virtual void SAL_CALL setTabStops(const css::uno::Any &_tabstops) override
static sal_Int32 getMSWordAlignment(css::style::ParagraphAdjust _alignment)
virtual float SAL_CALL getFirstLineIndent() override
virtual void SAL_CALL setWidowControl(const css::uno::Any &_widowcontrol) override
virtual void SAL_CALL setKeepWithNext(const css::uno::Any &_keepwithnext) override
css::uno::Reference< css::beans::XPropertySet > mxParaProps
virtual ~SwVbaParagraphFormat() override
virtual css::uno::Any SAL_CALL getWidowControl() override
#define ERRCODE_BASIC_BAD_PARAMETER
virtual void SAL_CALL setAlignment(::sal_Int32 _alignment) override
virtual void SAL_CALL setSpaceBefore(float _spacebefore) override
virtual float SAL_CALL getSpaceAfter() override
virtual css::uno::Any SAL_CALL getHyphenation() override
virtual float SAL_CALL getLeftIndent() override
css::uno::Reference< css::uno::XComponentContext > mxContext
css::style::LineSpacing getOOoLineSpacingFromRule(sal_Int32 _linespacingrule)
virtual OUString getServiceImplName() override
static css::style::ParagraphAdjust getOOoAlignment(sal_Int32 _alignment)
virtual css::uno::Any SAL_CALL getKeepWithNext() override
virtual void SAL_CALL setHyphenation(const css::uno::Any &_hyphenation) override
virtual void SAL_CALL setPageBreakBefore(const css::uno::Any &_pagebreakbefore) override
virtual css::uno::Any SAL_CALL getNoLineNumber() override
virtual void SAL_CALL setRightIndent(float _rightindent) override
const sal_Int16 PERCENT100
const sal_Int16 PERCENT150
virtual css::uno::Sequence< OUString > getServiceNames() override