13334a7e6SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 33334a7e6SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 43334a7e6SAndrew Rist * or more contributor license agreements. See the NOTICE file 53334a7e6SAndrew Rist * distributed with this work for additional information 63334a7e6SAndrew Rist * regarding copyright ownership. The ASF licenses this file 73334a7e6SAndrew Rist * to you under the Apache License, Version 2.0 (the 83334a7e6SAndrew Rist * "License"); you may not use this file except in compliance 93334a7e6SAndrew Rist * with the License. You may obtain a copy of the License at 103334a7e6SAndrew Rist * 113334a7e6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 123334a7e6SAndrew Rist * 133334a7e6SAndrew Rist * Unless required by applicable law or agreed to in writing, 143334a7e6SAndrew Rist * software distributed under the License is distributed on an 153334a7e6SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 163334a7e6SAndrew Rist * KIND, either express or implied. See the License for the 173334a7e6SAndrew Rist * specific language governing permissions and limitations 183334a7e6SAndrew Rist * under the License. 193334a7e6SAndrew Rist * 203334a7e6SAndrew Rist *************************************************************/ 213334a7e6SAndrew Rist 223334a7e6SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _SVDMODEL_HXX 25cdf0e10cSrcweir #define _SVDMODEL_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx> 28cdf0e10cSrcweir #include <cppuhelper/weakref.hxx> 29cdf0e10cSrcweir #include <sot/storage.hxx> 30cdf0e10cSrcweir #include <tools/link.hxx> 31cdf0e10cSrcweir #include <tools/contnr.hxx> 32cdf0e10cSrcweir #include <tools/weakbase.hxx> 33cdf0e10cSrcweir #include <vcl/mapmod.hxx> 34cdf0e10cSrcweir #include <svl/brdcst.hxx> 35cdf0e10cSrcweir #include <tools/string.hxx> 36cdf0e10cSrcweir #include <tools/datetime.hxx> 37cdf0e10cSrcweir #include <svl/hint.hxx> 38cdf0e10cSrcweir #include <svl/style.hxx> 39cdf0e10cSrcweir #include <svx/pageitem.hxx> 40cdf0e10cSrcweir #include <vcl/field.hxx> 41cdf0e10cSrcweir #include <boost/shared_ptr.hpp> 42cdf0e10cSrcweir #include <svx/svdtypes.hxx> // fuer enum RepeatFuncts 43cdf0e10cSrcweir #include <vcl/field.hxx> 44cdf0e10cSrcweir #include "svx/svxdllapi.h" 45cdf0e10cSrcweir #include <vos/ref.hxx> 46c7be74b1SArmin Le Grand #include <svx/xtable.hxx> 47cdf0e10cSrcweir 48cdf0e10cSrcweir #if defined(UNX) || defined(WNT) 49cdf0e10cSrcweir #define DEGREE_CHAR ((sal_Unicode)176) /* 0xB0 = Ansi */ 50cdf0e10cSrcweir #endif 51cdf0e10cSrcweir 52cdf0e10cSrcweir #if defined(OS2) 53cdf0e10cSrcweir #define DEGREE_CHAR ((sal_Unicode)248) /* 0xF8 = IBM PC (Erw. ASCII) */ 54cdf0e10cSrcweir #endif 55cdf0e10cSrcweir 56cdf0e10cSrcweir #ifndef DEGREE_CHAR 57cdf0e10cSrcweir #error unbekannte Plattrorm 58cdf0e10cSrcweir #endif 59cdf0e10cSrcweir 60c7be74b1SArmin Le Grand class OutputDevice; 61cdf0e10cSrcweir class SdrOutliner; 62cdf0e10cSrcweir class SdrLayerAdmin; 63cdf0e10cSrcweir class SdrObjList; 64cdf0e10cSrcweir class SdrObject; 65cdf0e10cSrcweir class SdrPage; 66cdf0e10cSrcweir class SdrPageView; 67cdf0e10cSrcweir class SdrTextObj; 68cdf0e10cSrcweir class SdrUndoAction; 69cdf0e10cSrcweir class SdrUndoGroup; 70cdf0e10cSrcweir class AutoTimer; 71cdf0e10cSrcweir class SfxItemPool; 72cdf0e10cSrcweir class SfxItemSet; 73cdf0e10cSrcweir class SfxRepeatTarget; 74cdf0e10cSrcweir class SfxStyleSheet; 75cdf0e10cSrcweir class SfxUndoAction; 76cdf0e10cSrcweir class SfxUndoManager; 77cdf0e10cSrcweir class SvxForbiddenCharactersTable; 78cdf0e10cSrcweir class SvNumberFormatter; 79cdf0e10cSrcweir class SotStorage; 80cdf0e10cSrcweir class SdrOutlinerCache; 81cdf0e10cSrcweir class SotStorageRef; 82cdf0e10cSrcweir class SdrUndoFactory; 83cdf0e10cSrcweir namespace comphelper{ 84cdf0e10cSrcweir class IEmbeddedHelper; 85cdf0e10cSrcweir } 869b8096d0SSteve Yin 879b8096d0SSteve Yin class ImageMap; 889b8096d0SSteve Yin 89cdf0e10cSrcweir namespace sfx2{ 90cdf0e10cSrcweir class LinkManager; 91cdf0e10cSrcweir } 92cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 93cdf0e10cSrcweir 94cdf0e10cSrcweir #define SDR_SWAPGRAPHICSMODE_NONE 0x00000000 95cdf0e10cSrcweir #define SDR_SWAPGRAPHICSMODE_TEMP 0x00000001 96cdf0e10cSrcweir #define SDR_SWAPGRAPHICSMODE_DOC 0x00000002 97cdf0e10cSrcweir #define SDR_SWAPGRAPHICSMODE_PURGE 0x00000100 98cdf0e10cSrcweir #define SDR_SWAPGRAPHICSMODE_DEFAULT (SDR_SWAPGRAPHICSMODE_TEMP|SDR_SWAPGRAPHICSMODE_DOC|SDR_SWAPGRAPHICSMODE_PURGE) 99cdf0e10cSrcweir 100cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 101cdf0e10cSrcweir 102cdf0e10cSrcweir enum SdrHintKind 103cdf0e10cSrcweir { 104cdf0e10cSrcweir HINT_UNKNOWN, // Unbekannt 105cdf0e10cSrcweir HINT_LAYERCHG, // Layerdefinition geaendert 106cdf0e10cSrcweir HINT_LAYERORDERCHG, // Layerreihenfolge geaendert (Insert/Remove/ChangePos) 107cdf0e10cSrcweir HINT_PAGEORDERCHG, // Reihenfolge der Seiten (Zeichenseiten oder Masterpages) geaendert (Insert/Remove/ChangePos) 108cdf0e10cSrcweir HINT_OBJCHG, // Objekt geaendert 109cdf0e10cSrcweir HINT_OBJINSERTED, // Neues Zeichenobjekt eingefuegt 110cdf0e10cSrcweir HINT_OBJREMOVED, // Zeichenobjekt aus Liste entfernt 111cdf0e10cSrcweir HINT_MODELCLEARED, // gesamtes Model geloescht (keine Pages mehr da). not impl. 112cdf0e10cSrcweir HINT_REFDEVICECHG, // RefDevice geaendert 113cdf0e10cSrcweir HINT_DEFAULTTABCHG, // Default Tabulatorweite geaendert 114cdf0e10cSrcweir HINT_DEFFONTHGTCHG, // Default FontHeight geaendert 115cdf0e10cSrcweir HINT_MODELSAVED, // Dokument wurde gesichert 116cdf0e10cSrcweir HINT_SWITCHTOPAGE, // #94278# UNDO/REDO at an object evtl. on another page 117cdf0e10cSrcweir HINT_BEGEDIT, // Is called after the object has entered text edit mode 118cdf0e10cSrcweir HINT_ENDEDIT // Is called after the object has left text edit mode 119cdf0e10cSrcweir }; 120cdf0e10cSrcweir 121cdf0e10cSrcweir class SVX_DLLPUBLIC SdrHint: public SfxHint 122cdf0e10cSrcweir { 123cdf0e10cSrcweir public: 124cdf0e10cSrcweir Rectangle maRectangle; 125cdf0e10cSrcweir const SdrPage* mpPage; 126cdf0e10cSrcweir const SdrObject* mpObj; 127cdf0e10cSrcweir const SdrObjList* mpObjList; 128cdf0e10cSrcweir SdrHintKind meHint; 129cdf0e10cSrcweir 130cdf0e10cSrcweir public: 131cdf0e10cSrcweir TYPEINFO(); 132cdf0e10cSrcweir 133cdf0e10cSrcweir SdrHint(); 134cdf0e10cSrcweir SdrHint(SdrHintKind eNewHint); 135cdf0e10cSrcweir SdrHint(const SdrObject& rNewObj); 136cdf0e10cSrcweir SdrHint(const SdrObject& rNewObj, const Rectangle& rRect); 137cdf0e10cSrcweir 138cdf0e10cSrcweir void SetPage(const SdrPage* pNewPage); 139cdf0e10cSrcweir void SetObjList(const SdrObjList* pNewOL); 140cdf0e10cSrcweir void SetObject(const SdrObject* pNewObj); 141cdf0e10cSrcweir void SetKind(SdrHintKind eNewKind); 142cdf0e10cSrcweir void SetRect(const Rectangle& rNewRect); 143cdf0e10cSrcweir 144cdf0e10cSrcweir const SdrPage* GetPage() const; 145cdf0e10cSrcweir const SdrObjList* GetObjList() const; 146cdf0e10cSrcweir const SdrObject* GetObject() const; 147cdf0e10cSrcweir SdrHintKind GetKind() const; 148cdf0e10cSrcweir const Rectangle& GetRect() const; 149cdf0e10cSrcweir }; 150cdf0e10cSrcweir 151cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 152cdf0e10cSrcweir 153cdf0e10cSrcweir // Flag um nach dem Laden des Pools Aufzuraeumen (d.h. die RefCounts 154cdf0e10cSrcweir // neu zu bestimmen und unbenutztes wegzuwerfen). sal_False == aktiv 155cdf0e10cSrcweir #define LOADREFCOUNTS (sal_False) 156cdf0e10cSrcweir 157cdf0e10cSrcweir struct SdrDocumentStreamInfo 158cdf0e10cSrcweir { 159cdf0e10cSrcweir FASTBOOL mbDeleteAfterUse; 160cdf0e10cSrcweir String maUserData; 161cdf0e10cSrcweir com::sun::star::uno::Reference < com::sun::star::embed::XStorage > mxStorageRef; 162cdf0e10cSrcweir sal_Bool mbDummy1 : 1; 163cdf0e10cSrcweir }; 164cdf0e10cSrcweir 165cdf0e10cSrcweir struct SdrModelImpl; 166cdf0e10cSrcweir 167cdf0e10cSrcweir class SVX_DLLPUBLIC SdrModel : public SfxBroadcaster, public tools::WeakBase< SdrModel > 168cdf0e10cSrcweir { 169cdf0e10cSrcweir protected: 170cdf0e10cSrcweir DateTime aReadDate; // Datum des Einstreamens 171cdf0e10cSrcweir Container maMaPag; // StammSeiten (Masterpages) 172cdf0e10cSrcweir Container maPages; 173cdf0e10cSrcweir Link aUndoLink; // Link fuer einen NotifyUndo-Handler 174cdf0e10cSrcweir Link aIOProgressLink; 175cdf0e10cSrcweir String aTablePath; 176cdf0e10cSrcweir Size aMaxObjSize; // z.B. fuer Autogrowing Text 177cdf0e10cSrcweir Fraction aObjUnit; // Beschreibung der Koordinateneinheiten fuer ClipBoard, Drag&Drop, ... 178cdf0e10cSrcweir MapUnit eObjUnit; // see above 179cdf0e10cSrcweir FieldUnit eUIUnit; // Masseinheit, Masstab (z.B. 1/1000) fuer die UI (Statuszeile) wird von ImpSetUIUnit() gesetzt 180cdf0e10cSrcweir Fraction aUIScale; // see above 181cdf0e10cSrcweir String aUIUnitStr; // see above 182cdf0e10cSrcweir Fraction aUIUnitFact; // see above 183cdf0e10cSrcweir int nUIUnitKomma; // see above 184cdf0e10cSrcweir FASTBOOL bUIOnlyKomma; // see above 185cdf0e10cSrcweir 186cdf0e10cSrcweir SdrLayerAdmin* pLayerAdmin; 187cdf0e10cSrcweir SfxItemPool* pItemPool; 188cdf0e10cSrcweir FASTBOOL bMyPool; // zum Aufraeumen von pMyPool ab 303a 189cdf0e10cSrcweir comphelper::IEmbeddedHelper* 190cdf0e10cSrcweir m_pEmbeddedHelper; // helper for embedded objects to get rid of the SfxObjectShell 191cdf0e10cSrcweir SdrOutliner* pDrawOutliner; // ein Outliner zur Textausgabe 192cdf0e10cSrcweir SdrOutliner* pHitTestOutliner;// ein Outliner fuer den HitTest 193cdf0e10cSrcweir sal_uIntPtr nDefTextHgt; // Default Texthoehe in logischen Einheiten 194cdf0e10cSrcweir OutputDevice* pRefOutDev; // ReferenzDevice fuer die EditEngine 195cdf0e10cSrcweir sal_uIntPtr nProgressAkt; // fuer den 196cdf0e10cSrcweir sal_uIntPtr nProgressMax; // ProgressBar- 197cdf0e10cSrcweir sal_uIntPtr nProgressOfs; // -Handler 198cdf0e10cSrcweir rtl::Reference< SfxStyleSheetBasePool > mxStyleSheetPool; 199cdf0e10cSrcweir SfxStyleSheet* pDefaultStyleSheet; 2009e9dd2d5SArmin Le Grand SfxStyleSheet* mpDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj; // #119287# 201cdf0e10cSrcweir sfx2::LinkManager* pLinkManager; // LinkManager 202cdf0e10cSrcweir Container* pUndoStack; 203cdf0e10cSrcweir Container* pRedoStack; 204cdf0e10cSrcweir SdrUndoGroup* pAktUndoGroup; // Fuer mehrstufige 205cdf0e10cSrcweir sal_uInt16 nUndoLevel; // Undo-Klammerung 206cdf0e10cSrcweir bool mbUndoEnabled; // If false no undo is recorded or we are during the execution of an undo action 207cdf0e10cSrcweir sal_uInt16 nProgressPercent; // fuer den ProgressBar-Handler 208cdf0e10cSrcweir sal_uInt16 nLoadVersion; // Versionsnummer der geladenen Datei 209cdf0e10cSrcweir sal_Bool mbChanged; 210cdf0e10cSrcweir FASTBOOL bInfoChanged; 211cdf0e10cSrcweir FASTBOOL bPagNumsDirty; 212cdf0e10cSrcweir FASTBOOL bMPgNumsDirty; 213cdf0e10cSrcweir FASTBOOL bPageNotValid; // sal_True=Doc ist nur ObjektTraeger. Page ist nicht gueltig. 214cdf0e10cSrcweir FASTBOOL bSavePortable; // Metafiles portabel speichern 215cdf0e10cSrcweir FASTBOOL bNoBitmapCaching; // Bitmaps fuer Screenoutput cachen 216cdf0e10cSrcweir FASTBOOL bReadOnly; 217cdf0e10cSrcweir FASTBOOL bTransparentTextFrames; 218cdf0e10cSrcweir FASTBOOL bSaveCompressed; 219cdf0e10cSrcweir FASTBOOL bSwapGraphics; 220cdf0e10cSrcweir FASTBOOL bPasteResize; // Objekte werden gerade resized wegen Paste mit anderem MapMode 221cdf0e10cSrcweir FASTBOOL bSaveOLEPreview; // save preview metafile of OLE objects 222cdf0e10cSrcweir sal_uInt16 nStreamCompressMode; // Komprimiert schreiben? 223cdf0e10cSrcweir sal_uInt16 nStreamNumberFormat; 224cdf0e10cSrcweir sal_uInt16 nDefaultTabulator; 225cdf0e10cSrcweir sal_uInt32 nMaxUndoCount; 226cdf0e10cSrcweir FASTBOOL bSaveNative; 227cdf0e10cSrcweir sal_Bool bStarDrawPreviewMode; 228*a840a559SArmin Le Grand bool mbDisableTextEditUsesCommonUndoManager; 229cdf0e10cSrcweir 230cdf0e10cSrcweir 231cdf0e10cSrcweir ////////////////////////////////////////////////////////////////////////////// 232cdf0e10cSrcweir // sdr::Comment interface 233cdf0e10cSrcweir private: 234cdf0e10cSrcweir // the next unique comment ID, used for counting added comments. Initialized 235cdf0e10cSrcweir // to 0. UI shows one more due to the fact that 0 is a no-no for users. 236cdf0e10cSrcweir sal_uInt32 mnUniqueCommentID; 237cdf0e10cSrcweir 238cdf0e10cSrcweir public: 239cdf0e10cSrcweir // create a new, unique comment ID 240cdf0e10cSrcweir sal_uInt32 GetNextUniqueCommentID(); 241cdf0e10cSrcweir 242cdf0e10cSrcweir // get the author name 243cdf0e10cSrcweir ::rtl::OUString GetDocumentAuthorName() const; 244cdf0e10cSrcweir 245cdf0e10cSrcweir // for export GetUniqueCommentID() const246cdf0e10cSrcweir sal_uInt32 GetUniqueCommentID() const { return mnUniqueCommentID; } 247cdf0e10cSrcweir 248cdf0e10cSrcweir // for import SetUniqueCommentID(sal_uInt32 nNewID)249cdf0e10cSrcweir void SetUniqueCommentID(sal_uInt32 nNewID) { if(nNewID != mnUniqueCommentID) { mnUniqueCommentID = nNewID; } } 250cdf0e10cSrcweir /** cl: added this for OJ to complete his reporting engine, does not work 251cdf0e10cSrcweir correctly so only enable it for his model */ 252cdf0e10cSrcweir bool IsAllowShapePropertyChangeListener() const; 253cdf0e10cSrcweir void SetAllowShapePropertyChangeListener( bool bAllow ); 254cdf0e10cSrcweir 255cdf0e10cSrcweir sal_uInt16 nStarDrawPreviewMasterPageNum; 256cdf0e10cSrcweir // Reserven fuer kompatible Erweiterungen 257cdf0e10cSrcweir //-/ SfxItemPool* pUndoItemPool; 258cdf0e10cSrcweir SotStorage* pModelStorage; 259cdf0e10cSrcweir SvxForbiddenCharactersTable* mpForbiddenCharactersTable; 260cdf0e10cSrcweir sal_uIntPtr nSwapGraphicsMode; 261cdf0e10cSrcweir 262cdf0e10cSrcweir SdrOutlinerCache* mpOutlinerCache; 263cdf0e10cSrcweir SdrModelImpl* mpImpl; 264cdf0e10cSrcweir sal_uInt16 mnCharCompressType; 265cdf0e10cSrcweir sal_uInt16 mnHandoutPageCount; 266cdf0e10cSrcweir sal_uInt16 nReserveUInt6; 267cdf0e10cSrcweir sal_uInt16 nReserveUInt7; 268cdf0e10cSrcweir FASTBOOL mbModelLocked; 269cdf0e10cSrcweir FASTBOOL mbKernAsianPunctuation; 270cdf0e10cSrcweir FASTBOOL mbAddExtLeading; 271cdf0e10cSrcweir FASTBOOL mbInDestruction; 272cdf0e10cSrcweir 273c7be74b1SArmin Le Grand // lists for colors, dashes, lineends, hatches, gradients and bitmaps for this model 274c7be74b1SArmin Le Grand XColorListSharedPtr maColorTable; 275c7be74b1SArmin Le Grand XDashListSharedPtr maDashList; 276c7be74b1SArmin Le Grand XLineEndListSharedPtr maLineEndList; 277c7be74b1SArmin Le Grand XHatchListSharedPtr maHatchList; 278c7be74b1SArmin Le Grand XGradientListSharedPtr maGradientList; 279c7be74b1SArmin Le Grand XBitmapListSharedPtr maBitmapList; 280cdf0e10cSrcweir 281cdf0e10cSrcweir // New src638: NumberFormatter for drawing layer and 282cdf0e10cSrcweir // method for getting it. It is constructed on demand 283cdf0e10cSrcweir // and destroyed when destroying the SdrModel. 284cdf0e10cSrcweir SvNumberFormatter* mpNumberFormatter; 285cdf0e10cSrcweir public: 286cdf0e10cSrcweir const SvNumberFormatter& GetNumberFormatter() const; 287cdf0e10cSrcweir getHandoutPageCount() const288cdf0e10cSrcweir sal_uInt16 getHandoutPageCount() const { return mnHandoutPageCount; } setHandoutPageCount(sal_uInt16 nHandoutPageCount)289cdf0e10cSrcweir void setHandoutPageCount( sal_uInt16 nHandoutPageCount ) { mnHandoutPageCount = nHandoutPageCount; } 290cdf0e10cSrcweir 291cdf0e10cSrcweir protected: 292cdf0e10cSrcweir 293cdf0e10cSrcweir virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > createUnoModel(); 294cdf0e10cSrcweir 295cdf0e10cSrcweir private: 296cdf0e10cSrcweir // Nicht implementiert: 297cdf0e10cSrcweir SVX_DLLPRIVATE SdrModel(const SdrModel& rSrcModel); 298cdf0e10cSrcweir SVX_DLLPRIVATE void operator=(const SdrModel& rSrcModel); 299cdf0e10cSrcweir SVX_DLLPRIVATE FASTBOOL operator==(const SdrModel& rCmpModel) const; 300cdf0e10cSrcweir //#if 0 // _SOLAR__PRIVATE 301cdf0e10cSrcweir SVX_DLLPRIVATE void ImpPostUndoAction(SdrUndoAction* pUndo); 302cdf0e10cSrcweir SVX_DLLPRIVATE void ImpSetUIUnit(); 303cdf0e10cSrcweir SVX_DLLPRIVATE void ImpSetOutlinerDefaults( SdrOutliner* pOutliner, sal_Bool bInit = sal_False ); 304cdf0e10cSrcweir SVX_DLLPRIVATE void ImpReformatAllTextObjects(); 305cdf0e10cSrcweir SVX_DLLPRIVATE void ImpReformatAllEdgeObjects(); // #103122# 306c7be74b1SArmin Le Grand SVX_DLLPRIVATE void ImpCtor(SfxItemPool* pPool, ::comphelper::IEmbeddedHelper* pPers, bool bLoadRefCounts = true); 307cdf0e10cSrcweir 308cdf0e10cSrcweir //#endif // __PRIVATE 309cdf0e10cSrcweir 310cdf0e10cSrcweir // this is a weak reference to a possible living api wrapper for this model 311cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxUnoModel; 312cdf0e10cSrcweir 313cdf0e10cSrcweir public: 314cdf0e10cSrcweir //#if 0 // _SOLAR__PRIVATE IsPasteResize() const315cdf0e10cSrcweir FASTBOOL IsPasteResize() const { return bPasteResize; } SetPasteResize(FASTBOOL bOn)316cdf0e10cSrcweir void SetPasteResize(FASTBOOL bOn) { bPasteResize=bOn; } 317cdf0e10cSrcweir //#endif // __PRIVATE 318cdf0e10cSrcweir TYPEINFO(); 319cdf0e10cSrcweir // Steckt man hier seinen eigenen Pool rein, so wird die Klasse auch 320cdf0e10cSrcweir // Aktionen an ihm vornehmen (Put(),Remove()). Bei Zerstoerung von 321cdf0e10cSrcweir // SdrModel wird dieser Pool ver delete geloescht! 322cdf0e10cSrcweir // Gibt man den Konstruktor stattdessen eine NULL mit, so macht sich 323cdf0e10cSrcweir // die Klasse einen eigenen Pool (SdrItemPool), den sie dann auch im 324cdf0e10cSrcweir // Destruktor zerstoert. 325cdf0e10cSrcweir // Bei Verwendung eines eigenen Pools ist darauf zu achten, dass dieser 326cdf0e10cSrcweir // von SdrItemPool abgeleitet ist, falls man von SdrAttrObj abgeleitete 327cdf0e10cSrcweir // Zeichenobjekte verwenden moechte. Setzt man degegen nur vom abstrakten 328cdf0e10cSrcweir // Basisobjekt SdrObject abgeleitete Objekte ein, so ist man frei in der 329cdf0e10cSrcweir // Wahl des Pools. 330cdf0e10cSrcweir SdrModel(SfxItemPool* pPool=NULL, ::comphelper::IEmbeddedHelper* pPers=NULL, sal_Bool bLoadRefCounts = LOADREFCOUNTS); 331cdf0e10cSrcweir SdrModel(const String& rPath, SfxItemPool* pPool=NULL, ::comphelper::IEmbeddedHelper* pPers=NULL, sal_Bool bLoadRefCounts = LOADREFCOUNTS); 332cdf0e10cSrcweir virtual ~SdrModel(); 333cdf0e10cSrcweir void ClearModel(sal_Bool bCalledFromDestructor); 334cdf0e10cSrcweir 335cdf0e10cSrcweir // Hier kann man erfragen, ob das Model gerade eingrstreamt wird IsLoading() const336cdf0e10cSrcweir FASTBOOL IsLoading() const { return sal_False /*BFS01 bLoading */; } 337cdf0e10cSrcweir // Muss z.B. ueberladen werden, um das Swappen/LoadOnDemand von Grafiken 338cdf0e10cSrcweir // zu ermoeglichen. Wird rbDeleteAfterUse auf sal_True gesetzt, so wird 339cdf0e10cSrcweir // die SvStream-Instanz vom Aufrufer nach Gebrauch destruiert. 340cdf0e10cSrcweir // Wenn diese Methode NULL liefert, wird zum Swappen eine temporaere 341cdf0e10cSrcweir // Datei angelegt. 342cdf0e10cSrcweir // Geliefert werden muss der Stream, aus dem das Model geladen wurde 343cdf0e10cSrcweir // bzw. in den es zuletzt gespeichert wurde. 344cdf0e10cSrcweir virtual SvStream* GetDocumentStream( SdrDocumentStreamInfo& rStreamInfo ) const; 345cdf0e10cSrcweir // Die Vorlagenattribute der Zeichenobjekte in harte Attribute verwandeln. 346cdf0e10cSrcweir void BurnInStyleSheetAttributes(); 347cdf0e10cSrcweir // Wer sich von SdrPage ableitet muss sich auch von SdrModel ableiten 348cdf0e10cSrcweir // und diese beiden VM AllocPage() und AllocModel() ueberladen... 349cdf0e10cSrcweir virtual SdrPage* AllocPage(FASTBOOL bMasterPage); 350cdf0e10cSrcweir virtual SdrModel* AllocModel() const; 351cdf0e10cSrcweir 352cdf0e10cSrcweir // Aenderungen an den Layern setzen das Modified-Flag und broadcasten am Model! GetLayerAdmin() const353cdf0e10cSrcweir const SdrLayerAdmin& GetLayerAdmin() const { return *pLayerAdmin; } GetLayerAdmin()354cdf0e10cSrcweir SdrLayerAdmin& GetLayerAdmin() { return *pLayerAdmin; } 355cdf0e10cSrcweir GetItemPool() const356cdf0e10cSrcweir const SfxItemPool& GetItemPool() const { return *pItemPool; } GetItemPool()357cdf0e10cSrcweir SfxItemPool& GetItemPool() { return *pItemPool; } 358cdf0e10cSrcweir 359cdf0e10cSrcweir SdrOutliner& GetDrawOutliner(const SdrTextObj* pObj=NULL) const; 360cdf0e10cSrcweir 361cdf0e10cSrcweir /** returns a new created and non shared outliner. 362cdf0e10cSrcweir The outliner will not get updated when the SdrModel is changed. 363cdf0e10cSrcweir */ 364cdf0e10cSrcweir boost::shared_ptr< SdrOutliner > CreateDrawOutliner(const SdrTextObj* pObj=NULL); 365cdf0e10cSrcweir GetHitTestOutliner() const366cdf0e10cSrcweir SdrOutliner& GetHitTestOutliner() const { return *pHitTestOutliner; } 367cdf0e10cSrcweir const SdrTextObj* GetFormattingTextObj() const; 368cdf0e10cSrcweir // Die TextDefaults (Font,Hoehe,Farbe) in ein Set putten 369cdf0e10cSrcweir void SetTextDefaults() const; 370cdf0e10cSrcweir static void SetTextDefaults( SfxItemPool* pItemPool, sal_uIntPtr nDefTextHgt ); 371cdf0e10cSrcweir 372cdf0e10cSrcweir // ReferenzDevice fuer die EditEngine 373cdf0e10cSrcweir void SetRefDevice(OutputDevice* pDev); GetRefDevice() const374cdf0e10cSrcweir OutputDevice* GetRefDevice() const { return pRefOutDev; } 375cdf0e10cSrcweir // Wenn ein neuer MapMode am RefDevice gesetzt wird o.ae. 376cdf0e10cSrcweir void RefDeviceChanged(); // noch nicht implementiert 377cdf0e10cSrcweir // Default-Schrifthoehe in logischen Einheiten 378cdf0e10cSrcweir void SetDefaultFontHeight(sal_uIntPtr nVal); GetDefaultFontHeight() const379cdf0e10cSrcweir sal_uIntPtr GetDefaultFontHeight() const { return nDefTextHgt; } 380cdf0e10cSrcweir // Default-Tabulatorweite fuer die EditEngine 381cdf0e10cSrcweir void SetDefaultTabulator(sal_uInt16 nVal); GetDefaultTabulator() const382cdf0e10cSrcweir sal_uInt16 GetDefaultTabulator() const { return nDefaultTabulator; } 383cdf0e10cSrcweir 384cdf0e10cSrcweir // Der DefaultStyleSheet wird jedem Zeichenobjekt verbraten das in diesem 385cdf0e10cSrcweir // Model eingefuegt wird und kein StyleSheet gesetzt hat. GetDefaultStyleSheet() const386cdf0e10cSrcweir SfxStyleSheet* GetDefaultStyleSheet() const { return pDefaultStyleSheet; } SetDefaultStyleSheet(SfxStyleSheet * pDefSS)387cdf0e10cSrcweir void SetDefaultStyleSheet(SfxStyleSheet* pDefSS) { pDefaultStyleSheet = pDefSS; } 388cdf0e10cSrcweir 3899e9dd2d5SArmin Le Grand // #119287# default StyleSheet for SdrGrafObj and SdrOle2Obj GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj() const3909e9dd2d5SArmin Le Grand SfxStyleSheet* GetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj() const { return mpDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj; } SetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj(SfxStyleSheet * pDefSS)3919e9dd2d5SArmin Le Grand void SetDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj(SfxStyleSheet* pDefSS) { mpDefaultStyleSheetForSdrGrafObjAndSdrOle2Obj = pDefSS; } 3929e9dd2d5SArmin Le Grand GetLinkManager()393cdf0e10cSrcweir sfx2::LinkManager* GetLinkManager() { return pLinkManager; } SetLinkManager(sfx2::LinkManager * pLinkMgr)394cdf0e10cSrcweir void SetLinkManager( sfx2::LinkManager* pLinkMgr ) { pLinkManager = pLinkMgr; } 395cdf0e10cSrcweir GetPersist() const396cdf0e10cSrcweir ::comphelper::IEmbeddedHelper* GetPersist() const { return m_pEmbeddedHelper; } ClearPersist()397cdf0e10cSrcweir void ClearPersist() { m_pEmbeddedHelper = 0; } SetPersist(::comphelper::IEmbeddedHelper * p)398cdf0e10cSrcweir void SetPersist( ::comphelper::IEmbeddedHelper *p ) { m_pEmbeddedHelper = p; } 399cdf0e10cSrcweir 400cdf0e10cSrcweir // Masseinheit fuer die Zeichenkoordinaten. 401cdf0e10cSrcweir // Default ist 1 logische Einheit = 1/100mm (Unit=MAP_100TH_MM, Fract=(1,1)). 402cdf0e10cSrcweir // Beispiele: 403cdf0e10cSrcweir // MAP_POINT, Fraction(72,1) : 1 log Einh = 72 Point = 1 Inch 404cdf0e10cSrcweir // MAP_POINT, Fraction(1,20) : 1 log Einh = 1/20 Point = 1 Twip 405cdf0e10cSrcweir // MAP_TWIP, Fraction(1,1) : 1 log Einh = 1 Twip 406cdf0e10cSrcweir // MAP_100TH_MM, Fraction(1,10) : 1 log Einh = 1/1000mm 407cdf0e10cSrcweir // MAP_MM, Fraction(1000,1) : 1 log Einh = 1000mm = 1m 408cdf0e10cSrcweir // MAP_CM, Fraction(100,1) : 1 log Einh = 100cm = 1m 409cdf0e10cSrcweir // MAP_CM, Fraction(100,1) : 1 log Einh = 100cm = 1m 410cdf0e10cSrcweir // MAP_CM, Fraction(100000,1): 1 log Einh = 100000cm = 1km 411cdf0e10cSrcweir // (PS: Lichtjahre sind somit also nicht darstellbar). 412cdf0e10cSrcweir // Die Skalierungseinheit wird benoetigt, damit die Engine das Clipboard 413cdf0e10cSrcweir // mit den richtigen Groessen beliefern kann. GetScaleUnit() const414cdf0e10cSrcweir MapUnit GetScaleUnit() const { return eObjUnit; } 415cdf0e10cSrcweir void SetScaleUnit(MapUnit eMap); GetScaleFraction() const416cdf0e10cSrcweir const Fraction& GetScaleFraction() const { return aObjUnit; } 417cdf0e10cSrcweir void SetScaleFraction(const Fraction& rFrac); 418cdf0e10cSrcweir // Beides gleichzeitig setzen ist etwas performanter 419cdf0e10cSrcweir void SetScaleUnit(MapUnit eMap, const Fraction& rFrac); 420cdf0e10cSrcweir 421cdf0e10cSrcweir // Maximale Groesse z.B. fuer Autogrowing-Texte GetMaxObjSize() const422cdf0e10cSrcweir const Size& GetMaxObjSize() const { return aMaxObjSize; } SetMaxObjSize(const Size & rSiz)423cdf0e10cSrcweir void SetMaxObjSize(const Size& rSiz) { aMaxObjSize=rSiz; } 424cdf0e10cSrcweir 425cdf0e10cSrcweir // Damit die View! in der Statuszeile vernuenftige Zahlen anzeigen kann: 426cdf0e10cSrcweir // Default ist mm. 427cdf0e10cSrcweir void SetUIUnit(FieldUnit eUnit); GetUIUnit() const428cdf0e10cSrcweir FieldUnit GetUIUnit() const { return eUIUnit; } 429cdf0e10cSrcweir // Der Masstab der Zeichnung. Default 1/1. 430cdf0e10cSrcweir void SetUIScale(const Fraction& rScale); GetUIScale() const431cdf0e10cSrcweir const Fraction& GetUIScale() const { return aUIScale; } 432cdf0e10cSrcweir // Beides gleichzeitig setzen ist etwas performanter 433cdf0e10cSrcweir void SetUIUnit(FieldUnit eUnit, const Fraction& rScale); 434cdf0e10cSrcweir GetUIUnitFact() const435cdf0e10cSrcweir const Fraction& GetUIUnitFact() const { return aUIUnitFact; } GetUIUnitStr() const436cdf0e10cSrcweir const String& GetUIUnitStr() const { return aUIUnitStr; } GetUIUnitKomma() const437cdf0e10cSrcweir int GetUIUnitKomma() const { return nUIUnitKomma; } IsUIOnlyKomma() const438cdf0e10cSrcweir FASTBOOL IsUIOnlyKomma() const { return bUIOnlyKomma; } 439cdf0e10cSrcweir 440cdf0e10cSrcweir static void TakeUnitStr(FieldUnit eUnit, String& rStr); 441cdf0e10cSrcweir void TakeMetricStr(long nVal, String& rStr, FASTBOOL bNoUnitChars=sal_False, sal_Int32 nNumDigits = -1) const; 442cdf0e10cSrcweir void TakeWinkStr(long nWink, String& rStr, FASTBOOL bNoDegChar=sal_False) const; 443cdf0e10cSrcweir void TakePercentStr(const Fraction& rVal, String& rStr, FASTBOOL bNoPercentChar=sal_False) const; 444cdf0e10cSrcweir 445cdf0e10cSrcweir // RecalcPageNums wird idR. nur von der Page gerufen. IsPagNumsDirty() const446cdf0e10cSrcweir FASTBOOL IsPagNumsDirty() const { return bPagNumsDirty; }; IsMPgNumsDirty() const447cdf0e10cSrcweir FASTBOOL IsMPgNumsDirty() const { return bMPgNumsDirty; }; 448cdf0e10cSrcweir void RecalcPageNums(FASTBOOL bMaster); 449cdf0e10cSrcweir // Nach dem Insert gehoert die Page dem SdrModel. 450cdf0e10cSrcweir virtual void InsertPage(SdrPage* pPage, sal_uInt16 nPos=0xFFFF); 451cdf0e10cSrcweir virtual void DeletePage(sal_uInt16 nPgNum); 452cdf0e10cSrcweir // Remove bedeutet Eigentumsuebereignung an den Aufrufer (Gegenteil von Insert) 453cdf0e10cSrcweir virtual SdrPage* RemovePage(sal_uInt16 nPgNum); 454cdf0e10cSrcweir virtual void MovePage(sal_uInt16 nPgNum, sal_uInt16 nNewPos); 455cdf0e10cSrcweir const SdrPage* GetPage(sal_uInt16 nPgNum) const; 456cdf0e10cSrcweir SdrPage* GetPage(sal_uInt16 nPgNum); 457cdf0e10cSrcweir sal_uInt16 GetPageCount() const; 458cdf0e10cSrcweir // #109538# 459cdf0e10cSrcweir virtual void PageListChanged(); 460cdf0e10cSrcweir 461cdf0e10cSrcweir // Masterpages 462cdf0e10cSrcweir virtual void InsertMasterPage(SdrPage* pPage, sal_uInt16 nPos=0xFFFF); 463cdf0e10cSrcweir virtual void DeleteMasterPage(sal_uInt16 nPgNum); 464cdf0e10cSrcweir // Remove bedeutet Eigentumsuebereignung an den Aufrufer (Gegenteil von Insert) 465cdf0e10cSrcweir virtual SdrPage* RemoveMasterPage(sal_uInt16 nPgNum); 466cdf0e10cSrcweir virtual void MoveMasterPage(sal_uInt16 nPgNum, sal_uInt16 nNewPos); 467cdf0e10cSrcweir const SdrPage* GetMasterPage(sal_uInt16 nPgNum) const; 468cdf0e10cSrcweir SdrPage* GetMasterPage(sal_uInt16 nPgNum); 469cdf0e10cSrcweir sal_uInt16 GetMasterPageCount() const; 470cdf0e10cSrcweir // #109538# 471cdf0e10cSrcweir virtual void MasterPageListChanged(); 472cdf0e10cSrcweir 473cdf0e10cSrcweir // Modified-Flag. Wird automatisch gesetzt, wenn an den Pages oder 474cdf0e10cSrcweir // Zeichenobjekten was geaendert wird. Zuruecksetzen muss man es 475cdf0e10cSrcweir // jedoch selbst (z.B. bei Save() ...). IsChanged() const476cdf0e10cSrcweir sal_Bool IsChanged() const { return mbChanged; } 477cdf0e10cSrcweir virtual void SetChanged(sal_Bool bFlg = sal_True); 478cdf0e10cSrcweir 479cdf0e10cSrcweir // PageNotValid bedeutet, dass das Model lediglich Objekte traegt die zwar 480cdf0e10cSrcweir // auf einer Page verankert sind, die Page aber nicht gueltig ist. Diese 481cdf0e10cSrcweir // Kennzeichnung wird fuers Clipboard/Drag&Drop benoetigt. IsPageNotValid() const482cdf0e10cSrcweir FASTBOOL IsPageNotValid() const { return bPageNotValid; } SetPageNotValid(FASTBOOL bJa=sal_True)483cdf0e10cSrcweir void SetPageNotValid(FASTBOOL bJa=sal_True) { bPageNotValid=bJa; } 484cdf0e10cSrcweir 485cdf0e10cSrcweir // Schaltet man dieses Flag auf sal_True, so werden Grafikobjekte 486cdf0e10cSrcweir // portabel gespeichert. Es findet dann beim Speichern ggf. 487cdf0e10cSrcweir // eine implizite Wandlung von Metafiles statt. 488cdf0e10cSrcweir // Default=FALSE. Flag ist nicht persistent. IsSavePortable() const489cdf0e10cSrcweir FASTBOOL IsSavePortable() const { return bSavePortable; } SetSavePortable(FASTBOOL bJa=sal_True)490cdf0e10cSrcweir void SetSavePortable(FASTBOOL bJa=sal_True) { bSavePortable=bJa; } 491cdf0e10cSrcweir 492cdf0e10cSrcweir // Schaltet man dieses Flag auf sal_True, so werden 493cdf0e10cSrcweir // Pixelobjekte (stark) komprimiert gespeichert. 494cdf0e10cSrcweir // Default=FALSE. Flag ist nicht persistent. IsSaveCompressed() const495cdf0e10cSrcweir FASTBOOL IsSaveCompressed() const { return bSaveCompressed; } SetSaveCompressed(FASTBOOL bJa=sal_True)496cdf0e10cSrcweir void SetSaveCompressed(FASTBOOL bJa=sal_True) { bSaveCompressed=bJa; } 497cdf0e10cSrcweir 498cdf0e10cSrcweir // Schaltet man dieses Flag auf sal_True, so werden 499cdf0e10cSrcweir // Grafikobjekte mit gesetztem Native-Link 500cdf0e10cSrcweir // native gespeichert. 501cdf0e10cSrcweir // Default=FALSE. Flag ist nicht persistent. IsSaveNative() const502cdf0e10cSrcweir FASTBOOL IsSaveNative() const { return bSaveNative; } SetSaveNative(FASTBOOL bJa=sal_True)503cdf0e10cSrcweir void SetSaveNative(FASTBOOL bJa=sal_True) { bSaveNative=bJa; } 504cdf0e10cSrcweir 505cdf0e10cSrcweir // Schaltet man dieses Flag auf sal_True, so werden die Grafiken 506cdf0e10cSrcweir // von Grafikobjekten: 507cdf0e10cSrcweir // - beim Laden eines Dokuments nicht sofort mitgeladen, 508cdf0e10cSrcweir // sondern erst wenn sie gebraucht (z.B. angezeigt) werden. 509cdf0e10cSrcweir // - ggf. wieder aus dem Speicher geworfen, falls Sie gerade 510cdf0e10cSrcweir // nicht benoetigt werden. 511cdf0e10cSrcweir // Damit das funktioniert, muss die virtuelle Methode 512cdf0e10cSrcweir // GetDocumentStream() ueberladen werden. 513cdf0e10cSrcweir // Default=FALSE. Flag ist nicht persistent. IsSwapGraphics() const514cdf0e10cSrcweir FASTBOOL IsSwapGraphics() const { return bSwapGraphics; } 515cdf0e10cSrcweir void SetSwapGraphics(FASTBOOL bJa=sal_True); SetSwapGraphicsMode(sal_uIntPtr nMode)516cdf0e10cSrcweir void SetSwapGraphicsMode(sal_uIntPtr nMode) { nSwapGraphicsMode = nMode; } GetSwapGraphicsMode() const517cdf0e10cSrcweir sal_uIntPtr GetSwapGraphicsMode() const { return nSwapGraphicsMode; } 518cdf0e10cSrcweir IsSaveOLEPreview() const519cdf0e10cSrcweir FASTBOOL IsSaveOLEPreview() const { return bSaveOLEPreview; } SetSaveOLEPreview(FASTBOOL bSet)520cdf0e10cSrcweir void SetSaveOLEPreview( FASTBOOL bSet) { bSaveOLEPreview = bSet; } 521cdf0e10cSrcweir 522cdf0e10cSrcweir // Damit die Bildschirmausgabe von Bitmaps (insbesondere bei gedrehten) 523cdf0e10cSrcweir // etwas schneller wird, werden sie gecachet. Diesen Cache kann man mit 524cdf0e10cSrcweir // diesem Flag ein-/ausschalten. Beim naechsten Paint wird an den Objekten 525cdf0e10cSrcweir // dann ggf. ein Image gemerkt bzw. freigegeben. Wandert ein Bitmapobjekt 526cdf0e10cSrcweir // in's Undo, so wird der Cache fuer dieses Objekt sofort ausgeschaltet 527cdf0e10cSrcweir // (Speicher sparen). 528cdf0e10cSrcweir // Default=Cache eingeschaltet. Flag ist nicht persistent. IsBitmapCaching() const529cdf0e10cSrcweir FASTBOOL IsBitmapCaching() const { return !bNoBitmapCaching; } SetBitmapCaching(FASTBOOL bJa=sal_True)530cdf0e10cSrcweir void SetBitmapCaching(FASTBOOL bJa=sal_True) { bNoBitmapCaching=!bJa; } 531cdf0e10cSrcweir 532cdf0e10cSrcweir // Defaultmaessig (sal_False) kann man Textrahmen ohne Fuellung durch 533cdf0e10cSrcweir // Mausklick selektieren. Nach Aktivierung dieses Flags trifft man sie 534cdf0e10cSrcweir // nur noch in dem Bereich, wo sich auch tatsaechlich Text befindet. IsPickThroughTransparentTextFrames() const535cdf0e10cSrcweir FASTBOOL IsPickThroughTransparentTextFrames() const { return bTransparentTextFrames; } SetPickThroughTransparentTextFrames(FASTBOOL bOn)536cdf0e10cSrcweir void SetPickThroughTransparentTextFrames(FASTBOOL bOn) { bTransparentTextFrames=bOn; } 537cdf0e10cSrcweir 538cdf0e10cSrcweir // Darf denn das Model ueberhaupt veraendert werden? 539cdf0e10cSrcweir // Wird nur von den Possibility-Methoden der View ausgewerdet. 540cdf0e10cSrcweir // Direkte Manipulationen am Model, ... berueksichtigen dieses Flag nicht. 541cdf0e10cSrcweir // Sollte ueberladen werden und entsprechend des ReadOnly-Status des Files 542cdf0e10cSrcweir // sal_True oder sal_False liefern (Methode wird oeffters gerufen, also ein Flag 543cdf0e10cSrcweir // verwenden!). 544cdf0e10cSrcweir virtual FASTBOOL IsReadOnly() const; 545cdf0e10cSrcweir virtual void SetReadOnly(FASTBOOL bYes); 546cdf0e10cSrcweir 547cdf0e10cSrcweir // Vermischen zweier SdrModel. Zu beachten sei, dass rSourceModel nicht 548cdf0e10cSrcweir // const ist. Die Pages werden beim einfuegen nicht kopiert, sondern gemoved. 549cdf0e10cSrcweir // rSourceModel ist anschliessend u.U. weitgehend leer. 550cdf0e10cSrcweir // nFirstPageNum,nLastPageNum: Die aus rSourceModel zu uebernehmenden Seiten 551cdf0e10cSrcweir // nDestPos..................: Einfuegeposition 552cdf0e10cSrcweir // bMergeMasterPages.........: sal_True =benoetigte MasterPages werden aus 553cdf0e10cSrcweir // rSourceModel ebenfalls uebernommen 554cdf0e10cSrcweir // sal_False=Die MasterPageDescriptoren der Seiten 555cdf0e10cSrcweir // aus rSourceModel werden auf die 556cdf0e10cSrcweir // vorhandenen MasterPages gemappt. 557cdf0e10cSrcweir // bUndo.....................: Fuer das Merging wird eine UndoAction generiert. 558cdf0e10cSrcweir // Undo ist nur fuer das ZielModel, nicht fuer 559cdf0e10cSrcweir // rSourceModel. 560cdf0e10cSrcweir // bTreadSourceAsConst.......: sal_True=Das SourceModel wird nicht veraendert,. 561cdf0e10cSrcweir // d.h die Seiten werden kopiert. 562cdf0e10cSrcweir virtual void Merge(SdrModel& rSourceModel, 563cdf0e10cSrcweir sal_uInt16 nFirstPageNum=0, sal_uInt16 nLastPageNum=0xFFFF, 564cdf0e10cSrcweir sal_uInt16 nDestPos=0xFFFF, 565cdf0e10cSrcweir FASTBOOL bMergeMasterPages=sal_False, FASTBOOL bAllMasterPages=sal_False, 566cdf0e10cSrcweir FASTBOOL bUndo=sal_True, FASTBOOL bTreadSourceAsConst=sal_False); 567cdf0e10cSrcweir 568cdf0e10cSrcweir // Ist wie Merge(SourceModel=DestModel,nFirst,nLast,nDest,sal_False,sal_False,bUndo,!bMoveNoCopy); 569cdf0e10cSrcweir void CopyPages(sal_uInt16 nFirstPageNum, sal_uInt16 nLastPageNum, 570cdf0e10cSrcweir sal_uInt16 nDestPos, 571cdf0e10cSrcweir FASTBOOL bUndo=sal_True, FASTBOOL bMoveNoCopy=sal_False); 572cdf0e10cSrcweir 573cdf0e10cSrcweir // Mit BegUndo() / EndUndo() ist es moeglich beliebig viele UndoActions 574cdf0e10cSrcweir // beliebig tief zu klammern. Als Kommentar der 575cdf0e10cSrcweir // UndoAction wird der des ersten BegUndo(String) aller Klammerungen 576cdf0e10cSrcweir // verwendet. Der NotifyUndoActionHdl wird in diesem Fall erst beim letzten 577cdf0e10cSrcweir // EndUndo() gerufen. Bei einer leeren Klammerung wird keine UndoAction 578cdf0e10cSrcweir // generiert. 579cdf0e10cSrcweir // Alle direkten Aktionen am SdrModel erzeugen keine UndoActions, die 580cdf0e10cSrcweir // Aktionen an der SdrView dagegen generieren solche. 581cdf0e10cSrcweir void BegUndo(); // Undo-Klammerung auf 582cdf0e10cSrcweir void BegUndo(const String& rComment); // Undo-Klammerung auf 583cdf0e10cSrcweir void BegUndo(const String& rComment, const String& rObjDescr, SdrRepeatFunc eFunc=SDRREPFUNC_OBJ_NONE); // Undo-Klammerung auf 584cdf0e10cSrcweir void BegUndo(SdrUndoGroup* pUndoGrp); // Undo-Klammerung auf 585cdf0e10cSrcweir void EndUndo(); // Undo-Klammerung zu 586cdf0e10cSrcweir void AddUndo(SdrUndoAction* pUndo); GetUndoBracketLevel() const587cdf0e10cSrcweir sal_uInt16 GetUndoBracketLevel() const { return nUndoLevel; } GetAktUndoGroup() const588cdf0e10cSrcweir const SdrUndoGroup* GetAktUndoGroup() const { return pAktUndoGroup; } 589cdf0e10cSrcweir // nur nach dem 1. BegUndo oder vor dem letzten EndUndo: 590cdf0e10cSrcweir void SetUndoComment(const String& rComment); 591cdf0e10cSrcweir void SetUndoComment(const String& rComment, const String& rObjDescr); 592cdf0e10cSrcweir 593cdf0e10cSrcweir // Das Undo-Managment findet nur statt, wenn kein NotifyUndoAction-Handler 594cdf0e10cSrcweir // gesetzt ist. 595cdf0e10cSrcweir // Default ist 16. Minimaler MaxUndoActionCount ist 1! 596cdf0e10cSrcweir void SetMaxUndoActionCount(sal_uIntPtr nAnz); GetMaxUndoActionCount() const597cdf0e10cSrcweir sal_uIntPtr GetMaxUndoActionCount() const { return nMaxUndoCount; } 598cdf0e10cSrcweir void ClearUndoBuffer(); 599cdf0e10cSrcweir // UndoAction(0) ist die aktuelle (also die zuletzt eingegangene) GetUndoActionCount() const600cdf0e10cSrcweir sal_uIntPtr GetUndoActionCount() const { return pUndoStack!=NULL ? pUndoStack->Count() : 0; } GetUndoAction(sal_uIntPtr nNum) const601cdf0e10cSrcweir const SfxUndoAction* GetUndoAction(sal_uIntPtr nNum) const { return (SfxUndoAction*)(pUndoStack!=NULL ? pUndoStack->GetObject(nNum) : NULL); } 602cdf0e10cSrcweir // RedoAction(0) ist die aktuelle (also die des letzten Undo) GetRedoActionCount() const603cdf0e10cSrcweir sal_uIntPtr GetRedoActionCount() const { return pRedoStack!=NULL ? pRedoStack->Count() : 0; } GetRedoAction(sal_uIntPtr nNum) const604cdf0e10cSrcweir const SfxUndoAction* GetRedoAction(sal_uIntPtr nNum) const { return (SfxUndoAction*)(pRedoStack!=NULL ? pRedoStack->GetObject(nNum) : NULL); } 605cdf0e10cSrcweir 606cdf0e10cSrcweir FASTBOOL Undo(); 607cdf0e10cSrcweir FASTBOOL Redo(); 608cdf0e10cSrcweir FASTBOOL Repeat(SfxRepeatTarget&); 609cdf0e10cSrcweir 610cdf0e10cSrcweir // Hier kann die Applikation einen Handler setzen, der die auflaufenden 611cdf0e10cSrcweir // UndoActions einsammelt. Der Handler hat folgendes Aussehen: 612cdf0e10cSrcweir // void __EXPORT NotifyUndoActionHdl(SfxUndoAction* pUndoAction); 613cdf0e10cSrcweir // Beim Aufruf des Handlers findet eine Eigentumsuebereignung statt; die 614cdf0e10cSrcweir // UndoAction gehoert somit dem Handler, nicht mehr dem SdrModel. SetNotifyUndoActionHdl(const Link & rLink)615cdf0e10cSrcweir void SetNotifyUndoActionHdl(const Link& rLink) { aUndoLink=rLink; } GetNotifyUndoActionHdl() const616cdf0e10cSrcweir const Link& GetNotifyUndoActionHdl() const { return aUndoLink; } 617cdf0e10cSrcweir 618cdf0e10cSrcweir /** application can set it's own undo manager, BegUndo, EndUndo and AddUndoAction 619cdf0e10cSrcweir calls are routet to this interface if given */ 620cdf0e10cSrcweir void SetSdrUndoManager( SfxUndoManager* pUndoManager ); 621cdf0e10cSrcweir SfxUndoManager* GetSdrUndoManager() const; 622cdf0e10cSrcweir 623cdf0e10cSrcweir /** applications can set their own undo factory to overide creation of 624cdf0e10cSrcweir undo actions. The SdrModel will become owner of the given SdrUndoFactory 625cdf0e10cSrcweir and delete it upon its destruction. */ 626cdf0e10cSrcweir void SetSdrUndoFactory( SdrUndoFactory* pUndoFactory ); 627cdf0e10cSrcweir 628cdf0e10cSrcweir /** returns the models undo factory. This must be used to create 629cdf0e10cSrcweir undo actions for this model. */ 630cdf0e10cSrcweir SdrUndoFactory& GetSdrUndoFactory() const; 631cdf0e10cSrcweir 632cdf0e10cSrcweir // Hier kann man einen Handler setzen der beim Streamen mehrfach gerufen 633cdf0e10cSrcweir // wird und ungefaehre Auskunft ueber den Fortschreitungszustand der 634cdf0e10cSrcweir // Funktion gibt. Der Handler muss folgendes Aussehen haben: 635cdf0e10cSrcweir // void __EXPORT class::IOProgressHdl(const sal_uInt16& nPercent); 636cdf0e10cSrcweir // Der erste Aufruf des Handlers erfolgt grundsaetzlich mit 0, der letzte 637cdf0e10cSrcweir // mit 100. Dazwischen erfolgen maximal 99 Aufrufe mit Werten 1...99. 638cdf0e10cSrcweir // Man kann also durchaus bei 0 den Progressbar Initiallisieren und bei 639cdf0e10cSrcweir // 100 wieder schliessen. Zu beachten sei, dass der Handler auch gerufen 640cdf0e10cSrcweir // wird, wenn die App Draw-Daten im officeweiten Draw-Exchange-Format 641cdf0e10cSrcweir // bereitstellt, denn dies geschieht durch streamen in einen MemoryStream. SetIOProgressHdl(const Link & rLink)642cdf0e10cSrcweir void SetIOProgressHdl(const Link& rLink) { aIOProgressLink=rLink; } GetIOProgressHdl() const643cdf0e10cSrcweir const Link& GetIOProgressHdl() const { return aIOProgressLink; } 644cdf0e10cSrcweir 645cdf0e10cSrcweir // Zugriffsmethoden fuer Paletten, Listen und Tabellen 646c7be74b1SArmin Le Grand void SetColorTableAtSdrModel(XColorListSharedPtr aTable); 647c7be74b1SArmin Le Grand XColorListSharedPtr GetColorTableFromSdrModel() const; 648c7be74b1SArmin Le Grand 649c7be74b1SArmin Le Grand void SetDashListAtSdrModel(XDashListSharedPtr aList); 650c7be74b1SArmin Le Grand XDashListSharedPtr GetDashListFromSdrModel() const; 651c7be74b1SArmin Le Grand 652c7be74b1SArmin Le Grand void SetLineEndListAtSdrModel(XLineEndListSharedPtr aList); 653c7be74b1SArmin Le Grand XLineEndListSharedPtr GetLineEndListFromSdrModel() const; 654c7be74b1SArmin Le Grand 655c7be74b1SArmin Le Grand void SetHatchListAtSdrModel(XHatchListSharedPtr aList); 656c7be74b1SArmin Le Grand XHatchListSharedPtr GetHatchListFromSdrModel() const; 657c7be74b1SArmin Le Grand 658c7be74b1SArmin Le Grand void SetGradientListAtSdrModel(XGradientListSharedPtr aList); 659c7be74b1SArmin Le Grand XGradientListSharedPtr GetGradientListFromSdrModel() const; 660c7be74b1SArmin Le Grand 661c7be74b1SArmin Le Grand void SetBitmapListAtSdrModel(XBitmapListSharedPtr aList); 662c7be74b1SArmin Le Grand XBitmapListSharedPtr GetBitmapListFromSdrModel() const; 663cdf0e10cSrcweir 664cdf0e10cSrcweir // Der StyleSheetPool wird der DrawingEngine nur bekanntgemacht. 665cdf0e10cSrcweir // Zu loeschen hat ihn schliesslich der, der ihn auch konstruiert hat. GetStyleSheetPool() const666cdf0e10cSrcweir SfxStyleSheetBasePool* GetStyleSheetPool() const { return mxStyleSheetPool.get(); } SetStyleSheetPool(SfxStyleSheetBasePool * pPool)667cdf0e10cSrcweir void SetStyleSheetPool(SfxStyleSheetBasePool* pPool) { mxStyleSheetPool=pPool; } 668cdf0e10cSrcweir 669cdf0e10cSrcweir // Diese Methode fuert einen Konsistenzcheck auf die Struktur des Models 670cdf0e10cSrcweir // durch. Geprueft wird insbesondere die Verkettung von Verschachtelten 671cdf0e10cSrcweir // Gruppenobjekten, aber auch Stati wie bInserted sowie Model* und Page* 672cdf0e10cSrcweir // der Objects, SubLists und Pages. Bei korrekter Struktur liefert die 673cdf0e10cSrcweir // Methode sal_True, andernfalls FALSE. 674cdf0e10cSrcweir // Dieser Check steht nur zur Verfuegung, wenn die Engine mit DBG_UTIL 675cdf0e10cSrcweir // uebersetzt wurde. Andernfalls liefert die Methode immer TRUE. (ni) 676cdf0e10cSrcweir FASTBOOL CheckConsistence() const; 677cdf0e10cSrcweir 678cdf0e10cSrcweir void SetStarDrawPreviewMode(sal_Bool bPreview); IsStarDrawPreviewMode()679cdf0e10cSrcweir sal_Bool IsStarDrawPreviewMode() { return bStarDrawPreviewMode; } 680cdf0e10cSrcweir GetDisableTextEditUsesCommonUndoManager() const681*a840a559SArmin Le Grand bool GetDisableTextEditUsesCommonUndoManager() const { return mbDisableTextEditUsesCommonUndoManager; } SetDisableTextEditUsesCommonUndoManager(bool bNew)682*a840a559SArmin Le Grand void SetDisableTextEditUsesCommonUndoManager(bool bNew) { mbDisableTextEditUsesCommonUndoManager = bNew; } 683*a840a559SArmin Le Grand GetModelStorage() const684cdf0e10cSrcweir SotStorage* GetModelStorage() const { return pModelStorage; } SetModelStorage(SotStorage * pStor)685cdf0e10cSrcweir void SetModelStorage( SotStorage* pStor ) { pModelStorage = pStor; } 686cdf0e10cSrcweir 687cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getUnoModel(); 688cdf0e10cSrcweir void setUnoModel( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xModel ); 689cdf0e10cSrcweir 690cdf0e10cSrcweir // these functions are used by the api to disable repaints during a 691cdf0e10cSrcweir // set of api calls. isLocked() const692cdf0e10cSrcweir sal_Bool isLocked() const { return (sal_Bool)mbModelLocked; } 693cdf0e10cSrcweir void setLock( sal_Bool bLock ); 694cdf0e10cSrcweir 695cdf0e10cSrcweir void SetForbiddenCharsTable( vos::ORef<SvxForbiddenCharactersTable> xForbiddenChars ); 696cdf0e10cSrcweir vos::ORef<SvxForbiddenCharactersTable> GetForbiddenCharsTable() const; 697cdf0e10cSrcweir 698cdf0e10cSrcweir void SetCharCompressType( sal_uInt16 nType ); GetCharCompressType() const699cdf0e10cSrcweir sal_uInt16 GetCharCompressType() const { return mnCharCompressType; } 700cdf0e10cSrcweir 701cdf0e10cSrcweir void SetKernAsianPunctuation( sal_Bool bEnabled ); IsKernAsianPunctuation() const702cdf0e10cSrcweir sal_Bool IsKernAsianPunctuation() const { return (sal_Bool)mbKernAsianPunctuation; } 703cdf0e10cSrcweir 704cdf0e10cSrcweir void SetAddExtLeading( sal_Bool bEnabled ); IsAddExtLeading() const705cdf0e10cSrcweir sal_Bool IsAddExtLeading() const { return (sal_Bool)mbAddExtLeading; } 706cdf0e10cSrcweir 707cdf0e10cSrcweir void ReformatAllTextObjects(); 708cdf0e10cSrcweir 709cdf0e10cSrcweir FASTBOOL HasTransparentObjects( sal_Bool bCheckForAlphaChannel = sal_False ) const; 710cdf0e10cSrcweir 711cdf0e10cSrcweir SdrOutliner* createOutliner( sal_uInt16 nOutlinerMode ); 712cdf0e10cSrcweir void disposeOutliner( SdrOutliner* pOutliner ); 713cdf0e10cSrcweir IsWriter() const714cdf0e10cSrcweir sal_Bool IsWriter() const { return !bMyPool; } 715cdf0e10cSrcweir 716cdf0e10cSrcweir /** returns the numbering type that is used to format page fields in drawing shapes */ 717cdf0e10cSrcweir virtual SvxNumType GetPageNumType() const; 718cdf0e10cSrcweir 719cdf0e10cSrcweir /** copies the items from the source set to the destination set. Both sets must have 720cdf0e10cSrcweir same ranges but can have different pools. If pNewModel is optional. If it is null, 721cdf0e10cSrcweir this model is used. */ 722cdf0e10cSrcweir 723cdf0e10cSrcweir void MigrateItemSet( const SfxItemSet* pSourceSet, SfxItemSet* pDestSet, SdrModel* pNewModel ); 724cdf0e10cSrcweir 725cdf0e10cSrcweir bool IsInDestruction() const; 726cdf0e10cSrcweir 727cdf0e10cSrcweir static const ::com::sun::star::uno::Sequence< sal_Int8 >& getUnoTunnelImplementationId(); 728cdf0e10cSrcweir GetImageMapForObject(SdrObject *)7299b8096d0SSteve Yin virtual ImageMap* GetImageMapForObject(SdrObject*){return NULL;}; GetHyperlinkCount(SdrObject *)7309b8096d0SSteve Yin virtual sal_Int32 GetHyperlinkCount(SdrObject*){return 0;} 7319b8096d0SSteve Yin 732cdf0e10cSrcweir /** enables (true) or disables (false) recording of undo actions 733cdf0e10cSrcweir If undo actions are added while undo is disabled, they are deleted. 734cdf0e10cSrcweir Disabling undo does not clear the current undo buffer! */ 735cdf0e10cSrcweir void EnableUndo( bool bEnable ); 736cdf0e10cSrcweir 737cdf0e10cSrcweir /** returns true if undo is currently enabled 738cdf0e10cSrcweir This returns false if undo was disabled using EnableUndo( false ) and 739cdf0e10cSrcweir also during the runtime of the Undo() and Redo() methods. */ 740cdf0e10cSrcweir bool IsUndoEnabled() const; 741cdf0e10cSrcweir }; 742cdf0e10cSrcweir 743cdf0e10cSrcweir typedef tools::WeakReference< SdrModel > SdrModelWeakRef; 744cdf0e10cSrcweir 745cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////////////////////////// 746cdf0e10cSrcweir 747cdf0e10cSrcweir #endif //_SVDMODEL_HXX 748cdf0e10cSrcweir 749cdf0e10cSrcweir /* ///////////////////////////////////////////////////////////////////////////////////////////////// 750cdf0e10cSrcweir +-----------+ 751cdf0e10cSrcweir | SdrModel | 752cdf0e10cSrcweir +--+------+-+ 753cdf0e10cSrcweir | +-----------+ 754cdf0e10cSrcweir +----+-----+ | 755cdf0e10cSrcweir | ... | | 756cdf0e10cSrcweir +----+---+ +----+---+ +-----+--------+ 757cdf0e10cSrcweir |SdrPage | |SdrPage | |SdrLayerAdmin | 758cdf0e10cSrcweir +---+----+ +-+--+--++ +---+-------+--+ 759cdf0e10cSrcweir | | | | | +-------------------+ 760cdf0e10cSrcweir +----+----+ +-----+-----+ +-------+-------+ 761cdf0e10cSrcweir | ... | | ... | | ... | 762cdf0e10cSrcweir +---+---+ +---+---+ +----+----+ +----+----+ +-----+------+ +------+-----+ 763cdf0e10cSrcweir |SdrObj | |SdrObj | |SdrLayer | |SdrLayer | |SdrLayerSet | |SdrLayerSet | 764cdf0e10cSrcweir +-------+ +-------+ +---------+ +---------+ +------------+ +------------+ 765cdf0e10cSrcweir Die Klasse SdrModel ist der Kopf des Datenmodells der StarView Drawing-Engine. 766cdf0e10cSrcweir 767cdf0e10cSrcweir ///////////////////////////////////////////////////////////////////////////////////////////////// */ 768cdf0e10cSrcweir 769