LibreOffice Module svx (master)  1
sdrtextprimitive2d.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 #include <svx/svdotext.hxx>
24 #include <editeng/outlobj.hxx>
25 #include <editeng/editobj.hxx>
26 #include <editeng/flditem.hxx>
28 #include <svx/unoapi.hxx>
29 #include <svx/svdpage.hxx>
30 #include <svx/svdmodel.hxx>
31 #include <svx/svdoutl.hxx>
32 #include <com/sun/star/beans/XPropertySet.hpp>
33 
34 
35 using namespace com::sun::star;
36 
37 
38 namespace
39 {
40  sal_Int16 getPageNumber(const uno::Reference< drawing::XDrawPage >& rxDrawPage)
41  {
42  sal_Int16 nRetval(0);
43  uno::Reference< beans::XPropertySet > xSet(rxDrawPage, uno::UNO_QUERY);
44 
45  if (xSet.is())
46  {
47  try
48  {
49  const uno::Any aNumber(xSet->getPropertyValue("Number"));
50  aNumber >>= nRetval;
51  }
52  catch(const uno::Exception&)
53  {
54  OSL_ASSERT(false);
55  }
56  }
57 
58  return nRetval;
59  }
60 
61  sal_Int16 getPageCount(const uno::Reference< drawing::XDrawPage >& rxDrawPage)
62  {
63  sal_Int16 nRetval(0);
64  SdrPage* pPage = GetSdrPageFromXDrawPage(rxDrawPage);
65 
66  if(pPage)
67  {
68  if( (pPage->GetPageNum() == 0) && !pPage->IsMasterPage() )
69  {
70  // handout page!
72  }
73  else
74  {
75  const sal_uInt16 nPageCount(pPage->getSdrModelFromSdrPage().GetPageCount());
76  nRetval = (static_cast<sal_Int16>(nPageCount) - 1) / 2;
77  }
78  }
79 
80  return nRetval;
81  }
82 } // end of anonymous namespace
83 
84 
86 {
87  // support for XTEXT_PAINTSHAPE_BEGIN/XTEXT_PAINTSHAPE_END Metafile comments
88  // for slideshow. This uses TextHierarchyBlockPrimitive2D to mark a text block.
89  // ATM there is only one text block per SdrObject, this may get more in the future
90  void SdrTextPrimitive2D::encapsulateWithTextHierarchyBlockPrimitive2D(Primitive2DContainer& rContainer, const Primitive2DContainer& rCandidate)
91  {
92  rContainer.push_back(new TextHierarchyBlockPrimitive2D(rCandidate));
93  }
94 
95  SdrTextPrimitive2D::SdrTextPrimitive2D(
96  const SdrText* pSdrText,
97  const OutlinerParaObject& rOutlinerParaObject)
99  mrSdrText(const_cast< SdrText* >(pSdrText)),
100  maOutlinerParaObject(rOutlinerParaObject),
101  mxLastVisualizingPage(),
102  mnLastPageNumber(0),
103  mnLastPageCount(0),
104  maLastTextBackgroundColor(),
105  mbContainsPageField(false),
106  mbContainsPageCountField(false),
107  mbContainsOtherFields(false)
108  {
110 
117  }
118 
120 
121  bool SdrTextPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
122  {
123  if(BufferedDecompositionPrimitive2D::operator==(rPrimitive))
124  {
125  const SdrTextPrimitive2D& rCompare = static_cast<const SdrTextPrimitive2D&>(rPrimitive);
126 
127  return (
128 
129  // compare OPO and content, but not WrongList
131 
132  // also compare WrongList (not-persistent data, but visualized)
134  }
135 
136  return false;
137  }
138 
140  {
141  uno::Reference< drawing::XDrawPage > xCurrentlyVisualizingPage;
142  bool bCurrentlyVisualizingPageIsSet(false);
143  Color aNewTextBackgroundColor;
144  bool bNewTextBackgroundColorIsSet(false);
145  sal_Int16 nCurrentlyValidPageNumber(0);
146  sal_Int16 nCurrentlyValidPageCount(0);
147 
148  if(!getBuffered2DDecomposition().empty())
149  {
150  bool bDoDelete(false);
151 
152  // check visualized page
154  {
155  // get visualized page and remember
156  xCurrentlyVisualizingPage = rViewInformation.getVisualizedPage();
157  bCurrentlyVisualizingPageIsSet = true;
158 
159  if(xCurrentlyVisualizingPage != mxLastVisualizingPage)
160  {
161  bDoDelete = true;
162  }
163 
164  // #i98870# check visualized PageNumber
165  if(!bDoDelete && mbContainsPageField)
166  {
167  nCurrentlyValidPageNumber = getPageNumber(xCurrentlyVisualizingPage);
168 
169  if(nCurrentlyValidPageNumber != mnLastPageNumber)
170  {
171  bDoDelete = true;
172  }
173  }
174 
175  // #i98870# check visualized PageCount, too
176  if(!bDoDelete && mbContainsPageCountField)
177  {
178  nCurrentlyValidPageCount = getPageCount(xCurrentlyVisualizingPage);
179 
180  if(nCurrentlyValidPageCount != mnLastPageCount)
181  {
182  bDoDelete = true;
183  }
184  }
185  }
186 
187  // #i101443# check change of TextBackgroundolor
188  if(!bDoDelete && getSdrText())
189  {
191  aNewTextBackgroundColor = rDrawOutliner.GetBackgroundColor();
192  bNewTextBackgroundColorIsSet = true;
193 
194  if(aNewTextBackgroundColor != maLastTextBackgroundColor)
195  {
196  bDoDelete = true;
197  }
198  }
199 
200  if(bDoDelete)
201  {
203  }
204  }
205 
206  if(getBuffered2DDecomposition().empty())
207  {
208  if(!bCurrentlyVisualizingPageIsSet && mbContainsPageField)
209  {
210  xCurrentlyVisualizingPage = rViewInformation.getVisualizedPage();
211  }
212 
213  if(!nCurrentlyValidPageNumber && mbContainsPageField)
214  {
215  nCurrentlyValidPageNumber = getPageNumber(xCurrentlyVisualizingPage);
216  }
217 
218  if(!nCurrentlyValidPageCount && mbContainsPageCountField)
219  {
220  nCurrentlyValidPageCount = getPageCount(xCurrentlyVisualizingPage);
221  }
222 
223  if(!bNewTextBackgroundColorIsSet && getSdrText())
224  {
226  aNewTextBackgroundColor = rDrawOutliner.GetBackgroundColor();
227  }
228 
229  const_cast< SdrTextPrimitive2D* >(this)->mxLastVisualizingPage = xCurrentlyVisualizingPage;
230  const_cast< SdrTextPrimitive2D* >(this)->mnLastPageNumber = nCurrentlyValidPageNumber;
231  const_cast< SdrTextPrimitive2D* >(this)->mnLastPageCount = nCurrentlyValidPageCount;
232  const_cast< SdrTextPrimitive2D* >(this)->maLastTextBackgroundColor = aNewTextBackgroundColor;
233  }
234 
235  // call parent
236  BufferedDecompositionPrimitive2D::get2DDecomposition(rVisitor, rViewInformation);
237  }
238 
239 
240 
241 
243  {
244  Primitive2DContainer aRetval;
245  getSdrText()->GetObject().impDecomposeContourTextPrimitive(aRetval, *this, aViewInformation);
246 
248  }
249 
251  const SdrText* pSdrText,
252  const OutlinerParaObject& rOutlinerParaObject,
253  const basegfx::B2DPolyPolygon& rUnitPolyPolygon,
254  const basegfx::B2DHomMatrix& rObjectTransform)
255  : SdrTextPrimitive2D(pSdrText, rOutlinerParaObject),
256  maUnitPolyPolygon(rUnitPolyPolygon),
257  maObjectTransform(rObjectTransform)
258  {
259  }
260 
262  {
263  if(SdrTextPrimitive2D::operator==(rPrimitive))
264  {
265  const SdrContourTextPrimitive2D& rCompare = static_cast<const SdrContourTextPrimitive2D&>(rPrimitive);
266 
267  return (getUnitPolyPolygon() == rCompare.getUnitPolyPolygon()
268  && getObjectTransform() == rCompare.getObjectTransform());
269  }
270 
271  return false;
272  }
273 
274  std::unique_ptr<SdrTextPrimitive2D> SdrContourTextPrimitive2D::createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const
275  {
276  return std::make_unique<SdrContourTextPrimitive2D>(
277  getSdrText(),
280  rTransform * getObjectTransform());
281  }
282 
283  // provide unique ID
285 
286 
287 
288  void SdrPathTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
289  {
290  Primitive2DContainer aRetval;
291  getSdrText()->GetObject().impDecomposePathTextPrimitive(aRetval, *this, aViewInformation);
292 
293  encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
294  }
295 
297  const SdrText* pSdrText,
298  const OutlinerParaObject& rOutlinerParaObject,
299  const basegfx::B2DPolyPolygon& rPathPolyPolygon,
300  const attribute::SdrFormTextAttribute& rSdrFormTextAttribute)
301  : SdrTextPrimitive2D(pSdrText, rOutlinerParaObject),
302  maPathPolyPolygon(rPathPolyPolygon),
303  maSdrFormTextAttribute(rSdrFormTextAttribute)
304  {
305  }
306 
307  bool SdrPathTextPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
308  {
309  if(SdrTextPrimitive2D::operator==(rPrimitive))
310  {
311  const SdrPathTextPrimitive2D& rCompare = static_cast<const SdrPathTextPrimitive2D&>(rPrimitive);
312 
313  return (getPathPolyPolygon() == rCompare.getPathPolyPolygon()
314  && getSdrFormTextAttribute() == rCompare.getSdrFormTextAttribute());
315  }
316 
317  return false;
318  }
319 
320  std::unique_ptr<SdrTextPrimitive2D> SdrPathTextPrimitive2D::createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const
321  {
322  basegfx::B2DPolyPolygon aNewPolyPolygon(getPathPolyPolygon());
323  aNewPolyPolygon.transform(rTransform);
324 
325  return std::make_unique<SdrPathTextPrimitive2D>(
326  getSdrText(),
327  getOutlinerParaObject(),
328  aNewPolyPolygon,
329  getSdrFormTextAttribute());
330  }
331 
332  // provide unique ID
334 
335 
336 
337  void SdrBlockTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
338  {
339  Primitive2DContainer aRetval;
340  getSdrText()->GetObject().impDecomposeBlockTextPrimitive(aRetval, *this, aViewInformation);
341 
342  encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
343  }
344 
345  SdrBlockTextPrimitive2D::SdrBlockTextPrimitive2D(
346  const SdrText* pSdrText,
347  const OutlinerParaObject& rOutlinerParaObject,
348  const basegfx::B2DHomMatrix& rTextRangeTransform,
349  SdrTextHorzAdjust aSdrTextHorzAdjust,
350  SdrTextVertAdjust aSdrTextVertAdjust,
351  bool bFixedCellHeight,
352  bool bUnlimitedPage,
353  bool bCellText,
354  bool bWordWrap)
355  : SdrTextPrimitive2D(pSdrText, rOutlinerParaObject),
356  maTextRangeTransform(rTextRangeTransform),
357  maSdrTextHorzAdjust(aSdrTextHorzAdjust),
358  maSdrTextVertAdjust(aSdrTextVertAdjust),
359  mbFixedCellHeight(bFixedCellHeight),
360  mbUnlimitedPage(bUnlimitedPage),
361  mbCellText(bCellText),
362  mbWordWrap(bWordWrap)
363  {
364  }
365 
366  bool SdrBlockTextPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
367  {
368  if(SdrTextPrimitive2D::operator==(rPrimitive))
369  {
370  const SdrBlockTextPrimitive2D& rCompare = static_cast<const SdrBlockTextPrimitive2D&>(rPrimitive);
371 
372  return (getTextRangeTransform() == rCompare.getTextRangeTransform()
373  && getSdrTextHorzAdjust() == rCompare.getSdrTextHorzAdjust()
374  && getSdrTextVertAdjust() == rCompare.getSdrTextVertAdjust()
375  && isFixedCellHeight() == rCompare.isFixedCellHeight()
376  && getUnlimitedPage() == rCompare.getUnlimitedPage()
377  && getCellText() == rCompare.getCellText()
378  && getWordWrap() == rCompare.getWordWrap());
379  }
380 
381  return false;
382  }
383 
384  std::unique_ptr<SdrTextPrimitive2D> SdrBlockTextPrimitive2D::createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const
385  {
386  return std::make_unique<SdrBlockTextPrimitive2D>(
387  getSdrText(),
388  getOutlinerParaObject(),
389  rTransform * getTextRangeTransform(),
390  getSdrTextHorzAdjust(),
391  getSdrTextVertAdjust(),
392  isFixedCellHeight(),
393  getUnlimitedPage(),
394  getCellText(),
395  getWordWrap());
396  }
397 
398  // provide unique ID
400 
401 
402 
403  void SdrAutoFitTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
404  {
405  Primitive2DContainer aRetval;
406  getSdrText()->GetObject().impDecomposeAutoFitTextPrimitive(aRetval, *this, aViewInformation);
407 
408  encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
409  }
410 
411  SdrAutoFitTextPrimitive2D::SdrAutoFitTextPrimitive2D(
412  const SdrText* pSdrText,
413  const OutlinerParaObject& rParaObj,
414  const ::basegfx::B2DHomMatrix& rTextRangeTransform,
415  bool bWordWrap)
416  : SdrTextPrimitive2D(pSdrText, rParaObj),
417  maTextRangeTransform(rTextRangeTransform),
418  mbWordWrap(bWordWrap)
419  {
420  }
421 
422  bool SdrAutoFitTextPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
423  {
424  if(SdrTextPrimitive2D::operator==(rPrimitive))
425  {
426  const SdrBlockTextPrimitive2D& rCompare = static_cast<const SdrBlockTextPrimitive2D&>(rPrimitive);
427 
428  return (getTextRangeTransform() == rCompare.getTextRangeTransform()
429  && getWordWrap() == rCompare.getWordWrap());
430  }
431 
432  return false;
433  }
434 
435  std::unique_ptr<SdrTextPrimitive2D> SdrAutoFitTextPrimitive2D::createTransformedClone(const ::basegfx::B2DHomMatrix& rTransform) const
436  {
437  return std::make_unique<SdrAutoFitTextPrimitive2D>(getSdrText(), getOutlinerParaObject(), rTransform * getTextRangeTransform(), getWordWrap());
438  }
439 
440  // provide unique ID
442 
443 
444 
445 
447  const SdrText* pSdrText,
448  const OutlinerParaObject& rOutlinerParaObject,
449  const basegfx::B2DHomMatrix& rTextRangeTransform)
450  : SdrTextPrimitive2D(pSdrText, rOutlinerParaObject),
451  maTextRangeTransform(rTextRangeTransform)
452  { }
453 
454  void SdrChainedTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
455  {
456  Primitive2DContainer aRetval;
457  getSdrText()->GetObject().impDecomposeChainedTextPrimitive(aRetval, *this, aViewInformation);
458 
459  encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
460  }
461 
462  bool SdrChainedTextPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
463  {
464  if(SdrTextPrimitive2D::operator==(rPrimitive))
465  {
466  const SdrBlockTextPrimitive2D& rCompare = static_cast<const SdrBlockTextPrimitive2D&>(rPrimitive);
467 
468  return (getTextRangeTransform() == rCompare.getTextRangeTransform());
469  }
470 
471  return false;
472  }
473 
474  std::unique_ptr<SdrTextPrimitive2D> SdrChainedTextPrimitive2D::createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const
475  {
476  return std::make_unique<SdrChainedTextPrimitive2D>(getSdrText(), getOutlinerParaObject(), rTransform * getTextRangeTransform());
477  }
478 
479  // provide unique ID
481 
482 
483  void SdrStretchTextPrimitive2D::create2DDecomposition(Primitive2DContainer& rContainer, const geometry::ViewInformation2D& aViewInformation) const
484  {
485  Primitive2DContainer aRetval;
486  getSdrText()->GetObject().impDecomposeStretchTextPrimitive(aRetval, *this, aViewInformation);
487 
488  encapsulateWithTextHierarchyBlockPrimitive2D(rContainer, aRetval);
489  }
490 
491  SdrStretchTextPrimitive2D::SdrStretchTextPrimitive2D(
492  const SdrText* pSdrText,
493  const OutlinerParaObject& rOutlinerParaObject,
494  const basegfx::B2DHomMatrix& rTextRangeTransform,
495  bool bFixedCellHeight)
496  : SdrTextPrimitive2D(pSdrText, rOutlinerParaObject),
497  maTextRangeTransform(rTextRangeTransform),
498  mbFixedCellHeight(bFixedCellHeight)
499  {
500  }
501 
502  bool SdrStretchTextPrimitive2D::operator==(const BasePrimitive2D& rPrimitive) const
503  {
504  if(SdrTextPrimitive2D::operator==(rPrimitive))
505  {
506  const SdrStretchTextPrimitive2D& rCompare = static_cast<const SdrStretchTextPrimitive2D&>(rPrimitive);
507 
508  return (getTextRangeTransform() == rCompare.getTextRangeTransform()
509  && isFixedCellHeight() == rCompare.isFixedCellHeight());
510  }
511 
512  return false;
513  }
514 
515  std::unique_ptr<SdrTextPrimitive2D> SdrStretchTextPrimitive2D::createTransformedClone(const basegfx::B2DHomMatrix& rTransform) const
516  {
517  return std::make_unique<SdrStretchTextPrimitive2D>(
518  getSdrText(),
519  getOutlinerParaObject(),
520  rTransform * getTextRangeTransform(),
521  isFixedCellHeight());
522  }
523 
524  // provide unique ID
526 
527 } // end of namespace
528 
529 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SdrOutliner & GetDrawOutliner(const SdrTextObj *pObj=nullptr) const
Definition: svdmodel.cxx:694
static constexpr auto CLASS_ID
#define PRIMITIVE2D_ID_SDRCONTOURTEXTPRIMITIVE2D
virtual std::unique_ptr< SdrTextPrimitive2D > createTransformedClone(const basegfx::B2DHomMatrix &rTransform) const override
void impDecomposeContourTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrContourTextPrimitive2D &rSdrContourTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
static constexpr auto CLASS_ID
static constexpr auto CLASS_ID
bool isWrongListEqual(const OutlinerParaObject &rCompare) const
const basegfx::B2DHomMatrix & getTextRangeTransform() const
const OutlinerParaObject & getOutlinerParaObject() const
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
SdrPage * GetSdrPageFromXDrawPage(const uno::Reference< drawing::XDrawPage > &xDrawPage)
returns the SdrObject from the given StarOffice API wrapper
Definition: unopage.cxx:888
SdrTextHorzAdjust
Definition: sdtaitm.hxx:53
virtual bool operator==(const BasePrimitive2D &rPrimitive) const override
const basegfx::B2DPolyPolygon & getUnitPolyPolygon() const
virtual bool operator==(const BasePrimitive2D &rPrimitive) const override
#define PRIMITIVE2D_ID_SDRAUTOFITTEXTPRIMITIVE2D
const css::uno::Reference< css::drawing::XDrawPage > & getVisualizedPage() const
static void encapsulateWithTextHierarchyBlockPrimitive2D(Primitive2DContainer &rContainer, const Primitive2DContainer &rCandidate)
const attribute::SdrFormTextAttribute & getSdrFormTextAttribute() const
SdrPathTextPrimitive2D(const SdrText *pSdrText, const OutlinerParaObject &rOutlinerParaObjectPtr, const basegfx::B2DPolyPolygon &rPathPolyPolygon, const attribute::SdrFormTextAttribute &rSdrFormTextAttribute)
const EditTextObject & GetTextObject() const
const Primitive2DContainer & getBuffered2DDecomposition() const
bool HasField(sal_Int32 nType=css::text::textfield::Type::UNSPECIFIED) const
#define PRIMITIVE2D_ID_SDRSTRETCHTEXTPRIMITIVE2D
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
const basegfx::B2DPolyPolygon & getPathPolyPolygon() const
SdrTextObj & GetObject() const
Definition: svdtext.hxx:64
#define PRIMITIVE2D_ID_SDRBLOCKTEXTPRIMITIVE2D
sal_uInt16 getHandoutPageCount() const
Definition: svdmodel.hxx:228
ImplPrimitive2DIDBlock(SdrChainedTextPrimitive2D, PRIMITIVE2D_ID_SDRCHAINEDTEXTPRIMITIVE2D) void SdrStretchTextPrimitive2D
SdrModel & getSdrModelFromSdrObject() const
Definition: svdobj.cxx:273
void transform(const basegfx::B2DHomMatrix &rMatrix)
#define PRIMITIVE2D_ID_SDRCHAINEDTEXTPRIMITIVE2D
virtual void create2DDecomposition(Primitive2DContainer &rContainer, const geometry::ViewInformation2D &aViewInformation) const override
static constexpr auto CLASS_ID
bool IsMasterPage() const
Definition: svdpage.hxx:450
css::uno::Reference< css::drawing::XDrawPage > mxLastVisualizingPage
static constexpr auto CLASS_ID
ImplPrimitive2DIDBlock(BorderLinePrimitive2D, PRIMITIVE2D_ID_BORDERLINEPRIMITIVE2D) Primitive2DReference tryMergeBorderLinePrimitive2D(const BorderLinePrimitive2D *pCandidateA
sal_Int32 getPageCount(const uno::Reference< frame::XModel > &xModel)
const basegfx::B2DHomMatrix & getObjectTransform() const
SdrModel & getSdrModelFromSdrPage() const
Definition: svdpage.hxx:390
SdrContourTextPrimitive2D(const SdrText *pSdrText, const OutlinerParaObject &rOutlinerParaObjectPtr, const basegfx::B2DPolyPolygon &rUnitPolyPolygon, const basegfx::B2DHomMatrix &rObjectTransform)
static constexpr auto CLASS_ID
reference_type * get() const
::tools::WeakReference< SdrText > mrSdrText
const basegfx::B2DHomMatrix & getTextRangeTransform() const
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
Definition: svdpage.hxx:365
sal_uInt16 GetPageNum() const
Definition: svdpage.cxx:1501
SdrTextVertAdjust
Definition: sdtaitm.hxx:29
sal_uInt16 GetPageCount() const
Definition: svdmodel.cxx:1916
void setBuffered2DDecomposition(const Primitive2DContainer &rNew)
Color const & GetBackgroundColor() const
#define PRIMITIVE2D_ID_SDRPATHTEXTPRIMITIVE2D