28 #include <svx/strings.hrc>
60 return std::make_unique<sdr::properties::TextProperties>(*this);
66 return std::make_unique<sdr::contact::ViewContactOfTextObj>(*this);
112 if( pText && rSource.
HasText() )
120 std::unique_ptr<OutlinerParaObject> pNewOutlinerParaObject;
165 eTextKind(eNewTextKind)
188 eTextKind(eNewTextKind)
228 aNewSize.AdjustWidth( 1 );
266 rOutliner.
Read(rInput,rBaseURL,eFormat);
341 if(!bInEditMOde && bRet)
476 if(p1stPara==
nullptr)
482 if( pOutliner->
GetText(p1stPara).isEmpty() )
493 const bool bRemove(pNewPage ==
nullptr && pOldPage !=
nullptr);
494 const bool bInsert(pNewPage !=
nullptr && pOldPage ==
nullptr);
497 if (bLinked && bRemove)
505 if (bLinked && bInsert)
576 std::unique_ptr<basegfx::B2DPolyPolygon> pContourPolyPolygon;
578 -rAnchorRect.
Left(), -rAnchorRect.
Top()));
624 pContourPolyPolygon->transform(aMatrix);
627 rOutliner.
SetPolygon(aXorPolyPolygon, pContourPolyPolygon.get());
665 aAnkRect.
Move(aTmpPt.X(),aTmpPt.Y());
667 rAnchorRect=aAnkRect;
693 if (!bFitToSize && !bContourFrame)
713 if (!bChainedFrame) {
756 if( !pTestObj || !bHitTest || pTestObj !=
this ||
774 if (
pEdtOutl && !bNoEditText && pPara)
816 aTextPos.AdjustX(nFreeWdt/2 );
818 aTextPos.AdjustX(nFreeWdt );
824 aTextPos.AdjustY(nFreeHgt/2 );
826 aTextPos.AdjustY(nFreeHgt );
832 *pAnchorRect=aAnkRect;
851 std::unique_ptr<OutlinerParaObject> pPara;
863 bool bNoStretching(
false);
869 OUString aTestString(
u'J');
880 aTmpFont.SetFontSize(
Size(0,100));
883 aTmpFont.SetFontSize(
Size(800,100));
891 bNoStretching = (aSize1 == aSize2);
896 if(aSize2.Height() >= aSize1.Height() * 2)
898 bNoStretching =
true;
902 unsigned nLoopCount=0;
903 bool bNoMoreLoop =
false;
907 if (nIsWdt==0) nIsWdt=1;
911 if (nIsHgt==0) nIsHgt=1;
921 if (nX>nY) { nX=nY; bChkX=
false; }
925 while (nLoopCount<5 && !bNoMoreLoop) {
927 if (nX<1) { nX=1; bNoMoreLoop =
true; }
928 if (nX>65535) { nX=65535; bNoMoreLoop =
true; }
931 if (nY<1) { nY=1; bNoMoreLoop =
true; }
932 if (nY>65535) { nY=65535; bNoMoreLoop =
true; }
952 rFitXCorrection=
Fraction(nWantWdt,aSiz.Width());
953 if (((nXDiff>=nXTolMi || !bChkX) && nXDiff<=nXTolPl) || nXDiff==nXDiff0) {
959 if (std::abs(nXDiff)<=2*nXCorr) {
960 if (nMul>nDiv) nDiv+=(nMul-nDiv)/2;
961 else nMul+=(nDiv-nMul)/2;
964 if (bNoStretching) nY=nX;
978 aStr =
SvxResId(STR_ObjNameSingulOUTLINETEXT);
984 aStr =
SvxResId(STR_ObjNameSingulTITLETEXT);
991 aStr =
SvxResId(STR_ObjNameSingulTEXTLNK);
993 aStr =
SvxResId(STR_ObjNameSingulTEXT);
1006 if(!aStr2.isEmpty() && aStr2.indexOf(
u'\x00FF') == -1)
1011 if(aStr2.getLength() > 10)
1013 aStr2 = OUString::Concat(aStr2.subView(0, 8)) +
"...";
1016 aStr += aStr2 +
"\'";
1020 OUStringBuffer
sName(aStr);
1023 if (!aName.isEmpty())
1027 sName.append(aName);
1031 return sName.makeStringAndClear();
1042 sName=
SvxResId(STR_ObjNamePluralTEXTLNK);
1044 sName=
SvxResId(STR_ObjNamePluralTEXT);
1084 if (bFitToSize) aR=aAnchor2;
1131 OutlinerMode nOutlinerMode = OutlinerMode::OutlineObject;
1133 nOutlinerMode = OutlinerMode::TextObject;
1134 rOutl.
Init( nOutlinerMode );
1138 nStat &= ~
EEControlBits(EEControlBits::STRETCHING|EEControlBits::AUTOPAGESIZE);
1140 Size aMaxSize(100000,100000);
1171 nStat|=EEControlBits::STRETCHING|EEControlBits::AUTOPAGESIZE;
1176 TakeTextRect(rOutliner, rTextRect,
false, &rAnchorRect);
1177 rPaintRect = rTextRect;
1186 rPaintRect=rAnchorRect;
1212 sal_uInt16 nMinStretchX = 0, nMinStretchY = 0;
1213 sal_uInt16 nCurrStretchX = 100, nCurrStretchY = 100;
1214 sal_uInt16 aOldStretchXVals[] = { 0,0,0 };
1216 for (
unsigned int i = 0;
i<aStretchArySize; ++
i)
1219 double fFactor(1.0);
1220 if (bIsVerticalWriting)
1222 if (aCurrTextSize.
Width() != 0)
1224 fFactor = double(aSize.Width()) / aCurrTextSize.
Width();
1227 else if (aCurrTextSize.
Height() != 0)
1229 fFactor = double(aSize.Height()) / aCurrTextSize.
Height();
1231 fFactor = std::sqrt(fFactor);
1237 nMinStretchX = std::max(nMinStretchX, nCurrStretchX);
1238 nMinStretchY = std::max(nMinStretchY, nCurrStretchY);
1241 aOldStretchXVals[
i] = nCurrStretchX;
1242 if (std::find(aOldStretchXVals, aOldStretchXVals +
i, nCurrStretchX) != aOldStretchXVals +
i)
1245 if (fFactor < 1.0 || nCurrStretchX != 100)
1247 nCurrStretchX = sal::static_int_cast<sal_uInt16>(nCurrStretchX*fFactor);
1248 nCurrStretchY = sal::static_int_cast<sal_uInt16>(nCurrStretchY*fFactor);
1250 std::min(sal_uInt16(100), nCurrStretchY));
1254 return std::min(sal_uInt16(100), nCurrStretchY) / 100.0;
1267 bool bIsVerticalWriting)
const
1273 sal_uInt16 nMinStretchX=0, nMinStretchY=0;
1274 sal_uInt16 aOldStretchXVals[]={0,0,0,0,0,0,0,0,0,0};
1276 for(
unsigned int i=0;
i<aStretchArySize; ++
i)
1279 double fFactor(1.0);
1280 if( bIsVerticalWriting )
1282 if (aCurrTextSize.
Width() != 0)
1284 fFactor = double(rTextSize.
Width())/aCurrTextSize.
Width();
1287 else if (aCurrTextSize.
Height() != 0)
1289 fFactor = double(rTextSize.
Height())/aCurrTextSize.
Height();
1296 fFactor = std::sqrt(fFactor);
1298 sal_uInt16 nCurrStretchX, nCurrStretchY;
1301 if (fFactor >= 1.0 )
1305 nMinStretchX = std::max(nMinStretchX,nCurrStretchX);
1306 nMinStretchY = std::max(nMinStretchY,nCurrStretchY);
1309 aOldStretchXVals[
i] = nCurrStretchX;
1310 if( std::find(aOldStretchXVals, aOldStretchXVals+
i, nCurrStretchX) != aOldStretchXVals+
i )
1313 if (fFactor < 1.0 || nCurrStretchX != 100)
1315 nCurrStretchX = sal::static_int_cast<sal_uInt16>(nCurrStretchX*fFactor);
1316 nCurrStretchY = sal::static_int_cast<sal_uInt16>(nCurrStretchY*fFactor);
1318 std::min(sal_uInt16(100),nCurrStretchY));
1319 SAL_INFO(
"svx",
"zoom is " << nCurrStretchX);
1326 nMinStretchX = std::min<sal_uInt16>(rItem.
GetMaxScale(), nMinStretchX);
1327 nMinStretchY = std::min<sal_uInt16>(rItem.
GetMaxScale(), nMinStretchY);
1330 SAL_INFO(
"svx",
"final zoom is " << nMinStretchX);
1332 std::min(sal_uInt16(100),nMinStretchY));
1387 ? css::text::WritingMode_TB_RL
1388 : css::text::WritingMode_LR_TB,
1440 return std::make_unique<SdrTextObjGeoData>();
1462 drawing::TextFitToSizeType
eType = drawing::TextFitToSizeType_NONE;
1482 nOutlMode = OutlinerMode::OutlineObject;
1504 if(pOutlinerParaObject)
1516 if( !pOutlinerParaObject && bVertical )
1524 if (!pOutlinerParaObject ||
1525 (pOutlinerParaObject->
IsVertical() == bVertical))
1570 if (pOutlinerParaObject)
1628 double fRotate(0.0);
1629 double fShearX(0.0);
1630 rMatrix.
decompose(aScale, aTranslate, fRotate, fShearX);
1633 bool bFlipX = aScale.
getX() < 0.0,
1634 bFlipY = aScale.
getY() < 0.0;
1815 aScrollFrameRect.
SetTop( aAnchorRect.
Top() );
1822 pBlackHole->EnableOutput(
false);
1823 pRetval->
Record(pBlackHole);
1826 rOutliner.
Draw(pBlackHole, aPaintPos);
1832 rScrollRectangle = aScrollFrameRect;
1833 rPaintRectangle = aPaintRect;
1841 return GetFitToSize() == drawing::TextFitToSizeType_AUTOFIT;
1846 const drawing::TextFitToSizeType eFit =
GetFitToSize();
1847 return (eFit == drawing::TextFitToSizeType_PROPORTIONAL
1848 || eFit == drawing::TextFitToSizeType_ALLLINES);
1864 const bool bGrowX = bool(nStat & EditStatusFlags::TEXTWIDTHCHANGED);
1865 const bool bGrowY = bool(nStat & EditStatusFlags::TextHeightChanged);
1893 for (
size_t i = 0;
i < nObjCount;
i++) {
1896 if (pCurObj->
GetName() == aObjName) {
1910 if (aNextLinkName.empty()) {
1919 if (!pNextTextObj) {
1920 SAL_INFO(
"svx.chaining",
"[CHAINING] Can't find object as next link.");
1934 bool bNextLinkUnsetYet = !aNextLinkName.isEmpty() && !
mpNextInChain;
1937 if (bNextLinkUnsetYet || bInconsistentNextLink) {
1941 return !aNextLinkName.isEmpty();
1962 SAL_INFO(
"svx.chaining",
"[CHAINING] Overflow going on");
1967 SAL_INFO(
"svx.chaining",
"[CHAINING] Underflow going on");
1970 bool bIsOverflowFromUnderflow = aTxtChainFlow.
IsOverflow();
1972 if (bIsOverflowFromUnderflow) {
1973 SAL_INFO(
"svx.chaining",
"[CHAINING] Overflow going on (underflow induced)");
2040 if (pTextObjClone !=
nullptr) {
virtual void Shear(const Point &rRef, Degree100 nAngle, double tn, bool bVShear)
constexpr TypedWhichId< XFormTextHideFormItem > XATTR_FORMTXTHIDEFORM(XATTR_TEXT_FIRST+10)
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_AUTOGROWHEIGHT(SDRATTR_MISC_FIRST+2)
tools::Long GetTextLowerDistance() const
Bottom inner spacing to borders.
OutDevType GetOutDevType() const
virtual sal_Int32 CheckTextHit(const Point &rPnt) const
returns the index of the text that contains the given point or -1
void FitFrameToTextSize()
virtual bool IsAutoGrowHeight() const
static vcl::Font GetDefaultFont(DefaultFontType nType, LanguageType eLang, GetDefaultFontFlags nFlags, const OutputDevice *pOutDev=nullptr)
constexpr TypedWhichId< SdrTextHorzAdjustItem > SDRATTR_TEXT_HORZADJUST(SDRATTR_MISC_FIRST+13)
TextChain * GetTextChain() const
GDIMetaFile * GetTextScrollMetaFileAndRectangle(tools::Rectangle &rScrollRectangle, tools::Rectangle &rPaintRectangle)
virtual bool NbcAdjustTextFrameWidthAndHeight(bool bHgt=true, bool bWdt=true)
double GetFontScaleY() const
virtual void SetObjectItemDirect(const SfxPoolItem &rItem)=0
void ShearPoint(Point &rPnt, const Point &rRef, double tn, bool bVShear=false)
void SetupOutlinerFormatting(SdrOutliner &rOutl, tools::Rectangle &rPaintRect) const
Setup given Outliner equivalently to SdrTextObj::Paint()
virtual sal_uInt32 GetSnapPointCount() const override
snap to special points of an Object (polygon points, center of circle)
virtual SdrObjKind GetObjIdentifier() const override
void SetNextLinkInChain(SdrTextObj *)
SdrObjUserCall * pUserCall
void ForceOutlinerParaObject()
virtual void handlePageChange(SdrPage *pOldPage, SdrPage *pNewPage)
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_AUTOGROWWIDTH(SDRATTR_MISC_FIRST+12)
virtual SdrText * getText(sal_Int32 nIndex) const override
returns the nth available text.
static SdrObject * ImpGetObjByName(SdrObjList const *pObjList, std::u16string_view aObjName)
bool IsLinkedText() const
virtual const Size & GetTextSize() const
void SetPaperSize(const Size &rSize)
tools::Long GetTextLeftDistance() const
Left inner spacing to borders.
tools::Long GetEckenradius() const
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_CONTOURFRAME(SDRATTR_MISC_FIRST+21)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_MAXFRAMEWIDTH(SDRATTR_MISC_FIRST+11)
bool ImpCanConvTextToCurve() const
std::unique_ptr< SdrText > mpText
bool bDisableAutoWidthOnDragging
double mfSinRotationAngle
SdrObject * GetObj(size_t nNum) const
SVX_DLLPRIVATE void ImpInitDrawOutliner(SdrOutliner &rOutl) const
size_t GetObjCount() const
virtual void SetBoundRectDirty()
void Draw(OutputDevice *pOutDev, const tools::Rectangle &rOutRect)
bool IsInEditMode() const
SdrTextAniKind GetTextAniKind() const
void ImpSetContourPolygon(SdrOutliner &rOutliner, tools::Rectangle const &rAnchorRect, bool bLineWidth) const
void RotatePoly(tools::Polygon &rPoly, const Point &rRef, double sn, double cs)
SVX_DLLPRIVATE void ImpSetupDrawOutlinerForPaint(bool bContourFrame, SdrOutliner &rOutliner, tools::Rectangle &rTextRect, tools::Rectangle &rAnchorRect, tools::Rectangle &rPaintRect, Fraction &aFitXCorrection) const
GDIMetaFile * GetConnectMetaFile() const
sal_Int32 GetParagraphCount() const
SVX_DLLPRIVATE void ImpDeregisterLink()
tools::Long GetMinTextFrameHeight() const
void ExecuteUnderflow(SdrOutliner *)
virtual OUString TakeObjNameSingul() const override
bool mbTextAnimationAllowed
bool IsTopToBottom() const
virtual void setActiveText(sal_Int32 nIndex)
changes the current active text
virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix &rMatrix, const basegfx::B2DPolyPolygon &rPolyPolygon) override
virtual void NbcReformatText() override
static void Free(SdrObject *&_rpObject)
virtual sdr::properties::BaseProperties & GetProperties() const
void SetRefMapMode(const MapMode &)
virtual const tools::Rectangle & GetSnapRect() const override
virtual SdrObjectUniquePtr getFullDragClone() const override
virtual void RecalcSnapRect() override
Snap is not done on the BoundRect but if possible on logic coordinates (i.e.
All geometrical data of an arbitrary object for use in undo/redo.
constexpr double rad2deg(double v)
virtual bool HasText() const override
sdr::contact::ViewContact & GetViewContact() const
SdrOnOffItem makeSdrTextAutoGrowHeightItem(bool bAuto)
SdrTextAniKind
Animation type for text frame.
void ShearPoly(tools::Polygon &rPoly, const Point &rRef, double tn)
TextChain * GetTextChain() const
tools::Long GetMaxTextFrameHeight() const
virtual ~SdrTextObj() override
SdrMetricItem makeSdrTextMinFrameWidthItem(tools::Long mnWidth)
void SetControlWord(EEControlBits nWord)
SdrTextObj * mpPrevInChain
SdrPage * getSdrPageFromSdrObject() const
OUString SvxResId(const char *pId)
SdrTextObj(SdrModel &rSdrModel)
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
const vcl::Font & GetFont() const
virtual void SaveGeoData(SdrObjGeoData &rGeo) const override
B2DHomMatrix createScaleShearXRotateTranslateB2DHomMatrix(double fScaleX, double fScaleY, double fShearX, double fRadiant, double fTranslateX, double fTranslateY)
The transformation of a rectangle into a polygon, by using angle parameters from GeoStat.
virtual bool IsReallyEdited() const
returns true only if we are in edit mode and the user actually changed anything
const SfxItemSet & GetObjectItemSet() const
constexpr TypedWhichId< SdrTextAniDirectionItem > SDRATTR_TEXT_ANIDIRECTION(SDRATTR_MISC_FIRST+15)
SfxStyleSheet * GetStyleSheet() const
void SetFixedCellHeight(bool bUseFixedCellHeight)
css::drawing::TextFitToSizeType GetFitToSize() const
virtual void onEditOutlinerStatusEvent(EditStatus *pEditStatus)
called from the SdrObjEditView during text edit when the status of the edit outliner changes ...
tools::Long GetMaxTextFrameWidth() const
Degree100 NormAngle36000(Degree100 deg100)
Normalize angle to -180.00..179.99.
virtual std::unique_ptr< sdr::properties::BaseProperties > CreateObjectSpecificProperties() override
EEControlBits GetControlWord() const
SdrOnOffItem makeSdrTextAutoGrowWidthItem(bool bAuto)
void SetObjectItem(const SfxPoolItem &rItem)
virtual bool IsAutoGrowWidth() const
tools::Rectangle maSnapRect
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_SHADOW(SDRATTR_SHADOW_FIRST+0)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_LOWERDIST(SDRATTR_MISC_FIRST+7)
OutputDevice * GetRefDevice() const
constexpr TypedWhichId< XFormTextStyleItem > XATTR_FORMTXTSTYLE(XATTR_TEXT_FIRST)
OUString GetText(sal_Int32 nPara) const
bool GetPreventChainable() const
ErrCode Read(SvStream &rInput, const OUString &rBaseURL, EETextFormat, SvKeyValueIterator *pHTTPHeaderAttrs=nullptr)
#define SAL_N_ELEMENTS(arr)
virtual void TakeObjInfo(SdrObjTransformInfoRec &rInfo) const override
virtual SdrTextObj * CloneSdrObject(SdrModel &rTargetModel) const override
std::unique_ptr< OutlinerParaObject > CreateEditOutlinerParaObject() const
const SfxPoolItem & GetObjectItem(const sal_uInt16 nWhich) const
SdrTextHorzAdjust GetTextHorizontalAdjust() const
constexpr TypedWhichId< SvxWritingModeItem > SDRATTR_TEXTDIRECTION(SDRATTR_NOTPERSIST_FIRST+34)
constexpr TypedWhichId< SdrTextFitToSizeTypeItem > SDRATTR_TEXT_FITTOSIZE(SDRATTR_MISC_FIRST+3)
const EditTextObject & GetTextObject() const
virtual void RestoreGeoData(const SdrObjGeoData &rGeo)
virtual void handlePageChange(SdrPage *pOldPage, SdrPage *pNewPage) override
UNDERLYING_TYPE get() const
SdrTextVertAdjust GetTextVerticalAdjust() const
bool mbSupportTextIndentingOnLineWidthChange
void UpdateOutlinerFormatting(SdrOutliner &rOutl, tools::Rectangle &rPaintRect) const
Update given Outliner equivalently to SdrTextObj::Paint()
void SetText(const OutlinerParaObject &)
bool IsFitToSize() const
returns true if the old feature for fitting shape content should into shape is enabled. implies IsAutoFit()==false!
bool decompose(B2DTuple &rScale, B2DTuple &rTranslate, double &rRotate, double &rShearX) const
void SetGlobalCharStretching(sal_uInt16 nX=100, sal_uInt16 nY=100)
void rotate(double fRadiant)
tools::Long FRound(double fVal)
void SetVertical(bool bNew)
void ExecuteOverflow(SdrOutliner *, SdrOutliner *)
SdrMetricItem makeSdrEckenradiusItem(tools::Long nRadius)
void BroadcastObjectChange() const
constexpr TypedWhichId< SdrTextVertAdjustItem > SDRATTR_TEXT_VERTADJUST(SDRATTR_MISC_FIRST+8)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_LEFTDIST(SDRATTR_MISC_FIRST+4)
void ActionChanged() const
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_MAXFRAMEHEIGHT(SDRATTR_MISC_FIRST+9)
virtual void SaveGeoData(SdrObjGeoData &rGeo) const
void SetText(const OUString &rStr)
tools::Long Width() const
static void ImpUpdateChainLinks(SdrTextObj *pTextObj, std::u16string_view aNextLinkName)
bool mbIsUnchainableClone
virtual basegfx::B2DPolyPolygon TakeContour() const
contour for TextToContour
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_MINFRAMEWIDTH(SDRATTR_MISC_FIRST+10)
SdrModel & getSdrModelFromSdrObject() const
void transform(const basegfx::B2DHomMatrix &rMatrix)
virtual void TakeTextAnchorRect(::tools::Rectangle &rAnchorRect) const
bool IsHideContour() const
constexpr double deg2rad(double v)
virtual void SetLogicRect(const tools::Rectangle &rRect)
virtual void Move(const Size &rSiz)
void SetMergedItem(const SfxPoolItem &rItem)
OUString GetText(Paragraph const *pPara, sal_Int32 nParaCount=1) const
constexpr TypedWhichId< SfxStringItem > SDRATTR_TEXT_CHAINNEXTNAME(SDRATTR_MISC_FIRST+25)
virtual void AdaptTextMinSize()
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_MINFRAMEHEIGHT(SDRATTR_MISC_FIRST+1)
virtual SdrText * getActiveText() const
returns the currently active text.
const SfxPoolItem & GetMergedItem(const sal_uInt16 nWhich) const
bool IsContourTextFrame() const
virtual basegfx::B2DPolyPolygon TakeContour() const override
contour for TextToContour
SfxItemPool * GetPool() const
void ForceOutlinerParaObject(OutlinerMode nOutlMode)
virtual void Mirror(const Point &rRef1, const Point &rRef2)
SVX_DLLPRIVATE void ImpRegisterLink()
tools::Long GetMinTextFrameWidth() const
SdrTextObj * GetNextLinkInChain() const
Paragraph * GetParagraph(sal_Int32 nAbsPos) const
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_UPPERDIST(SDRATTR_MISC_FIRST+6)
void NbcSetEckenradius(tools::Long nRad)
bool CanCreateEditOutlinerParaObject() const
tools::Long GetTextRightDistance() const
Right inner spacing to borders.
void SetObjectItemNoBroadcast(const SfxPoolItem &rItem)
void append(const B2DPolygon &rPolygon, sal_uInt32 nCount=1)
void SetPolygon(const basegfx::B2DPolyPolygon &rPolyPolygon)
virtual void NbcSetOutlinerParaObject(std::unique_ptr< OutlinerParaObject > pTextObject) override
virtual const tools::Rectangle & GetLastBoundRect() const
void CheckPortionInfo(SdrOutliner &rOutliner)
sal_Int16 GetMaxScale() const
void RotatePoint(Point &rPnt, const Point &rRef, double sn, double cs)
std::unique_ptr< OutlinerParaObject > CreateParaObject(sal_Int32 nStartPara=0, sal_Int32 nParaCount=EE_PARA_ALL) const
EditStatusFlags GetStatusWord() const
virtual bool IsVerticalWriting() const
tools::Long GetTextUpperDistance() const
Top inner spacing to borders.
void SetMaxAutoPaperSize(const Size &rSz)
void GetGlobalCharStretching(sal_uInt16 &rX, sal_uInt16 &rY) const
virtual void TakeTextRect(SdrOutliner &rOutliner, tools::Rectangle &rTextRect, bool bNoEditText, tools::Rectangle *pAnchorRect, bool bLineWidth=true) const
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_RIGHTDIST(SDRATTR_MISC_FIRST+5)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
virtual OutlinerParaObject * GetOutlinerParaObject() const override
virtual bool AdjustTextFrameWidthAndHeight()
void SetObjectItemSet(const SfxItemSet &rSet)
SdrMetricItem makeSdrTextMinFrameHeightItem(tools::Long mnHeight)
void SetFont(const vcl::Font &rNewFont)
void NbcSetOutlinerParaObjectForText(std::unique_ptr< OutlinerParaObject > pTextObject, SdrText *pText)
tools::Long GetTextHeight() const
#define SAL_INFO(area, stream)
void SetMinAutoPaperSize(const Size &rSz)
virtual void SetOutlinerParaObject(std::unique_ptr< OutlinerParaObject > pTextObject)
void NbcSetText(const OUString &rStr)
double mfCosRotationAngle
constexpr TypedWhichId< SdrTextAniKindItem > SDRATTR_TEXT_ANIKIND(SDRATTR_MISC_FIRST+14)
void Init(OutlinerMode nOutlinerMode)
tools::Long GetTextWidth(const OUString &rStr, sal_Int32 nIndex=0, sal_Int32 nLen=-1, vcl::TextLayoutCache const *=nullptr, SalLayoutGlyphs const *const pLayoutCache=nullptr) const
tools::Long Height() const
void ImpSetTextStyleSheetListeners()
void onChainingEvent()
called from the SdrObjEditView during text edit when a chain of boxes is to be updated ...
OString stripStart(const OString &rIn, char c)
virtual void RestoreGeoData(const SdrObjGeoData &rGeo) override
std::unique_ptr< SdrObject, SdrObjectFreeOp > SdrObjectUniquePtr
SdrOnOffItem makeSdrShadowItem(bool bShadow)
virtual SdrObjectUniquePtr getFullDragClone() const
SdrTextAniDirection GetTextAniDirection() const
void SetUpdateMode(bool bUpdate)
constexpr TypedWhichId< SdrTextFixedCellHeightItem > SDRATTR_TEXT_USEFIXEDCELLHEIGHT(SDRATTR_MISC_FIRST+23)
const Point & GetAnchorPos() const
void SetStyleSheet(sal_Int32 nPara, SfxStyleSheet *pStyle)
virtual void Rotate(const Point &rRef, Degree100 nAngle, double sn, double cs)
virtual void SetRectsDirty(bool bNotMyself=false, bool bRecursive=true)
virtual Point GetSnapPoint(sal_uInt32 i) const override
virtual void SetSnapRect(const tools::Rectangle &rRect)
bool IsAutoFit() const
returns true if the PPT autofit of text into shape bounds is enabled. implies IsFitToSize()==false! ...
virtual sal_Int32 getTextCount() const override
returns the number of texts available for this object.
void SetTextObj(const SdrTextObj *pObj)
virtual bool TRGetBaseGeometry(basegfx::B2DHomMatrix &rMatrix, basegfx::B2DPolyPolygon &rPolyPolygon) const override
bool LineGeometryUsageIsNecessary() const
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
const SdrTextObj * GetTextObj() const
OutlinerParaObject * GetOutlinerParaObject() const
B2DHomMatrix createTranslateB2DHomMatrix(double fTranslateX, double fTranslateY)
virtual void NbcSetLogicRect(const tools::Rectangle &rRect) override
virtual std::unique_ptr< sdr::contact::ViewContact > CreateObjectSpecificViewContact() override
virtual void SetChanged()
TitleText, special text object for StarDraw.
constexpr TypedWhichId< SdrMetricItem > SDRATTR_ECKENRADIUS(SDRATTR_MISC_FIRST+0)
virtual basegfx::B2DPolyPolygon TakeXorPoly() const override
The Xor-Polygon is required by the View to drag the object.
virtual void TakeUnrotatedSnapRect(tools::Rectangle &rRect) const
periodic cubic Spline (ni)
SdrTextObj * mpNextInChain
SdrTextObj * GetPrevLinkInChain() const
static void ImpJustifyRect(tools::Rectangle &rRect)
SdrOutliner & ImpGetDrawOutliner() 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)
const tools::Rectangle & GetGeoRect() const
void SendUserCall(SdrUserCallType eUserCall, const tools::Rectangle &rBoundRect) const
virtual bool IsFontwork() const
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...
static void ImpSetCharStretching(SdrOutliner &rOutliner, const Size &rTextSize, const Size &rShapeSize, Fraction &rFitXCorrection)
void ImpAutoFitText(SdrOutliner &rOutliner) const
void SetTextAnimationAllowed(bool bNew)
virtual OUString TakeObjNamePlural() const override
const Size & GetPaperSize() const
virtual void CheckForFlowEvents(SdrOutliner *) override