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]));
237 ::std::vector< sal_Bool > aKashidaArray;
253 const Color aTextFillColor(rInfo.
mrFont.GetFillColor());
262 const bool bDecoratedIsNeeded(
263 LINESTYLE_NONE != rInfo.
mrFont.GetOverline()
264 || LINESTYLE_NONE != rInfo.
mrFont.GetUnderline()
265 || STRIKEOUT_NONE != rInfo.
mrFont.GetStrikeout()
266 || FontEmphasisMark::NONE != (rInfo.
mrFont.GetEmphasisMark() & FontEmphasisMark::Style)
267 || FontRelief::NONE != rInfo.
mrFont.GetRelief()
268 || rInfo.
mrFont.IsShadow()
271 if(bDecoratedIsNeeded)
276 const basegfx::BColor aBUnderlineColor((aUnderlineColor == COL_AUTO) ? aBFontColor : aUnderlineColor.getBColor());
278 const basegfx::BColor aBOverlineColor((aOverlineColor == COL_AUTO) ? aBFontColor : aOverlineColor.getBColor());
287 const bool bUnderlineAbove(
297 switch(rInfo.
mrFont.GetEmphasisMark() & FontEmphasisMark::Style)
306 const bool bEmphasisMarkAbove(rInfo.
mrFont.GetEmphasisMark() & FontEmphasisMark::PosAbove);
307 const bool bEmphasisMarkBelow(rInfo.
mrFont.GetEmphasisMark() & FontEmphasisMark::PosBelow);
312 switch(rInfo.
mrFont.GetRelief())
320 const bool bShadow(rInfo.
mrFont.IsShadow());
330 std::vector(aDXArray),
331 std::vector(aKashidaArray),
359 std::vector(aDXArray),
360 std::vector(aKashidaArray),
361 std::move(aFontAttribute),
369 if (aFontColor.IsTransparent())
374 (255 - aFontColor.GetAlpha()) / 255.0);
387 pNewPrimitive = impCheckFieldPrimitive(pNewPrimitive.get(), rInfo);
390 maTextPortionPrimitives.push_back(pNewPrimitive);
397 const sal_Int32 nDXCount(aDXArray.size());
400 for(sal_Int32
a(0);
a < nSize;
a++)
411 if(nStart > 0 && nStart - 1 < nDXCount)
413 fStart = aDXArray[nStart - 1];
416 if(nEnd > 0 && nEnd - 1 < nDXCount)
418 fEnd = aDXArray[nEnd - 1];
428 const double fTextWidth(aDXArray[aDXArray.size() - 1]);
430 fStart = fTextWidth - fStart;
431 fEnd = fTextWidth - fEnd;
436 const double fFontScaleX(aFontScaling.
getX());
441 fStart /= fFontScaleX;
478 std::vector< std::pair< OUString, OUString>> meValues;
479 meValues.emplace_back(
"URL", pURLField->
GetURL());
481 meValues.emplace_back(
"TargetFrame", pURLField->
GetTargetFrame());
482 meValues.emplace_back(
"SvxURLFormat", OUString::number(
static_cast<sal_uInt16
>(pURLField->
GetFormat())));
498 void impTextBreakupHandler::impFlushTextPortionPrimitivesToLinePrimitives()
502 if(!maTextPortionPrimitives.empty())
508 void impTextBreakupHandler::impFlushLinePrimitivesToParagraphPrimitives(sal_Int32 nPara)
510 sal_Int16 nDepth = mrOutliner.
GetDepth(nPara);
514 const sal_Int16 nOutlineLevel( eInfo.
bVisible ? nDepth : -1);
519 maParagraphPrimitives.push_back(
521 std::move(maLinePrimitives),
525 void impTextBreakupHandler::impHandleDrawPortionInfo(
const DrawPortionInfo& rInfo)
527 impCreateTextPortionPrimitive(rInfo);
531 impFlushTextPortionPrimitivesToLinePrimitives();
536 impFlushLinePrimitivesToParagraphPrimitives(rInfo.
mnPara);
540 void impTextBreakupHandler::impHandleDrawBulletInfo(
const DrawBulletInfo& rInfo)
548 aNewTransform *= maNewTransformA;
554 aNewTransform *= maNewTransformB;
570 maTextPortionPrimitives.push_back(pNewPrimitive);
577 if(pInfo &&
static_cast<double>(pInfo->mrStartPos.Y()) < maScale.
getY())
579 impHandleDrawPortionInfo(*pInfo);
594 const basegfx::B2DPoint aStartPosition(pInfo->mrStartPos.X(), pInfo->mrStartPos.Y());
596 if(!maClipRange.
isInside(aStartPosition))
603 aTextLayouterDevice.
setFont(pInfo->mrFont);
607 pInfo->maText, pInfo->mnTextStart, pInfo->mnTextLen));
616 const basegfx::B2DPoint aBottomRight(aTextBoundRect.getMaximum() + aStartPosition);
618 if(!maClipRange.
isInside(aBottomRight))
625 impHandleDrawPortionInfo(*pInfo);
632 impHandleDrawPortionInfo(*pInfo);
640 impHandleDrawBulletInfo(*pInfo);
648 impHandleDrawBulletInfo(*pInfo);
656 impHandleDrawBulletInfo(*pInfo);
662 if(!maTextPortionPrimitives.empty())
665 impFlushTextPortionPrimitivesToLinePrimitives();
668 if(!maLinePrimitives.empty())
674 return std::move(maParagraphPrimitives);
688 double fRotate, fShearX;
698 const Size aNullSize;
718 bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0,
719 fShearX, fRotate, aTranslate.
getX(), aTranslate.
getY()));
722 impTextBreakupHandler aConverter(rOutliner);
723 aConverter.decomposeContourTextPrimitive(aNewTransformA, aNewTransformB, aScale);
729 rTarget = aConverter.extractPrimitive2DSequence();
739 double fRotate, fShearX;
744 aAnchorTextRange.
expand(aTranslate + aScale);
753 const Size aNullSize;
758 rOutliner.
SetControlWord(nOriginalControlWord|EEControlBits::AUTOPAGESIZE|EEControlBits::STRETCHING);
767 const sal_uInt32 nAnchorTextWidth(
FRound(aAnchorTextRange.
getWidth() + 1));
768 const sal_uInt32 nAnchorTextHeight(
FRound(aAnchorTextRange.
getHeight() + 1));
770 OSL_ENSURE(pOutlinerParaObject,
"impDecomposeBlockTextPrimitive used with no OutlinerParaObject (!)");
772 const bool bTopToBottom(pOutlinerParaObject->
IsTopToBottom());
773 const Size aAnchorTextSize(
Size(nAnchorTextWidth, nAnchorTextHeight));
794 rOutliner.
SetText(*pOutlinerParaObject);
808 const double fFree(aAnchorTextRange.
getWidth() - aOutlinerScale.
getX());
812 aAdjustTranslate.
setX(fFree / 2.0);
817 aAdjustTranslate.
setX(fFree);
824 const double fFree(aAnchorTextRange.
getHeight() - aOutlinerScale.
getY());
828 aAdjustTranslate.
setY(fFree / 2.0);
833 aAdjustTranslate.
setY(fFree);
845 const double fStartInX(bVerticalWriting && bTopToBottom ? aAdjustTranslate.
getX() + aOutlinerScale.
getX() : aAdjustTranslate.
getX());
846 const double fStartInY(bVerticalWriting && !bTopToBottom ? aAdjustTranslate.
getY() + aOutlinerScale.
getY() : aAdjustTranslate.
getY());
847 aNewTransformA.
translate(fStartInX, fStartInY);
853 aNewTransformB.
scale(bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0);
857 aNewTransformB.
shearX(fShearX);
858 aNewTransformB.
rotate(fRotate);
864 impTextBreakupHandler aConverter(rOutliner);
865 aConverter.decomposeBlockTextPrimitive(aNewTransformA, aNewTransformB, aClipRange);
873 rTarget = aConverter.extractPrimitive2DSequence();
911 return pBackgroundFillSet;
931 double fRotate, fShearX;
936 aAnchorTextRange.
expand(aTranslate + aScale);
939 const bool bIsCell(rSdrBlockTextPrimitive.
getCellText());
945 const Size aNullSize;
950 rOutliner.
SetControlWord(nOriginalControlWord|EEControlBits::AUTOPAGESIZE);
959 const sal_uInt32 nAnchorTextWidth(
FRound(aAnchorTextRange.
getWidth() + 1));
960 const sal_uInt32 nAnchorTextHeight(
FRound(aAnchorTextRange.
getHeight() + 1));
963 const Size aAnchorTextSize(
Size(nAnchorTextWidth, nAnchorTextHeight));
998 if(bHorizontalIsBlock)
1003 else if(bVerticalIsBlock)
1017 Size aMaxAutoPaperSize(aAnchorTextSize);
1020 bool bAllowGrowVertical = !bVerticalWriting;
1021 bool bAllowGrowHorizontal = bVerticalWriting;
1027 bAllowGrowVertical = bHorizontalIsBlock;
1028 bAllowGrowHorizontal = bVerticalIsBlock;
1031 if (bAllowGrowVertical)
1036 else if (bAllowGrowHorizontal)
1039 aMaxAutoPaperSize.
setWidth(1000000);
1062 if(aAnchorTextRange.
getWidth() < aOutlinerScale.
getX() && !bVerticalWriting)
1079 if(aAnchorTextRange.
getHeight() < aOutlinerScale.
getY() && bVerticalWriting)
1093 const double fFree(aAnchorTextRange.
getWidth() - aOutlinerScale.
getX());
1097 aAdjustTranslate.
setX(fFree / 2.0);
1102 aAdjustTranslate.
setX(fFree);
1106 const double fFreeVerticalSpace(aAnchorTextRange.
getHeight() - aOutlinerScale.
getY());
1107 bool bClipVerticalTextOverflow = fFreeVerticalSpace < 0
1111 && !bClipVerticalTextOverflow)
1115 aAdjustTranslate.
setY(fFreeVerticalSpace / 2.0);
1120 aAdjustTranslate.
setY(fFreeVerticalSpace);
1129 const double fStartInX(bVerticalWriting && bTopToBottom ? aAdjustTranslate.
getX() + aOutlinerScale.
getX() : aAdjustTranslate.
getX());
1130 const double fStartInY(bVerticalWriting && !bTopToBottom ? aAdjustTranslate.
getY() + aOutlinerScale.
getY() : aAdjustTranslate.
getY());
1139 aTranslate.
getY() + aAdjustTranslate.
getY(),
1140 aTranslate.
getX() + aOutlinerScale.
getX() - aAdjustTranslate.
getX(),
1141 aTranslate.
getY() + aOutlinerScale.
getY() - aAdjustTranslate.
getY());
1145 aNewTransformA.
translate(-aTranslateToCenter.
getX(), -aTranslateToCenter.
getY());
1158 bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0,
1159 fShearX, fRotate, aTranslate.
getX(), aTranslate.
getY()));
1164 if(bClipVerticalTextOverflow)
1165 aClipRange = {0, 0, std::numeric_limits<double>::max(), aAnchorTextRange.
getHeight()};
1168 impTextBreakupHandler aConverter(rOutliner);
1169 aConverter.decomposeBlockTextPrimitive(aNewTransformA, aNewTransformB, aClipRange);
1176 rTarget = aConverter.extractPrimitive2DSequence();
1186 double fRotate, fShearX;
1193 const Size aNullSize;
1195 rOutliner.
SetControlWord(nOriginalControlWord|EEControlBits::STRETCHING|EEControlBits::AUTOPAGESIZE);
1231 const double fScaleX(fabs(aScale.
getX()) / aOutlinerScale.
getX());
1232 const double fScaleY(fabs(aScale.
getY()) / aOutlinerScale.
getY());
1233 rOutliner.
setGlobalScale(fScaleX * 100.0, fScaleY * 100.0, 100.0, 100.0);
1243 bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0,
1244 fShearX, fRotate, aTranslate.
getX(), aTranslate.
getY()));
1247 impTextBreakupHandler aConverter(rOutliner);
1248 aConverter.decomposeStretchTextPrimitive(aNewTransformA, aNewTransformB);
1255 rTarget = aConverter.extractPrimitive2DSequence();
1260#define ENDLESS_LOOP (0xffffffff)
1261#define ENDLESS_TIME (double(0xffffffff))
1262#define PIXEL_DPI (96.0)
1303 if(bVisibleWhenStarted)
1307 rAnimList.
append(aInOut);
1316 if(0 != nRepeat && bVisibleWhenStopped)
1320 rAnimList.
append(aOutIn);
1334 bForward = !bForward;
1337 const double fStartPosition(bForward ? fRelativeTextLength : 1.0 - fRelativeTextLength);
1338 const double fEndPosition(bForward ? 1.0 - fRelativeTextLength : fRelativeTextLength);
1342 if(!bVisibleWhenStarted)
1346 rAnimList.
append(aOutIn);
1351 const double fInnerMovePath(fabs(1.0 - (fRelativeTextLength * 2.0)));
1352 const double fTimeForInnerPath(fTimeFullPath * fInnerMovePath);
1353 const double fHalfInnerPath(fTimeForInnerPath * 0.5);
1354 const sal_uInt32 nDoubleRepeat(nRepeat / 2L);
1356 if(nDoubleRepeat || 0 == nRepeat)
1373 rAnimList.
append(aTime0);
1375 rAnimList.
append(aTime1);
1382 if(bVisibleWhenStopped)
1392 rAnimList.
append(aInOut);
1399 const double fStartPosition(bForward ? 0.0 : 1.0);
1404 rAnimList.
append(aOutIn);
1407 if(nRepeat > 1 || 0 == nRepeat)
1443 fAnimationDelay = 50.0;
1451 fSingleStepWidth = (-fSingleStepWidth * (2540.0 /
PIXEL_DPI));
1457 fSingleStepWidth = 100.0;
1462 const double fFullPathLength(fFrameLength + fTextLength);
1463 const double fNumberOfSteps(fFullPathLength / fSingleStepWidth);
1464 double fTimeFullPath(fNumberOfSteps * fAnimationDelay);
1466 if(fTimeFullPath < fAnimationDelay)
1468 fTimeFullPath = fAnimationDelay;
1480 double fRelativeTextLength(fTextLength / (fFrameLength + fTextLength));
1506 for (
size_t i = 0;
i < nObjCount;
i++)
1511 SAL_INFO(
"svx.chaining",
"Working on TextBox " <<
i);
1548 double fRotate, fShearX;
1553 aAnchorTextRange.
expand(aTranslate + aScale);
1563 const Size aNullSize;
1568 rOutliner.
SetControlWord(nOriginalControlWord|EEControlBits::AUTOPAGESIZE|EEControlBits::STRETCHING);
1573 const sal_uInt32 nAnchorTextWidth(
FRound(aAnchorTextRange.
getWidth() + 1));
1574 const sal_uInt32 nAnchorTextHeight(
FRound(aAnchorTextRange.
getHeight() + 1));
1578 OSL_ENSURE(pOutlinerParaObject,
"impDecomposeBlockTextPrimitive used with no OutlinerParaObject (!)");
1581 const bool bTopToBottom(pOutlinerParaObject->
IsTopToBottom());
1582 const Size aAnchorTextSize(
Size(nAnchorTextWidth, nAnchorTextHeight));
1602 rOutliner.
SetText(*pOutlinerParaObject);
1621 const double fFree(aAnchorTextRange.
getWidth() - aOutlinerScale.
getX());
1625 aAdjustTranslate.
setX(fFree / 2.0);
1630 aAdjustTranslate.
setX(fFree);
1637 const double fFree(aAnchorTextRange.
getHeight() - aOutlinerScale.
getY());
1641 aAdjustTranslate.
setY(fFree / 2.0);
1646 aAdjustTranslate.
setY(fFree);
1658 const double fStartInX(bVerticalWriting && bTopToBottom ? aAdjustTranslate.
getX() + aOutlinerScale.
getX() : aAdjustTranslate.
getX());
1659 const double fStartInY(bVerticalWriting && !bTopToBottom ? aAdjustTranslate.
getY() + aOutlinerScale.
getY() : aAdjustTranslate.
getY());
1660 aNewTransformA.
translate(fStartInX, fStartInY);
1666 aNewTransformB.
scale(bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0);
1670 aNewTransformB.
shearX(fShearX);
1671 aNewTransformB.
rotate(fRotate);
1677 impTextBreakupHandler aConverter(rOutliner);
1678 aConverter.decomposeBlockTextPrimitive(aNewTransformA, aNewTransformB, aClipRange);
1685 rTarget = aConverter.extractPrimitive2DSequence();
1697 impTextBreakupHandler aConverter(rOutliner);
1698 aConverter.decomposeBlockTextPrimitive(rNewTransformA, rNewTransformB, rClipRange);
1699 rTarget.append(aConverter.extractPrimitive2DSequence());
1704 const css::uno::Any* pAny;
1705 double fTextCameraZRotateAngle = 0.0;
1712 *pAny >>= fTextCameraZRotateAngle;
1714 return fTextCameraZRotateAngle;
IMPL_LINK(MaskData, PipetteHdl, const OUString &, rId, void)
const GraphicObject maBulletGraphicObject
o3tl::span< const sal_Bool > mpKashidaArray
const SvxFieldData * mpFieldData
const Color maOverlineColor
const EEngineData::WrongSpellVector * mpWrongSpellVector
const Color maTextLineColor
tools::Long mnWidthToFill
const css::lang::Locale * mpLocale
o3tl::span< const sal_Int32 > mpDXArray
bool IsTopToBottom() const
bool IsEffectivelyVertical() const
void SetMaxAutoPaperSize(const Size &rSz)
void SetText(const OutlinerParaObject &)
const Size & GetPaperSize() const
void SetDrawPortionHdl(const Link< DrawPortionInfo *, void > &rLink)
void SetMinColumnWrapHeight(tools::Long nVal)
void SetMinAutoPaperSize(const Size &rSz)
void SetPaperSize(const Size &rSize)
sal_Int16 GetDepth(sal_Int32 nPara) const
bool SetUpdateLayout(bool bUpdate)
void SetDrawBulletHdl(const Link< DrawBulletInfo *, void > &rLink)
void SetFixedCellHeight(bool bUseFixedCellHeight)
EEControlBits GetControlWord() const
EBulletInfo GetBulletInfo(sal_Int32 nPara)
Color const & GetBackgroundColor() const
void SetControlWord(EEControlBits nWord)
void SetPolygon(const basegfx::B2DPolyPolygon &rPolyPolygon)
void setGlobalScale(double rFontX=100.0, double rFontY=100.0, double rSpacingX=100.0, double rSpacingY=100.0)
void SetBackgroundColor(const Color &rColor)
sal_Int32 GetParagraphCount() const
css::uno::Any * GetPropertyValueByName(const OUString &rPropName)
bool setSuitableOutlinerBg(Outliner &rOutliner) const
SdrModel & getSdrModelFromSdrObject() const
const Graphic * getFillGraphic() const
bool IsGroupObject() const
SdrPage * getSdrPageFromSdrObject() const
const SfxItemSet * getBackgroundFillSet() const
const SfxItemSet & GetObjectItemSet() const
void setVisualizedPage(const SdrPage *pPage)
const SfxItemSet & GetItemSet() const
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
SdrPage & TRG_GetMasterPage() const
bool IsMasterPage() const
bool TRG_HasMasterPage() const
SdrPageProperties & getSdrPageProperties()
SdrTextHorzAdjust GetTextHorizontalAdjust() const
double GetCameraZRotation() const
SdrOutliner & ImpGetDrawOutliner() const
bool IsInEditMode() const
void impDecomposeContourTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrContourTextPrimitive2D &rSdrContourTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
void impDecomposeBlockTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrBlockTextPrimitive2D &rSdrBlockTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
void impDecomposeStretchTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrStretchTextPrimitive2D &rSdrStretchTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
void impDecomposeChainedTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrChainedTextPrimitive2D &rSdrChainedTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
void ImpAutoFitText(SdrOutliner &rOutliner) const
SVX_DLLPRIVATE void ImpInitDrawOutliner(SdrOutliner &rOutl) const
SdrTextAniDirection GetTextAniDirection() const
void impGetScrollTextTiming(drawinglayer::animation::AnimationEntryList &rAnimList, double fFrameLength, double fTextLength) const
void impDecomposeAutoFitTextPrimitive(drawinglayer::primitive2d::Primitive2DContainer &rTarget, const drawinglayer::primitive2d::SdrAutoFitTextPrimitive2D &rSdrAutofitTextPrimitive, const drawinglayer::geometry::ViewInformation2D &aViewInformation) const
static void impDecomposeBlockTextPrimitiveDirect(drawinglayer::primitive2d::Primitive2DContainer &rTarget, SdrOutliner &rOutliner, const basegfx::B2DHomMatrix &rNewTransformA, const basegfx::B2DHomMatrix &rNewTransformB, const basegfx::B2DRange &rClipRange)
SdrTextVertAdjust GetTextVerticalAdjust() const
TextChain * GetTextChain() const
SdrTextAniKind GetTextAniKind() const
void impGetBlinkTextTiming(drawinglayer::animation::AnimationEntryList &rAnimList) const
void impHandleChainingEventsDuringDecomposition(SdrOutliner &rOutliner) const
OutlinerParaObject * GetOutlinerParaObject()
const SfxItemSet & GetItemSet() const
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
constexpr tools::Long getHeight() const
constexpr tools::Long Height() const
constexpr tools::Long getWidth() const
void setWidth(tools::Long nWidth)
void setHeight(tools::Long nHeight)
constexpr tools::Long Width() const
sal_uInt8 GetPropr() const
short GetEscapement() const
OUString CalcCaseMap(const OUString &rTxt) const
const OUString & GetRepresentation() const
SvxURLFormat GetFormat() const
const OUString & GetTargetFrame() const
const OUString & GetURL() const
void ExecuteUnderflow(SdrOutliner *)
void ExecuteOverflow(SdrOutliner *, SdrOutliner *)
virtual void CheckForFlowEvents(SdrOutliner *)
void SetNilChainingEvent(const SdrTextObj *, bool)
bool decompose(B2DTuple &rScale, B2DTuple &rTranslate, double &rRotate, double &rShearX) const
void rotate(double fRadiant)
void translate(double fX, double fY)
void scale(double fX, double fY)
void transform(const basegfx::B2DHomMatrix &rMatrix)
void expand(const Tuple2D< TYPE > &rTuple)
bool isInside(const Tuple2D< TYPE > &rTuple) const
void append(const AnimationEntry &rCandidate)
const basegfx::B2DHomMatrix & getTextRangeTransform() const
const basegfx::B2DHomMatrix & getTextRangeTransform() const
bool isFixedCellHeight() const
SdrTextHorzAdjust getSdrTextHorzAdjust() const
SdrTextVertAdjust getSdrTextVertAdjust() const
bool getUnlimitedPage() const
const basegfx::B2DHomMatrix & getTextRangeTransform() const
const basegfx::B2DPolyPolygon & getUnitPolyPolygon() const
const basegfx::B2DHomMatrix & getObjectTransform() const
bool isFixedCellHeight() const
const basegfx::B2DHomMatrix & getTextRangeTransform() const
const OutlinerParaObject & getOutlinerParaObject() const
const SdrText * getSdrText() const
basegfx::B2DRange getTextBoundRect(const OUString &rText, sal_uInt32 nIndex, sal_uInt32 nLength) const
void setFont(const vcl::Font &rFont)
constexpr bool empty() const noexcept
@ AnchoredTextOverflowLegacy
for tdf#99729
DECL_LINK(CheckNameHdl, SvxNameDialog &, bool)
constexpr TypedWhichId< SvxAdjustItem > EE_PARA_JUST(EE_PARA_START+16)
tools::Long FRound(double fVal)
#define LINK(Instance, Class, Member)
#define SAL_INFO(area, stream)
B2DHomMatrix createScaleB2DHomMatrix(double fScaleX, double fScaleY)
B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
B2DHomMatrix createScaleShearXRotateTranslateB2DHomMatrix(double fScaleX, double fScaleY, double fShearX, double fRadiant, double fTranslateX, double fTranslateY)
constexpr double deg2rad(double v)
rtl::Reference< BasePrimitive2D > Primitive2DReference
TextLine mapFontLineStyleToTextLine(FontLineStyle eLineStyle)
TextStrikeout mapFontStrikeoutToTextStrikeout(FontStrikeout eFontStrikeout)
TEXT_FONT_EMPHASIS_MARK_DISC
TEXT_FONT_EMPHASIS_MARK_CIRCLE
TEXT_FONT_EMPHASIS_MARK_ACCENT
TEXT_FONT_EMPHASIS_MARK_NONE
TEXT_FONT_EMPHASIS_MARK_DOT
attribute::FontAttribute getFontAttributeFromVclFont(basegfx::B2DVector &o_rSize, const vcl::Font &rFont, bool bRTL, bool bBiDiStrong)
@ SDRTEXTVERTADJUST_BOTTOM
@ SDRTEXTVERTADJUST_BLOCK
@ SDRTEXTVERTADJUST_CENTER
@ SDRTEXTHORZADJUST_BLOCK
@ SDRTEXTHORZADJUST_CENTER
@ SDRTEXTHORZADJUST_RIGHT
SdrTextAniKind
Animation type for text frame.
@ Slide
scroll back and forth
@ Alternate
scroll through
constexpr TypedWhichId< SdrTextAniDelayItem > SDRATTR_TEXT_ANIDELAY(SDRATTR_MISC_FIRST+19)
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_CLIPVERTOVERFLOW(SDRATTR_MISC_FIRST+26)
constexpr TypedWhichId< SdrTextAniStartInsideItem > SDRATTR_TEXT_ANISTARTINSIDE(SDRATTR_MISC_FIRST+16)
constexpr TypedWhichId< SdrTextAniStopInsideItem > SDRATTR_TEXT_ANISTOPINSIDE(SDRATTR_MISC_FIRST+17)
constexpr TypedWhichId< SdrTextAniCountItem > SDRATTR_TEXT_ANICOUNT(SDRATTR_MISC_FIRST+18)
constexpr TypedWhichId< SdrTextAniAmountItem > SDRATTR_TEXT_ANIAMOUNT(SDRATTR_MISC_FIRST+20)
constexpr TypedWhichId< SdrCustomShapeGeometryItem > SDRATTR_CUSTOMSHAPE_GEOMETRY(SDRATTR_CUSTOMSHAPE_FIRST+2)
bool GetDraftFillColor(const SfxItemSet &rSet, Color &rCol)
Returns a replacement for an XFillStyle.
SdrTextObj * DynCastSdrTextObj(SdrObject *pObj)
static void impCreateSlideTiming(const SfxItemSet &rSet, drawinglayer::animation::AnimationEntryList &rAnimList, bool bForward, double fTimeFullPath, double fFrequency)
static void impCreateAlternateTiming(const SfxItemSet &rSet, drawinglayer::animation::AnimationEntryList &rAnimList, double fRelativeTextLength, bool bForward, double fTimeFullPath, double fFrequency)
static void impCreateScrollTiming(const SfxItemSet &rSet, drawinglayer::animation::AnimationEntryList &rAnimList, bool bForward, double fTimeFullPath, double fFrequency)
SdrPage * GetSdrPageFromXDrawPage(const uno::Reference< drawing::XDrawPage > &xDrawPage) noexcept
returns the SdrObject from the given StarOffice API wrapper
constexpr TypedWhichId< XFillBitmapItem > XATTR_FILLBITMAP(XATTR_FILL_FIRST+4)
constexpr TypedWhichId< XFillStyleItem > XATTR_FILLSTYLE(XATTR_FILL_FIRST)