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