28#include <svx/strings.hrc>
62 return std::make_unique<sdr::properties::TextProperties>(*
this);
68 return std::make_unique<sdr::contact::ViewContactOfTextObj>(*
this);
73 , mpEditingOutliner(nullptr)
75 , maTextEditOffset(
Point(0, 0))
78 , mbTextSizeDirty(false)
80 , mbDisableAutoWidthOnDragging(false)
81 , mbTextAnimationAllowed(true)
82 , mbInDownScale(false)
90 , mpEditingOutliner(nullptr)
91 , meTextKind(rSource.meTextKind)
92 , maTextEditOffset(
Point(0, 0))
93 , mbTextFrame(rSource.mbTextFrame)
94 , mbNoShear(rSource.mbNoShear)
95 , mbTextSizeDirty(rSource.mbTextSizeDirty)
97 , mbDisableAutoWidthOnDragging(rSource.mbDisableAutoWidthOnDragging)
98 , mbTextAnimationAllowed(true)
99 , mbInDownScale(false)
111 if( pText && rSource.
HasText() )
138 , mpEditingOutliner(nullptr)
140 , maTextEditOffset(
Point(0, 0))
143 , mbTextSizeDirty(false)
144 , mbInEditMode(false)
145 , mbDisableAutoWidthOnDragging(false)
146 , mbTextAnimationAllowed(true)
147 , mbInDownScale(false)
159 , mpEditingOutliner(nullptr)
160 , meTextKind(eNewTextKind)
161 , maTextEditOffset(
Point(0, 0))
164 , mbTextSizeDirty(false)
165 , mbInEditMode(false)
166 , mbDisableAutoWidthOnDragging(false)
167 , mbTextAnimationAllowed(true)
168 , mbInDownScale(false)
177 , mpEditingOutliner(nullptr)
178 , meTextKind(eNewTextKind)
179 , maTextEditOffset(
Point(0, 0))
182 , mbTextSizeDirty(false)
183 , mbInEditMode(false)
184 , mbDisableAutoWidthOnDragging(false)
185 , mbTextAnimationAllowed(true)
186 , mbInDownScale(false)
250 rOutliner.
Read(rInput,rBaseURL,eFormat);
325 if(!bInEditMOde && bRet)
461 if(p1stPara==
nullptr)
467 if( pOutliner->
GetText(p1stPara).isEmpty() )
478 const bool bRemove(pNewPage ==
nullptr && pOldPage !=
nullptr);
479 const bool bInsert(pNewPage !=
nullptr && pOldPage ==
nullptr);
482 if (bLinked && bRemove)
490 if (bLinked && bInsert)
560 std::optional<basegfx::B2DPolyPolygon> pContourPolyPolygon;
562 -rAnchorRect.
Left(), -rAnchorRect.
Top()));
576 pContourPolyPolygon.emplace();
593 *pContourPolyPolygon = pCopy->TakeContour();
607 pContourPolyPolygon->transform(aMatrix);
610 rOutliner.
SetPolygon(aXorPolyPolygon, pContourPolyPolygon ? &*pContourPolyPolygon :
nullptr);
671 aAnkRect.
Move(aTmpPt.X(),aTmpPt.Y());
673 rAnchorRect=aAnkRect;
699 if (!bFitToSize && !bContourFrame)
719 if (!bChainedFrame) {
760 else if (pOutlinerParaObject)
761 pPara = *pOutlinerParaObject;
768 if( !pTestObj || !bHitTest || pTestObj !=
this ||
825 aTextPos.AdjustX(nFreeWdt/2 );
827 aTextPos.AdjustX(nFreeWdt );
833 aTextPos.AdjustY(nFreeHgt/2 );
835 aTextPos.AdjustY(nFreeHgt );
841 *pAnchorRect=aAnkRect;
872 bool bNoStretching(
false);
878 OUString aTestString(
u'J');
890 pOut->SetFont(aTmpFont);
891 Size aSize1(
pOut->GetTextWidth(aTestString),
pOut->GetTextHeight());
893 pOut->SetFont(aTmpFont);
894 Size aSize2(
pOut->GetTextWidth(aTestString),
pOut->GetTextHeight());
895 pOut->SetFont(aOriginalFont);
900 bNoStretching = (aSize1 == aSize2);
907 bNoStretching =
true;
911 unsigned nLoopCount=0;
912 bool bNoMoreLoop =
false;
916 if (nIsWdt==0) nIsWdt=1;
920 if (nIsHgt==0) nIsHgt=1;
926 double nX = (nWantWdt * 100.0) /
double(nIsWdt);
927 double nY = (nWantHgt * 100.0) /
double(nIsHgt);
942 while (nLoopCount<5 && !bNoMoreLoop)
990 if (((nXDiff>=nXTolMi || !bChkX) && nXDiff<=nXTolPl) || nXDiff==nXDiff0) {
996 if (std::abs(nXDiff) <= 2 * nXCorr)
999 nDiv += (nMul - nDiv) / 2.0;
1001 nMul += (nDiv - nMul) / 2.0;
1003 nX = nX * double(nMul) / double(nDiv);
1047 if(!aStr2.isEmpty() && aStr2.indexOf(
u'\x00FF') == -1)
1052 if(aStr2.getLength() > 10)
1054 aStr2 = OUString::Concat(aStr2.subView(0, 8)) +
"...";
1057 aStr += aStr2 +
"\'";
1064 if (!
aName.isEmpty())
1123 if (bFitToSize) aR=aAnchor2;
1153 case 0: aP = aRectangle.TopLeft();
break;
1154 case 1: aP = aRectangle.TopRight();
break;
1155 case 2: aP = aRectangle.BottomLeft();
break;
1156 case 3: aP = aRectangle.BottomRight();
break;
1157 default: aP = aRectangle.Center();
break;
1170 OutlinerMode nOutlinerMode = OutlinerMode::OutlineObject;
1172 nOutlinerMode = OutlinerMode::TextObject;
1173 rOutl.
Init( nOutlinerMode );
1177 nStat &=
~EEControlBits(EEControlBits::STRETCHING|EEControlBits::AUTOPAGESIZE);
1179 Size aMaxSize(100000,100000);
1210 nStat|=EEControlBits::STRETCHING|EEControlBits::AUTOPAGESIZE;
1215 TakeTextRect(rOutliner, rTextRect,
false, &rAnchorRect);
1216 rPaintRect = rTextRect;
1225 rPaintRect=rAnchorRect;
1254 bool bIsVerticalWriting)
const
1260 double nMinStretchX = 0.0;
1261 double nMinStretchY = 0.0;
1262 std::array<sal_Int32, 10> aOldStretchXVals = {0,0,0,0,0,0,0,0,0,0};
1263 for (
size_t i = 0;
i < aOldStretchXVals.size(); ++
i)
1266 double fFactor = 1.0;
1267 if( bIsVerticalWriting )
1269 if (aCurrTextSize.
Width() != 0)
1271 fFactor = double(rTextSize.
Width())/aCurrTextSize.
Width();
1274 else if (aCurrTextSize.
Height() != 0)
1276 fFactor = double(rTextSize.
Height())/aCurrTextSize.
Height();
1283 fFactor = std::sqrt(fFactor);
1285 double nCurrStretchX, nCurrStretchY;
1288 if (fFactor >= 0.98)
1292 nMinStretchX = std::max(nMinStretchX, nCurrStretchX);
1293 nMinStretchY = std::max(nMinStretchY, nCurrStretchY);
1297 if (std::find(aOldStretchXVals.begin(), aOldStretchXVals.begin() +
i,
basegfx::fround(nCurrStretchX * 10.0)) != aOldStretchXVals.begin() +
i)
1300 if (fFactor < 1.0 || nCurrStretchX != 100)
1302 nCurrStretchX = double(
basegfx::fround(nCurrStretchX * fFactor * 100.0)) / 100.00;
1303 nCurrStretchY = double(
basegfx::fround(nCurrStretchY * fFactor * 100.0)) / 100.00;
1306 SAL_INFO(
"svx",
"zoom is " << nCurrStretchX);
1313 nMinStretchX = std::min<sal_uInt16>(rItem.
GetMaxScale(), nMinStretchX);
1314 nMinStretchY = std::min<sal_uInt16>(rItem.
GetMaxScale(), nMinStretchY);
1317 SAL_INFO(
"svx",
"final zoom is " << nMinStretchX);
1378 ? css::text::WritingMode_TB_RL
1379 : css::text::WritingMode_LR_TB,
1431 return std::make_unique<SdrTextObjGeoData>();
1453 drawing::TextFitToSizeType
eType = drawing::TextFitToSizeType_NONE;
1473 nOutlMode = OutlinerMode::OutlineObject;
1495 if(pOutlinerParaObject)
1507 if( !pOutlinerParaObject && bVertical )
1515 if (!pOutlinerParaObject ||
1560 if (pOutlinerParaObject)
1576 return pOutlinerParaObject->IsTopToBottom();
1629 double fRotate(0.0);
1630 double fShearX(0.0);
1631 rMatrix.
decompose(aScale, aTranslate, fRotate, fShearX);
1634 bool bFlipX = aScale.
getX() < 0.0,
1635 bFlipY = aScale.
getY() < 0.0;
1846 aScrollFrameRect.
SetTop( aAnchorRect.
Top() );
1853 pBlackHole->EnableOutput(
false);
1854 pRetval->
Record(pBlackHole);
1857 rOutliner.
Draw(*pBlackHole, aPaintPos);
1863 rScrollRectangle = aScrollFrameRect;
1864 rPaintRectangle = aPaintRect;
1872 return GetFitToSize() == drawing::TextFitToSizeType_AUTOFIT;
1877 const drawing::TextFitToSizeType eFit =
GetFitToSize();
1878 return (eFit == drawing::TextFitToSizeType_PROPORTIONAL
1879 || eFit == drawing::TextFitToSizeType_ALLLINES);
1895 const bool bGrowX = bool(nStat & EditStatusFlags::TEXTWIDTHCHANGED);
1896 const bool bGrowY = bool(nStat & EditStatusFlags::TextHeightChanged);
1924 for (
size_t i = 0;
i < nObjCount;
i++) {
1927 if (pCurObj->
GetName() == aObjName) {
1941 if (aNextLinkName.empty()) {
1950 if (!pNextTextObj) {
1951 SAL_INFO(
"svx.chaining",
"[CHAINING] Can't find object as next link.");
1965 bool bNextLinkUnsetYet = !aNextLinkName.isEmpty() && !
mpNextInChain;
1968 if (bNextLinkUnsetYet || bInconsistentNextLink) {
1972 return !aNextLinkName.isEmpty();
1993 SAL_INFO(
"svx.chaining",
"[CHAINING] Overflow going on");
1998 SAL_INFO(
"svx.chaining",
"[CHAINING] Underflow going on");
2001 bool bIsOverflowFromUnderflow = aTxtChainFlow.
IsOverflow();
2003 if (bIsOverflowFromUnderflow) {
2004 SAL_INFO(
"svx.chaining",
"[CHAINING] Overflow going on (underflow induced)");
2071 if (pTextObjClone !=
nullptr) {
EditStatusFlags GetStatusWord() const
virtual OUString GetText(sal_Int32 nPara) const=0
virtual void CheckForFlowEvents(SdrOutliner *) override
The transformation of a rectangle into a polygon, by using angle parameters from GeoStat.
double mfCosRotationAngle
double mfSinRotationAngle
const EditTextObject & GetTextObject() const
void SetVertical(bool bNew)
bool IsTopToBottom() const
bool IsEffectivelyVertical() const
void SetMaxAutoPaperSize(const Size &rSz)
void SetText(const OutlinerParaObject &)
OUString GetText(Paragraph const *pPara, sal_Int32 nParaCount=1) const
const Size & GetPaperSize() const
void SetMinColumnWrapHeight(tools::Long nVal)
Paragraph * GetParagraph(sal_Int32 nAbsPos) const
void GetGlobalCharStretching(double &rX, double &rY) const
void SetGlobalCharStretching(double nX=100.0, double nY=100.0)
void SetMinAutoPaperSize(const Size &rSz)
std::optional< OutlinerParaObject > CreateParaObject(sal_Int32 nStartPara=0, sal_Int32 nParaCount=EE_PARA_ALL) const
void SetPaperSize(const Size &rSize)
void SetStyleSheet(sal_Int32 nPara, SfxStyleSheet *pStyle)
bool SetUpdateLayout(bool bUpdate)
void SetFixedCellHeight(bool bUseFixedCellHeight)
EEControlBits GetControlWord() const
void SetControlWord(EEControlBits nWord)
void SetPolygon(const basegfx::B2DPolyPolygon &rPolyPolygon)
void Draw(OutputDevice &rOutDev, const tools::Rectangle &rOutRect)
ErrCode Read(SvStream &rInput, const OUString &rBaseURL, EETextFormat, SvKeyValueIterator *pHTTPHeaderAttrs=nullptr)
void SetRefMapMode(const MapMode &)
void Init(OutlinerMode nMode)
OutputDevice * GetRefDevice() const
bool IsTopToBottom() const
sal_Int32 GetParagraphCount() const
static vcl::Font GetDefaultFont(DefaultFontType nType, LanguageType eLang, GetDefaultFontFlags nFlags, const OutputDevice *pOutDev=nullptr)
virtual const tools::Rectangle & GetSnapRect() const override
tools::Rectangle maSnapRect
TextChain * GetTextChain() const
All geometrical data of an arbitrary object for use in undo/redo.
SdrObject * GetObj(size_t nNum) const
size_t GetObjCount() const
const SfxPoolItem & GetMergedItem(const sal_uInt16 nWhich) const
const Point & GetAnchorPos() const
void ActionChanged() const
virtual rtl::Reference< SdrObject > getFullDragClone() const
virtual sdr::properties::BaseProperties & GetProperties() const
virtual void Shear(const Point &rRef, Degree100 nAngle, double tn, bool bVShear)
bool LineGeometryUsageIsNecessary() const
void BroadcastObjectChange() const
void SetObjectItemSet(const SfxItemSet &rSet)
virtual void RestoreGeoData(const SdrObjGeoData &rGeo)
bool mbSupportTextIndentingOnLineWidthChange
void SetObjectItem(const SfxPoolItem &rItem)
const SfxPoolItem & GetObjectItem(const sal_uInt16 nWhich) const
virtual void Mirror(const Point &rRef1, const Point &rRef2)
virtual void handlePageChange(SdrPage *pOldPage, SdrPage *pNewPage)
virtual void SaveGeoData(SdrObjGeoData &rGeo) const
static rtl::Reference< T > Clone(T const &rObj, SdrModel &rTargetModel)
virtual void Move(const Size &rSiz)
SdrModel & getSdrModelFromSdrObject() const
SdrObjUserCall * m_pUserCall
virtual void SetLogicRect(const tools::Rectangle &rRect)
SfxStyleSheet * GetStyleSheet() const
virtual const OUString & GetName() const
sdr::contact::ViewContact & GetViewContact() const
virtual void Rotate(const Point &rRef, Degree100 nAngle, double sn, double cs)
void SendUserCall(SdrUserCallType eUserCall, const tools::Rectangle &rBoundRect) const
virtual void SetChanged()
virtual const tools::Rectangle & GetLastBoundRect() const
SdrPage * getSdrPageFromSdrObject() const
virtual basegfx::B2DPolyPolygon TakeContour() const
contour for TextToContour
virtual void SetSnapRect(const tools::Rectangle &rRect)
virtual void SetBoundRectDirty()
virtual void SetBoundAndSnapRectsDirty(bool bNotMyself=false, bool bRecursive=true)
const SfxItemSet & GetObjectItemSet() const
void SetTextObj(const SdrTextObj *pObj)
const SdrTextObj * GetTextObj() const
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
sal_Int16 GetMaxScale() const
SdrTextObj * GetPrevLinkInChain() const
SdrTextHorzAdjust GetTextHorizontalAdjust() const
virtual std::unique_ptr< sdr::properties::BaseProperties > CreateObjectSpecificProperties() override
virtual rtl::Reference< SdrObject > CloneSdrObject(SdrModel &rTargetModel) const override
virtual std::unique_ptr< SdrObjGeoData > NewGeoData() const override
A derived class must override these 3 methods if it has own geometric data that must be saved for Und...
virtual void AdaptTextMinSize()
bool HasTextColumnsSpacing() const
virtual bool IsAutoGrowWidth() const
tools::Long GetMaxTextFrameHeight() const
virtual void SaveGeoData(SdrObjGeoData &rGeo) const override
bool IsTopToBottom() const
tools::Rectangle const & getRectangle() const
virtual void RestoreGeoData(const SdrObjGeoData &rGeo) override
void UpdateOutlinerFormatting(SdrOutliner &rOutl, tools::Rectangle &rPaintRect) const
Update given Outliner equivalently to SdrTextObj::Paint()
virtual void RecalcSnapRect() override
Snap is not done on the BoundRect but if possible on logic coordinates (i.e.
tools::Long GetTextLowerDistance() const
Bottom inner spacing to borders.
SVX_DLLPRIVATE void ImpDeregisterLink()
SdrOutliner & ImpGetDrawOutliner() const
SdrTextObj * GetNextLinkInChain() const
sal_Int32 GetTextColumnsSpacing() const
void ImpSetTextStyleSheetListeners()
virtual sal_Int32 CheckTextHit(const Point &rPnt) const
returns the index of the text that contains the given point or -1
tools::Long GetMinTextFrameHeight() const
virtual OUString TakeObjNameSingul() const override
void SetTextColumnsSpacing(sal_Int32 nSpacing)
bool IsAutoFit() const
returns true if the PPT autofit of text into shape bounds is enabled. implies IsFitToSize()==false!
virtual void TakeObjInfo(SdrObjTransformInfoRec &rInfo) const override
virtual const Size & GetTextSize() const
void NbcSetEckenradius(tools::Long nRad)
bool IsFitToSize() const
returns true if the old feature for fitting shape content should into shape is enabled....
bool CanCreateEditOutlinerParaObject() const
bool IsInEditMode() const
SVX_DLLPRIVATE void ImpRegisterLink()
SdrTextObj * mpPrevInChain
virtual ~SdrTextObj() override
static void ImpSetCharStretching(SdrOutliner &rOutliner, const Size &rTextSize, const Size &rShapeSize, Fraction &rFitXCorrection)
SVX_DLLPRIVATE void ImpSetupDrawOutlinerForPaint(bool bContourFrame, SdrOutliner &rOutliner, tools::Rectangle &rTextRect, tools::Rectangle &rAnchorRect, tools::Rectangle &rPaintRect, Fraction &aFitXCorrection) const
virtual SdrText * getActiveText() const
returns the currently active text.
SdrOutliner * mpEditingOutliner
tools::Long GetMaxTextFrameWidth() const
virtual void TakeTextAnchorRect(::tools::Rectangle &rAnchorRect) const
void ImpSetContourPolygon(SdrOutliner &rOutliner, tools::Rectangle const &rAnchorRect, bool bLineWidth) const
virtual OutlinerParaObject * GetOutlinerParaObject() const override
bool mbIsUnchainableClone
void SetText(const OUString &rStr)
void NbcSetOutlinerParaObjectForText(std::optional< OutlinerParaObject > pTextObject, SdrText *pText)
virtual bool IsReallyEdited() const
returns true only if we are in edit mode and the user actually changed anything
virtual void onEditOutlinerStatusEvent(EditStatus *pEditStatus)
called from the SdrObjEditView during text edit when the status of the edit outliner changes
virtual void NbcReformatText() override
tools::Long GetTextLeftDistance() const
Left inner spacing to borders
tools::Rectangle maRectangle
virtual OUString TakeObjNamePlural() const override
std::optional< OutlinerParaObject > CreateEditOutlinerParaObject() const
GDIMetaFile * GetTextScrollMetaFileAndRectangle(tools::Rectangle &rScrollRectangle, tools::Rectangle &rPaintRectangle)
virtual basegfx::B2DPolyPolygon TakeContour() const override
contour for TextToContour
virtual bool IsAutoGrowHeight() const
bool ImpCanConvTextToCurve() const
void ImpAutoFitText(SdrOutliner &rOutliner) const
bool mbTextAnimationAllowed
virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix &rMatrix, const basegfx::B2DPolyPolygon &rPolyPolygon) override
tools::Long GetTextRightDistance() const
Right inner spacing to borders
rtl::Reference< SdrText > mxText
void NbcSetText(const OUString &rStr)
virtual bool IsFontwork() const
virtual bool NbcAdjustTextFrameWidthAndHeight(bool bHgt=true, bool bWdt=true)
SVX_DLLPRIVATE void ImpInitDrawOutliner(SdrOutliner &rOutl) const
virtual basegfx::B2DPolyPolygon TakeXorPoly() const override
The Xor-Polygon is required by the View to drag the object.
SdrTextAniDirection GetTextAniDirection() const
static void ImpJustifyRect(tools::Rectangle &rRect)
bool IsContourTextFrame() const
virtual std::unique_ptr< sdr::contact::ViewContact > CreateObjectSpecificViewContact() override
virtual Point GetSnapPoint(sal_uInt32 i) const override
bool IsLinkedText() const
bool mbDisableAutoWidthOnDragging
SdrTextObj(SdrModel &rSdrModel)
virtual bool HasText() const override
virtual void handlePageChange(SdrPage *pOldPage, SdrPage *pNewPage) override
virtual sal_uInt32 GetSnapPointCount() const override
snap to special points of an Object (polygon points, center of circle)
const tools::Rectangle & GetGeoRect() const
static bool HasTextImpl(SdrOutliner const *pOutliner)
returns false if the given pointer is NULL or if the given SdrOutliner contains no text.
virtual void SetVerticalWriting(bool bVertical)
void SetTextColumnsNumber(sal_Int16 nColumns)
virtual void TakeTextRect(SdrOutliner &rOutliner, tools::Rectangle &rTextRect, bool bNoEditText, tools::Rectangle *pAnchorRect, bool bLineWidth=true) const
virtual sal_Int32 getTextCount() const override
returns the number of texts available for this object.
css::drawing::TextFitToSizeType GetFitToSize() const
sal_uInt16 GetFontScaleY() const
virtual bool AdjustTextFrameWidthAndHeight()
virtual rtl::Reference< SdrObject > getFullDragClone() const override
virtual void NbcSetOutlinerParaObject(std::optional< OutlinerParaObject > pTextObject) override
void onChainingEvent()
called from the SdrObjEditView during text edit when a chain of boxes is to be updated
tools::Long GetMinTextFrameWidth() const
virtual void setActiveText(sal_Int32 nIndex)
changes the current active text
SdrTextObj * mpNextInChain
tools::Long GetEckenradius() const
SdrTextVertAdjust GetTextVerticalAdjust() const
TextChain * GetTextChain() const
void AdjustRectToTextDistance(tools::Rectangle &rAnchorRect) const
virtual SdrObjKind GetObjIdentifier() const override
virtual void TakeUnrotatedSnapRect(tools::Rectangle &rRect) const
virtual SdrText * getText(sal_Int32 nIndex) const override
returns the nth available text.
void SetTextAnimationAllowed(bool bNew)
void ForceOutlinerParaObject()
SdrTextAniKind GetTextAniKind() const
bool IsHideContour() const
void FitFrameToTextSize()
bool HasTextColumnsNumber() const
void SetObjectItemNoBroadcast(const SfxPoolItem &rItem)
bool GetPreventChainable() const
void SetNextLinkInChain(SdrTextObj *)
void SetupOutlinerFormatting(SdrOutliner &rOutl, tools::Rectangle &rPaintRect) const
Setup given Outliner equivalently to SdrTextObj::Paint()
sal_Int16 GetTextColumnsNumber() const
void setRectangle(tools::Rectangle const &rRectangle)
tools::Long GetTextUpperDistance() const
Top inner spacing to borders.
virtual bool TRGetBaseGeometry(basegfx::B2DHomMatrix &rMatrix, basegfx::B2DPolyPolygon &rPolyPolygon) const override
virtual void NbcSetLogicRect(const tools::Rectangle &rRect) override
virtual bool IsVerticalWriting() const
OutlinerParaObject * GetOutlinerParaObject()
void CheckPortionInfo(const SdrOutliner &rOutliner)
void ForceOutlinerParaObject(OutlinerMode nOutlMode)
virtual void SetOutlinerParaObject(std::optional< OutlinerParaObject > pTextObject)
SfxItemPool * GetPool() const
bool HasItem(sal_uInt16 nWhich, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
constexpr tools::Long Height() const
tools::Long AdjustHeight(tools::Long n)
tools::Long AdjustWidth(tools::Long n)
constexpr tools::Long Width() const
void ExecuteUnderflow(SdrOutliner *)
void ExecuteOverflow(SdrOutliner *, SdrOutliner *)
bool decompose(B2DTuple &rScale, B2DTuple &rTranslate, double &rRotate, double &rShearX) const
void rotate(double fRadiant)
void append(const B2DPolygon &rPolygon, sal_uInt32 nCount=1)
void transform(const basegfx::B2DHomMatrix &rMatrix)
virtual void SetObjectItemDirect(const SfxPoolItem &rItem)=0
void SetFontSize(const Size &)
OUString SvxResId(TranslateId aId)
tools::Long FRound(double fVal)
#define SAL_INFO(area, stream)
B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
B2DHomMatrix createScaleShearXRotateTranslateB2DHomMatrix(double fScaleX, double fScaleY, double fShearX, double fRadiant, double fTranslateX, double fTranslateY)
B2IRange fround(const B2DRange &rRange)
OString stripStart(const OString &rIn, char c)
constexpr T & temporary(T &&x)
SdrMetricItem makeSdrEckenradiusItem(tools::Long nRadius)
SdrOnOffItem makeSdrShadowItem(bool bShadow)
SdrOnOffItem makeSdrTextAutoGrowHeightItem(bool bAuto)
SdrOnOffItem makeSdrTextAutoGrowWidthItem(bool bAuto)
@ 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
SdrMetricItem makeSdrTextMinFrameHeightItem(tools::Long mnHeight)
SdrMetricItem makeSdrTextMinFrameWidthItem(tools::Long mnWidth)
UNDERLYING_TYPE get() const
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_SHADOW(SDRATTR_SHADOW_FIRST+0)
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_AUTOGROWWIDTH(SDRATTR_MISC_FIRST+12)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_LEFTDIST(SDRATTR_MISC_FIRST+4)
constexpr TypedWhichId< SdrTextFitToSizeTypeItem > SDRATTR_TEXT_FITTOSIZE(SDRATTR_MISC_FIRST+3)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_MAXFRAMEHEIGHT(SDRATTR_MISC_FIRST+9)
constexpr TypedWhichId< SdrTextFixedCellHeightItem > SDRATTR_TEXT_USEFIXEDCELLHEIGHT(SDRATTR_MISC_FIRST+23)
constexpr TypedWhichId< SdrTextHorzAdjustItem > SDRATTR_TEXT_HORZADJUST(SDRATTR_MISC_FIRST+13)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_MINFRAMEWIDTH(SDRATTR_MISC_FIRST+10)
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_AUTOGROWHEIGHT(SDRATTR_MISC_FIRST+2)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_MINFRAMEHEIGHT(SDRATTR_MISC_FIRST+1)
constexpr TypedWhichId< SdrTextVertAdjustItem > SDRATTR_TEXT_VERTADJUST(SDRATTR_MISC_FIRST+8)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_MAXFRAMEWIDTH(SDRATTR_MISC_FIRST+11)
constexpr TypedWhichId< SdrTextAniKindItem > SDRATTR_TEXT_ANIKIND(SDRATTR_MISC_FIRST+14)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_RIGHTDIST(SDRATTR_MISC_FIRST+5)
constexpr TypedWhichId< SdrTextAniDirectionItem > SDRATTR_TEXT_ANIDIRECTION(SDRATTR_MISC_FIRST+15)
constexpr TypedWhichId< SfxInt16Item > SDRATTR_TEXTCOLUMNS_NUMBER(SDRATTR_TEXTCOLUMNS_FIRST+0)
constexpr TypedWhichId< SfxStringItem > SDRATTR_TEXT_CHAINNEXTNAME(SDRATTR_MISC_FIRST+25)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_LOWERDIST(SDRATTR_MISC_FIRST+7)
constexpr TypedWhichId< SvxWritingModeItem > SDRATTR_TEXTDIRECTION(SDRATTR_NOTPERSIST_FIRST+34)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_CORNER_RADIUS(SDRATTR_MISC_FIRST+0)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXTCOLUMNS_SPACING(SDRATTR_TEXTCOLUMNS_FIRST+1)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_UPPERDIST(SDRATTR_MISC_FIRST+6)
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_CONTOURFRAME(SDRATTR_MISC_FIRST+21)
SdrTextObj * DynCastSdrTextObj(SdrObject *pObj)
@ OutlineText
TitleText, special text object for StarDraw.
static SdrObject * ImpGetObjByName(SdrObjList const *pObjList, std::u16string_view aObjName)
static void ImpUpdateChainLinks(SdrTextObj *pTextObj, std::u16string_view aNextLinkName)
tools::Polygon Rect2Poly(const tools::Rectangle &rRect, const GeoStat &rGeo)
void RotatePoly(tools::Polygon &rPoly, const Point &rRef, double sn, double cs)
void ShearPoly(tools::Polygon &rPoly, const Point &rRef, double tn)
Degree100 NormAngle36000(Degree100 a)
Normalize angle to -180.00..179.99.
void ShearPoint(Point &rPnt, const Point &rRef, double tn, bool bVShear=false)
void RotatePoint(Point &rPnt, const Point &rRef, double sn, double cs)
constexpr TypedWhichId< XFormTextStyleItem > XATTR_FORMTXTSTYLE(XATTR_TEXT_FIRST)
constexpr TypedWhichId< XFormTextHideFormItem > XATTR_FORMTXTHIDEFORM(XATTR_TEXT_FIRST+10)