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;
1026 bAllowGrowVertical = bHorizontalIsBlock;
1027 bAllowGrowHorizontal = bVerticalIsBlock;
1030 if (bAllowGrowVertical)
1035 else if (bAllowGrowHorizontal)
1038 aMaxAutoPaperSize.
setWidth(1000000);
1061 if(aAnchorTextRange.
getWidth() < aOutlinerScale.
getX() && !bVerticalWriting)
1078 if(aAnchorTextRange.
getHeight() < aOutlinerScale.
getY() && bVerticalWriting)
1092 const double fFree(aAnchorTextRange.
getWidth() - aOutlinerScale.
getX());
1096 aAdjustTranslate.
setX(fFree / 2.0);
1101 aAdjustTranslate.
setX(fFree);
1108 const double fFree(aAnchorTextRange.
getHeight() - aOutlinerScale.
getY());
1112 aAdjustTranslate.
setY(fFree / 2.0);
1117 aAdjustTranslate.
setY(fFree);
1126 const double fStartInX(bVerticalWriting && bTopToBottom ? aAdjustTranslate.
getX() + aOutlinerScale.
getX() : aAdjustTranslate.
getX());
1127 const double fStartInY(bVerticalWriting && !bTopToBottom ? aAdjustTranslate.
getY() + aOutlinerScale.
getY() : aAdjustTranslate.
getY());
1136 aTranslate.
getY() + aAdjustTranslate.
getY(),
1137 aTranslate.
getX() + aOutlinerScale.
getX() - aAdjustTranslate.
getX(),
1138 aTranslate.
getY() + aOutlinerScale.
getY() - aAdjustTranslate.
getY());
1142 aNewTransformA.
translate(-aTranslateToCenter.
getX(), -aTranslateToCenter.
getY());
1155 bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0,
1156 fShearX, fRotate, aTranslate.
getX(), aTranslate.
getY()));
1163 impTextBreakupHandler aConverter(rOutliner);
1164 aConverter.decomposeBlockTextPrimitive(aNewTransformA, aNewTransformB, aClipRange);
1171 rTarget = aConverter.extractPrimitive2DSequence();
1181 double fRotate, fShearX;
1188 const Size aNullSize;
1190 rOutliner.
SetControlWord(nOriginalControlWord|EEControlBits::STRETCHING|EEControlBits::AUTOPAGESIZE);
1226 const double fScaleX(fabs(aScale.
getX()) / aOutlinerScale.
getX());
1227 const double fScaleY(fabs(aScale.
getY()) / aOutlinerScale.
getY());
1238 bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0,
1239 fShearX, fRotate, aTranslate.
getX(), aTranslate.
getY()));
1242 impTextBreakupHandler aConverter(rOutliner);
1243 aConverter.decomposeStretchTextPrimitive(aNewTransformA, aNewTransformB);
1250 rTarget = aConverter.extractPrimitive2DSequence();
1255#define ENDLESS_LOOP (0xffffffff)
1256#define ENDLESS_TIME (double(0xffffffff))
1257#define PIXEL_DPI (96.0)
1298 if(bVisibleWhenStarted)
1302 rAnimList.
append(aInOut);
1311 if(0 != nRepeat && bVisibleWhenStopped)
1315 rAnimList.
append(aOutIn);
1329 bForward = !bForward;
1332 const double fStartPosition(bForward ? fRelativeTextLength : 1.0 - fRelativeTextLength);
1333 const double fEndPosition(bForward ? 1.0 - fRelativeTextLength : fRelativeTextLength);
1337 if(!bVisibleWhenStarted)
1341 rAnimList.
append(aOutIn);
1346 const double fInnerMovePath(fabs(1.0 - (fRelativeTextLength * 2.0)));
1347 const double fTimeForInnerPath(fTimeFullPath * fInnerMovePath);
1348 const double fHalfInnerPath(fTimeForInnerPath * 0.5);
1349 const sal_uInt32 nDoubleRepeat(nRepeat / 2L);
1351 if(nDoubleRepeat || 0 == nRepeat)
1368 rAnimList.
append(aTime0);
1370 rAnimList.
append(aTime1);
1377 if(bVisibleWhenStopped)
1387 rAnimList.
append(aInOut);
1394 const double fStartPosition(bForward ? 0.0 : 1.0);
1399 rAnimList.
append(aOutIn);
1402 if(nRepeat > 1 || 0 == nRepeat)
1438 fAnimationDelay = 50.0;
1446 fSingleStepWidth = (-fSingleStepWidth * (2540.0 /
PIXEL_DPI));
1452 fSingleStepWidth = 100.0;
1457 const double fFullPathLength(fFrameLength + fTextLength);
1458 const double fNumberOfSteps(fFullPathLength / fSingleStepWidth);
1459 double fTimeFullPath(fNumberOfSteps * fAnimationDelay);
1461 if(fTimeFullPath < fAnimationDelay)
1463 fTimeFullPath = fAnimationDelay;
1475 double fRelativeTextLength(fTextLength / (fFrameLength + fTextLength));
1501 for (
size_t i = 0;
i < nObjCount;
i++)
1506 SAL_INFO(
"svx.chaining",
"Working on TextBox " <<
i);
1543 double fRotate, fShearX;
1548 aAnchorTextRange.
expand(aTranslate + aScale);
1558 const Size aNullSize;
1563 rOutliner.
SetControlWord(nOriginalControlWord|EEControlBits::AUTOPAGESIZE|EEControlBits::STRETCHING);
1568 const sal_uInt32 nAnchorTextWidth(
FRound(aAnchorTextRange.
getWidth() + 1));
1569 const sal_uInt32 nAnchorTextHeight(
FRound(aAnchorTextRange.
getHeight() + 1));
1573 OSL_ENSURE(pOutlinerParaObject,
"impDecomposeBlockTextPrimitive used with no OutlinerParaObject (!)");
1576 const bool bTopToBottom(pOutlinerParaObject->
IsTopToBottom());
1577 const Size aAnchorTextSize(
Size(nAnchorTextWidth, nAnchorTextHeight));
1597 rOutliner.
SetText(*pOutlinerParaObject);
1616 const double fFree(aAnchorTextRange.
getWidth() - aOutlinerScale.
getX());
1620 aAdjustTranslate.
setX(fFree / 2.0);
1625 aAdjustTranslate.
setX(fFree);
1632 const double fFree(aAnchorTextRange.
getHeight() - aOutlinerScale.
getY());
1636 aAdjustTranslate.
setY(fFree / 2.0);
1641 aAdjustTranslate.
setY(fFree);
1653 const double fStartInX(bVerticalWriting && bTopToBottom ? aAdjustTranslate.
getX() + aOutlinerScale.
getX() : aAdjustTranslate.
getX());
1654 const double fStartInY(bVerticalWriting && !bTopToBottom ? aAdjustTranslate.
getY() + aOutlinerScale.
getY() : aAdjustTranslate.
getY());
1655 aNewTransformA.
translate(fStartInX, fStartInY);
1661 aNewTransformB.
scale(bMirrorX ? -1.0 : 1.0, bMirrorY ? -1.0 : 1.0);
1665 aNewTransformB.
shearX(fShearX);
1666 aNewTransformB.
rotate(fRotate);
1672 impTextBreakupHandler aConverter(rOutliner);
1673 aConverter.decomposeBlockTextPrimitive(aNewTransformA, aNewTransformB, aClipRange);
1680 rTarget = aConverter.extractPrimitive2DSequence();
1692 impTextBreakupHandler aConverter(rOutliner);
1693 aConverter.decomposeBlockTextPrimitive(rNewTransformA, rNewTransformB, rClipRange);
1694 rTarget.append(aConverter.extractPrimitive2DSequence());
1699 const css::uno::Any* pAny;
1700 double fTextCameraZRotateAngle = 0.0;
1707 *pAny >>= fTextCameraZRotateAngle;
1709 return fTextCameraZRotateAngle;
IMPL_LINK(MaskData, PipetteHdl, const OString &, 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 SetGlobalCharStretching(double nX=100.0, double nY=100.0)
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 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
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< 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)