LibreOffice Module svx (master) 1
svdobj.hxx
Go to the documentation of this file.
1/*
2 * This file is part of the LibreOffice project.
3 *
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 *
8 * This file incorporates work covered by the following license notice:
9 *
10 * Licensed to the Apache Software Foundation (ASF) under one or more
11 * contributor license agreements. See the NOTICE file distributed
12 * with this work for additional information regarding copyright
13 * ownership. The ASF licenses this file to you under the Apache
14 * License, Version 2.0 (the "License"); you may not use this file
15 * except in compliance with the License. You may obtain a copy of
16 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
17 */
18
19#pragma once
20
21#include <memory>
22#include <com/sun/star/uno/Any.hxx>
24#include <rtl/ustring.hxx>
25#include <vcl/outdev.hxx>
26#include <svl/lstner.hxx>
27#include <svl/poolitem.hxx>
28#include <svl/typedwhich.hxx>
29#include <tools/degree.hxx>
30#include <svx/svdtypes.hxx>
31#include <svx/svdobjkind.hxx>
32#include <svx/svxdllapi.h>
33#include <tools/link.hxx>
34#include <tools/gen.hxx>
35#include <unotools/resmgr.hxx>
36#include <unotools/weakref.hxx>
37#include <osl/diagnose.h>
38#include <typeinfo>
39
40#include <unordered_set>
41
42class SfxBroadcaster;
43class AutoTimer;
45class Outliner;
46class SdrOutliner;
47class SdrDragStat;
48class SdrHdl;
49class SdrHdlList;
50class SdrItemPool;
51class SdrModel;
52class SdrObjList;
53class SdrObject;
54class SdrPage;
55class SdrPageView;
56class SdrView;
57class SfxItemSet;
58class SfxGrabBagItem;
59class SfxSetItem;
60class SfxStyleSheet;
61class SfxUndoAction;
64class SfxItemPool;
65namespace tools { class PolyPolygon; }
66class SfxPoolItem;
67class SdrVirtObj;
68class SdrDragView;
70class SdrObjPlusData;
71class SdrGluePoint;
73class SdrLayerIDSet;
74class Fraction;
75enum class PointerStyle;
76class Graphic;
77class SvxShape;
78namespace svx { enum class ShapePropertyProviderId; }
79
80namespace basegfx
81{
82 class B2DPoint;
83 class B2DPolyPolygon;
84 class B2DHomMatrix;
85}
86
87namespace sdr { class ObjectUser; }
88namespace sdr::properties { class BaseProperties; }
89namespace sdr::contact { class ViewContact; }
90
91namespace svx { class PropertyChangeNotifier; }
92namespace com::sun::star::drawing { class XShape; }
93namespace svx::diagram { class IDiagramHelper; }
94
95
96enum class SdrInventor : sal_uInt32 {
97 Unknown = 0,
98 BasicDialog = sal_uInt32( 'D' | ('L' << 8) | ('G' << 16) | ('1' << 24) ),
99 Default = sal_uInt32( 'S' | ('V' << 8) | ('D' << 16) | ('r' << 24) ),
100 E3d = sal_uInt32( 'E' | ('3' << 8) | ('D' << 16) | ('1' << 24) ),
101 FmForm = sal_uInt32( 'F' | ('M' << 8) | ('0' << 16) | ('1' << 24) ),
102 IMap = sal_uInt32( 'I' | ('M' << 8) | ('A' << 16) | ('P' << 24) ),
103 ReportDesign = sal_uInt32( 'R' | ('P' << 8) | ('T' << 16) | ('1' << 24) ),
104 ScOrSwDraw = sal_uInt32( 'S' | ('C' << 8) | ('3' << 16) | ('0' << 24) ), // Used in sc/ and sw/
105 SgaImap = sal_uInt32( 'S' | ('D' << 8) | ('U' << 16) | ('D' << 24) ),
106 StarDrawUserData = sal_uInt32( 'S' | ('D' << 8) | ('U' << 16) | ('D' << 24) ),
107 Swg = sal_uInt32( 'S' | ('W' << 8) | ('G' << 16) ),
108};
109
110enum class SdrUserCallType {
111 MoveOnly, // only moved, size unchanged
112 Resize, // size and maybe position changed
113 ChangeAttr, // attribute changed. Eventually new size, because of line width
114 Delete, // object is going to be deleted soon, no attributes anymore
115 Inserted, // inserted into an object list (e.g. Page)
116 Removed, // removed from an object list
117 ChildMoveOnly, // a child within a group has changed
118 ChildResize, // a child within a group has changed
119 ChildChangeAttr, // a child within a group has changed
120 ChildDelete, // a child within a group has changed
121 ChildInserted, // a child within a group has changed
122 ChildRemoved // a child within a group has changed
123};
124
126{
127public:
128 virtual ~SdrObjUserCall();
129 virtual void Changed(const SdrObject& rObj, SdrUserCallType eType, const tools::Rectangle& rOldBoundRect);
130};
131
133{
134public:
138 sal_uInt16 nTol;
139
141};
142
149{
151 sal_uInt16 nIdentifier;
152
153 void operator=(const SdrObjUserData& rData) = delete;
154 bool operator==(const SdrObjUserData& rData) const = delete;
155 bool operator!=(const SdrObjUserData& rData) const = delete;
156
157public:
158 SdrObjUserData(SdrInventor nInv, sal_uInt16 nId);
159 SdrObjUserData(const SdrObjUserData& rData);
160 virtual ~SdrObjUserData();
161
162 virtual std::unique_ptr<SdrObjUserData> Clone(SdrObject* pObj1) const = 0; // #i71039# NULL -> 0
163 SdrInventor GetInventor() const { return nInventor;}
164 sal_uInt16 GetId() const { return nIdentifier;}
165};
166
171{
172public:
175 std::unique_ptr<SdrGluePointList>
183
184public:
186 virtual ~SdrObjGeoData();
187};
188
193{
194public:
195 bool bMoveAllowed : 1; // if false, object cannot be moved
196 bool bResizeFreeAllowed : 1; // if false, object cannot be resized freely
197 bool bResizePropAllowed : 1; // if false, object cannot even be resized proportionally
198 bool bRotateFreeAllowed : 1; // if false, object cannot be rotated freely
199 bool bRotate90Allowed : 1; // if false, object cannot even be rotated in 90 degree steps
200 bool bMirrorFreeAllowed : 1; // if false, object cannot be mirrored freely
201 bool bMirror45Allowed : 1; // if false, object cannot even be mirrored over axes in a 45 degree raster
202 bool bMirror90Allowed : 1; // if false, object cannot even be mirrored over axes in a 90 degree raster
203 bool bTransparenceAllowed : 1; // if false, object does not have an interactive transparence control
204 bool bShearAllowed : 1; // if false, object cannot be sheared
206 bool bNoOrthoDesired : 1; // is true for Rect; is false for BMP, MTF
207 bool bNoContortion : 1; // if false, contortion not possible (for crook, only true for PathObj and grouped PathObjs)
208 bool bCanConvToPath : 1; // if false, no conversion into PathObj possible
209 bool bCanConvToPoly : 1; // if false, no conversion into PolyObj possible
210 bool bCanConvToContour : 1; // if false, no conversion down to whole contour possible
211 bool bCanConvToPathLineToArea : 1; // if false, no conversion into PathObj with transformation from LineToArea possible
212 bool bCanConvToPolyLineToArea : 1; // if false, no conversion into PolyObj with transformation from LineToArea possible
213
215};
216
218//
219// SdrObject
220// SdrAttrObj
221// E3dObject
222// E3dCompoundObject
223// E3dCubeObj
224// E3dExtrudeObj
225// E3dLatheObj
226// E3dPolygonObj
227// E3dSphereObj
228// E3dScene
229// SdrTextObj
230// SdrObjCustomShape
231// OCustomShape
232// SdrEdgeObj
233// SdrMeasureObj
234// SdrPathObj
235// SdrRectObj
236// SdrCaptionObj
237// SdrCircObj
238// SdrGrafObj
239// SdrMediaObj
240// SdrOle2Obj
241// OOle2Obj
242// SdrUnoObj
243// DlgEdObj
244// DlgEdForm
245// OUnoObject
246// FmFormObj
247// SdrTableObj
248// SdrObjGroup
249// SdrPageObj
250// SdrVirtObj
251// SwDrawVirtObj
252// SwVirtFlyDrawObj
253// SwFlyDrawObj
254
257{
258public:
259 // Basic DiagramHelper support
260 virtual const std::shared_ptr< svx::diagram::IDiagramHelper >& getDiagramHelper() const;
261 bool isDiagram() const { return bool(getDiagramHelper()); }
262
263private:
264 friend class SdrObjListIter;
265 friend class SdrObjList;
266 friend class SdrVirtObj;
267 friend class SdrRectObj;
268
269 // OperationSmiley: Allow at each SdrObject to set a FillGeometryDefiningShape,
270 // so that for SdrObjects where this is set, the definition of a defined FillStyle
271 // will use this, but the local geometry will be filled. This allows to fill
272 // multiple shapes with a unified fill, e.g think about CustomShapes.
273 // Currently this is *only* used for CustomShapes, but may be developed to get a
274 // common mechanism - usages for it are easy to be found. The current limitation
275 // to CustomShapes allows to think about these SdrObjects to 'vanish' during the
276 // lifetime of 'this' - the SdrObjects without SdrPage and SdrModel are used as helper
277 // objects for SdrObjCustomShape and thus their lifetime is limited to the lifetime
278 // of this local object. For unifying this mechanism, some weak reference of
279 // SdrObjects would have to be thought about (not easy with the current implementation).
280 // So - allow *only* EnhancedCustomShape2d (which creates the visualizations for
281 // SdrObjCustomShape) to set this. Already allow unified read to use it - thus already
282 // allowing to implement as standard case for all kinds of SdrObjects.
285 void setFillGeometryDefiningShape(const SdrObject* pNew) { mpFillGeometryDefiningShape = pNew; }
286public:
287 const SdrObject* getFillGeometryDefiningShape() const { return mpFillGeometryDefiningShape; }
288
289private:
290 // the SdrModel this objects was created with, unchanged during SdrObject lifetime
292
293public:
294 // A SdrObject always needs a SdrModel for lifetime (Pool, ...)
295 SdrObject(SdrModel& rSdrModel);
296 // Copy constructor
297 SdrObject(SdrModel& rSdrModel, SdrObject const & rSource);
298
299 virtual void SAL_CALL acquire() noexcept override final;
300 virtual void SAL_CALL release() noexcept override final;
301
302 // SdrModel/SdrPage access on SdrObject level
303 SdrPage* getSdrPageFromSdrObject() const;
304 SdrModel& getSdrModelFromSdrObject() const;
305
306 // access to possible children (SdrObjGroup/E3dScene)
307 virtual SdrObjList* getChildrenOfSdrObject() const;
308
309 // access to parent
310 SdrObjList* getParentSdrObjListFromSdrObject() const;
311 SdrObject* getParentSdrObjectFromSdrObject() const;
312
313private:
314 SVX_DLLPRIVATE void setParentOfSdrObject(SdrObjList* pNew);
315
316public:
317 // react on model/page change
318 virtual void handlePageChange(SdrPage* pOldPage, SdrPage* pNewPage);
319
320 void AddObjectUser(sdr::ObjectUser& rNewUser);
321 void RemoveObjectUser(sdr::ObjectUser& rOldUser);
322
323 sdr::contact::ViewContact& GetViewContact() const;
324
325 virtual sdr::properties::BaseProperties& GetProperties() const;
326
327 // DrawContact support: Methods for handling Object changes
328 void ActionChanged() const;
329
330 static SdrItemPool& GetGlobalDrawObjectItemPool();
331 void SetRelativeWidth( double nValue );
332 void SetRelativeWidthRelation( sal_Int16 eValue );
333 void SetRelativeHeight( double nValue );
334 void SetRelativeHeightRelation( sal_Int16 eValue );
335 const double* GetRelativeWidth() const;
336 sal_Int16 GetRelativeWidthRelation() const;
337 const double* GetRelativeHeight() const;
338 sal_Int16 GetRelativeHeightRelation() const;
339
344 virtual void SetBoundAndSnapRectsDirty(bool bNotMyself = false, bool bRecursive = true);
345
346 // this method is only for access from Property objects
347 virtual void SetBoundRectDirty();
348
349 SfxItemPool & GetObjectItemPool() const;
350
351 void AddListener(SfxListener& rListener);
352 void RemoveListener(SfxListener& rListener);
353
354 void AddReference(SdrVirtObj& rVrtObj);
355 void DelReference(SdrVirtObj& rVrtObj);
356 virtual SdrInventor GetObjInventor() const;
357 virtual SdrObjKind GetObjIdentifier() const;
358 virtual void TakeObjInfo(SdrObjTransformInfoRec& rInfo) const;
359
360 // Layer interface
361 virtual SdrLayerID GetLayer() const;
362 virtual void NbcSetLayer(SdrLayerID nLayer);
363 virtual void SetLayer(SdrLayerID nLayer);
364 // renaming GetSdrLayerIDSet -> getMergedHierarchySdrLayerIDSet to make clear what happens here. rSet needs to be empty.
365 void getMergedHierarchySdrLayerIDSet(SdrLayerIDSet& rSet) const;
366
367 void SendUserCall(SdrUserCallType eUserCall, const tools::Rectangle& rBoundRect) const;
368
369 // #i68101#
370 // An object may have a user-set Name (Get/SetName()), e.g SdrGrafObj, SdrObjGroup
371 // or SdrOle2Obj.
372 // It may also have a Title and a Description for accessibility purposes.
373 void SetName(const OUString& rStr, const bool bSetChanged = true);
374 const OUString & GetName() const;
375 void MakeNameUnique();
376 void MakeNameUnique(std::unordered_set<OUString>& rNameSet);
377 void SetTitle(const OUString& rStr);
378 OUString GetTitle() const;
379 void SetDescription(const OUString& rStr);
380 OUString GetDescription() const;
381
382 // for group objects
383 bool IsGroupObject() const;
384 virtual SdrObjList* GetSubList() const;
385
392 sal_uInt32 GetOrdNum() const;
393
394 // setting the order number should only happen from the model or from the page
395 void SetOrdNum(sal_uInt32 nNum);
396
397 // GrabBagItem for interim interop purposes
398 void GetGrabBagItem(css::uno::Any& rVal) const;
399
400 virtual void SetGrabBagItem(const css::uno::Any& rVal);
401
402 // Return the position in the navigation order for the called object.
403 // Note that this method may update the navigation position of the
404 // called and of other SdrObjects. Therefore this method can not be
405 // const.
406 // @return
407 // If no navigation position has been explicitly defined then the
408 // result of GetOrdNum() is returned.
409 sal_uInt32 GetNavigationPosition() const;
410
411 // To make clearer that this method may trigger RecalcBoundRect and thus may be
412 // expensive and sometimes problematic (inside a bigger object change You will get
413 // non-useful BoundRects sometimes) i rename that method from GetBoundRect() to
414 // GetCurrentBoundRect().
415 virtual const tools::Rectangle& GetCurrentBoundRect() const;
416
417 // To have a possibility to get the last calculated BoundRect e.g for producing
418 // the first rectangle for repaints (old and new need to be used) without forcing
419 // a RecalcBoundRect (which may be problematical and expensive sometimes) i add here
420 // a new method for accessing the last BoundRect.
421 virtual const tools::Rectangle& GetLastBoundRect() const;
422
423 virtual void RecalcBoundRect();
424
425 void BroadcastObjectChange() const;
426
427 const SfxBroadcaster* GetBroadcaster() const;
428
429 // set modified-flag in the model
430 virtual void SetChanged();
431
432 // Tooling for painting a single object to an OutputDevice. This will be needed as long
433 // as not all painting is changed to use DrawContact objects.
434 void SingleObjectPainter(OutputDevice& rOut) const;
435 bool LineGeometryUsageIsNecessary() const;
436
437 // RotGrfFlyFrame: If true, this SdrObject supports only limited rotation, that
438 // means no change of the rotation point (only centered) and no shear allowed
439 virtual bool HasLimitedRotation() const;
440
441 // Returns a copy of the object. Every inherited class must reimplement this.
442 virtual rtl::Reference<SdrObject> CloneSdrObject(SdrModel& rTargetModel) const;
443 // helper, since Clone always return the type of the current subclass
444 template<class T>
445 static rtl::Reference<T> Clone(T const & rObj, SdrModel& rTargetModel)
446 {
447 rtl::Reference<SdrObject> newObj = rObj.CloneSdrObject(rTargetModel);
448 return static_cast<T*>(newObj.get());
449 }
450
451 // Overwriting this object makes no sense, it is too complicated for that
452 SdrObject& operator=(const SdrObject& rObj) = delete;
453 SdrObject& operator=(SdrObject&& rObj) = delete;
454
455 // TakeObjName...() is for the display in the UI, e.g. "3 frames selected"
456 virtual OUString TakeObjNameSingul() const;
457 virtual OUString TakeObjNamePlural() const;
458
462 virtual basegfx::B2DPolyPolygon TakeXorPoly() const;
463
465 virtual basegfx::B2DPolyPolygon TakeContour() const;
466
478 virtual sal_uInt32 GetHdlCount() const;
479 virtual void AddToPlusHdlList(SdrHdlList& rHdlList, SdrHdl& rHdl) const;
480 virtual void AddToHdlList(SdrHdlList& rHdlList) const;
481 virtual void addCropHandles(SdrHdlList& rTarget) const;
482
493 virtual bool hasSpecialDrag() const;
494 virtual bool beginSpecialDrag(SdrDragStat& rDrag) const;
495 virtual bool applySpecialDrag(SdrDragStat& rDrag);
496 virtual OUString getSpecialDragComment(const SdrDragStat& rDrag) const;
497 virtual basegfx::B2DPolyPolygon getSpecialDragPoly(const SdrDragStat& rDrag) const;
498
499 // FullDrag support. This is for standard interactions and for SdrObjOwn
500 // support. If supportsFullDrag() returns true, getFullDragClone has to
501 // return a cloned SdrObject (who's ownership it loses) at which modifications
502 // like Move(), Scale(), etc or applySpecialDrag() will be executed. That
503 // object will be visualized on overlay for full drag, but should not be
504 // part of the model, thus not changing anything since it's only a temporary
505 // helper object for interaction
506 virtual bool supportsFullDrag() const;
507 virtual rtl::Reference<SdrObject> getFullDragClone() const;
508
522 virtual bool BegCreate(SdrDragStat& rStat);
523 virtual bool MovCreate(SdrDragStat& rStat); // if true, Xor needs to be repainted
524 virtual bool EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
525 virtual bool BckCreate(SdrDragStat& rStat);
526 virtual void BrkCreate(SdrDragStat& rStat);
527
529 virtual PointerStyle GetCreatePointer() const;
530
532 virtual basegfx::B2DPolyPolygon TakeCreatePoly(const SdrDragStat& rDrag) const;
533
539 virtual void NbcMove (const Size& rSiz);
540 virtual void NbcResize(const Point& rRef, const Fraction& xFact, const Fraction& yFact);
541 virtual void NbcCrop (const basegfx::B2DPoint& rRef, double fxFact, double fyFact);
542 virtual void NbcRotate(const Point& rRef, Degree100 nAngle, double sn, double cs);
543 // Utility for call sites that don't have sin and cos handy
544 void NbcRotate(const Point& rRef, Degree100 nAngle);
545 virtual void NbcMirror(const Point& rRef1, const Point& rRef2);
546 virtual void NbcShear (const Point& rRef, Degree100 nAngle, double tn, bool bVShear);
547
548 virtual void Move (const Size& rSiz);
549 virtual void Resize(const Point& rRef, const Fraction& xFact, const Fraction& yFact, bool bUnsetRelative = true);
550 virtual void Crop (const basegfx::B2DPoint& rRef, double fxFact, double fyFact);
551 virtual void Rotate(const Point& rRef, Degree100 nAngle, double sn, double cs);
552 virtual void Mirror(const Point& rRef1, const Point& rRef2);
553 virtual void Shear (const Point& rRef, Degree100 nAngle, double tn, bool bVShear);
554
557 virtual void NbcSetRelativePos(const Point& rPnt);
558 virtual void SetRelativePos(const Point& rPnt);
559 virtual Point GetRelativePos() const;
560 void ImpSetAnchorPos(const Point& rPnt);
561 virtual void NbcSetAnchorPos(const Point& rPnt);
562 virtual void SetAnchorPos(const Point& rPnt);
563
568 virtual void RecalcSnapRect();
569 virtual const tools::Rectangle& GetSnapRect() const;
570 virtual void SetSnapRect(const tools::Rectangle& rRect);
571 virtual void NbcSetSnapRect(const tools::Rectangle& rRect);
572
573 // Logic Rect: for the Rect for instance without regard to rotation angle, shear, ...
574 virtual const tools::Rectangle& GetLogicRect() const;
575 virtual void SetLogicRect(const tools::Rectangle& rRect);
576 virtual void NbcSetLogicRect(const tools::Rectangle& rRect);
577
578 // the default is to set the logic rect to the given rectangle rMaxRect. If the shape
579 // has an intrinsic aspect ratio it may set the logic rect so the aspect
580 // ratio is kept but still inside the rectangle rMaxRect.
581 // If bShrinkOnly is set to true, the size of the current logic rect will not
582 // be changed if it is smaller than the given rectangle rMaxRect.
583 virtual void AdjustToMaxRect( const tools::Rectangle& rMaxRect, bool bShrinkOnly = false );
584
585 // rotation and shear angle
586 virtual Degree100 GetRotateAngle() const;
587 virtual Degree100 GetShearAngle(bool bVertical = false) const;
588
590 virtual sal_uInt32 GetSnapPointCount() const;
591 virtual Point GetSnapPoint(sal_uInt32 i) const;
592
593 // For objects, whose points can be moved individually.
594 // (e.g. polygons, polylines, lines)
595 // The points of those objects are selected (if necessary multiselection),
596 // deleted, inserted, or as a multiselection moved or rotated...
597 // Only such objects can have PlusHandles (e.g. the weights of a Bezier curve).
598 virtual bool IsPolyObj() const;
599 virtual sal_uInt32 GetPointCount() const;
600 virtual Point GetPoint(sal_uInt32 i) const;
601 void SetPoint(const Point& rPnt, sal_uInt32 i);
602 virtual void NbcSetPoint(const Point& rPnt, sal_uInt32 i);
603
604 // get all geometrical data for undo/redo
605 virtual std::unique_ptr<SdrObjGeoData> GetGeoData() const;
606 virtual void SetGeoData(const SdrObjGeoData& rGeo);
607
608 // ItemSet access
609 const SfxItemSet& GetMergedItemSet() const;
610 void SetMergedItem(const SfxPoolItem& rItem);
611 void ClearMergedItem(const sal_uInt16 nWhich = 0);
612 void SetMergedItemSet(const SfxItemSet& rSet, bool bClearAllItems = false);
613 const SfxPoolItem& GetMergedItem(const sal_uInt16 nWhich) const;
614 template<class T>
615 const T& GetMergedItem( TypedWhichId<T> nWhich ) const
616 {
617 return static_cast<const T&>(GetMergedItem(sal_uInt16(nWhich)));
618 }
619
620 // syntactical sugar for ItemSet accesses
621 void SetMergedItemSetAndBroadcast(const SfxItemSet& rSet, bool bClearAllItems = false);
622
623 // NotPersistAttr for Layer, ObjName, geometrical transformations etc.
624 void TakeNotPersistAttr(SfxItemSet& rAttr) const;
625 void ApplyNotPersistAttr(const SfxItemSet& rAttr);
626 void NbcApplyNotPersistAttr(const SfxItemSet& rAttr);
627
628 // if bDontRemoveHardAttr is false, set all attributes, which were set in the style sheet, to their default value
629 // if true, all hard attributes keep their values
630 void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr);
631 void NbcSetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr);
632 SfxStyleSheet* GetStyleSheet() const;
633
634 virtual bool HasTextEdit() const;
635
636 // keep text in outliner's format
637 // SetOutlinerParaObject: transfer ownership of *pTextObject!
638 void SetOutlinerParaObject(std::optional<OutlinerParaObject> pTextObject);
639 virtual void NbcSetOutlinerParaObject(std::optional<OutlinerParaObject> pTextObject);
640 virtual OutlinerParaObject* GetOutlinerParaObject() const;
641 virtual void NbcReformatText();
642
643 void BurnInStyleSheetAttributes();
644
645 // macro abilities, e.g. a rectangle as PushButton.
646 virtual bool HasMacro() const;
647 virtual SdrObject* CheckMacroHit (const SdrObjMacroHitRec& rRec) const;
648 virtual PointerStyle GetMacroPointer (const SdrObjMacroHitRec& rRec) const;
649 virtual void PaintMacro (OutputDevice& rOut, const tools::Rectangle& rDirtyRect, const SdrObjMacroHitRec& rRec) const;
650 virtual bool DoMacro (const SdrObjMacroHitRec& rRec);
651 bool IsMacroHit(const SdrObjMacroHitRec& rRec) const;
652
653 // Connectors
654 // (see also documentation in SvdoEdge.hxx, SdrEdgeObj, as well as SvdGlue.hxx and SvdGlEV.hxx)
655 //
656 // There are nodes and edges. In theory an edge can also be a node, but this isn't implemented yet.
657 // A node has a number of gluepoints, onto which edges can glued to
658 // An edge can be either
659 // - without any connection to any node,
660 // - or connected on one end to a node, while the other end is not connected,
661 // - or connected on both ends with exactly one node each.
662 // The edge is listener for its up to two nodes.
663 // Whenever a node is moved or resized, all its connected edges follow.
664 // This is also true for SetGluePoint()... on the node.
665 // On the other hand, moving/resizing an edge breaks the connection.
666
667 // automatic gluepoints:
668 // a node object must provide four vertex and corner positions
669 // usually 0: top, 1: right, 2: bottom, 3: left
670 virtual SdrGluePoint GetVertexGluePoint(sal_uInt16 nNum) const;
671
672 // usually:
673 // 0: top-left, 1: top-right, 2: bottom-right, 3: bottom-left
674 virtual SdrGluePoint GetCornerGluePoint(sal_uInt16 nNum) const;
675
676 // list of all gluepoints, can be NULL
677 virtual const SdrGluePointList* GetGluePointList() const;
678
679 // after changing the GluePointList, one has to call the object's SendRepaintBroadcast!
680 virtual SdrGluePointList* ForceGluePointList();
681
682 // to be set temporarily when transforming related object(?)
683 void SetGlueReallyAbsolute(bool bOn);
684 void NbcRotateGluePoints(const Point& rRef, Degree100 nAngle, double sn, double cs);
685 void NbcMirrorGluePoints(const Point& rRef1, const Point& rRef2);
686 void NbcShearGluePoints (const Point& rRef, double tn, bool bVShear);
687
688 // if bTail1 is true, line start, otherwise line end
689 // if pObj is null disconnect
690 virtual void ConnectToNode(bool bTail1, SdrObject* pObj);
691 virtual void DisconnectFromNode(bool bTail1);
692 virtual SdrObject* GetConnectedNode(bool bTail1) const;
693
694 // sets the writing mode of the object's context
695 // Objects which itself do not support different writing modes will ignore this call.
696 // Objects which support different writing modes, but have an own, explicit writing mode set,
697 // will also ignore this call.
698 // Objects which support different writing modes, and whose own mode is set to css.text.WritingMode2.CONTEXT,
699 // will use the given writing mode to calculate their "effective writing mode".
700 // The behaviour of this method is undefined if you pass css.text.WritingMode2.CONTEXT.
701 // @param _nContextWritingMode
702 // the effective writing mode of the context of the object
703 virtual void SetContextWritingMode( const sal_Int16 _nContextWritingMode );
704
705 // If an object is able to convert itself into a polygon or into a Bezier curve (or into both),
706 // then the following methods should be overridden.
707 // E.g., convert a RectObj with line width 10, SOLID_PEN into a polygon:
708 // In the bLineToArea=false mode a PolyObj with four supporting points,
709 // line width 10 and SOLID_PEN shall be created.
710 // On the contrary in the bLineToArea=true mode the generated object should
711 // still have a line attribute NULL_PEN, and the line (also line pattern)
712 // itself should be emulated by the polygon area, which thereby can be
713 // manipulated by the user afterwards.
714 // The RectObj therefore can only convert correctly if it has an area attribute NULL_BRUSH.
715 // In this case it would have to:
716 // - set SOLID_BRUSH with the color of the given pen,
717 // - set NULL_PEN, and
718 // - generate tools::PolyPolygon with two polygons with four supporting points each.
719 // In each case the return value is a SdrObject*, because it is also
720 // allowed to return group objects (e.g. for SdrTextObj).
721 // In the case of the conversion from TextObj to PathObj,
722 // both modi (bLineToArea=true/false) would be identical.
723 // The methods' default implementations report "I'm unable to do this" (false/null).
724 virtual rtl::Reference<SdrObject> DoConvertToPolyObj(bool bBezier, bool bAddText) const;
725 rtl::Reference<SdrObject> ConvertToPolyObj(bool bBezier, bool bLineToArea) const;
726
727 // convert this path object to contour object; bForceLineDash converts even
728 // when there is no filled new polygon created from line-to-polygon conversion,
729 // specially used for XLINE_DASH and 3D conversion
730 rtl::Reference<SdrObject> ConvertToContourObj(SdrObject* pRet, bool bForceLineDash = false) const;
731private:
732 rtl::Reference<SdrObject> ImpConvertToContourObj(bool bForceLineDash);
733public:
734
735 // if true, reference onto an object
736 bool IsVirtualObj() const { return m_bVirtObj;}
737
738 // is true, if object can probably be filled
739 // is false, if object has probably line ends
740 // is invalid, if this is a group object
741 bool IsClosedObj() const { return m_bClosedObj;}
742
743 // tdf#118662 reorganize inserted state, no local bool needed anymore,
744 // it depends on being a member of a SdrObjList
745 void InsertedStateChange();
746 bool IsInserted() const { return nullptr != getParentSdrObjListFromSdrObject(); }
747
748 bool IsEdgeObj() const { return m_bIsEdge;}
749 bool Is3DObj() const { return m_bIs3DObj;}
750 bool IsUnoObj() const { return m_bIsUnoObj;}
751 void SetMoveProtect(bool bProt);
752 bool IsMoveProtect() const { return m_bMovProt;}
753 void SetResizeProtect(bool bProt);
754 bool IsResizeProtect() const { return m_bSizProt;}
755 void SetPrintable(bool bPrn);
756 bool IsPrintable() const { return !m_bNoPrint;}
757 void SetVisible(bool bVisible);
758 bool IsVisible() const { return mbVisible;}
759 void SetMarkProtect(bool bProt);
760 bool IsMarkProtect() const { return m_bMarkProt;}
761
763 virtual bool shouldKeepAspectRatio() const { return false; }
764
765 // application specific data
766 sal_uInt16 GetUserDataCount() const;
767 SdrObjUserData* GetUserData(sal_uInt16 nNum) const;
768
769 void AppendUserData(std::unique_ptr<SdrObjUserData> pData);
770
771 // removes the record from the list and performs delete (FreeMem+Dtor).
772 void DeleteUserData(sal_uInt16 nNum);
773
774 // access to the UNO representation of the shape
775 virtual css::uno::Reference< css::drawing::XShape > getUnoShape();
776
777 static SdrObject* getSdrObjectFromXShape( const css::uno::Reference< css::uno::XInterface >& xInt );
778
779 // retrieves the instance responsible for notifying changes in the properties of the shape associated with
780 // the SdrObject
781 //
782 // @precond
783 // There already exists an SvxShape instance associated with the SdrObject
784 // @throws css::uno::RuntimeException
785 // if there does nt yet exists an SvxShape instance associated with the SdrObject.
786 svx::PropertyChangeNotifier& getShapePropertyChangeNotifier();
787
788 // notifies a change in the given property, to all applicable listeners registered at the associated SvxShape
789 //
790 // This method is equivalent to calling getShapePropertyChangeNotifier().notifyPropertyChange( _eProperty ),
791 // exception that it is allowed to be called when there does not yet exist an associated SvxShape - in which
792 // case the method will silently return without doing anything.
793 void notifyShapePropertyChange( const svx::ShapePropertyProviderId _eProperty ) const;
794
795 // transformation interface for StarOfficeAPI. This implements support for
796 // homogen 3x3 matrices containing the transformation of the SdrObject. At the
797 // moment it contains a shearX, rotation and translation, but for setting all linear
798 // transforms like Scale, ShearX, ShearY, Rotate and Translate are supported.
799 //
800 // gets base transformation and rectangle of object. If it's an SdrPathObj it fills the PolyPolygon
801 // with the base geometry and returns TRUE. Otherwise it returns FALSE.
802 virtual bool TRGetBaseGeometry(basegfx::B2DHomMatrix& rMatrix, basegfx::B2DPolyPolygon& rPolyPolygon) const;
803
804 // sets the base geometry of the object using infos contained in the homogen 3x3 matrix.
805 // If it's an SdrPathObj it will use the provided geometry information. The Polygon has
806 // to use (0,0) as upper left and will be scaled to the given size in the matrix.
807 virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon);
808
809 // give info if object is in destruction
810 bool IsInDestruction() const;
811
812 // return if fill is != XFILL_NONE
813 bool HasFillStyle() const;
814 bool HasLineStyle() const;
815
816 // on import of OLE object from MS documents the BLIP size might be retrieved,
817 // the following methods are used to control it;
818 // usually this data makes no sense after the import is finished, since the object
819 // might be resized
820 const tools::Rectangle& GetBLIPSizeRectangle() const { return maBLIPSizeRectangle;}
821 void SetBLIPSizeRectangle( const tools::Rectangle& aRect );
822
823 // #i121917#
824 virtual bool HasText() const;
825
826 bool Equals(const SdrObject&) const;
827
828 virtual void dumpAsXml(xmlTextWriterPtr pWriter) const;
829
831 virtual bool IsTextBox() const;
832
833 void SetEmptyPresObj(bool bEpt);
834 bool IsEmptyPresObj() const { return m_bEmptyPresObj;}
835 void SetNotVisibleAsMaster(bool bFlg);
836 bool IsNotVisibleAsMaster() const { return m_bNotVisibleAsMaster;}
837 void SetUserCall(SdrObjUserCall* pUser);
838 SdrObjUserCall* GetUserCall() const { return m_pUserCall;}
840 void SetDoNotInsertIntoPageAutomatically(bool bSet);
842 bool IsDoNotInsertIntoPageAutomatically() const { return mbDoNotInsertIntoPageAutomatically;}
843
844 // Warning: this method should only be used if you really know what you're doing
845 sal_uInt32 GetOrdNumDirect() const { return m_nOrdNum;}
846
847 // #i25616#
848 bool DoesSupportTextIndentingOnLineWidthChange() const { return mbSupportTextIndentingOnLineWidthChange;}
849
850 const Point& GetAnchorPos() const;
851
852 // #i25616#
853 bool LineIsOutsideGeometry() const { return mbLineIsOutsideGeometry;}
854
855 // Set the position in the navigation position to the given value.
856 // This method is typically used only by the model after a change to
857 // the navigation order.
858 // This method does not change the navigation position of other
859 // objects.
860 // Use SdrObjList::SetObjectNavigationPosition() instead.
861 void SetNavigationPosition (const sal_uInt32 nPosition);
862
875 virtual void setUnoShape( const css::uno::Reference< css::drawing::XShape >& _rxUnoShape );
876
877 const css::uno::WeakReference< css::drawing::XShape >& getWeakUnoShape() const { return maWeakUnoShape; }
878
879 void setSuitableOutlinerBg(Outliner& rOutliner) const;
880 // If fillstyle is drawing::FillStyle_BITMAP, returns the graphic.
881 const Graphic* getFillGraphic() const;
882
883 const OUString& getHyperlink() const { return msHyperlink; }
884 void setHyperlink(const OUString& sHyperlink) { msHyperlink = sHyperlink; }
885
886 void ForceMetricToItemPoolMetric(basegfx::B2DPolyPolygon& rPolyPolygon) const noexcept;
887
888protected:
889 const tools::Rectangle& getOutRectangle() const;
890 void setOutRectangleConst(tools::Rectangle const& rRectangle) const; // need to do something about this
891 void setOutRectangle(tools::Rectangle const& rRectangle);
892 void resetOutRectangle();
893 void moveOutRectangle(sal_Int32 nXDelta, sal_Int32 nYDelta);
894
895 mutable tools::Rectangle m_aOutRect; // surrounding rectangle for Paint (incl. LineWidth, ...)
896 Point m_aAnchor; // anchor position (Writer)
898 std::unique_ptr<SdrObjPlusData>
899 m_pPlusData; // Broadcaster, UserData, connectors, ... (this is the Bitsack)
900 // object is only pointing to another one
901 bool m_bVirtObj : 1;
903 // the following flags will be streamed
904 bool m_bMovProt : 1; // if true, the position is protected
905 bool m_bSizProt : 1; // if true, the size is protected
906 // If bEmptyPresObj is true, it is a presentation object that has no content yet.
907 // The flag's default value is false.
908 // The management is done by the application.
909 // Neither assign operator nor cloning copies the flag!
910 // The flag is persistent.
911 bool m_bEmptyPresObj : 1; // empty presentation object (Draw)
912 // if true, object is invisible as object of the MasterPage
914 // if true, the object is closed, i.e. no line, arc...
915 bool m_bClosedObj : 1;
916 bool m_bIsEdge : 1;
917 bool m_bIs3DObj : 1;
918 bool m_bIsUnoObj : 1;
919 // #i25616#
921 // #i25616#
923
924 virtual ~SdrObject() override;
925
926 virtual std::unique_ptr<sdr::properties::BaseProperties> CreateObjectSpecificProperties();
927
928 virtual std::unique_ptr<sdr::contact::ViewContact> CreateObjectSpecificViewContact();
929
930 tools::Rectangle ImpDragCalcRect(const SdrDragStat& rDrag) const;
931
932 // for GetDragComment
933 OUString ImpGetDescriptionStr(TranslateId pStrCacheID) const;
934
935 void ImpForcePlusData();
936
937 OUString GetMetrStr(tools::Long nVal) const;
938
943 virtual std::unique_ptr<SdrObjGeoData> NewGeoData() const;
944 virtual void SaveGeoData(SdrObjGeoData& rGeo) const;
945 virtual void RestoreGeoData(const SdrObjGeoData& rGeo);
946
947 // internal versions
948 const SfxItemSet& GetObjectItemSet() const;
949 void SetObjectItem(const SfxPoolItem& rItem);
950 void SetObjectItemSet(const SfxItemSet& rSet);
951 const SfxPoolItem& GetObjectItem(const sal_uInt16 nWhich) const;
952 template<class T> const T& GetObjectItem( TypedWhichId<T> nWhich ) const
953 {
954 return static_cast<const T&>(GetObjectItem(sal_uInt16(nWhich)));
955 }
956
957 const SfxItemSet* getBackgroundFillSet() const;
958
959 virtual void InternalSetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr, bool bBroadcast);
960
961private:
962 struct Impl;
963 std::unique_ptr<Impl> mpImpl;
964 SdrObjList* mpParentOfSdrObject; // list that includes this object
965 sal_uInt32 m_nOrdNum; // order number of the object in the list
966 std::unique_ptr<SfxGrabBagItem> m_pGrabBagItem; // holds the GrabBagItem property
967 // Position in the navigation order. SAL_MAX_UINT32 when not used.
970 bool m_bNoPrint : 1; // if true, the object is not printed.
971 bool mbVisible : 1; // if false, the object is not visible on screen (but maybe on printer, depending on bNoprint
972 bool m_bMarkProt : 1; // marking forbidden, persistent
973 // on import of OLE object from MS documents the BLIP size might be retrieved,
974 // in this case the following member is initialized as nonempty rectangle
976 std::unique_ptr<sdr::properties::BaseProperties>
978 std::unique_ptr<sdr::contact::ViewContact>
980
981 // do not use directly, always use getSvxShape() if you have to, because not all
982 // SdrObjects have an associated SvxShape subclass (e.g. reportdesign)
984 css::uno::WeakReference< css::drawing::XShape >
986
987 // HACK: Do not automatically insert newly created object into a page.
988 // The user needs to do it manually later.
990 // Hyperlink for the whole shape
991 OUString msHyperlink;
992
993 // only for internal use!
994 SvxShape* getSvxShape();
995
996 SdrObject( const SdrObject& ) = delete;
997};
998
1000{
1004};
1005
1015{
1016public:
1017 static rtl::Reference<SdrObject> MakeNewObject(
1018 SdrModel& rSdrModel,
1019 SdrInventor nInventor,
1020 SdrObjKind nObjIdentifier,
1021 const tools::Rectangle* pSnapRect = nullptr);
1022
1023 static void InsertMakeObjectHdl(Link<SdrObjCreatorParams, rtl::Reference<SdrObject>> const & rLink);
1024 static void RemoveMakeObjectHdl(Link<SdrObjCreatorParams, rtl::Reference<SdrObject>> const & rLink);
1025
1026private:
1027 static SVX_DLLPRIVATE rtl::Reference<SdrObject> CreateObjectFromFactory(
1028 SdrModel& rSdrModel,
1029 SdrInventor nInventor,
1030 SdrObjKind nIdentifier);
1031
1032 SdrObjFactory() = delete;
1033};
1034
1035/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
static void GetPoint(const tools::Polygon &rPoly, const std::vector< double > &rDistances, const double &fX, double &fx1, double &fy1)
SAL_DLLPRIVATE Degree100 GetRotateAngle() const
const tools::Rectangle & GetLogicRect() const
Whoever creates his own objects must set a link in the SdrObjFactory class.
Definition: svdobj.hxx:1015
SdrObjFactory()=delete
All geometrical data of an arbitrary object for use in undo/redo.
Definition: svdobj.hxx:171
bool bClosedObj
Definition: svdobj.hxx:180
Point aAnchor
Definition: svdobj.hxx:174
std::unique_ptr< SdrGluePointList > pGPL
Definition: svdobj.hxx:176
bool bMovProt
Definition: svdobj.hxx:177
SdrLayerID mnLayerID
Definition: svdobj.hxx:182
bool bSizProt
Definition: svdobj.hxx:178
tools::Rectangle aBoundRect
Definition: svdobj.hxx:173
bool bNoPrint
Definition: svdobj.hxx:179
bool mbVisible
Definition: svdobj.hxx:181
const SdrPageView * pPageView
Definition: svdobj.hxx:137
const SdrLayerIDSet * pVisiLayer
Definition: svdobj.hxx:136
sal_uInt16 nTol
Definition: svdobj.hxx:138
Provides information about various ZObject properties.
Definition: svdobj.hxx:193
User data of a drawing object, e.g.
Definition: svdobj.hxx:149
sal_uInt16 nIdentifier
Definition: svdobj.hxx:151
bool operator==(const SdrObjUserData &rData) const =delete
SdrInventor GetInventor() const
Definition: svdobj.hxx:163
void operator=(const SdrObjUserData &rData)=delete
sal_uInt16 GetId() const
Definition: svdobj.hxx:164
SdrInventor nInventor
Definition: svdobj.hxx:150
virtual std::unique_ptr< SdrObjUserData > Clone(SdrObject *pObj1) const =0
bool operator!=(const SdrObjUserData &rData) const =delete
Abstract DrawObject.
Definition: svdobj.hxx:257
sal_uInt32 GetOrdNumDirect() const
Definition: svdobj.hxx:845
SdrObject(const SdrObject &)=delete
bool IsResizeProtect() const
Definition: svdobj.hxx:754
SdrObject & operator=(const SdrObject &rObj)=delete
std::unique_ptr< Impl > mpImpl
Definition: svdobj.hxx:962
SdrObjUserCall * GetUserCall() const
Definition: svdobj.hxx:838
const css::uno::WeakReference< css::drawing::XShape > & getWeakUnoShape() const
Definition: svdobj.hxx:877
bool mbLineIsOutsideGeometry
Definition: svdobj.hxx:920
const T & GetMergedItem(TypedWhichId< T > nWhich) const
Definition: svdobj.hxx:615
SdrModel & mrSdrModelFromSdrObject
Definition: svdobj.hxx:291
const tools::Rectangle & GetBLIPSizeRectangle() const
Definition: svdobj.hxx:820
const SdrObject * mpFillGeometryDefiningShape
Definition: svdobj.hxx:284
bool m_bIs3DObj
Definition: svdobj.hxx:917
tools::Rectangle maBLIPSizeRectangle
Definition: svdobj.hxx:975
const OUString & getHyperlink() const
Definition: svdobj.hxx:883
bool IsUnoObj() const
Definition: svdobj.hxx:750
bool IsDoNotInsertIntoPageAutomatically() const
Definition: svdobj.hxx:842
std::unique_ptr< SdrObjPlusData > m_pPlusData
Definition: svdobj.hxx:899
bool m_bMovProt
Definition: svdobj.hxx:904
bool isDiagram() const
Definition: svdobj.hxx:261
bool IsMoveProtect() const
Definition: svdobj.hxx:752
bool IsEdgeObj() const
Definition: svdobj.hxx:748
bool LineIsOutsideGeometry() const
Definition: svdobj.hxx:853
bool mbSupportTextIndentingOnLineWidthChange
Definition: svdobj.hxx:922
bool IsClosedObj() const
Definition: svdobj.hxx:741
Point m_aAnchor
Definition: svdobj.hxx:896
SdrObjList * mpParentOfSdrObject
Definition: svdobj.hxx:964
bool m_bMarkProt
Definition: svdobj.hxx:972
bool m_bSnapRectDirty
Definition: svdobj.hxx:902
bool IsEmptyPresObj() const
Definition: svdobj.hxx:834
const SdrObject * getFillGeometryDefiningShape() const
Definition: svdobj.hxx:287
bool DoesSupportTextIndentingOnLineWidthChange() const
Definition: svdobj.hxx:848
bool Is3DObj() const
Definition: svdobj.hxx:749
SdrObjUserCall * m_pUserCall
Definition: svdobj.hxx:897
bool IsVirtualObj() const
Definition: svdobj.hxx:736
std::unique_ptr< SfxGrabBagItem > m_pGrabBagItem
Definition: svdobj.hxx:966
bool m_bIsUnoObj
Definition: svdobj.hxx:918
sal_uInt32 m_nOrdNum
Definition: svdobj.hxx:965
tools::Rectangle m_aOutRect
Definition: svdobj.hxx:895
bool m_bIsEdge
Definition: svdobj.hxx:916
OUString msHyperlink
Definition: svdobj.hxx:991
bool IsVisible() const
Definition: svdobj.hxx:758
std::unique_ptr< sdr::contact::ViewContact > mpViewContact
Definition: svdobj.hxx:979
bool mbVisible
Definition: svdobj.hxx:971
bool IsInserted() const
Definition: svdobj.hxx:746
bool IsPrintable() const
Definition: svdobj.hxx:756
bool IsMarkProtect() const
Definition: svdobj.hxx:760
const T & GetObjectItem(TypedWhichId< T > nWhich) const
Definition: svdobj.hxx:952
SdrObject & operator=(SdrObject &&rObj)=delete
bool m_bNoPrint
Definition: svdobj.hxx:970
bool m_bClosedObj
Definition: svdobj.hxx:915
SvxShape * mpSvxShape
Definition: svdobj.hxx:983
bool m_bVirtObj
Definition: svdobj.hxx:901
bool mbDoNotInsertIntoPageAutomatically
Definition: svdobj.hxx:989
SdrLayerID mnLayerID
Definition: svdobj.hxx:969
bool IsNotVisibleAsMaster() const
Definition: svdobj.hxx:836
css::uno::WeakReference< css::drawing::XShape > maWeakUnoShape
Definition: svdobj.hxx:985
sal_uInt32 mnNavigationPosition
Definition: svdobj.hxx:968
bool m_bSizProt
Definition: svdobj.hxx:905
std::unique_ptr< sdr::properties::BaseProperties > mpProperties
Definition: svdobj.hxx:977
bool m_bNotVisibleAsMaster
Definition: svdobj.hxx:913
bool m_bEmptyPresObj
Definition: svdobj.hxx:911
virtual bool shouldKeepAspectRatio() const
Whether the aspect ratio should be kept by default when resizing.
Definition: svdobj.hxx:763
void setHyperlink(const OUString &sHyperlink)
Definition: svdobj.hxx:884
void setFillGeometryDefiningShape(const SdrObject *pNew)
Definition: svdobj.hxx:285
A SdrPage contains exactly one SdrObjList and a description of the physical page dimensions (size / m...
Definition: svdpage.hxx:377
Rectangle objects (rectangle, circle, ...)
Definition: svdorect.hxx:39
FIXME: The virtual object is not yet fully implemented and tested.
Definition: svdovirt.hxx:30
void dumpAsXml(xmlTextWriterPtr pWriter) const
virtual std::unique_ptr< SfxItemSet > Clone(bool bItems=true, SfxItemPool *pToPool=nullptr) const
bool Equals(const SfxItemSet &, bool bComparePool) const
helper class for notifying XPropertyChangeListeners
struct _xmlTextWriter * xmlTextWriterPtr
DocumentType eType
sal_Int16 nValue
Definition: fmsrccfg.cxx:81
Point Rotate(const Point &rPoint, Degree10 nOrientation, const Point &rOrigin)
Unknown
long Long
PointerStyle
SdrObjKind nObjIdentifier
Definition: svdobj.hxx:1002
SdrModel & rSdrModel
Definition: svdobj.hxx:1003
SdrInventor nInventor
Definition: svdobj.hxx:1001
SdrInventor
Definition: svdobj.hxx:96
SdrUserCallType
Definition: svdobj.hxx:110
SdrObjKind
Definition: svdobjkind.hxx:25
SdrCreateCmd
Definition: svdtypes.hxx:27
#define SVX_DLLPRIVATE
Definition: svxdllapi.h:30
#define SVXCORE_DLLPUBLIC
Definition: svxdllapi.h:35
bool mbVisible