diff options
Diffstat (limited to 'include/svx/svdobj.hxx')
-rw-r--r-- | include/svx/svdobj.hxx | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx index a762127bdc79..9d913bc71cb4 100644 --- a/include/svx/svdobj.hxx +++ b/include/svx/svdobj.hxx @@ -20,7 +20,6 @@ #ifndef INCLUDED_SVX_SVDOBJ_HXX #define INCLUDED_SVX_SVDOBJ_HXX -#include <typeinfo> #include <com/sun/star/uno/Any.hxx> #include <cppuhelper/weakref.hxx> #include <rtl/ustring.hxx> @@ -35,6 +34,8 @@ #include <tools/weakbase.hxx> #include <tools/mapunit.hxx> #include <tools/gen.hxx> +#include <typeinfo> +#include <functional> class SfxBroadcaster; class Pointer; @@ -972,6 +973,18 @@ private: bool mbDoNotInsertIntoPageAutomatically; }; +struct SdrObjCreatorParams +{ + sal_uInt32 nInventor; + sal_uInt16 nObjIdentifier; +}; +struct SdrObjUserDataCreatorParams +{ + sal_uInt32 nInventor; + sal_uInt16 nObjIdentifier; + SdrObject* pObject; +}; + /** * Whoever creates his own objects must set a link in the SdrObjFactory class. * The handler must have the following signature: @@ -983,32 +996,18 @@ private: class SVX_DLLPUBLIC SdrObjFactory { public: - sal_uInt32 nInventor; - sal_uInt16 nIdentifier; - - // for MakeNewObj(): - SdrPage* pPage; - SdrModel* pModel; - SdrObject* pNewObj; - - // for MakeNewObjUserData(): - SdrObject* pObj; - SdrObjUserData* pNewData; + static SdrObject* MakeNewObject(sal_uInt32 nInventor, sal_uInt16 nObjIdentifier, SdrPage* pPage, SdrModel* pModel=nullptr); + static SdrObject* MakeNewObject(sal_uInt32 nInventor, sal_uInt16 nObjIdentifier, const Rectangle& rSnapRect, SdrPage* pPage); + static void InsertMakeObjectHdl(Link<SdrObjCreatorParams, SdrObject*> const & rLink); + static void RemoveMakeObjectHdl(Link<SdrObjCreatorParams, SdrObject*> const & rLink); + static void InsertMakeUserDataHdl(Link<SdrObjUserDataCreatorParams, SdrObjUserData*> const & rLink); + static void RemoveMakeUserDataHdl(Link<SdrObjUserDataCreatorParams, SdrObjUserData*> const & rLink); private: - static SVX_DLLPRIVATE SdrObject* CreateObjectFromFactory( sal_uInt32 nInventor, sal_uInt16 nIdentifier, SdrPage* pPage, SdrModel* pModel ); - SVX_DLLPRIVATE SdrObjFactory(sal_uInt32 nInvent, sal_uInt16 nIdent, SdrPage* pNewPage, SdrModel* pNewModel); - -public: - static SdrObject* MakeNewObject(sal_uInt32 nInvent, sal_uInt16 nIdent, SdrPage* pPage, SdrModel* pModel=nullptr); - static SdrObject* MakeNewObject( sal_uInt32 nInventor, sal_uInt16 nIdentifier, const Rectangle& rSnapRect, SdrPage* pPage ); - static void InsertMakeObjectHdl(const Link<SdrObjFactory*,void>& rLink); - static void RemoveMakeObjectHdl(const Link<SdrObjFactory*,void>& rLink); - static void InsertMakeUserDataHdl(const Link<SdrObjFactory*,void>& rLink); - static void RemoveMakeUserDataHdl(const Link<SdrObjFactory*,void>& rLink); + SdrObjFactory() = delete; }; typedef tools::WeakReference< SdrObject > SdrObjectWeakRef; |