28#include <svx/strings.hrc> 
   66    return std::make_unique<sdr::properties::TextProperties>(*
this);
 
   72    return std::make_unique<sdr::contact::ViewContactOfTextObj>(*
this);
 
   77    , mpEditingOutliner(nullptr)
 
   79    , maTextEditOffset(
Point(0, 0))
 
   82    , mbTextSizeDirty(false)
 
   84    , mbDisableAutoWidthOnDragging(false)
 
   85    , mbTextAnimationAllowed(true)
 
   86    , mbInDownScale(false)
 
   94    , mpEditingOutliner(nullptr)
 
   95    , meTextKind(rSource.meTextKind)
 
   96    , maTextEditOffset(
Point(0, 0))
 
   97    , mbTextFrame(rSource.mbTextFrame)
 
   98    , mbNoShear(rSource.mbNoShear)
 
   99    , mbTextSizeDirty(rSource.mbTextSizeDirty)
 
  100    , mbInEditMode(false)
 
  101    , mbDisableAutoWidthOnDragging(rSource.mbDisableAutoWidthOnDragging)
 
  102    , mbTextAnimationAllowed(true)
 
  103    , mbInDownScale(false)
 
  115    if( pText && rSource.
HasText() )
 
  142    , mpEditingOutliner(nullptr)
 
  144    , maTextEditOffset(
Point(0, 0))
 
  147    , mbTextSizeDirty(false)
 
  148    , mbInEditMode(false)
 
  149    , mbDisableAutoWidthOnDragging(false)
 
  150    , mbTextAnimationAllowed(true)
 
  151    , mbInDownScale(false)
 
  163    , mpEditingOutliner(nullptr)
 
  164    , meTextKind(eNewTextKind)
 
  165    , maTextEditOffset(
Point(0, 0))
 
  168    , mbTextSizeDirty(false)
 
  169    , mbInEditMode(false)
 
  170    , mbDisableAutoWidthOnDragging(false)
 
  171    , mbTextAnimationAllowed(true)
 
  172    , mbInDownScale(false)
 
  181    , mpEditingOutliner(nullptr)
 
  182    , meTextKind(eNewTextKind)
 
  183    , maTextEditOffset(
Point(0, 0))
 
  186    , mbTextSizeDirty(false)
 
  187    , mbInEditMode(false)
 
  188    , mbDisableAutoWidthOnDragging(false)
 
  189    , mbTextAnimationAllowed(true)
 
  190    , mbInDownScale(false)
 
  254    rOutliner.
Read(rInput,rBaseURL,eFormat);
 
  329    if(!bInEditMOde && bRet)
 
  465        if(p1stPara==
nullptr)
 
  471            if( pOutliner->
GetText(p1stPara).isEmpty() )
 
  482    const bool bRemove(pNewPage == 
nullptr && pOldPage != 
nullptr);
 
  483    const bool bInsert(pNewPage != 
nullptr && pOldPage == 
nullptr);
 
  486    if (bLinked && bRemove)
 
  494    if (bLinked && bInsert)
 
  564    std::optional<basegfx::B2DPolyPolygon> pContourPolyPolygon;
 
  566        -rAnchorRect.
Left(), -rAnchorRect.
Top()));
 
  580        pContourPolyPolygon.emplace();
 
  597            *pContourPolyPolygon = pCopy->TakeContour();
 
  611        pContourPolyPolygon->transform(aMatrix);
 
  614    rOutliner.
SetPolygon(aXorPolyPolygon, pContourPolyPolygon ? &*pContourPolyPolygon : 
nullptr);
 
  675        aAnkRect.
