xref: /aoo41x/main/svx/inc/svx/svdmodel.hxx (revision 4d7c9de0)
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