61 #include <osl/diagnose.h>
69 class impTextBreakupHandler
99 void impFlushTextPortionPrimitivesToLinePrimitives();
100 void impFlushLinePrimitivesToParagraphPrimitives(sal_Int32 nPara);
105 explicit impTextBreakupHandler(
SdrOutliner& rOutliner)
106 : mrOutliner(rOutliner)
113 maNewTransformA = rNewTransformA;
114 maNewTransformB = rNewTransformB;
116 mrOutliner.
SetDrawBulletHdl(
LINK(
this, impTextBreakupHandler, decomposeContourBulletPrimitive));
122 void decomposeBlockTextPrimitive(
127 maNewTransformA = rNewTransformA;
128 maNewTransformB = rNewTransformB;
129 maClipRange = rClipRange;
139 maNewTransformA = rNewTransformA;
140 maNewTransformB = rNewTransformB;
142 mrOutliner.
SetDrawBulletHdl(
LINK(
this, impTextBreakupHandler, decomposeStretchBulletPrimitive));
151 void impTextBreakupHandler::impCreateTextPortionPrimitive(
const DrawPortionInfo& rInfo)
167 aNewTransform.
scale(aFontScaling.
getX(), aFontScaling.
getY());
174 aNewTransform.
scale(fFactor, fFactor);
178 if(rInfo.
mrFont.GetOrientation())
188 if(DFLT_ESC_AUTO_SUPER == nEsc)
190 nEsc = .8 * (100 - nPropr);
191 assert (nEsc == DFLT_ESC_SUPER &&
"I'm sure this formula needs to be changed, but how to confirm that???");
194 else if(DFLT_ESC_AUTO_SUB == nEsc)
196 nEsc = .2 * -(100 - nPropr);
197 assert (nEsc == -20 &&
"I'm sure this formula needs to be changed, but how to confirm that???");
201 if(nEsc > MAX_ESC_POS)
205 else if(nEsc < -MAX_ESC_POS)
210 const double fEscapement(nEsc / -100.0);
211 aNewTransform.
translate(0.0, fEscapement * aFontScaling.
getY());
215 aNewTransform *= maNewTransformA;
221 aNewTransform *= maNewTransformB;
225 ::std::vector< double > aDXArray;
233 aDXArray.push_back(static_cast<double>(rInfo.
mpDXArray[a]));
241 const Color aTextFillColor(rInfo.
mrFont.GetFillColor());
250 const bool bDecoratedIsNeeded(
251 LINESTYLE_NONE != rInfo.
mrFont.GetOverline()
254 || FontEmphasisMark::NONE != (rInfo.
mrFont.GetEmphasisMark() & FontEmphasisMark::Style)
255 || FontRelief::NONE != rInfo.
mrFont.GetRelief()
256 || rInfo.
mrFont.IsShadow()
259 if(bDecoratedIsNeeded)
264 const basegfx::BColor aBUnderlineColor((aUnderlineColor == COL_AUTO) ? aBFontColor : aUnderlineColor.getBColor());
266 const basegfx::BColor aBOverlineColor((aOverlineColor == COL_AUTO) ? aBFontColor : aOverlineColor.getBColor());
275 const bool bUnderlineAbove(
285 switch(rInfo.
mrFont.GetEmphasisMark() & FontEmphasisMark::Style)
294 const bool bEmphasisMarkAbove(rInfo.
mrFont.GetEmphasisMark() & FontEmphasisMark::PosAbove);
295 const bool bEmphasisMarkBelow(rInfo.
mrFont.GetEmphasisMark() & FontEmphasisMark::PosBelow);
300 switch(rInfo.
mrFont.GetRelief())
308 const bool bShadow(rInfo.
mrFont.IsShadow());
318 std::vector(aDXArray),
346 std::vector(aDXArray),
347 std::move(aFontAttribute),
355 if (aFontColor.IsTransparent())
360 (255 - aFontColor.GetAlpha()) / 255.0);
373 pNewPrimitive = impCheckFieldPrimitive(pNewPrimitive.get(), rInfo);
376 maTextPortionPrimitives.push_back(pNewPrimitive);
383 const sal_Int32 nDXCount(aDXArray.size());
386 for(sal_Int32
a(0);
a < nSize;
a++)
397 if(nStart > 0 && nStart - 1 < nDXCount)
399 fStart = aDXArray[nStart - 1];
402 if(nEnd > 0 && nEnd - 1 < nDXCount)
404 fEnd = aDXArray[nEnd - 1];
414 const double fTextWidth(aDXArray[aDXArray.size() - 1]);
416 fStart = fTextWidth - fStart;
417 fEnd = fTextWidth - fEnd;
422 const double fFontScaleX(aFontScaling.
getX());
427 fStart /= fFontScaleX;
464 std::vector< std::pair< OUString, OUString>> meValues;
465 meValues.emplace_back(
"URL", pURLField->
GetURL());
467 meValues.emplace_back(
"TargetFrame", pURLField->
GetTargetFrame());
468 meValues.emplace_back(
"SvxURLFormat", OUString::number(static_cast<sal_uInt16>(pURLField->
GetFormat())));
484 void impTextBreakupHandler::impFlushTextPortionPrimitivesToLinePrimitives()
488 if(!maTextPortionPrimitives.empty())
494 void impTextBreakupHandler::impFlushLinePrimitivesToParagraphPrimitives(sal_Int32 nPara)
496 sal_Int16 nDepth = mrOutliner.
GetDepth(nPara);
500 const sal_Int16 nOutlineLevel( eInfo.
bVisible ? nDepth : -1);
505 maParagraphPrimitives.push_back(
507 std::move(maLinePrimitives),
511 void impTextBreakupHandler::impHandleDrawPortionInfo(
const DrawPortionInfo& rInfo)
513 impCreateTextPortionPrimitive(rInfo);
517 impFlushTextPortionPrimitivesToLinePrimitives();
522 impFlushLinePrimitivesToParagraphPrimitives(rInfo.
mnPara);
526 void impTextBreakupHandler::impHandleDrawBulletInfo(
const DrawBulletInfo& rInfo)
534 aNewTransform *= maNewTransformA;
540 aNewTransform *= maNewTransformB;
556 maTextPortionPrimitives.push_back(pNewPrimitive);
563 if(pInfo && static_cast<double>(pInfo->mrStartPos.Y()) < maScale.
getY())
565 impHandleDrawPortionInfo(*pInfo);
580 const basegfx::B2DPoint aStartPosition(pInfo->mrStartPos.X(), pInfo->mrStartPos.Y());
582 if(!maClipRange.
isInside(aStartPosition))
589 aTextLayouterDevice.
setFont(pInfo->mrFont);
593 pInfo->maText, pInfo->mnTextStart, pInfo->mnTextLen));
602 const basegfx::B2DPoint aBottomRight(aTextBoundRect.getMaximum() + aStartPosition);
604 if(!maClipRange.
isInside(aBottomRight))
611 impHandleDrawPortionInfo(*pInfo);
618 impHandleDrawPortionInfo(*pInfo);
626 impHandleDrawBulletInfo(*pInfo);
634 impHandleDrawBulletInfo(*pInfo);
642 impHandleDrawBulletInfo(*pInfo);
648 if(!maTextPortionPrimitives.empty())
651 impFlushTextPortionPrimitivesToLinePrimitives();
654 if(!maLinePrimitives.empty())
660 return std::move(maParagraphPrimitives);
674 double fRotate, fShearX;
684 const Size aNullSize;
704 bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0,
705 fShearX, fRotate, aTranslate.
getX(), aTranslate.
getY()));
708 impTextBreakupHandler aConverter(rOutliner);
709 aConverter.decomposeContourTextPrimitive(aNewTransformA, aNewTransformB, aScale);
715 rTarget = aConverter.extractPrimitive2DSequence();
725 double fRotate, fShearX;
730 aAnchorTextRange.
expand(aTranslate + aScale);
739 const Size aNullSize;
744 rOutliner.
SetControlWord(nOriginalControlWord|EEControlBits::AUTOPAGESIZE|EEControlBits::STRETCHING);
749 const sal_uInt32 nAnchorTextWidth(
FRound(aAnchorTextRange.
getWidth() + 1));
750 const sal_uInt32 nAnchorTextHeight(
FRound(aAnchorTextRange.
getHeight() + 1));
752 OSL_ENSURE(pOutlinerParaObject,
"impDecomposeBlockTextPrimitive used with no OutlinerParaObject (!)");
754 const bool bTopToBottom(pOutlinerParaObject->
IsTopToBottom());
755 const Size aAnchorTextSize(
Size(nAnchorTextWidth, nAnchorTextHeight));
757 if(rSdrAutofitTextPrimitive.
getWordWrap() || IsTextFrame())
776 rOutliner.
SetText(*pOutlinerParaObject);
777 ImpAutoFitText(rOutliner,aAnchorTextSize,bVerticalWriting);
784 const basegfx::B2DVector aOutlinerScale(aOutlinerTextSize.Width(), aOutlinerTextSize.Height());
790 const double fFree(aAnchorTextRange.
getWidth() - aOutlinerScale.getX());
794 aAdjustTranslate.setX(fFree / 2.0);
799 aAdjustTranslate.setX(fFree);
806 const double fFree(aAnchorTextRange.
getHeight() - aOutlinerScale.getY());
810 aAdjustTranslate.setY(fFree / 2.0);
815 aAdjustTranslate.setY(fFree);
827 const double fStartInX(bVerticalWriting && bTopToBottom ? aAdjustTranslate.getX() + aOutlinerScale.getX() : aAdjustTranslate.getX());
828 const double fStartInY(bVerticalWriting && !bTopToBottom ? aAdjustTranslate.getY() + aOutlinerScale.getY() : aAdjustTranslate.getY());
829 aNewTransformA.
translate(fStartInX, fStartInY);
835 aNewTransformB.
scale(bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0);
839 aNewTransformB.
shearX(fShearX);
840 aNewTransformB.
rotate(fRotate);
846 impTextBreakupHandler aConverter(rOutliner);
847 aConverter.decomposeBlockTextPrimitive(aNewTransformA, aNewTransformB, aClipRange);
854 rTarget = aConverter.extractPrimitive2DSequence();
861 const SfxItemSet* pBackgroundFillSet = getBackgroundFillSet();
872 const SfxItemSet* pBackgroundFillSet = &GetObjectItemSet();
876 SdrPage* pOwnerPage(getSdrPageFromSdrObject());
890 return pBackgroundFillSet;
897 const SfxItemSet* pBackgroundFillSet = getBackgroundFillSet();
910 double fRotate, fShearX;
915 aAnchorTextRange.
expand(aTranslate + aScale);
918 const bool bIsCell(rSdrBlockTextPrimitive.
getCellText());
924 const Size aNullSize;
929 rOutliner.
SetControlWord(nOriginalControlWord|EEControlBits::AUTOPAGESIZE);
935 setSuitableOutlinerBg(rOutliner);
938 const sal_uInt32 nAnchorTextWidth(
FRound(aAnchorTextRange.
getWidth() + 1));
939 const sal_uInt32 nAnchorTextHeight(
FRound(aAnchorTextRange.
getHeight() + 1));
942 const Size aAnchorTextSize(
Size(nAnchorTextWidth, nAnchorTextHeight));
977 if(bHorizontalIsBlock)
982 else if(bVerticalIsBlock)
996 Size aMaxAutoPaperSize(aAnchorTextSize);
999 bool bAllowGrowVertical = !bVerticalWriting;
1000 bool bAllowGrowHorizontal = bVerticalWriting;
1003 if (getSdrModelFromSdrObject().IsAnchoredTextOverflowLegacy())
1005 bAllowGrowVertical = bHorizontalIsBlock;
1006 bAllowGrowHorizontal = bVerticalIsBlock;
1009 if (bAllowGrowVertical)
1014 else if (bAllowGrowHorizontal)
1017 aMaxAutoPaperSize.
setWidth(1000000);
1032 const basegfx::B2DVector aOutlinerScale(aOutlinerTextSize.Width(), aOutlinerTextSize.Height());
1038 if(!IsTextFrame() && !bIsCell)
1040 if(aAnchorTextRange.
getWidth() < aOutlinerScale.getX() && !bVerticalWriting)
1057 if(aAnchorTextRange.
getHeight() < aOutlinerScale.getY() && bVerticalWriting)
1071 const double fFree(aAnchorTextRange.
getWidth() - aOutlinerScale.getX());
1075 aAdjustTranslate.setX(fFree / 2.0);
1080 aAdjustTranslate.setX(fFree);
1087 const double fFree(aAnchorTextRange.
getHeight() - aOutlinerScale.getY());
1091 aAdjustTranslate.setY(fFree / 2.0);
1096 aAdjustTranslate.setY(fFree);
1105 const double fStartInX(bVerticalWriting && bTopToBottom ? aAdjustTranslate.getX() + aOutlinerScale.getX() : aAdjustTranslate.getX());
1106 const double fStartInY(bVerticalWriting && !bTopToBottom ? aAdjustTranslate.getY() + aOutlinerScale.getY() : aAdjustTranslate.getY());
1111 if(GetCameraZRotation() != 0)
1115 aTranslate.
getY() + aAdjustTranslate.getY(),
1116 aTranslate.
getX() + aOutlinerScale.getX() - aAdjustTranslate.getX(),
1117 aTranslate.
getY() + aOutlinerScale.getY() - aAdjustTranslate.getY());
1120 basegfx::B2DVector aTranslateToCenter(aTextRectangle.getWidth() / 2, aTextRectangle.getHeight() / 2);
1121 aNewTransformA.translate(-aTranslateToCenter.getX(), -aTranslateToCenter.getY());
1123 aNewTransformA.translate(aTranslateToCenter.getX(), aTranslateToCenter.getY());
1134 bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0,
1135 fShearX, fRotate, aTranslate.
getX(), aTranslate.
getY()));
1142 impTextBreakupHandler aConverter(rOutliner);
1143 aConverter.decomposeBlockTextPrimitive(aNewTransformA, aNewTransformB, aClipRange);
1150 rTarget = aConverter.extractPrimitive2DSequence();
1160 double fRotate, fShearX;
1167 const Size aNullSize;
1169 rOutliner.
SetControlWord(nOriginalControlWord|EEControlBits::STRETCHING|EEControlBits::AUTOPAGESIZE);
1183 aOutlinerTextSize.Width() ==
tools::Long(0) ? 1.0 : aOutlinerTextSize.Width(),
1184 aOutlinerTextSize.Height() ==
tools::Long(0) ? 1.0 : aOutlinerTextSize.Height());
1200 aNewTransformA.translate(0.0, aScale.
getY());
1205 const double fScaleX(fabs(aScale.
getX()) / aOutlinerScale.getX());
1206 const double fScaleY(fabs(aScale.
getY()) / aOutlinerScale.getY());
1217 bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0,
1218 fShearX, fRotate, aTranslate.
getX(), aTranslate.
getY()));
1221 impTextBreakupHandler aConverter(rOutliner);
1222 aConverter.decomposeStretchTextPrimitive(aNewTransformA, aNewTransformB);
1229 rTarget = aConverter.extractPrimitive2DSequence();
1234 #define ENDLESS_LOOP (0xffffffff)
1235 #define ENDLESS_TIME (double(0xffffffff))
1236 #define PIXEL_DPI (96.0)
1277 if(bVisibleWhenStarted)
1281 rAnimList.
append(aInOut);
1290 if(0 != nRepeat && bVisibleWhenStopped)
1294 rAnimList.
append(aOutIn);
1308 bForward = !bForward;
1311 const double fStartPosition(bForward ? fRelativeTextLength : 1.0 - fRelativeTextLength);
1312 const double fEndPosition(bForward ? 1.0 - fRelativeTextLength : fRelativeTextLength);
1316 if(!bVisibleWhenStarted)
1320 rAnimList.
append(aOutIn);
1325 const double fInnerMovePath(fabs(1.0 - (fRelativeTextLength * 2.0)));
1326 const double fTimeForInnerPath(fTimeFullPath * fInnerMovePath);
1327 const double fHalfInnerPath(fTimeForInnerPath * 0.5);
1328 const sal_uInt32 nDoubleRepeat(nRepeat / 2L);
1330 if(nDoubleRepeat || 0 == nRepeat)
1347 rAnimList.
append(aTime0);
1349 rAnimList.
append(aTime1);
1356 if(bVisibleWhenStopped)
1366 rAnimList.
append(aInOut);
1373 const double fStartPosition(bForward ? 0.0 : 1.0);
1378 rAnimList.
append(aOutIn);
1381 if(nRepeat > 1 || 0 == nRepeat)
1417 fAnimationDelay = 50.0;
1425 fSingleStepWidth = (-fSingleStepWidth * (2540.0 /
PIXEL_DPI));
1431 fSingleStepWidth = 100.0;
1436 const double fFullPathLength(fFrameLength + fTextLength);
1437 const double fNumberOfSteps(fFullPathLength / fSingleStepWidth);
1438 double fTimeFullPath(fNumberOfSteps * fAnimationDelay);
1440 if(fTimeFullPath < fAnimationDelay)
1442 fTimeFullPath = fAnimationDelay;
1454 double fRelativeTextLength(fTextLength / (fFrameLength + fTextLength));
1469 if (GetTextChain()->GetNilChainingEvent(
this))
1472 GetTextChain()->SetNilChainingEvent(
this,
true);
1479 size_t nObjCount(getSdrPageFromSdrObject()->GetObjCount());
1480 for (
size_t i = 0;
i < nObjCount;
i++)
1482 SdrTextObj* pCurObj(dynamic_cast< SdrTextObj* >(getSdrPageFromSdrObject()->GetObj(
i)));
1485 SAL_INFO(
"svx.chaining",
"Working on TextBox " <<
i);
1493 if (aTxtChainFlow.
IsUnderflow() && !IsInEditMode())
1503 if (bIsOverflow && !IsInEditMode()) {
1505 SdrOutliner &rChainingOutl(getSdrModelFromSdrObject().GetChainingOutliner(
this));
1506 ImpInitDrawOutliner( rChainingOutl );
1512 GetTextChain()->SetNilChainingEvent(
this,
false);
1522 double fRotate, fShearX;
1527 aAnchorTextRange.
expand(aTranslate + aScale);
1537 const Size aNullSize;
1542 rOutliner.
SetControlWord(nOriginalControlWord|EEControlBits::AUTOPAGESIZE|EEControlBits::STRETCHING);
1547 const sal_uInt32 nAnchorTextWidth(
FRound(aAnchorTextRange.
getWidth() + 1));
1548 const sal_uInt32 nAnchorTextHeight(
FRound(aAnchorTextRange.
getHeight() + 1));
1552 OSL_ENSURE(pOutlinerParaObject,
"impDecomposeBlockTextPrimitive used with no OutlinerParaObject (!)");
1555 const bool bTopToBottom(pOutlinerParaObject->
IsTopToBottom());
1556 const Size aAnchorTextSize(
Size(nAnchorTextWidth, nAnchorTextHeight));
1576 rOutliner.
SetText(*pOutlinerParaObject);
1580 impHandleChainingEventsDuringDecomposition(rOutliner);
1589 const basegfx::B2DVector aOutlinerScale(aOutlinerTextSize.Width(), aOutlinerTextSize.Height());
1595 const double fFree(aAnchorTextRange.
getWidth() - aOutlinerScale.getX());
1599 aAdjustTranslate.setX(fFree / 2.0);
1604 aAdjustTranslate.setX(fFree);
1611 const double fFree(aAnchorTextRange.
getHeight() - aOutlinerScale.getY());
1615 aAdjustTranslate.setY(fFree / 2.0);
1620 aAdjustTranslate.setY(fFree);
1632 const double fStartInX(bVerticalWriting && bTopToBottom ? aAdjustTranslate.getX() + aOutlinerScale.getX() : aAdjustTranslate.getX());
1633 const double fStartInY(bVerticalWriting && !bTopToBottom ? aAdjustTranslate.getY() + aOutlinerScale.getY() : aAdjustTranslate.getY());
1634 aNewTransformA.
translate(fStartInX, fStartInY);
1640 aNewTransformB.
scale(bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0);
1644 aNewTransformB.
shearX(fShearX);
1645 aNewTransformB.
rotate(fRotate);
1651 impTextBreakupHandler aConverter(rOutliner);
1652 aConverter.decomposeBlockTextPrimitive(aNewTransformA, aNewTransformB, aClipRange);
1659 rTarget = aConverter.extractPrimitive2DSequence();
1671 impTextBreakupHandler aConverter(rOutliner);
1672 aConverter.decomposeBlockTextPrimitive(rNewTransformA, rNewTransformB, rClipRange);
1673 rTarget.
append(aConverter.extractPrimitive2DSequence());
1678 const css::uno::Any* pAny;
1679 double fTextCameraZRotateAngle = 0.0;
1686 *pAny >>= fTextCameraZRotateAngle;
1688 return fTextCameraZRotateAngle;
#define LINK(Instance, Class, Member)
bool isFixedCellHeight() const
SdrPage & TRG_GetMasterPage() const
DECL_LINK(CheckNameHdl, SvxNameDialog &, bool)
void impDecomposeContourTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrContourTextPrimitive2D &rSdrContourTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
constexpr TypedWhichId< SdrTextAniStartInsideItem > SDRATTR_TEXT_ANISTARTINSIDE(SDRATTR_MISC_FIRST+16)
void setVisualizedPage(const SdrPage *pPage)
sal_uInt8 GetPropr() const
const SfxItemSet & GetItemSet() const
constexpr bool empty() const noexcept
static void impDecomposeBlockTextPrimitiveDirect(drawinglayer::primitive2d::Primitive2DContainer &rTarget, SdrOutliner &rOutliner, const basegfx::B2DHomMatrix &rNewTransformA, const basegfx::B2DHomMatrix &rNewTransformB, const basegfx::B2DRange &rClipRange)
const css::lang::Locale * mpLocale
void setWidth(tools::Long nWidth)
const basegfx::B2DHomMatrix & getTextRangeTransform() const
const OutlinerParaObject & getOutlinerParaObject() const
IMPL_LINK(MaskData, PipetteHdl, const OString &, rId, void)
TEXT_FONT_EMPHASIS_MARK_NONE
bool getUnlimitedPage() const
TextVerticalAdjust GetTextVerticalAdjust(sal_Int32 nToken)
constexpr double deg2rad(double v)
void impGetScrollTextTiming(drawinglayer::animation::AnimationEntryList &rAnimList, double fFrameLength, double fTextLength) const
void SetPaperSize(const Size &rSize)
const SfxItemSet * getBackgroundFillSet() const
void SetBackgroundColor(const Color &rColor)
o3tl::span< const sal_Int32 > mpDXArray
constexpr TypedWhichId< XFillStyleItem > XATTR_FILLSTYLE(XATTR_FILL_FIRST)
rtl::Reference< BasePrimitive2D > Primitive2DReference
TEXT_FONT_EMPHASIS_MARK_ACCENT
sal_Int32 GetParagraphCount() const
void ExecuteUnderflow(SdrOutliner *)
void append(const AnimationEntry &rCandidate)
bool IsTopToBottom() const
bool isFixedCellHeight() const
constexpr TypedWhichId< SdrTextAniCountItem > SDRATTR_TEXT_ANICOUNT(SDRATTR_MISC_FIRST+18)
const SvxFieldData * mpFieldData
const OUString & GetTargetFrame() const
attribute::FontAttribute getFontAttributeFromVclFont(basegfx::B2DVector &o_rSize, const vcl::Font &rFont, bool bRTL, bool bBiDiStrong)
void impGetBlinkTextTiming(drawinglayer::animation::AnimationEntryList &rAnimList) const
SdrTextAniKind
Animation type for text frame.
SdrTextVertAdjust getSdrTextVertAdjust() const
OutlinerParaObject * GetOutlinerParaObject()
void SetControlWord(EEControlBits nWord)
B2DHomMatrix createScaleB2DHomMatrix(double fScaleX, double fScaleY)
B2DHomMatrix createScaleShearXRotateTranslateB2DHomMatrix(double fScaleX, double fScaleY, double fShearX, double fRadiant, double fTranslateX, double fTranslateY)
const basegfx::B2DPolyPolygon & getUnitPolyPolygon() const
void impDecomposeBlockTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrBlockTextPrimitive2D &rSdrBlockTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
void SetFixedCellHeight(bool bUseFixedCellHeight)
EEControlBits GetControlWord() const
constexpr tools::Long getHeight() const
basegfx::B2DRange getTextBoundRect(const OUString &rText, sal_uInt32 nIndex, sal_uInt32 nLength) const
void impDecomposeChainedTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrChainedTextPrimitive2D &rSdrChainedTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
void impDecomposeStretchTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrStretchTextPrimitive2D &rSdrStretchTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
void impHandleChainingEventsDuringDecomposition(SdrOutliner &rOutliner) const
void SetMinColumnWrapHeight(tools::Long nVal)
void append(const Primitive2DReference &)
void SetText(const OutlinerParaObject &)
const Color maTextLineColor
constexpr TypedWhichId< SdrCustomShapeGeometryItem > SDRATTR_CUSTOMSHAPE_GEOMETRY(SDRATTR_CUSTOMSHAPE_FIRST+2)
constexpr TypedWhichId< XFillBitmapItem > XATTR_FILLBITMAP(XATTR_FILL_FIRST+4)
EBulletInfo GetBulletInfo(sal_Int32 nPara)
bool decompose(B2DTuple &rScale, B2DTuple &rTranslate, double &rRotate, double &rShearX) const
void SetGlobalCharStretching(sal_uInt16 nX=100, sal_uInt16 nY=100)
void rotate(double fRadiant)
tools::Long FRound(double fVal)
constexpr TypedWhichId< SvxAdjustItem > EE_PARA_JUST(EE_PARA_START+16)
void ExecuteOverflow(SdrOutliner *, SdrOutliner *)
void SetDrawBulletHdl(const Link< DrawBulletInfo *, void > &rLink)
void scale(double fX, double fY)
void transform(const basegfx::B2DHomMatrix &rMatrix)
const Color maOverlineColor
bool IsMasterPage() const
const OUString & GetRepresentation() const
const SfxItemSet & GetItemSet() const
TextStrikeout mapFontStrikeoutToTextStrikeout(FontStrikeout eFontStrikeout)
SdrPageProperties & getSdrPageProperties()
bool TRG_HasMasterPage() const
sal_Int16 GetDepth(sal_Int32 nPara) const
TEXT_FONT_EMPHASIS_MARK_DOT
void SetDrawPortionHdl(const Link< DrawPortionInfo *, void > &rLink)
const OUString & GetURL() const
const basegfx::B2DHomMatrix & getObjectTransform() const
void SetPolygon(const basegfx::B2DPolyPolygon &rPolyPolygon)
SdrPage * GetSdrPageFromXDrawPage(const uno::Reference< drawing::XDrawPage > &xDrawPage) noexcept
returns the SdrObject from the given StarOffice API wrapper
TEXT_FONT_EMPHASIS_MARK_CIRCLE
bool IsEffectivelyVertical() const
void SetMaxAutoPaperSize(const Size &rSz)
const Graphic * getFillGraphic() const
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
TextLine mapFontLineStyleToTextLine(FontLineStyle eLineStyle)
void impDecomposeAutoFitTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrAutoFitTextPrimitive2D &rSdrAutofitTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
const basegfx::B2DHomMatrix & getTextRangeTransform() const
#define SAL_INFO(area, stream)
const basegfx::B2DHomMatrix & getTextRangeTransform() const
constexpr TypedWhichId< SdrTextAniStopInsideItem > SDRATTR_TEXT_ANISTOPINSIDE(SDRATTR_MISC_FIRST+17)
void SetMinAutoPaperSize(const Size &rSz)
OUString CalcCaseMap(const OUString &rTxt) const
TEXT_FONT_EMPHASIS_MARK_DISC
short GetEscapement() const
bool isInside(const Tuple2D< double > &rTuple) const
bool SetUpdateLayout(bool bUpdate)
void translate(double fX, double fY)
const EEngineData::WrongSpellVector * mpWrongSpellVector
void setSuitableOutlinerBg(Outliner &rOutliner) const
css::uno::Any * GetPropertyValueByName(const OUString &rPropName)
const SdrText * getSdrText() const
void setHeight(tools::Long nHeight)
static void impCreateScrollTiming(const SfxItemSet &rSet, drawinglayer::animation::AnimationEntryList &rAnimList, bool bForward, double fTimeFullPath, double fFrequency)
const basegfx::B2DHomMatrix & getTextRangeTransform() const
constexpr TypedWhichId< SdrTextAniDelayItem > SDRATTR_TEXT_ANIDELAY(SDRATTR_MISC_FIRST+19)
constexpr tools::Long getWidth() const
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
SdrTextHorzAdjust getSdrTextHorzAdjust() const
double GetCameraZRotation() const
B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
bool GetDraftFillColor(const SfxItemSet &rSet, Color &rCol)
Returns a replacement for an XFillStyle.
static void impCreateAlternateTiming(const SfxItemSet &rSet, drawinglayer::animation::AnimationEntryList &rAnimList, double fRelativeTextLength, bool bForward, double fTimeFullPath, double fFrequency)
const GraphicObject maBulletGraphicObject
void expand(const Tuple2D< double > &rTuple)
static void impCreateSlideTiming(const SfxItemSet &rSet, drawinglayer::animation::AnimationEntryList &rAnimList, bool bForward, double fTimeFullPath, double fFrequency)
void setFont(const vcl::Font &rFont)
constexpr TypedWhichId< SdrTextAniAmountItem > SDRATTR_TEXT_ANIAMOUNT(SDRATTR_MISC_FIRST+20)
Color const & GetBackgroundColor() const
virtual void CheckForFlowEvents(SdrOutliner *)
SvxURLFormat GetFormat() const
tools::Long mnWidthToFill
const Size & GetPaperSize() const