Move(aTmpPt.
X(),aTmpPt.
Y());
 
  677    rAnchorRect=aAnkRect;
 
  703    if (!bFitToSize && !bContourFrame)
 
  723            if (!bChainedFrame) {
 
  764    else if (pOutlinerParaObject)
 
  765        pPara = *pOutlinerParaObject;
 
  772        if( !pTestObj || !bHitTest || pTestObj != 
this ||
 
  845        *pAnchorRect=aAnkRect;
 
  876    bool bNoStretching(
false);
 
  882        OUString aTestString(
u'J');
 
  894        pOut->SetFont(aTmpFont);
 
  895        Size aSize1(
pOut->GetTextWidth(aTestString), 
pOut->GetTextHeight());
 
  897        pOut->SetFont(aTmpFont);
 
  898        Size aSize2(
pOut->GetTextWidth(aTestString), 
pOut->GetTextHeight());
 
  899        pOut->SetFont(aOriginalFont);
 
  904        bNoStretching = (aSize1 == aSize2);
 
  911            bNoStretching = 
true;
 
  918    unsigned nLoopCount=0;
 
  919    bool bNoMoreLoop = 
false;
 
  923    if (nIsWdt==0) nIsWdt=1;
 
  927    if (nIsHgt==0) nIsHgt=1;
 
  933    double nX = (nWantWdt * 100.0) / 
double(nIsWdt); 
 
  934    double nY = (nWantHgt * 100.0) / 
double(nIsHgt); 
 
  949    while (nLoopCount<5 && !bNoMoreLoop)
 
  997        if (((nXDiff>=nXTolMi || !bChkX) && nXDiff<=nXTolPl) || nXDiff==nXDiff0) {
 
 1003            if (std::abs(nXDiff) <= 2 * nXCorr)
 
 1006                    nDiv += (nMul - nDiv) / 2.0; 
 
 1008                    nMul += (nDiv - nMul) / 2.0;
 
 1010            nX = nX * double(nMul) / double(nDiv);
 
 1054        if(!aStr2.isEmpty() && aStr2.indexOf(
u'\x00FF') == -1)
 
 1059            if(aStr2.getLength() > 10)
 
 1061                aStr2 = OUString::Concat(aStr2.subView(0, 8)) + 
"...";
 
 1064            aStr += aStr2 + 
"\'";
 
 1071    if (!
aName.isEmpty())
 
 1130        if (bFitToSize) aR=aAnchor2;
 
 1160        case 0: aP = aRectangle.TopLeft(); 
break;
 
 1161        case 1: aP = aRectangle.TopRight(); 
break;
 
 1162        case 2: aP = aRectangle.BottomLeft(); 
break;
 
 1163        case 3: aP = aRectangle.BottomRight(); 
break;
 
 1164        default: aP = aRectangle.Center(); 
break;
 
 1177    OutlinerMode nOutlinerMode = OutlinerMode::OutlineObject;
 
 1179        nOutlinerMode = OutlinerMode::TextObject;
 
 1180    rOutl.
Init( nOutlinerMode );
 
 1185    nStat &= 
~EEControlBits(EEControlBits::STRETCHING|EEControlBits::AUTOPAGESIZE);
 
 1187    Size aMaxSize(100000,100000);
 
 1218            nStat|=EEControlBits::STRETCHING|EEControlBits::AUTOPAGESIZE;
 
 1223    TakeTextRect(rOutliner, rTextRect, 
false, &rAnchorRect);
 
 1224    rPaintRect = rTextRect;
 
 1233        rPaintRect=rAnchorRect;
 
 1258    double fSpacingScaleY;
 
 1260    return fSpacingScaleY;
 
 1273                                bool bIsVerticalWriting)
 const 
 1284    if (fMaxScale > 0.0)
 
 1294    if (aCurrentTextBoxSize.
Height() == 0)
 
 1298    aCurrentTextBoxSize.
extendBy(0, nExtendTextBoxBy);
 
 1299    double fCurrentFitFactor = 1.0;
 
 1301    if (bIsVerticalWriting)
 
 1302        fCurrentFitFactor = double(rTextBoxSize.
Width()) / aCurrentTextBoxSize.
Width();
 
 1304        fCurrentFitFactor = double(rTextBoxSize.
Height()) / aCurrentTextBoxSize.
Height();
 
 1306    double fInitialFontScaleY = 0.0;
 
 1307    double fInitialSpacing = 0.0;
 
 1310    if (fCurrentFitFactor >= 1.0 && fInitialFontScaleY >= 100.0 && fInitialSpacing >= 100.0)
 
 1317    double fMaxY = fMaxScale;
 
 1319    double fBestFontScale = 0.0;
 
 1320    double fBestSpacing = 100.0;
 
 1321    double fBestFitFactor = fCurrentFitFactor;
 
 1323    if (fCurrentFitFactor >= 1.0)
 
 1325        fMinY = fInitialFontScaleY;
 
 1326        fBestFontScale = fInitialFontScaleY;
 
 1327        fBestSpacing = fInitialSpacing;
 
 1328        fBestFitFactor = fCurrentFitFactor;
 
 1332        fMaxY = std::min(fInitialFontScaleY, fMaxScale);
 
 1335    double fInTheMidle = 0.5;
 
 1338    double fFitFactorTarget = 1.00;
 
 1340    while (iteration < 10)
 
 1343        double fScaleY = fMinY + (fMaxY - fMinY) * fInTheMidle;
 
 1345        double fScaledFontHeight = fFontHeightPt * (fScaleY / 100.0);
 
 1346        double fRoundedScaledFontHeight = std::floor(fScaledFontHeight * 10.0) / 10.0;
 
 1347        double fCurrentFontScale = (fRoundedScaledFontHeight / fFontHeightPt) * 100.0;
 
 1349        fCurrentFitFactor = 0.0; 
 
 1351        for (
double fCurrentSpacing : {100.0, 90.0, 80.0})
 
 1353            if (fCurrentFitFactor >= fFitFactorTarget)
 
 1356            rOutliner.
setGlobalScale(fCurrentFontScale, fCurrentFontScale, 100.0, fCurrentSpacing);
 
 1359            aCurrentTextBoxSize.
extendBy(0, nExtendTextBoxBy);
 
 1360            if (bIsVerticalWriting)
 
 1361                fCurrentFitFactor = double(rTextBoxSize.
Width()) / aCurrentTextBoxSize.
Width();
 
 1363                fCurrentFitFactor = double(rTextBoxSize.
Height()) / aCurrentTextBoxSize.
Height();
 
 1366            if (fCurrentSpacing == 100.0)
 
 1368                if (fCurrentFitFactor > fFitFactorTarget)
 
 1369                    fMinY = fCurrentFontScale;
 
 1371                    fMaxY = fCurrentFontScale;
 
 1374            if ((fBestFitFactor < fFitFactorTarget && fCurrentFitFactor > fBestFitFactor)
 
 1375            ||  (fCurrentFitFactor >= fFitFactorTarget && fCurrentFitFactor < fBestFitFactor))
 
 1377                fBestFontScale = fCurrentFontScale;
 
 1378                fBestSpacing = fCurrentSpacing;
 
 1379                fBestFitFactor = fCurrentFitFactor;
 
 1383    rOutliner.
setGlobalScale(fBestFontScale, fBestFontScale, 100.0, fBestSpacing);
 
 1443            ? css::text::WritingMode_TB_RL
 
 1444            : css::text::WritingMode_LR_TB,
 
 1496    return std::make_unique<SdrTextObjGeoData>();
 
 1518    drawing::TextFitToSizeType 
eType = drawing::TextFitToSizeType_NONE;
 
 1538            nOutlMode = OutlinerMode::OutlineObject;
 
 1560    if(pOutlinerParaObject)
 
 1572    if( !pOutlinerParaObject && bVertical )
 
 1580    if (!pOutlinerParaObject ||
 
 1625    if (pOutlinerParaObject)
 
 1641        return pOutlinerParaObject->IsTopToBottom();
 
 1694    double fRotate(0.0);
 
 1695    double fShearX(0.0);
 
 1696    rMatrix.
decompose(aScale, aTranslate, fRotate, fShearX);
 
 1699    bool bFlipX = aScale.
getX() < 0.0,
 
 1700         bFlipY = aScale.
getY() < 0.0;
 
 1911        aScrollFrameRect.
SetTop( aAnchorRect.
Top() );
 
 1918    pBlackHole->EnableOutput(
false);
 
 1919    pRetval->
Record(pBlackHole);
 
 1922    rOutliner.
Draw(*pBlackHole, aPaintPos);
 
 1928    rScrollRectangle = aScrollFrameRect;
 
 1929    rPaintRectangle = aPaintRect;
 
 1937    return GetFitToSize() == drawing::TextFitToSizeType_AUTOFIT;
 
 1942    const drawing::TextFitToSizeType eFit = 
GetFitToSize();
 
 1943    return (eFit == drawing::TextFitToSizeType_PROPORTIONAL
 
 1944         || eFit == drawing::TextFitToSizeType_ALLLINES);
 
 1960    const bool bGrowX = bool(nStat & EditStatusFlags::TEXTWIDTHCHANGED);
 
 1961    const bool bGrowY = bool(nStat & EditStatusFlags::TextHeightChanged);
 
 1989    for (
size_t i = 0; 
i < nObjCount; 
i++) {
 
 1992        if (pCurObj->
GetName() == aObjName) {
 
 2006    if (aNextLinkName.empty()) {
 
 2015    if (!pNextTextObj) {
 
 2016        SAL_INFO(
"svx.chaining", 
"[CHAINING] Can't find object as next link.");
 
 2030    bool bNextLinkUnsetYet = !aNextLinkName.isEmpty() && !
mpNextInChain;
 
 2033    if (bNextLinkUnsetYet || bInconsistentNextLink) {
 
 2037    return !aNextLinkName.isEmpty(); 
 
 2058        SAL_INFO(
"svx.chaining", 
"[CHAINING] Overflow going on");
 
 2063        SAL_INFO(
"svx.chaining", 
"[CHAINING] Underflow going on");
 
 2066        bool bIsOverflowFromUnderflow = aTxtChainFlow.
IsOverflow();
 
 2068        if (bIsOverflowFromUnderflow) {
 
 2069            SAL_INFO(
"svx.chaining", 
"[CHAINING] Overflow going on (underflow induced)");
 
 2136    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
 
Degree100 m_nRotationAngle
 
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 SetMinAutoPaperSize(const Size &rSz)
 
void getGlobalScale(double &rFontX, double &rFontY, double &rSpacingX, double &rSpacingY) const
 
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)
 
void setRoundFontSizeToPt(bool bRound) const
 
EEControlBits GetControlWord() 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 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)
 
constexpr tools::Long Y() const
 
tools::Long AdjustY(tools::Long nVertMove)
 
tools::Long AdjustX(tools::Long nHorzMove)
 
constexpr tools::Long X() const
 
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...
 
double 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)
 
double GetFontScale() const
 
SVX_DLLPRIVATE void ImpSetupDrawOutlinerForPaint(bool bContourFrame, SdrOutliner &rOutliner, tools::Rectangle &rTextRect, tools::Rectangle &rAnchorRect, tools::Rectangle &rPaintRect, Fraction &aFitXCorrection) const
 
void autoFitTextForCompatibility(SdrOutliner &rOutliner, const Size &rShapeSize, bool bIsVerticalWriting) 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.
 
double GetSpacingScale() const
 
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
 
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)
 
void extendBy(tools::Long x, tools::Long y)
 
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)
 
constexpr TypedWhichId< SvxFontHeightItem > EE_CHAR_FONTHEIGHT(EE_CHAR_START+2)
 
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)
 
OString stripStart(const OString &rIn, char c)
 
constexpr Point convert(const Point &rPoint, o3tl::Length eFrom, o3tl::Length eTo)
 
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)