27 #include <svx/strings.hrc>
33 #include <libxml/xmlwriter.h>
45 return std::make_unique<sdr::properties::GroupProperties>(*this);
51 return std::make_unique<sdr::contact::ViewContactOfGroup>(*this);
121 for (
size_t i=0;
i<nObjCount; ++
i) {
180 for (
size_t i=0;
i<nObjCount; ++
i) {
182 if (b1st) { nLay=nLay1; b1st =
false; }
192 for (
size_t i=0;
i<nObjCount; ++
i) {
215 const css::uno::Sequence<css::beans::PropertyValue>& propList(rVal.get< css::uno::Sequence<css::beans::PropertyValue> >());
216 for (
const auto& rProp : std::as_const(propList))
218 if(rProp.Name.startsWith(
"OOX"))
280 sName =
SvxResId(STR_ObjNameSingulGRUPEMPTY);
285 sName =
SvxResId(STR_ObjNameSingulDIAGRAM);
287 sName =
SvxResId(STR_ObjNameSingulGRUP);
292 if (!aName.isEmpty())
293 sName +=
" '" + aName +
"'";
302 return SvxResId(STR_ObjNamePluralGRUPEMPTY);
304 return SvxResId(RID_GALLERYSTR_THEME_DIAGRAMS);
305 return SvxResId(STR_ObjNamePluralGRUP);
319 for(
size_t a = 0;
a < nObjCount; ++
a)
383 if (nDivX==0) { nMulX=1; nDivX=1; }
384 if (nDivY==0) { nMulY=1; nDivY=1; }
385 if (nMulX!=nDivX || nMulY!=nDivY) {
409 for (
size_t i=0;
i<nObjCount; ++
i)
427 if (bXMirr || bYMirr) {
446 for (
size_t i=0;
i<nObjCount; ++
i)
466 for (
size_t i=0;
i<nObjCount; ++
i)
483 for (
size_t i=0;
i<nObjCount; ++
i)
500 for (
size_t i=0;
i<nObjCount; ++
i)
503 pObj->
NbcShear(rRef,nAngle,tn,bVShear);
518 for (
size_t i=0;
i<nObjCount; ++
i)
542 if (nDivX==0) { nMulX=1; nDivX=1; }
543 if (nDivY==0) { nMulY=1; nDivY=1; }
544 if (nMulX!=nDivX || nMulY!=nDivY) {
578 for (
size_t i=0;
i<nObjCount; ++
i)
585 for (
size_t i=0;
i<nObjCount; ++
i)
611 if (bXMirr || bYMirr) {
631 for (
size_t i=0;
i<nObjCount; ++
i)
635 pObj->
Resize(rRef,xFact,yFact,bUnsetRelative);
638 for (
size_t i=0;
i<nObjCount; ++
i)
642 pObj->
Resize(rRef,xFact,yFact,bUnsetRelative);
659 if (nAngle==0_deg100)
668 for (
size_t i=0;
i<nObjCount; ++
i)
672 pObj->
Rotate(rRef,nAngle,sn,cs);
675 for (
size_t i=0;
i<nObjCount; ++
i)
679 pObj->
Rotate(rRef,nAngle,sn,cs);
698 for (
size_t i=0;
i<nObjCount; ++
i)
702 pObj->
Mirror(rRef1,rRef2);
705 for (
size_t i=0;
i<nObjCount; ++
i)
709 pObj->
Mirror(rRef1,rRef2);
722 if (nAngle==0_deg100)
731 for (
size_t i=0;
i<nObjCount; ++
i)
735 pObj->
Shear(rRef,nAngle,tn,bVShear);
738 for (
size_t i=0;
i<nObjCount; ++
i)
742 pObj->
Shear(rRef,nAngle,tn,bVShear);
764 for (
size_t i=0;
i<nObjCount; ++
i)
771 for (
size_t i=0;
i<nObjCount; ++
i)
790 Size aSiz(rPnt.X()-aRelPos0.X(),rPnt.Y()-aRelPos0.Y());
797 Size aSiz(rPnt.X()-aRelPos0.X(),rPnt.Y()-aRelPos0.Y());
798 if (aSiz.Width()!=0 || aSiz.Height()!=0)
Move(aSiz);
811 for(
size_t a=0;
a < nObjCount; ++
a)
818 pGroup->GetSubList()->NbcInsertObject(pResult.release());
826 (
void)xmlTextWriterStartElement(pWriter, BAD_CAST(
"SdrObjGroup"));
827 (
void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST(
"ptr"),
"%p",
this);
832 (
void)xmlTextWriterEndElement(pWriter);
virtual void NbcSetAnchorPos(const Point &rPnt) override
virtual void Shear(const Point &rRef, Degree100 nAngle, double tn, bool bVShear)
virtual bool BegCreate(SdrDragStat &rStat) override
Every object must be able to create itself interactively.
static bool containsOOXData(const css::uno::Any &rVal)
virtual basegfx::B2DPolyPolygon TakeXorPoly() const
The Xor-Polygon is required by the View to drag the object.
virtual void TakeObjInfo(SdrObjTransformInfoRec &rInfo) const
virtual void NbcShear(const Point &rRef, Degree100 nAngle, double tn, bool bVShear) override
void NbcReformatAllTextObjects()
reformat all text objects, e.g. when changing printer
virtual SdrLayerID GetLayer() const override
virtual SdrObjectUniquePtr DoConvertToPolyObj(bool bBezier, bool bAddText) const override
virtual void Resize(const Point &rRef, const Fraction &xFact, const Fraction &yFact, bool bUnsetRelative=true)
void ShearPoint(Point &rPnt, const Point &rRef, double tn, bool bVShear=false)
struct _xmlTextWriter * xmlTextWriterPtr
virtual basegfx::B2DPolyPolygon TakeXorPoly() const override
The Xor-Polygon is required by the View to drag the object.
virtual void SetBoundRectDirty() override
virtual void handlePageChange(SdrPage *pOldPage, SdrPage *pNewPage)
virtual void RecalcSnapRect() override
Snap is not done on the BoundRect but if possible on logic coordinates (i.e.
const tools::Rectangle & GetAllObjBoundRect() const
virtual void NbcResize(const Point &rRef, const Fraction &xFact, const Fraction &yFact)
void ResizePoint(Point &rPnt, const Point &rRef, const Fraction &xFract, const Fraction &yFract)
static void AddAdditionalVisualization(const SdrObjGroup &rTarget, SdrHdlList &rHdlList)
virtual void NbcRotate(const Point &rRef, Degree100 nAngle, double sn, double cs)
virtual void NbcSetLayer(SdrLayerID nLayer) override
virtual SdrObjectUniquePtr DoConvertToPolyObj(bool bBezier, bool bAddText) const
virtual void NbcShear(const Point &rRef, Degree100 nAngle, double tn, bool bVShear)
SdrObject * GetObj(size_t nNum) const
size_t GetObjCount() const
void SetGlueReallyAbsolute(bool bOn)
void CopyObjects(const SdrObjList &rSrcList)
tools::Rectangle m_aOutRect
abstract object (SdrObject)
void NbcMirrorGluePoints(const Point &rRef1, const Point &rRef2)
virtual void SetGrabBagItem(const css::uno::Any &rVal)
virtual void NbcMirror(const Point &rRef1, const Point &rRef2) override
constexpr tools::Long Width() const
virtual Degree100 GetShearAngle(bool bVertical=false) const override
virtual bool beginSpecialDrag(SdrDragStat &rDrag) const override
SdrPage * getSdrPageFromSdrObject() const
virtual void SetAnchorPos(const Point &rPnt)
virtual void NbcResize(const Point &rRef, const Fraction &xFact, const Fraction &yFact) override
OUString SvxResId(TranslateId aId)
SdrObjGroup(SdrModel &rSdrModel)
virtual void SetRelativePos(const Point &rPnt) override
virtual void SetBoundAndSnapRectsDirty(bool bNotMyself=false, bool bRecursive=true)
virtual void Shear(const Point &rRef, Degree100 nAngle, double tn, bool bVShear) override
virtual Degree100 GetRotateAngle() const override
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override
void ResizeRect(tools::Rectangle &rRect, const Point &rRef, const Fraction &rxFact, const Fraction &ryFact)
virtual void NbcRotate(const Point &rRef, Degree100 nAngle, double sn, double cs) override
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const
virtual void NbcMirror(const Point &rRef1, const Point &rRef2)
virtual SdrObjGroup * CloneSdrObject(SdrModel &rTargetModel) const override
void BroadcastObjectChange() const
B2DPolygon createPolygonFromRect(const B2DRectangle &rRect, double fRadiusX, double fRadiusY)
virtual const tools::Rectangle & GetSnapRect() const override
virtual Degree100 GetShearAngle(bool bVertical=false) const
void MirrorPoint(Point &rPnt, const Point &rRef1, const Point &rRef2)
void NbcShearGluePoints(const Point &rRef, double tn, bool bVShear)
SdrModel & getSdrModelFromSdrObject() const
SdrObjUserCall * m_pUserCall
virtual void NbcSetSnapRect(const tools::Rectangle &rRect) override
virtual ~SdrObjGroup() override
o3tl::strong_int< sal_Int16, struct SdrLayerIDTag > SdrLayerID
virtual SdrObjList * GetSubList() const override
virtual void Move(const Size &rSiz)
virtual void SetLogicRect(const tools::Rectangle &rRect) override
virtual void Mirror(const Point &rRef1, const Point &rRef2) override
virtual SdrObject * getSdrObjectFromSdrObjList() const override
virtual void Mirror(const Point &rRef1, const Point &rRef2)
virtual void handlePageChange(SdrPage *pOldPage, SdrPage *pNewPage) override
virtual void AddToHdlList(SdrHdlList &rHdlList) const override
virtual SdrLayerID GetLayer() const
virtual void Rotate(const Point &rRef, Degree100 nAngle, double sn, double cs) override
virtual SdrObjList * getChildrenOfSdrObject() const override
virtual OUString TakeObjNamePlural() const override
virtual void SetSnapRect(const tools::Rectangle &rRect) override
std::shared_ptr< svx::diagram::IDiagramHelper > mp_DiagramHelper
virtual void NbcReformatText() override
void append(const B2DPolygon &rPolygon, sal_uInt32 nCount=1)
virtual const tools::Rectangle & GetLastBoundRect() const
void RotatePoint(Point &rPnt, const Point &rRef, double sn, double cs)
virtual std::unique_ptr< sdr::contact::ViewContact > CreateObjectSpecificViewContact() override
virtual void NbcSetLogicRect(const tools::Rectangle &rRect) override
sal_Int32 GetDenominator() const
void GetGrabBagItem(css::uno::Any &rVal) const
constexpr tools::Long Height() const
virtual void NbcSetRelativePos(const Point &rPnt) override
The relative position of a SdrObject is the distance of the upper left corner of the logic bounding r...
virtual void NbcMove(const Size &rSiz) override
The methods Move, Resize, Rotate, Mirror, Shear, SetSnapRect and SetLogicRect call the corresponding ...
virtual void SetAnchorPos(const Point &rPnt) override
virtual void NbcMove(const Size &rSiz)
The methods Move, Resize, Rotate, Mirror, Shear, SetSnapRect and SetLogicRect call the corresponding ...
virtual void SetGrabBagItem(const css::uno::Any &rVal) override
virtual void dumpAsXml(xmlTextWriterPtr pWriter) const
virtual void Resize(const Point &rRef, const Fraction &xFact, const Fraction &yFact, bool bUnsetRelative=true) override
sal_Int32 GetNumerator() const
std::unique_ptr< SdrObject, SdrObjectFreeOp > SdrObjectUniquePtr
virtual void Rotate(const Point &rRef, Degree100 nAngle, double sn, double cs)
virtual OUString TakeObjNameSingul() const override
virtual void NbcSetAnchorPos(const Point &rPnt)
virtual Degree100 GetRotateAngle() const
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
virtual std::unique_ptr< sdr::properties::BaseProperties > CreateObjectSpecificProperties() override
virtual void TakeObjInfo(SdrObjTransformInfoRec &rInfo) const override
virtual const tools::Rectangle & GetCurrentBoundRect() const override
virtual void SetChanged()
const tools::Rectangle & GetAllObjSnapRect() const
virtual const std::shared_ptr< svx::diagram::IDiagramHelper > & getDiagramHelper() const override
const OUString & GetName() const
void SendUserCall(SdrUserCallType eUserCall, const tools::Rectangle &rBoundRect) const
virtual void Move(const Size &rSiz) override
virtual SdrObjKind GetObjIdentifier() const override
void NbcRotateGluePoints(const Point &rRef, Degree100 nAngle, double sn, double cs)
virtual void NbcSetLayer(SdrLayerID nLayer)
virtual SdrPage * getSdrPageFromSdrObjList() const override