diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2016-11-21 22:00:56 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2016-11-22 06:37:23 +0000 |
commit | b39dfb4703ba5225da3cdc2911461e4cae83aa8e (patch) | |
tree | d577544114045c4f28c96e136f67234971a4bf23 /include | |
parent | 6f9cdf0814c8364ee6000075f8c04bc7fa2e51f8 (diff) |
re-organise SdrObject class definition
it had public/private/protected sections all over the place.
Also use loplugin can-be-private analysis to make some fields and
methods private.
Change-Id: Ibb3c8d1f58753ff5599d94106f0991af152217d2
Reviewed-on: https://gerrit.libreoffice.org/31055
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'include')
-rw-r--r-- | include/svx/svdobj.hxx | 323 |
1 files changed, 145 insertions, 178 deletions
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx index ace6f5367e02..ec29c0019c6d 100644 --- a/include/svx/svdobj.hxx +++ b/include/svx/svdobj.hxx @@ -276,110 +276,24 @@ public: class SvxShape; class SVX_DLLPUBLIC SdrObject: public SfxListener, public tools::WeakBase< SdrObject > { -private: - struct Impl; - std::unique_ptr<Impl> mpImpl; - - SdrObject( const SdrObject& ) = delete; - -public: - void AddObjectUser(sdr::ObjectUser& rNewUser); - void RemoveObjectUser(sdr::ObjectUser& rOldUser); - - // BaseProperties section -private: - sdr::properties::BaseProperties* mpProperties; -protected: - virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties(); -public: - virtual sdr::properties::BaseProperties& GetProperties() const; - - // #110094# DrawContact section -private: - sdr::contact::ViewContact* mpViewContact; -protected: - virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact(); -public: - sdr::contact::ViewContact& GetViewContact() const; - - // DrawContact support: Methods for handling Object changes - void ActionChanged() const; - -private: friend class SdrObjListIter; friend class SdrVirtObj; friend class SdrRectObj; friend class SdrDelayBroadcastObjectChange; -protected: - Rectangle aOutRect; // surrounding rectangle for Paint (incl. LineWdt, ...) - Point aAnchor; // anchor position (Writer) - Point aGridOffset; // hack (Calc) - SdrObjList* pObjList; // list that includes this object - SdrPage* pPage; - SdrModel* pModel; - SdrObjUserCall* pUserCall; - SdrObjPlusData* pPlusData; // Broadcaster, UserData, connectors, ... (this is the Bitsack) - - sal_uInt32 nOrdNum; // order number of the object in the list - - SfxGrabBagItem* pGrabBagItem; // holds the GrabBagItem property - - - // Position in the navigation order. SAL_MAX_UINT32 when not used. - sal_uInt32 mnNavigationPosition; - SdrLayerID mnLayerID; - - // object is only pointing to another one - bool bVirtObj : 1; - bool bSnapRectDirty : 1; - bool bInserted : 1; // only if set to true, there are RepaintBroadcast & SetModify - - // the following flags will be streamed - bool bMovProt : 1; // if true, the position is protected - bool bSizProt : 1; // if true, the size is protected - bool bNoPrint : 1; // if true, the object is not printed. - bool mbVisible : 1; // if false, the object is not visible on screen (but maybe on printer, depending on bNoprint - - // If bEmptyPresObj is true, it is a presentation object that has no content yet. - // The flag's default value is false. - // The management is done by the application. - // Neither assign operator nor cloning copies the flag! - // The flag is persistent. - bool bEmptyPresObj : 1; // empty presentation object (Draw) - - // if true, object is invisible as object of the MasterPage - bool bNotVisibleAsMaster : 1; - - // if true, the object is closed, i.e. no line, arc... - bool bClosedObj : 1; - - bool bIsEdge : 1; - bool bIs3DObj : 1; - bool bMarkProt : 1; // marking forbidden, persistent - bool bIsUnoObj : 1; - bool bNotMasterCachable : 1; - - // #i25616# - bool mbLineIsOutsideGeometry : 1; +public: + SdrObject(); - // #i25616# - bool mbSupportTextIndentingOnLineWidthChange : 1; + void AddObjectUser(sdr::ObjectUser& rNewUser); + void RemoveObjectUser(sdr::ObjectUser& rOldUser); -private: - bool mbDelayBroadcastObjectChange : 1; - mutable bool mbBroadcastObjectChangePending : 1; + sdr::contact::ViewContact& GetViewContact() const; -protected: - // on import of OLE object from MS documents the BLIP size might be retrieved, - // in this case the following member is initialized as nonempty rectangle - Rectangle maBLIPSizeRectangle; + virtual sdr::properties::BaseProperties& GetProperties() const; - // global static ItemPool for not-yet-inserted items -private: - static SdrItemPool* mpGlobalItemPool; + // DrawContact support: Methods for handling Object changes + void ActionChanged() const; -public: static SdrItemPool& GetGlobalDrawObjectItemPool(); void SetRelativeWidth( double nValue ); void SetRelativeWidthRelation( sal_Int16 eValue ); @@ -392,38 +306,13 @@ public: // evil calc grid/shape drawlayer syncing const Point& GetGridOffset() const { return aGridOffset; } void SetGridOffset( const Point& rGridOffset ){ aGridOffset = rGridOffset; } -protected: - Rectangle ImpDragCalcRect(const SdrDragStat& rDrag) const; - - // for GetDragComment - void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, OUString& rStr) const; - - void ImpForcePlusData(); - - OUString GetAngleStr(long nAngle) const; - OUString GetMetrStr(long nVal) const; /// @param bNotMyself = true: set only ObjList to dirty, don't mark this object as dirty. /// /// This is needed for instance for NbcMove, because usually one moves SnapRect and aOutRect /// at the same time to avoid recomputation. -public: virtual void SetRectsDirty(bool bNotMyself = false); -protected: - /// A derived class must override these 3 methods if it has own geometric - /// data that must be saved for Undo. - /// NewGeoData() creates an empty instance of a class derived from - /// SdrObjGeoData. - virtual SdrObjGeoData* NewGeoData() const; - virtual void SaveGeoData(SdrObjGeoData& rGeo) const; - virtual void RestGeoData(const SdrObjGeoData& rGeo); - - virtual ~SdrObject() override; - -public: - SdrObject(); - // frees the SdrObject pointed to by the argument // In case the object has an SvxShape, which has the ownership of the object, it // is actually *not* deleted. @@ -444,7 +333,6 @@ public: void AddListener(SfxListener& rListener); void RemoveListener(SfxListener& rListener); - const SfxBroadcaster* GetBroadcaster() const; void AddReference(SdrVirtObj& rVrtObj); void DelReference(SdrVirtObj& rVrtObj); @@ -459,9 +347,6 @@ public: // renaming GetLayerSet -> getMergedHierarchyLayerSet to make clear what happens here. rSet needs to be empty. void getMergedHierarchyLayerSet(SetOfByte& rSet) const; - // UserCall interface - void SetUserCall(SdrObjUserCall* pUser); - SdrObjUserCall* GetUserCall() const { return pUserCall;} void SendUserCall(SdrUserCallType eUserCall, const Rectangle& rBoundRect) const; // #i68101# @@ -488,9 +373,6 @@ public: /// SdrObjects in the SdrObjList. sal_uInt32 GetOrdNum() const; - // Warning: this method should only be used if you really know what you're doing - sal_uInt32 GetOrdNumDirect() const { return nOrdNum;} - // setting the order number should only happen from the model or from the page void SetOrdNum(sal_uInt32 nNum); @@ -508,14 +390,6 @@ public: // result of GetOrdNum() is returned. sal_uInt32 GetNavigationPosition(); - // Set the position in the navigation position to the given value. - // This method is typically used only by the model after a change to - // the navigation order. - // This method does not change the navigation position of other - // objects. - // Use SdrObjList::SetObjectNavigationPosition() instead. - void SetNavigationPosition (const sal_uInt32 nPosition); - // To make clearer that this method may trigger RecalcBoundRect and thus may be // expensive and sometimes problematic (inside a bigger object change You will get // non-useful BoundRects sometimes) i rename that method from GetBoundRect() to @@ -532,6 +406,8 @@ public: void BroadcastObjectChange() const; + const SfxBroadcaster* GetBroadcaster() const; + // set modified-flag in the model virtual void SetChanged(); @@ -656,7 +532,6 @@ public: void ImpSetAnchorPos(const Point& rPnt); virtual void NbcSetAnchorPos(const Point& rPnt); virtual void SetAnchorPos(const Point& rPnt); - const Point& GetAnchorPos() const; /// Snap is not done on the BoundRect but if possible on logic coordinates /// (i.e. without considering stroke width, ...) @@ -709,17 +584,6 @@ public: void SetMergedItemSet(const SfxItemSet& rSet, bool bClearAllItems = false); const SfxPoolItem& GetMergedItem(const sal_uInt16 nWhich) const; - // internal versions -protected: - const SfxItemSet& GetObjectItemSet() const; - void SetObjectItem(const SfxPoolItem& rItem); - void SetObjectItemSet(const SfxItemSet& rSet); - const SfxPoolItem& GetObjectItem(const sal_uInt16 nWhich) const; - - // get MapUnit the object is using - MapUnit GetObjectMapUnit() const; - -public: // syntactical sugar for ItemSet accesses void SetMergedItemSetAndBroadcast(const SfxItemSet& rSet, bool bClearAllItems = false); @@ -787,7 +651,6 @@ public: // list of all glue points, can be NULL virtual const SdrGluePointList* GetGluePointList() const; - //virtual SdrGluePointList* GetGluePointList(); // after changing the GluePointList, one has to call the object's SendRepaintBroadcast! virtual SdrGluePointList* ForceGluePointList(); @@ -854,8 +717,6 @@ public: bool IsEdgeObj() const { return bIsEdge;} bool Is3DObj() const { return bIs3DObj;} bool IsUnoObj() const { return bIsUnoObj;} - void SetMarkProtect(bool bProt); - bool IsMarkProtect() const { return bMarkProt;} void SetInserted(bool bIns); bool IsInserted() const { return bInserted;} void SetMoveProtect(bool bProt); @@ -866,16 +727,8 @@ public: bool IsPrintable() const { return !bNoPrint;} void SetVisible(bool bVisible); bool IsVisible() const { return mbVisible;} - void SetEmptyPresObj(bool bEpt); - bool IsEmptyPresObj() const { return bEmptyPresObj;} - void SetNotVisibleAsMaster(bool bFlg); - bool IsNotVisibleAsMaster() const { return bNotVisibleAsMaster;} - - // #i25616# - bool LineIsOutsideGeometry() const { return mbLineIsOutsideGeometry;} - - // #i25616# - bool DoesSupportTextIndentingOnLineWidthChange() const { return mbSupportTextIndentingOnLineWidthChange;} + void SetMarkProtect(bool bProt); + bool IsMarkProtect() const { return bMarkProt;} // application specific data sal_uInt16 GetUserDataCount() const; @@ -891,19 +744,9 @@ public: // access to the UNO representation of the shape virtual css::uno::Reference< css::uno::XInterface > getUnoShape(); - const css::uno::WeakReference< css::uno::XInterface >& getWeakUnoShape() const { return maWeakUnoShape; } static SdrObject* getSdrObjectFromXShape( const css::uno::Reference< css::uno::XInterface >& xInt ); - // sets a new UNO representation of the shape - // This is only a public interface function. The actual work is - // done by impl_setUnoShape(). - // Calling this function is only allowed for the UNO representation - // itself! - void setUnoShape( - const css::uno::Reference< - css::uno::XInterface>& _rxUnoShape); - // retrieves the instance responsible for notifying changes in the properties of the shape associated with // the SdrObject // @@ -948,19 +791,117 @@ public: const Rectangle& GetBLIPSizeRectangle() const { return maBLIPSizeRectangle;} void SetBLIPSizeRectangle( const Rectangle& aRect ); + // #i121917# + virtual bool HasText() const; + + OString stringify() const; + + virtual void dumpAsXml(struct _xmlTextWriter* pWriter) const; + + void SetEmptyPresObj(bool bEpt); + bool IsEmptyPresObj() const { return bEmptyPresObj;} + void SetNotVisibleAsMaster(bool bFlg); + bool IsNotVisibleAsMaster() const { return bNotVisibleAsMaster;} + void SetUserCall(SdrObjUserCall* pUser); + SdrObjUserCall* GetUserCall() const { return pUserCall;} /// @see mbDoNotInsertIntoPageAutomatically void SetDoNotInsertIntoPageAutomatically(bool bSet); /// @see mbDoNotInsertIntoPageAutomatically bool IsDoNotInsertIntoPageAutomatically() const { return mbDoNotInsertIntoPageAutomatically;} - // #i121917# - virtual bool HasText() const; + // Warning: this method should only be used if you really know what you're doing + sal_uInt32 GetOrdNumDirect() const { return nOrdNum;} - OString stringify() const; + // #i25616# + bool DoesSupportTextIndentingOnLineWidthChange() const { return mbSupportTextIndentingOnLineWidthChange;} - virtual void dumpAsXml(struct _xmlTextWriter* pWriter) const; + const Point& GetAnchorPos() const; + + // #i25616# + bool LineIsOutsideGeometry() const { return mbLineIsOutsideGeometry;} + + // Set the position in the navigation position to the given value. + // This method is typically used only by the model after a change to + // the navigation order. + // This method does not change the navigation position of other + // objects. + // Use SdrObjList::SetObjectNavigationPosition() instead. + void SetNavigationPosition (const sal_uInt32 nPosition); + + // sets a new UNO representation of the shape + // This is only a public interface function. The actual work is + // done by impl_setUnoShape(). + // Calling this function is only allowed for the UNO representation + // itself! + void setUnoShape( const css::uno::Reference<css::uno::XInterface>& _rxUnoShape); + + const css::uno::WeakReference< css::uno::XInterface >& getWeakUnoShape() const { return maWeakUnoShape; } protected: + Rectangle aOutRect; // surrounding rectangle for Paint (incl. LineWdt, ...) + Point aAnchor; // anchor position (Writer) + SdrPage* pPage; + SdrModel* pModel; + SdrObjUserCall* pUserCall; + SdrObjPlusData* pPlusData; // Broadcaster, UserData, connectors, ... (this is the Bitsack) + // object is only pointing to another one + bool bVirtObj : 1; + bool bSnapRectDirty : 1; + // the following flags will be streamed + bool bMovProt : 1; // if true, the position is protected + bool bSizProt : 1; // if true, the size is protected + // If bEmptyPresObj is true, it is a presentation object that has no content yet. + // The flag's default value is false. + // The management is done by the application. + // Neither assign operator nor cloning copies the flag! + // The flag is persistent. + bool bEmptyPresObj : 1; // empty presentation object (Draw) + // if true, object is invisible as object of the MasterPage + bool bNotVisibleAsMaster : 1; + // if true, the object is closed, i.e. no line, arc... + bool bClosedObj : 1; + bool bIsEdge : 1; + bool bIs3DObj : 1; + bool bIsUnoObj : 1; + bool bNotMasterCachable : 1; + // #i25616# + bool mbLineIsOutsideGeometry : 1; + // #i25616# + bool mbSupportTextIndentingOnLineWidthChange : 1; + + virtual ~SdrObject() override; + + virtual sdr::properties::BaseProperties* CreateObjectSpecificProperties(); + + virtual sdr::contact::ViewContact* CreateObjectSpecificViewContact(); + + Rectangle ImpDragCalcRect(const SdrDragStat& rDrag) const; + + // for GetDragComment + void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, OUString& rStr) const; + + void ImpForcePlusData(); + + OUString GetAngleStr(long nAngle) const; + OUString GetMetrStr(long nVal) const; + + /// A derived class must override these 3 methods if it has own geometric + /// data that must be saved for Undo. + /// NewGeoData() creates an empty instance of a class derived from + /// SdrObjGeoData. + virtual SdrObjGeoData* NewGeoData() const; + virtual void SaveGeoData(SdrObjGeoData& rGeo) const; + virtual void RestGeoData(const SdrObjGeoData& rGeo); + + // internal versions + const SfxItemSet& GetObjectItemSet() const; + void SetObjectItem(const SfxPoolItem& rItem); + void SetObjectItemSet(const SfxItemSet& rSet); + const SfxPoolItem& GetObjectItem(const sal_uInt16 nWhich) const; + + // get MapUnit the object is using + MapUnit GetObjectMapUnit() const; + /// Sets a new UNO shape /// /// The default implementation of this function sets the new UNO @@ -976,16 +917,42 @@ protected: template< typename T > T* CloneHelper() const; private: - // only for internal use! - SvxShape* getSvxShape(); + struct Impl; + std::unique_ptr<Impl> mpImpl; + Point aGridOffset; // hack (Calc) + SdrObjList* pObjList; // list that includes this object + sal_uInt32 nOrdNum; // order number of the object in the list + SfxGrabBagItem* pGrabBagItem; // holds the GrabBagItem property + // Position in the navigation order. SAL_MAX_UINT32 when not used. + sal_uInt32 mnNavigationPosition; + SdrLayerID mnLayerID; + bool bInserted : 1; // only if set to true, there are RepaintBroadcast & SetModify + bool bNoPrint : 1; // if true, the object is not printed. + bool mbVisible : 1; // if false, the object is not visible on screen (but maybe on printer, depending on bNoprint + bool bMarkProt : 1; // marking forbidden, persistent + // on import of OLE object from MS documents the BLIP size might be retrieved, + // in this case the following member is initialized as nonempty rectangle + Rectangle maBLIPSizeRectangle; + sdr::properties::BaseProperties* mpProperties; + sdr::contact::ViewContact* mpViewContact; + bool mbDelayBroadcastObjectChange : 1; + mutable bool mbBroadcastObjectChangePending : 1; + + // global static ItemPool for not-yet-inserted items + static SdrItemPool* mpGlobalItemPool; // do not use directly, always use getSvxShape() if you have to! - SvxShape* mpSvxShape; + SvxShape* mpSvxShape; css::uno::WeakReference< css::uno::XInterface > - maWeakUnoShape; + maWeakUnoShape; // HACK: Do not automatically insert newly created object into a page. // The user needs to do it manually later. - bool mbDoNotInsertIntoPageAutomatically; + bool mbDoNotInsertIntoPageAutomatically; + + // only for internal use! + SvxShape* getSvxShape(); + + SdrObject( const SdrObject& ) = delete; }; /** Suppress BroadcastObjectChange() until destruction of the (last) instance. |