33#include <svx/strings.hrc>
50#include <svx/svxids.hrc>
68#include <LibreOfficeKit/LibreOfficeKitEnums.h>
69#include <rtl/ustring.hxx>
72#include <osl/diagnose.h>
79 DBG_ASSERT(!rRect.
IsEmpty(),
"SetMarkedObjRect() with an empty Rect does not make sense.");
102 for (
size_t nm=0; nm<
nCount; ++nm)
143 OSL_FAIL(
"SetMarkedObjRect(): pObj->GetSnapRect() returns empty Rect");
152 std::vector< std::unique_ptr<SdrUndoAction> > vUndoActions;
163 if (
dynamic_cast<const SdrEdgeObj*
>( pPartObj) !=
nullptr )
168 vUndoActions.push_back(
GetModel().GetSdrUndoFactory().CreateUndoGeoObject(*pPartObj));
179 for (
auto & rAction : aUndoActions)
201 for (
size_t nm=0; nm<nMarkCount; ++nm)
208 AddUndo(
GetModel().GetSdrUndoFactory().CreateUndoMoveObject(*pO,rSiz));
233 for (
size_t nm=0; nm<nMarkCount; ++nm)
242 pO->
Resize(rRef,xFact,yFact);
262 for (
size_t nm=0; nm<nMarkCount; ++nm)
274 pO->
Resize(rRef, xFact, yFact);
275 else if (bWdh && xFact.
IsValid())
276 pO->
Resize(rRef, xFact, aFrac);
277 else if (bHgt && yFact.
IsValid())
278 pO->
Resize(rRef, aFrac, yFact);
319 std::vector< E3DModifySceneSnapRectUpdater* > aUpdaters;
321 for(
size_t nm = 0; nm < nMarkCount; ++nm)
340 pO->
Rotate(rRef,nAngle,nSin,nCos);
344 while(!aUpdaters.empty())
346 delete aUpdaters.back();
347 aUpdaters.pop_back();
363 Point aDif(rRef2-rRef1);
366 else if (aDif.
Y()==0)
368 else if (std::abs(aDif.
X()) == std::abs(aDif.
Y()))
383 std::vector< E3DModifySceneSnapRectUpdater* > aUpdaters;
385 for(
size_t nm = 0; nm < nMarkCount; ++nm)
408 while(!aUpdaters.empty())
410 delete aUpdaters.back();
411 aUpdaters.pop_back();
441 for (
size_t nm=0; nm<nMarkCount && bOk; ++nm) {
445 if (b1st) nAngle=nAngle2;
446 else if (nAngle2!=nAngle) bOk=
false;
451 if (!bOk) nAngle=0_deg100;
473 for (
size_t nm=0; nm<nMarkCount; ++nm)
482 pO->
Shear(rRef,nAngle,nTan,bVShear);
495 if(pPath!=
nullptr && !bNoContortion)
511 XPolygon aXP(
static_cast<sal_uInt16
>(nPointCount));
514 for(nPtNum = 0; nPtNum < nPointCount; nPtNum++)
517 aXP[
static_cast<sal_uInt16
>(nPtNum)]=aPt;
527 for(nPtNum = 0; nPtNum < nPointCount; nPtNum++)
531 pO->
SetPoint(aXP[
static_cast<sal_uInt16
>(nPtNum)],nPtNum);
544 double nSin(0.0), nCos(1.0);
547 if(0 != rRad.
X() && 0 != rRad.
Y())
568 bool bVertical,
bool bNoContortion,
bool bCopy)
588 for (
size_t nm=0; nm<nMarkCount; ++nm)
596 if (bNoContortion || pOL==
nullptr) {
615 if(!bNoContortion && pPath)
618 aXPP.
Distort(rRef, rDistortedRect);
625 XPolygon aXP(
static_cast<sal_uInt16
>(nPointCount));
628 for(nPtNum = 0; nPtNum < nPointCount; nPtNum++)
631 aXP[
static_cast<sal_uInt16
>(nPtNum)]=aPt;
634 aXP.
Distort(rRef, rDistortedRect);
636 for(nPtNum = 0; nPtNum < nPointCount; nPtNum++)
640 pO->
SetPoint(aXP[
static_cast<sal_uInt16
>(nPtNum)],nPtNum);
662 for (
size_t nm=0; nm<nMarkCount; ++nm)
671 if (bNoContortion || pOL==
nullptr) {
717 nAllPosX = pPoolItem->GetValue();
718 bAllPosX=
true; bDoIt=
true;
722 nAllPosY = pPoolItem->GetValue();
723 bAllPosY=
true; bDoIt=
true;
727 nAllWdt = pPoolItem->GetValue();
728 bAllWdt=
true; bDoIt=
true;
732 nAllHgt = pPoolItem->GetValue();
733 bAllHgt=
true; bDoIt=
true;
737 if (bAllPosX) aRect.
Move(nAllPosX-aRect.
Left(),0);
738 if (bAllPosY) aRect.
Move(0,nAllPosY-aRect.
Top());
739 if (bAllWdt) aRect.
SetRight(aAllSnapRect.
Left()+nAllWdt );
740 if (bAllHgt) aRect.
SetBottom(aAllSnapRect.
Top()+nAllHgt );
745 Fraction aXFact = pPoolItem->GetValue();
750 Fraction aYFact = pPoolItem->GetValue();
755 Degree100 nAngle = pPoolItem->GetValue();
760 Degree100 nAngle = pPoolItem->GetValue();
765 Degree100 nAngle = pPoolItem->GetValue();
773 for (
size_t nm=0; nm<nMarkCount; ++nm)
793 bool bMovProtect =
false, bMovProtectDC =
false;
794 bool bSizProtect =
false, bSizProtectDC =
false;
795 bool bPrintable =
true, bPrintableDC =
false;
796 bool bVisible =
true, bVisibleDC =
false;
803 tools::Long nLogicWdt=0;
bool bLogicWdtDC=
false,bLogicWdtDiff=
false;
804 tools::Long nLogicHgt=0;
bool bLogicHgtDC=
false,bLogicHgtDiff=
false;
805 Degree100 nRotAngle(0);
bool bRotAngleDC=
false;
806 Degree100 nShrAngle(0);
bool bShrAngleDC=
false;
810 for (
size_t nm=0; nm<nMarkCount; ++nm) {
821 nSnapPosX=aSnapRect2.
Left();
822 nSnapPosY=aSnapRect2.
Top();
827 bLogicWdtDiff=nLogicWdt!=nSnapWdt;
828 bLogicHgtDiff=nLogicHgt!=nSnapHgt;
832 if (!bLayerDC && nLayerId !=pObj->
GetLayer()) bLayerDC =
true;
833 if (!bMovProtectDC && bMovProtect!=pObj->
IsMoveProtect()) bMovProtectDC =
true;
834 if (!bSizProtectDC && bSizProtect!=pObj->
IsResizeProtect()) bSizProtectDC =
true;
835 if (!bPrintableDC && bPrintable !=pObj->
IsPrintable()) bPrintableDC =
true;
837 if (!bRotAngleDC && nRotAngle !=pObj->
GetRotateAngle()) bRotAngleDC=
true;
838 if (!bShrAngleDC && nShrAngle !=pObj->
GetShearAngle()) bShrAngleDC=
true;
839 if (!bSnapWdtDC || !bSnapHgtDC || !bSnapPosXDC || !bSnapPosYDC || !bLogicWdtDiff || !bLogicHgtDiff) {
841 if (nSnapPosX!=aSnapRect.
Left()) bSnapPosXDC=
true;
842 if (nSnapPosY!=aSnapRect.
Top()) bSnapPosYDC=
true;
843 if (nSnapWdt!=aSnapRect.
GetWidth()-1) bSnapWdtDC=
true;
844 if (nSnapHgt!=aSnapRect.
GetHeight()-1) bSnapHgtDC=
true;
846 if (!bLogicWdtDC || !bLogicHgtDC || !bLogicWdtDiff || !bLogicHgtDiff) {
848 if (nLogicWdt!=aLogicRect.
GetWidth()-1) bLogicWdtDC=
true;
849 if (nLogicHgt!=aLogicRect.
GetHeight()-1) bLogicHgtDC=
true;
850 if (!bLogicWdtDiff && aSnapRect.
GetWidth()!=aLogicRect.
GetWidth()) bLogicWdtDiff=
true;
851 if (!bLogicHgtDiff && aSnapRect.
GetHeight()!=aLogicRect.
GetHeight()) bLogicHgtDiff=
true;
911 for(
size_t a = 0;
a < nMarkCount; ++
a)
950 sPayload = OUString::number(
static_cast<sal_uInt32
>(aColor));
952 sPayload =
".uno:XLineColor=" + sPayload;
963 sPayload = OUString::number(
static_cast<sal_uInt32
>(aColor));
965 sPayload =
".uno:FillColor=" + sPayload;
976 sPayload = OUString::number(nTransparency);
978 sPayload =
".uno:FillTransparence=" + sPayload;
989 sPayload = OUString::number(nTransparency);
991 sPayload =
".uno:LineTransparence=" + sPayload;
1002 sPayload = OUString::number(nWidth);
1004 sPayload =
".uno:LineWidth=" + sPayload;
1015 sPayload = OUString::number(nWidth);
1017 sPayload =
".uno:FillShadowTransparency=" + sPayload;
1023 if (!sPayload.isEmpty())
1035 std::vector<sal_uInt16> aCharWhichIds;
1042 sal_uInt16 nWhich = pItem->Which();
1044 aCharWhichIds.push_back( nWhich );
1048 return aCharWhichIds;
1053 std::vector<sal_uInt16> aCharWhichIds;
1056 sal_uInt16 nWhich = pItem->Which();
1058 aCharWhichIds.push_back( nWhich );
1060 return aCharWhichIds;
1070 bool bHasEEFeatureItems=
false;
1076 sal_uInt16 nW=pItem->Which();
1080 if(bHasEEFeatureItems)
1083 VclMessageType::Info, VclButtonsType::Ok,
1084 "SdrEditView::SetAttrToMarked(): Setting EE_FEATURE items at the SdrView does not make sense! It only leads to overhead and unreadable documents."));
1101 bool bPossibleGeomChange(
false);
1104 while(!bPossibleGeomChange && nWhich)
1107 if(eState == SfxItemState::SET)
1116 bPossibleGeomChange =
true;
1130 std::vector< E3DModifySceneSnapRectUpdater* > aUpdaters;
1139 bool bResetAnimationTimer(
false);
1141 const bool bLineStartWidthExplicitChange(SfxItemState::SET
1143 const bool bLineEndWidthExplicitChange(SfxItemState::SET
1146 const bool bAdaptStartEndWidths(!(bLineStartWidthExplicitChange && bLineEndWidthExplicitChange)
1148 sal_Int32 nNewLineWidth(0);
1150 if(bAdaptStartEndWidths)
1155 for (
size_t nm=0; nm<nMarkCount; ++nm)
1164 bPossibleGeomChange =
true;
1170 if(bPossibleGeomChange && bUndo)
1187 AddUndo(
GetModel().GetSdrUndoFactory().CreateUndoAttrObject(*pObj,
false,bHasEEItems || bPossibleGeomChange || bRescueText));
1196 sal_Int32 nOldLineWidth(0);
1197 if (bAdaptStartEndWidths)
1205 if(bAdaptStartEndWidths)
1209 if(nOldLineWidth != nNewLineWidth)
1214 const sal_Int32 nValNewStart(std::max(sal_Int32(0), nValAct + (((nNewLineWidth - nOldLineWidth) * 15) / 10)));
1222 const sal_Int32 nValNewEnd(std::max(sal_Int32(0), nValAct + (((nNewLineWidth - nOldLineWidth) * 15) / 10)));
1231 if(!aCharWhichIds.empty())
1236 pTextObj->RemoveOutlinerCharacterAttribs( aCharWhichIds );
1241 pTextObj->SetChanged();
1243 pTextObj->BroadcastObjectChange();
1249 if(!bResetAnimationTimer)
1253 bResetAnimationTimer =
true;
1259 while(!aUpdaters.empty())
1261 delete aUpdaters.back();
1262 aUpdaters.pop_back();
1266 if(bResetAnimationTimer)
1285 for (
size_t nm=0; nm<nMarkCount; ++nm) {
1289 else if (pRet!=pSS)
return nullptr;
1306 if (pStyleSheet!=
nullptr)
1314 for (
size_t nm=0; nm<nMarkCount; ++nm)
1376 SID_ATTR_TRANSFORM_POS_X, SID_ATTR_TRANSFORM_ANGLE,
1377 SID_ATTR_TRANSFORM_PROTECT_POS, SID_ATTR_TRANSFORM_AUTOHEIGHT>);
1402 aRetSet.
Put(
SfxInt32Item(SID_ATTR_TRANSFORM_RESIZE_REF_X,nResizeRefX));
1403 aRetSet.
Put(
SfxInt32Item(SID_ATTR_TRANSFORM_RESIZE_REF_Y,nResizeRefY));
1416 nRotateRefX=aRotateAxe.
X();
1417 nRotateRefY=aRotateAxe.
Y();
1427 nShearRefX=aRotateAxe.
X();
1428 nShearRefY=aRotateAxe.
Y();
1440 bool bPosProtDontCare=
false;
1441 bool bSizProtDontCare=
false;
1442 for (
size_t i=1;
i<nMarkCount && (!bPosProtDontCare || !bSizProtDontCare); ++
i)
1450 if (bPosProtDontCare) {
1453 aRetSet.
Put(
SfxBoolItem(SID_ATTR_TRANSFORM_PROTECT_POS,bPosProt));
1455 if (bSizProtDontCare) {
1458 aRetSet.
Put(
SfxBoolItem(SID_ATTR_TRANSFORM_PROTECT_SIZE,bSizProt));
1463 if (eState==SfxItemState::DONTCARE) {
1465 }
else if (eState==SfxItemState::SET) {
1466 aRetSet.
Put(
SfxBoolItem(SID_ATTR_TRANSFORM_AUTOWIDTH,bAutoGrow));
1471 if (eState==SfxItemState::DONTCARE) {
1473 }
else if (eState==SfxItemState::SET) {
1474 aRetSet.
Put(
SfxBoolItem(SID_ATTR_TRANSFORM_AUTOHEIGHT,bAutoGrow));
1479 if (eState==SfxItemState::DONTCARE) {
1481 }
else if (eState==SfxItemState::SET) {
1508 css::geometry::AffineMatrix2D aAffineMatrix2D;
1509 Point aPageOffset(0, 0);
1516 aAffineMatrix2D.m00 = aTransformation.
get(0, 0);
1517 aAffineMatrix2D.m01 = aTransformation.
get(0, 1);
1518 aAffineMatrix2D.m02 = aTransformation.
get(0, 2) - aPageOffset.
X();
1519 aAffineMatrix2D.m10 = aTransformation.
get(1, 0);
1520 aAffineMatrix2D.m11 = aTransformation.
get(1, 1);
1521 aAffineMatrix2D.m12 = aTransformation.
get(1, 2) - aPageOffset.
Y();
1589 nRotateX = nOldRotateX = aRotateAxe.
X();
1590 nRotateY = nOldRotateY = aRotateAxe.
Y();
1596 bool bShearVert=
false;
1605 bool bSetAttr=
false;
1611 nPosDX = pPoolItem->GetValue() - aRect.
Left();
1616 nPosDY = pPoolItem->GetValue() - aRect.
Top();
1622 nSizX = pPoolItem->GetValue();
1628 nSizY = pPoolItem->GetValue();
1633 if (bTiledRendering && SfxItemState::SET != rAttr.
GetItemState(SID_ATTR_TRANSFORM_SIZE_POINT))
1636 eSizePoint =
static_cast<RectPoint>(rAttr.
Get(SID_ATTR_TRANSFORM_SIZE_POINT).GetValue());
1642 nRotateAngle = pPoolItem->GetValue();
1643 bRotate = (nRotateAngle != 0_deg100);
1649 nRotateAngle = pPoolItem->GetValue() - nOldRotateAngle;
1650 bRotate = (nRotateAngle != 0_deg100);
1654 if(bRotate || rAttr.
GetItemIfSet(SID_ATTR_TRANSFORM_ROT_X))
1655 nRotateX = rAttr.
Get(SID_ATTR_TRANSFORM_ROT_X).GetValue();
1658 if(bRotate || rAttr.
GetItemIfSet(SID_ATTR_TRANSFORM_ROT_Y))
1659 nRotateY = rAttr.
Get(SID_ATTR_TRANSFORM_ROT_Y).GetValue();
1664 Degree100 nNewShearAngle=pPoolItem->GetValue();
1667 if (nNewShearAngle!=nOldShearAngle) {
1668 bShearVert = rAttr.
Get(SID_ATTR_TRANSFORM_SHEAR_VERTICAL).GetValue();
1670 nShearAngle=nNewShearAngle;
1672 if (nNewShearAngle!=0_deg100 && nOldShearAngle!=0_deg100) {
1674 double nOld = tan(
toRadians(nOldShearAngle));
1675 double nNew = tan(
toRadians(nNewShearAngle));
1677 nNew = basegfx::rad2deg<100>(atan(nNew));
1680 nShearAngle=nNewShearAngle-nOldShearAngle;
1683 bShear=nShearAngle!=0_deg100;
1685 nShearX = rAttr.
Get(SID_ATTR_TRANSFORM_SHEAR_X).GetValue();
1686 nShearY = rAttr.
Get(SID_ATTR_TRANSFORM_SHEAR_Y).GetValue();
1694 bool bAutoGrow = pPoolItem->GetValue();
1701 bool bAutoGrow = pPoolItem->GetValue();
1739 Point aRef(nRotateX,nRotateY);
1750 if(bModeIsRotate && (nRotateX != nOldRotateX || nRotateY != nOldRotateY))
1752 Point aNewRef1(nRotateX, nRotateY);
1764 Point aRef(nShearX,nShearY);
1790 const bool bProtPos(pPoolItem->GetValue());
1791 bool bChanged(
false);
1793 for(
size_t i = 0;
i < nMarkCount; ++
i)
1831 const bool bProtSize(pPoolItem->GetValue());
1832 bool bChanged(
false);
1834 for(
size_t i = 0;
i < nMarkCount; ++
i)
1863 if (
nCount==0)
return false;
1927 bool bHasFixed=
false;
1928 for (
size_t nm=0; nm<nMarkCount; ++nm)
1937 aBound.
Union(aObjRect);
1949 if (pGFL!=
nullptr && pGFL->
GetCount()!=0)
1951 pFrame=&((*pGFL)[0]);
1954 if (pFrame!=
nullptr)
1971 for (
size_t nm=0; nm<nMarkCount; ++nm)
1996 if (nXMov!=0 || nYMov!=0)
static weld::MessageDialog * CreateMessageDialog(weld::Widget *pParent, VclMessageType eMessageType, VclButtonsType eButtonType, const OUString &rPrimaryMessage, const ILibreOfficeKitNotifier *pNotifier=nullptr)
Helper for 3d object changes affecting 2d geometry.
constexpr tools::Long Y() const
tools::Long AdjustY(tools::Long nVertMove)
tools::Long AdjustX(tools::Long nHorzMove)
constexpr tools::Long X() const
constexpr tools::Long getX() const
constexpr tools::Long getY() const
Utility class SdrEdgeObj.
SfxItemSet GetAttrFromMarked(bool bOnlyHardAttr) const
bool IsUndoEnabled() const
virtual void MarkListHasChanged() override
void MirrorMarkedObj(const Point &rRef1, const Point &rRef2, bool bCopy=false)
void SetAttrToMarked(const SfxItemSet &rAttr, bool bReplaceAll)
void SetStyleSheetToMarked(SfxStyleSheet *pStyleSheet, bool bDontRemoveHardAttr)
void SetNotPersistAttrToMarked(const SfxItemSet &rAttr)
SfxStyleSheet * GetStyleSheet() const
void AddUndo(std::unique_ptr< SdrUndoAction > pUndo)
void SetStyleSheet(SfxStyleSheet *pStyleSheet, bool bDontRemoveHardAttr)
void EndTextEditCurrentView(bool bDontDeleteReally=false)
SfxStyleSheet * GetStyleSheetFromMarked() const
void SetGeoAttrToMarked(const SfxItemSet &rAttr, bool addPageMargin=false)
void MirrorMarkedObjVertical()
std::vector< std::unique_ptr< SdrUndoAction > > CreateConnectorUndo(const SdrObject &rO)
static void ImpDistortObj(SdrObject *pO, const tools::Rectangle &rRef, const XPolygon &rDistortedRect, bool bNoContortion)
void SetMarkedObjRect(const tools::Rectangle &rRect)
void MergeAttrFromMarked(SfxItemSet &rAttr, bool bOnlyHardAttr) const
void ForcePossibilities() const
void SetAttributes(const SfxItemSet &rSet, bool bReplaceAll)
Degree100 GetMarkedObjShear() const
void AddUndoActions(std::vector< std::unique_ptr< SdrUndoAction > >)
void AlignMarkedObjects(SdrHorAlign eHor, SdrVertAlign eVert)
bool IsAlignPossible() const
Degree100 GetMarkedObjRotate() const
bool IsRotateAllowed(bool b90Deg=false) const
void MergeNotPersistAttrFromMarked(SfxItemSet &rAttr) const
bool m_bResizeFreeAllowed
bool m_bRotateFreeAllowed
bool m_bResizePropAllowed
void ShearMarkedObj(const Point &rRef, Degree100 nAngle, bool bVShear=false, bool bCopy=false)
void CrookMarkedObj(const Point &rRef, const Point &rRad, SdrCrookMode eMode, bool bVertical, bool bNoContortion, bool bCopy=false)
bool m_bEdgeRadiusAllowed
SfxItemSet GetGeoAttrFromMarked() const
void RotateMarkedObj(const Point &rRef, Degree100 nAngle, bool bCopy=false)
void MirrorMarkedObjHorizontal()
void ResizeMarkedObj(const Point &rRef, const Fraction &xFact, const Fraction &yFact, bool bCopy=false)
void DistortMarkedObj(const tools::Rectangle &rRef, const XPolygon &rDistortedRect, bool bNoContortion, bool bCopy=false)
static void ImpCrookObj(SdrObject *pO, const Point &rRef, const Point &rRad, SdrCrookMode eMode, bool bVertical, bool bNoContortion, bool bRotate, const tools::Rectangle &rMarkRect)
void MoveMarkedObj(const Size &rSiz, bool bCopy=false)
void GetAttributes(SfxItemSet &rTargetSet, bool bOnlyHardAttr) const
void ResizeMultMarkedObj(const Point &rRef, const Fraction &xFact, const Fraction &yFact, const bool bWdh, const bool bHgt)
size_t GetMarkCount() const
SdrMark * GetMark(size_t nNum) const
const Point & GetRef2() const
virtual SfxViewShell * GetSfxViewShell() const
Get access to the view shell owning this draw view, if any.
OUString ImpGetDescriptionString(TranslateId pStrCacheID, ImpGetDescriptionOptions nOpt=ImpGetDescriptionOptions::NONE) const
const Point & GetRef1() const
const SdrMarkList & GetMarkedObjectList() const
bool AreObjectsMarked() const
void SortMarkedObjects() const
SdrObject * GetMarkedObjectByIndex(size_t nNum) const
void SetRef1(const Point &rPt)
size_t GetMarkedObjectCount() const
SdrMark * GetSdrMarkByIndex(size_t nNum) const
OUString const & GetDescriptionOfMarkedObjects() const
SdrPageView * GetSdrPageViewOfMarkedByIndex(size_t nNum) const
const tools::Rectangle & GetMarkedObjRect() const
void SetRef2(const Point &rPt)
Everything a View needs to know about a selected object.
SdrObject * GetMarkedSdrObj() const
bool IsResizeProtect() const
virtual Degree100 GetShearAngle(bool bVertical=false) const
const SfxPoolItem & GetMergedItem(const sal_uInt16 nWhich) const
virtual Degree100 GetRotateAngle() const
virtual void Shear(const Point &rRef, Degree100 nAngle, double tn, bool bVShear)
const SfxBroadcaster * GetBroadcaster() const
virtual Point GetPoint(sal_uInt32 i) const
bool IsMoveProtect() const
void SetStyleSheet(SfxStyleSheet *pNewStyleSheet, bool bDontRemoveHardAttr)
virtual void Mirror(const Point &rRef1, const Point &rRef2)
virtual SdrObjList * GetSubList() const
virtual bool IsPolyObj() const
virtual void Move(const Size &rSiz)
void SetResizeProtect(bool bProt)
virtual const tools::Rectangle & GetSnapRect() const
SfxStyleSheet * GetStyleSheet() const
void SetMoveProtect(bool bProt)
sdr::contact::ViewContact & GetViewContact() const
virtual void Rotate(const Point &rRef, Degree100 nAngle, double sn, double cs)
void SetPoint(const Point &rPnt, sal_uInt32 i)
void SetMergedItemSetAndBroadcast(const SfxItemSet &rSet, bool bClearAllItems=false)
SdrPage * getSdrPageFromSdrObject() const
virtual void SetSnapRect(const tools::Rectangle &rRect)
const SfxItemSet & GetMergedItemSet() const
virtual SdrLayerID GetLayer() const
void SetMergedItem(const SfxPoolItem &rItem)
virtual SdrObject * GetConnectedNode(bool bTail1) const
void ApplyNotPersistAttr(const SfxItemSet &rAttr)
virtual bool TRGetBaseGeometry(basegfx::B2DHomMatrix &rMatrix, basegfx::B2DPolyPolygon &rPolyPolygon) const
virtual sal_uInt32 GetPointCount() const
virtual void TakeObjInfo(SdrObjTransformInfoRec &rInfo) const
virtual const tools::Rectangle & GetLogicRect() const
virtual void Resize(const Point &rRef, const Fraction &xFact, const Fraction &yFact, bool bUnsetRelative=true)
sal_uInt16 GetCount() const
for the snap-to-grid in Writer
const tools::Rectangle & GetUserArea() const
void LogicToPagePos(Point &rPnt) const
void PagePosToLogic(Point &rPnt) const
SdrPage * GetPage() const
const Point & GetPageOrigin() const
The Origin always refers to the upper left corner of the Page.
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
virtual const SdrPageGridFrameList * GetGridFrameList(const SdrPageView *pPV, const tools::Rectangle *pRect) const
for snap-to-grid in Writer, also for AlignObjects if 1 object is marked if pRect !...
sal_Int32 GetUpperBorder() const
sal_Int32 GetRightBorder() const
sal_Int32 GetLeftBorder() const
sal_Int32 GetLowerBorder() const
tools::Long GetHeight() const
tools::Long GetWidth() const
void SetAttributes(const SfxItemSet &rSet, bool bReplaceAll)
SfxStyleSheet * GetStyleSheet() const
void SetAnimationTimer(sal_uInt32 nTime)
void GetAttributes(SfxItemSet &rTargetSet, bool bOnlyHardAttr) const
SdrPageView * GetSdrPageView() const
SdrModel & GetModel() const
void SetStyleSheet(SfxStyleSheet *pStyleSheet, bool bDontRemoveHardAttr)
void SetPathPoly(const basegfx::B2DPolyPolygon &rPathPoly)
const basegfx::B2DPolyPolygon & GetPathPoly() const
const SfxPoolItem * GetCurItem() const
const SfxPoolItem * NextItem()
const WhichRangesContainer & GetRanges() const
SfxItemPool * GetPool() const
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
sal_uInt16 ClearItem(sal_uInt16 nWhich=0)
void MergeValue(const SfxPoolItem &rItem, bool bOverwriteDefaults=false)
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const SfxPoolItem * GetItem(sal_uInt16 nWhich, bool bSearchInParent=true) const
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
void InvalidateItem(sal_uInt16 nWhich)
virtual void libreOfficeKitViewCallback(int nType, const OString &pPayload) const override
SfxItemState GetItemState(bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
basegfx::B2DPolyPolygon getB2DPolyPolygon() const
void Distort(const tools::Rectangle &rRefRect, const XPolygon &rDistortedRect)
Distort a polygon by scaling its coordinates relative to a reference rectangle into an arbitrary rect...
void Distort(const tools::Rectangle &rRefRect, const XPolygon &rDistortedRect)
Distort a polygon by scaling its coordinates relative to a reference rectangle into an arbitrary rect...
double get(sal_uInt16 nRow, sal_uInt16 nColumn) const
#define DBG_ASSERT(sCon, aError)
OUString SvxResId(TranslateId aId)
constexpr sal_uInt16 EE_FEATURE_END(EE_FEATURE_FIELD+0)
constexpr TypedWhichId< SvxFieldItem > EE_FEATURE_FIELD(EE_FEATURE_NOTCONV+1)
constexpr sal_uInt16 EE_FEATURE_LINEBR(EE_FEATURE_TAB+1)
constexpr sal_uInt16 EE_CHAR_START(EE_PARA_END+1)
constexpr sal_uInt16 EE_FEATURE_NOTCONV(EE_FEATURE_LINEBR+1)
constexpr sal_uInt16 EE_FEATURE_START(EE_CHAR_END+1)
constexpr sal_uInt16 EE_CHAR_END(EE_CHAR_START+32)
constexpr sal_uInt16 EE_FEATURE_TAB(EE_FEATURE_START+0)
tools::Long FRound(double fVal)
B2DHomMatrix createScaleTranslateB2DHomMatrix(double fScaleX, double fScaleY, double fTranslateX, double fTranslateY)
OString OUStringToOString(std::u16string_view str, ConnectionSettings const *settings)
static constexpr auto Items
bool IsInvalidItem(const SfxPoolItem *pItem)
SdrMetricItem makeSdrEckenradiusItem(tools::Long nRadius)
SdrOnOffItem makeSdrTextAutoGrowHeightItem(bool bAuto)
SdrOnOffItem makeSdrTextAutoGrowWidthItem(bool bAuto)
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_AUTOGROWWIDTH(SDRATTR_MISC_FIRST+12)
constexpr TypedWhichId< SdrTransformRef2XItem > SDRATTR_TRANSFORMREF2X(SDRATTR_NOTPERSIST_FIRST+32)
constexpr TypedWhichId< SfxUInt32Item > SDRATTR_3DOBJ_DEPTH(SDRATTR_3DOBJ_FIRST+2)
constexpr TypedWhichId< SdrResizeXAllItem > SDRATTR_RESIZEXALL(SDRATTR_NOTPERSIST_FIRST+25)
constexpr TypedWhichId< SdrHorzShearAllItem > SDRATTR_HORZSHEARALL(SDRATTR_NOTPERSIST_FIRST+28)
constexpr TypedWhichId< SdrPercentItem > SDRATTR_SHADOWTRANSPARENCE(SDRATTR_SHADOW_FIRST+4)
constexpr TypedWhichId< SdrAllSizeWidthItem > SDRATTR_ALLSIZEWIDTH(SDRATTR_NOTPERSIST_FIRST+8)
constexpr TypedWhichId< SdrAllPositionYItem > SDRATTR_ALLPOSITIONY(SDRATTR_NOTPERSIST_FIRST+7)
constexpr TypedWhichId< SdrResizeYAllItem > SDRATTR_RESIZEYALL(SDRATTR_NOTPERSIST_FIRST+26)
constexpr TypedWhichId< SdrAllSizeHeightItem > SDRATTR_ALLSIZEHEIGHT(SDRATTR_NOTPERSIST_FIRST+9)
constexpr TypedWhichId< SdrTransformRef2YItem > SDRATTR_TRANSFORMREF2Y(SDRATTR_NOTPERSIST_FIRST+33)
constexpr TypedWhichId< SdrRotateAllItem > SDRATTR_ROTATEALL(SDRATTR_NOTPERSIST_FIRST+27)
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_AUTOGROWHEIGHT(SDRATTR_MISC_FIRST+2)
constexpr TypedWhichId< SfxUInt16Item > SDRATTR_3DOBJ_BACKSCALE(SDRATTR_3DOBJ_FIRST+1)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_TEXT_MINFRAMEHEIGHT(SDRATTR_MISC_FIRST+1)
constexpr TypedWhichId< SdrAllPositionXItem > SDRATTR_ALLPOSITIONX(SDRATTR_NOTPERSIST_FIRST+6)
constexpr TypedWhichId< SfxUInt32Item > SDRATTR_3DSCENE_DISTANCE(SDRATTR_3DSCENE_FIRST+1)
constexpr TypedWhichId< SdrTransformRef1YItem > SDRATTR_TRANSFORMREF1Y(SDRATTR_NOTPERSIST_FIRST+31)
constexpr TypedWhichId< SfxUInt16Item > SDRATTR_3DOBJ_PERCENT_DIAGONAL(SDRATTR_3DOBJ_FIRST+0)
constexpr TypedWhichId< SdrMetricItem > SDRATTR_CORNER_RADIUS(SDRATTR_MISC_FIRST+0)
constexpr TypedWhichId< SfxUInt32Item > SDRATTR_3DOBJ_END_ANGLE(SDRATTR_3DOBJ_FIRST+5)
constexpr TypedWhichId< SdrOnOffItem > SDRATTR_TEXT_CONTOURFRAME(SDRATTR_MISC_FIRST+21)
constexpr TypedWhichId< SdrVertShearAllItem > SDRATTR_VERTSHEARALL(SDRATTR_NOTPERSIST_FIRST+29)
constexpr TypedWhichId< SdrTransformRef1XItem > SDRATTR_TRANSFORMREF1X(SDRATTR_NOTPERSIST_FIRST+30)
static Point ImpGetPoint(const tools::Rectangle &rRect, RectPoint eRP)
std::vector< sal_uInt16 > GetAllCharPropIds(const SfxItemSet &rSet)
bool SearchOutlinerItems(const SfxItemSet &rSet, bool bInklDefaults, bool *pbOnlyEE)
Search an ItemSet for Outliner/EditEngine Items.
E3dObject * DynCastE3dObject(SdrObject *pObj)
SdrTextObj * DynCastSdrTextObj(SdrObject *pObj)
void CrookStretchPoly(XPolygon &rPoly, const Point &rCenter, const Point &rRad, bool bVert, const tools::Rectangle &rRefRect)
void CrookRotatePoly(XPolygon &rPoly, const Point &rCenter, const Point &rRad, bool bVert)
double CrookRotateXPoint(Point &rPnt, Point *pC1, Point *pC2, const Point &rCenter, const Point &rRad, double &rSin, double &rCos, bool bVert)
The following methods accept a point of an XPolygon, whereas the neighbouring control points of the a...
double CrookSlantXPoint(Point &rPnt, Point *pC1, Point *pC2, const Point &rCenter, const Point &rRad, double &rSin, double &rCos, bool bVert)
double CrookStretchXPoint(Point &rPnt, Point *pC1, Point *pC2, const Point &rCenter, const Point &rRad, double &rSin, double &rCos, bool bVert, const tools::Rectangle &rRefRect)
void CrookSlantPoly(XPolygon &rPoly, const Point &rCenter, const Point &rRad, bool bVert)
constexpr Degree100 SDRMAXSHEAR(8900)
constexpr TypedWhichId< XFillColorItem > XATTR_FILLCOLOR(XATTR_FILL_FIRST+1)
constexpr TypedWhichId< XFillTransparenceItem > XATTR_FILLTRANSPARENCE(XATTR_FILL_FIRST+5)
constexpr TypedWhichId< XLineColorItem > XATTR_LINECOLOR(XATTR_LINE_FIRST+3)
constexpr TypedWhichId< XLineStartWidthItem > XATTR_LINESTARTWIDTH(XATTR_LINE_FIRST+6)
constexpr TypedWhichId< XLineWidthItem > XATTR_LINEWIDTH(XATTR_LINE_FIRST+2)
constexpr TypedWhichId< XLineEndWidthItem > XATTR_LINEENDWIDTH(XATTR_LINE_FIRST+7)
constexpr TypedWhichId< XLineTransparenceItem > XATTR_LINETRANSPARENCE(XATTR_LINE_FIRST+10)