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