xref: /aoo42x/main/sc/inc/document.hxx (revision 5b2f55dd)
138d50f7bSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
338d50f7bSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
438d50f7bSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
538d50f7bSAndrew Rist  * distributed with this work for additional information
638d50f7bSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
738d50f7bSAndrew Rist  * to you under the Apache License, Version 2.0 (the
838d50f7bSAndrew Rist  * "License"); you may not use this file except in compliance
938d50f7bSAndrew Rist  * with the License.  You may obtain a copy of the License at
1038d50f7bSAndrew Rist  *
1138d50f7bSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
1238d50f7bSAndrew Rist  *
1338d50f7bSAndrew Rist  * Unless required by applicable law or agreed to in writing,
1438d50f7bSAndrew Rist  * software distributed under the License is distributed on an
1538d50f7bSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1638d50f7bSAndrew Rist  * KIND, either express or implied.  See the License for the
1738d50f7bSAndrew Rist  * specific language governing permissions and limitations
1838d50f7bSAndrew Rist  * under the License.
1938d50f7bSAndrew Rist  *
2038d50f7bSAndrew Rist  *************************************************************/
2138d50f7bSAndrew Rist 
2238d50f7bSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef SC_DOCUMENT_HXX
25cdf0e10cSrcweir #define SC_DOCUMENT_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir 
28cdf0e10cSrcweir #include <vcl/prntypes.hxx>
29cdf0e10cSrcweir #include <vcl/timer.hxx>
30cdf0e10cSrcweir #include <com/sun/star/uno/Reference.hxx>
31cdf0e10cSrcweir #include <vos/ref.hxx>
32cdf0e10cSrcweir #include "scdllapi.h"
33cdf0e10cSrcweir #include "table.hxx"		// FastGetRowHeight (inline)
34cdf0e10cSrcweir #include "rangelst.hxx"
35cdf0e10cSrcweir #include "brdcst.hxx"
36cdf0e10cSrcweir #include "tabopparams.hxx"
37cdf0e10cSrcweir #include "formula/grammar.hxx"
38cdf0e10cSrcweir #include <com/sun/star/chart2/XChartDocument.hpp>
39cdf0e10cSrcweir #include "scdllapi.h"
40cdf0e10cSrcweir 
41cdf0e10cSrcweir #include <memory>
42cdf0e10cSrcweir #include <map>
43cdf0e10cSrcweir #include <set>
44cdf0e10cSrcweir 
45cdf0e10cSrcweir // Wang Xu Ming -- 2009-8-17
46cdf0e10cSrcweir // DataPilot Migration - Cache&&Performance
47cdf0e10cSrcweir #include <list>
48cdf0e10cSrcweir class ScDPTableDataCache;
49cdf0e10cSrcweir // End Comments
50cdf0e10cSrcweir 
51cdf0e10cSrcweir class KeyEvent;
52cdf0e10cSrcweir class OutputDevice;
53cdf0e10cSrcweir class SdrObject;
54cdf0e10cSrcweir class SfxBroadcaster;
55cdf0e10cSrcweir class SfxListener;
56cdf0e10cSrcweir class SfxHint;
57cdf0e10cSrcweir class SfxItemSet;
58cdf0e10cSrcweir class SfxObjectShell;
59cdf0e10cSrcweir class SfxBindings;
60cdf0e10cSrcweir class SfxPoolItem;
61cdf0e10cSrcweir class SfxItemPool;
62cdf0e10cSrcweir class SfxPrinter;
63cdf0e10cSrcweir class SfxStatusBarManager;
64cdf0e10cSrcweir class SfxStyleSheetBase;
65cdf0e10cSrcweir class SvMemoryStream;
66cdf0e10cSrcweir class SvNumberFormatter;
67cdf0e10cSrcweir class SvxBorderLine;
68cdf0e10cSrcweir class SvxBoxInfoItem;
69cdf0e10cSrcweir class SvxBoxItem;
70cdf0e10cSrcweir class SvxBrushItem;
71cdf0e10cSrcweir class SvxForbiddenCharactersTable;
72cdf0e10cSrcweir namespace sfx2 {
73cdf0e10cSrcweir     class LinkManager;
74cdf0e10cSrcweir     }
75cdf0e10cSrcweir class SvxSearchItem;
76cdf0e10cSrcweir class SvxShadowItem;
77cdf0e10cSrcweir class Window;
7897e8a929SArmin Le Grand class XColorList;
79c7be74b1SArmin Le Grand typedef ::boost::shared_ptr< XColorList > XColorListSharedPtr;
80cdf0e10cSrcweir class List;
81cdf0e10cSrcweir 
82cdf0e10cSrcweir class ScAutoFormatData;
83cdf0e10cSrcweir class ScBaseCell;
84cdf0e10cSrcweir class ScStringCell;
85cdf0e10cSrcweir class ScBroadcastAreaSlotMachine;
86cdf0e10cSrcweir class ScChangeViewSettings;
87cdf0e10cSrcweir class ScChartCollection;
88cdf0e10cSrcweir class ScChartListenerCollection;
89cdf0e10cSrcweir class ScConditionalFormat;
90cdf0e10cSrcweir class ScConditionalFormatList;
91cdf0e10cSrcweir class ScDBCollection;
92cdf0e10cSrcweir class ScDBData;
93cdf0e10cSrcweir class ScDetOpData;
94cdf0e10cSrcweir class ScDetOpList;
95cdf0e10cSrcweir class ScDocOptions;
96cdf0e10cSrcweir class ScDocProtection;
97cdf0e10cSrcweir class ScDocumentPool;
98cdf0e10cSrcweir class ScDrawLayer;
99cdf0e10cSrcweir class ScExtDocOptions;
100cdf0e10cSrcweir class ScExternalRefManager;
101cdf0e10cSrcweir class ScFormulaCell;
102cdf0e10cSrcweir class ScMarkData;
103cdf0e10cSrcweir class ScOutlineTable;
104cdf0e10cSrcweir class ScPatternAttr;
105cdf0e10cSrcweir class ScPrintRangeSaver;
106cdf0e10cSrcweir class ScRangeData;
107cdf0e10cSrcweir class ScRangeName;
108cdf0e10cSrcweir class ScStyleSheet;
109cdf0e10cSrcweir class ScStyleSheetPool;
110cdf0e10cSrcweir class ScTable;
111cdf0e10cSrcweir class ScTableProtection;
112cdf0e10cSrcweir class ScTokenArray;
113cdf0e10cSrcweir class ScValidationData;
114cdf0e10cSrcweir class ScValidationDataList;
115cdf0e10cSrcweir class ScViewOptions;
116cdf0e10cSrcweir class ScStrCollection;
117cdf0e10cSrcweir class TypedScStrCollection;
118cdf0e10cSrcweir class ScChangeTrack;
119cdf0e10cSrcweir class ScEditEngineDefaulter;
120cdf0e10cSrcweir class ScFieldEditEngine;
121cdf0e10cSrcweir class ScNoteEditEngine;
122cdf0e10cSrcweir struct ScConsolidateParam;
123cdf0e10cSrcweir class ScDPObject;
124cdf0e10cSrcweir class ScDPCollection;
125cdf0e10cSrcweir class ScMatrix;
126cdf0e10cSrcweir class ScScriptTypeData;
127cdf0e10cSrcweir class ScPoolHelper;
128cdf0e10cSrcweir struct ScSortParam;
129cdf0e10cSrcweir class ScRefreshTimerControl;
130cdf0e10cSrcweir class ScUnoListenerCalls;
131cdf0e10cSrcweir class ScUnoRefList;
132cdf0e10cSrcweir class ScRecursionHelper;
133cdf0e10cSrcweir struct RowInfo;
134cdf0e10cSrcweir struct ScTableInfo;
135cdf0e10cSrcweir struct ScTabOpParam;
136cdf0e10cSrcweir class VirtualDevice;
137cdf0e10cSrcweir class ScAutoNameCache;
138cdf0e10cSrcweir class ScTemporaryChartLock;
139cdf0e10cSrcweir class ScLookupCache;
140cdf0e10cSrcweir struct ScLookupCacheMapImpl;
141cdf0e10cSrcweir class SfxUndoManager;
142cdf0e10cSrcweir class ScFormulaParserPool;
143cdf0e10cSrcweir struct ScClipParam;
144cdf0e10cSrcweir struct ScClipRangeNameData;
145cdf0e10cSrcweir class ScRowBreakIterator;
146cdf0e10cSrcweir 
147cdf0e10cSrcweir namespace com { namespace sun { namespace star {
148cdf0e10cSrcweir     namespace lang {
149cdf0e10cSrcweir         class XMultiServiceFactory;
150cdf0e10cSrcweir         struct EventObject;
151cdf0e10cSrcweir     }
152cdf0e10cSrcweir     namespace i18n {
153cdf0e10cSrcweir         class XBreakIterator;
154cdf0e10cSrcweir     }
155cdf0e10cSrcweir     namespace util {
156cdf0e10cSrcweir         class XModifyListener;
157cdf0e10cSrcweir     }
158cdf0e10cSrcweir     namespace embed {
159cdf0e10cSrcweir         class XEmbeddedObject;
160cdf0e10cSrcweir     }
161cdf0e10cSrcweir     namespace script { namespace vba {
162cdf0e10cSrcweir         class XVBAEventProcessor;
163cdf0e10cSrcweir     } }
164cdf0e10cSrcweir     namespace sheet {
165cdf0e10cSrcweir         struct TablePageBreakData;
166cdf0e10cSrcweir     }
167cdf0e10cSrcweir } } }
168cdf0e10cSrcweir 
169cdf0e10cSrcweir #include <svl/zforlist.hxx>
170cdf0e10cSrcweir /*
171cdf0e10cSrcweir #ifdef _ZFORLIST_DECLARE_TABLE
172cdf0e10cSrcweir class SvNumberFormatterIndexTable;
173cdf0e10cSrcweir #else
174cdf0e10cSrcweir class Table;
175cdf0e10cSrcweir typedef Table SvNumberFormatterIndexTable;
176cdf0e10cSrcweir #endif
177cdf0e10cSrcweir */
178cdf0e10cSrcweir 
179cdf0e10cSrcweir #define SC_DOC_NEW			0xFFFF
180cdf0e10cSrcweir 
181cdf0e10cSrcweir #define SC_MACROCALL_ALLOWED		0
182cdf0e10cSrcweir #define SC_MACROCALL_NOTALLOWED		1
183cdf0e10cSrcweir #define SC_MACROCALL_ASK			2
184cdf0e10cSrcweir 
185cdf0e10cSrcweir #define SC_ASIANCOMPRESSION_INVALID		0xff
186cdf0e10cSrcweir #define SC_ASIANKERNING_INVALID			0xff
187cdf0e10cSrcweir 
188cdf0e10cSrcweir 
189cdf0e10cSrcweir enum ScDocumentMode
190cdf0e10cSrcweir 	{
191cdf0e10cSrcweir 		SCDOCMODE_DOCUMENT,
192cdf0e10cSrcweir 		SCDOCMODE_CLIP,
193cdf0e10cSrcweir 		SCDOCMODE_UNDO
194cdf0e10cSrcweir 	};
195cdf0e10cSrcweir 
196cdf0e10cSrcweir 
197cdf0e10cSrcweir struct ScDocStat
198cdf0e10cSrcweir {
199cdf0e10cSrcweir 	String	aDocName;
200cdf0e10cSrcweir 	SCTAB	nTableCount;
201cdf0e10cSrcweir 	sal_uLong	nCellCount;
202cdf0e10cSrcweir 	sal_uInt16	nPageCount;
203cdf0e10cSrcweir };
204cdf0e10cSrcweir 
205cdf0e10cSrcweir // The constant parameters to CopyBlockFromClip
206cdf0e10cSrcweir struct ScCopyBlockFromClipParams
207cdf0e10cSrcweir {
208cdf0e10cSrcweir 	ScDocument*	pRefUndoDoc;
209cdf0e10cSrcweir 	ScDocument*	pClipDoc;
210cdf0e10cSrcweir 	sal_uInt16		nInsFlag;
211cdf0e10cSrcweir 	SCTAB		nTabStart;
212cdf0e10cSrcweir 	SCTAB		nTabEnd;
213cdf0e10cSrcweir 	sal_Bool		bAsLink;
214cdf0e10cSrcweir 	sal_Bool		bSkipAttrForEmpty;
215cdf0e10cSrcweir };
216cdf0e10cSrcweir 
217cdf0e10cSrcweir 
218cdf0e10cSrcweir // for loading of binary file format symbol string cells which need font conversion
219cdf0e10cSrcweir struct ScSymbolStringCellEntry
220cdf0e10cSrcweir {
221cdf0e10cSrcweir     ScStringCell*   pCell;
222cdf0e10cSrcweir     SCROW           nRow;
223cdf0e10cSrcweir };
224cdf0e10cSrcweir 
225cdf0e10cSrcweir 
226cdf0e10cSrcweir // -----------------------------------------------------------------------
227cdf0e10cSrcweir 
228cdf0e10cSrcweir // DDE link modes
229cdf0e10cSrcweir const sal_uInt8 SC_DDE_DEFAULT       = 0;
230cdf0e10cSrcweir const sal_uInt8 SC_DDE_ENGLISH       = 1;
231cdf0e10cSrcweir const sal_uInt8 SC_DDE_TEXT          = 2;
232cdf0e10cSrcweir const sal_uInt8 SC_DDE_IGNOREMODE    = 255;       /// For usage in FindDdeLink() only!
233cdf0e10cSrcweir 
234cdf0e10cSrcweir 
235cdf0e10cSrcweir // -----------------------------------------------------------------------
236577c0052SWang Lei enum { E_MEDIUM_FLAG_NONE = 0, E_MEDIUM_FLAG_EXCEL = 1, E_MEDIUM_FLAG_MSXML = 2 };
237cdf0e10cSrcweir 
238cdf0e10cSrcweir class ScDocument
239cdf0e10cSrcweir {
240cdf0e10cSrcweir friend class ScDocumentIterator;
241cdf0e10cSrcweir friend class ScValueIterator;
242cdf0e10cSrcweir friend class ScHorizontalValueIterator;
243cdf0e10cSrcweir friend class ScDBQueryDataIterator;
244cdf0e10cSrcweir friend class ScCellIterator;
245cdf0e10cSrcweir friend class ScQueryCellIterator;
246cdf0e10cSrcweir friend class ScHorizontalCellIterator;
247cdf0e10cSrcweir friend class ScHorizontalAttrIterator;
248cdf0e10cSrcweir friend class ScDocAttrIterator;
249cdf0e10cSrcweir friend class ScAttrRectIterator;
250cdf0e10cSrcweir friend class ScDocShell;
251cdf0e10cSrcweir 
252cdf0e10cSrcweir private:
253cdf0e10cSrcweir 	::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > xServiceManager;
254cdf0e10cSrcweir 
255cdf0e10cSrcweir 	vos::ORef<ScPoolHelper> xPoolHelper;
256cdf0e10cSrcweir 
257cdf0e10cSrcweir 	SfxUndoManager* 	mpUndoManager;
258cdf0e10cSrcweir 	ScFieldEditEngine*	pEditEngine;					// uses pEditPool from xPoolHelper
259cdf0e10cSrcweir 	ScNoteEditEngine*	pNoteEngine;					// uses pEditPool from xPoolHelper
260cdf0e10cSrcweir 	SfxItemPool*	pNoteItemPool; // SfxItemPool to be used if pDrawLayer not created.
261cdf0e10cSrcweir 	SfxObjectShell*		pShell;
262cdf0e10cSrcweir 	SfxPrinter*			pPrinter;
263cdf0e10cSrcweir 	VirtualDevice*		pVirtualDevice_100th_mm;
264cdf0e10cSrcweir 	ScDrawLayer*		pDrawLayer;						// SdrModel
265c7be74b1SArmin Le Grand 	XColorListSharedPtr maColorTable;
266cdf0e10cSrcweir 	ScConditionalFormatList* pCondFormList;				// bedingte Formate
267cdf0e10cSrcweir 	ScValidationDataList* pValidationList;				// Gueltigkeit
268cdf0e10cSrcweir 	SvNumberFormatterIndexTable*	pFormatExchangeList;			// zum Umsetzen von Zahlenformaten
269cdf0e10cSrcweir 	ScTable*			pTab[MAXTABCOUNT];
270cdf0e10cSrcweir 	ScRangeName*		pRangeName;
271cdf0e10cSrcweir 	ScDBCollection*		pDBCollection;
272cdf0e10cSrcweir 	ScDPCollection*		pDPCollection;
273cdf0e10cSrcweir     // Wang Xu Ming -- 2009-8-17
274cdf0e10cSrcweir     // DataPilot Migration - Cache&&Performance
275cdf0e10cSrcweir     std::list<ScDPTableDataCache*>   m_listDPObjectsCaches;
276cdf0e10cSrcweir     // End Comments
277cdf0e10cSrcweir 	ScChartCollection*	pChartCollection;
278cdf0e10cSrcweir     std::auto_ptr< ScTemporaryChartLock > apTemporaryChartLock;
279cdf0e10cSrcweir 	ScPatternAttr*		pSelectionAttr;					// Attribute eines Blocks
280cdf0e10cSrcweir 	mutable sfx2::LinkManager*		pLinkManager;
281cdf0e10cSrcweir 	ScFormulaCell*		pFormulaTree;					// Berechnungsbaum Start
282cdf0e10cSrcweir 	ScFormulaCell*		pEOFormulaTree;					// Berechnungsbaum Ende, letzte Zelle
283cdf0e10cSrcweir 	ScFormulaCell*		pFormulaTrack;					// BroadcastTrack Start
284cdf0e10cSrcweir 	ScFormulaCell*		pEOFormulaTrack;				// BrodcastTrack Ende, letzte Zelle
285cdf0e10cSrcweir 	ScBroadcastAreaSlotMachine*	pBASM;					// BroadcastAreas
286cdf0e10cSrcweir 	ScChartListenerCollection* pChartListenerCollection;
287cdf0e10cSrcweir 	ScStrCollection*		pOtherObjects;					// non-chart OLE objects
288cdf0e10cSrcweir 	SvMemoryStream*		pClipData;
289cdf0e10cSrcweir 	ScDetOpList*		pDetOpList;
290cdf0e10cSrcweir 	ScChangeTrack*		pChangeTrack;
291cdf0e10cSrcweir 	SfxBroadcaster*		pUnoBroadcaster;
292cdf0e10cSrcweir 	ScUnoListenerCalls*	pUnoListenerCalls;
293cdf0e10cSrcweir     ScUnoRefList*       pUnoRefUndoList;
294cdf0e10cSrcweir 	ScChangeViewSettings* pChangeViewSettings;
295cdf0e10cSrcweir 	ScScriptTypeData*	pScriptTypeData;
296cdf0e10cSrcweir 	ScRefreshTimerControl* pRefreshTimerControl;
297cdf0e10cSrcweir 	vos::ORef<SvxForbiddenCharactersTable> xForbiddenCharacters;
298cdf0e10cSrcweir 
299cdf0e10cSrcweir 	ScFieldEditEngine*	pCacheFieldEditEngine;
300cdf0e10cSrcweir 
301cdf0e10cSrcweir     ::std::auto_ptr<ScDocProtection> pDocProtection;
302cdf0e10cSrcweir     ::std::auto_ptr<ScClipParam>     mpClipParam;
303cdf0e10cSrcweir 
304cdf0e10cSrcweir     ::std::auto_ptr<ScExternalRefManager> pExternalRefMgr;
305cdf0e10cSrcweir 
306cdf0e10cSrcweir     // mutable for lazy construction
307cdf0e10cSrcweir     mutable ::std::auto_ptr< ScFormulaParserPool >
308cdf0e10cSrcweir                         mxFormulaParserPool;            /// Pool for all external formula parsers used by this document.
309cdf0e10cSrcweir 
310cdf0e10cSrcweir 	String              aDocName;                       // opt: Dokumentname
311cdf0e10cSrcweir 	String              aDocCodeName;                       // opt: Dokumentname
312cdf0e10cSrcweir 	ScRangePairListRef	xColNameRanges;
313cdf0e10cSrcweir 	ScRangePairListRef	xRowNameRanges;
314cdf0e10cSrcweir 
315cdf0e10cSrcweir 	ScViewOptions*		pViewOptions;					// View-Optionen
316cdf0e10cSrcweir 	ScDocOptions*		pDocOptions;					// Dokument-Optionen
317cdf0e10cSrcweir 	ScExtDocOptions*	pExtDocOptions;					// fuer Import etc.
318cdf0e10cSrcweir 	ScConsolidateParam*	pConsolidateDlgData;
319cdf0e10cSrcweir 
320cdf0e10cSrcweir     ScRecursionHelper*  pRecursionHelper;               // information for recursive and iterative cell formulas
321cdf0e10cSrcweir 
322cdf0e10cSrcweir     ScAutoNameCache*    pAutoNameCache;                 // for automatic name lookup during CompileXML
323cdf0e10cSrcweir 
324cdf0e10cSrcweir     ScLookupCacheMapImpl* pLookupCacheMapImpl;          // cache for lookups like VLOOKUP and MATCH
325cdf0e10cSrcweir 
326cdf0e10cSrcweir     sal_Int64           nUnoObjectId;                   // counted up for UNO objects
327cdf0e10cSrcweir 
328cdf0e10cSrcweir     sal_uInt32          nRangeOverflowType;             // used in (xml) loading for overflow warnings
329cdf0e10cSrcweir 
330cdf0e10cSrcweir 	ScRange				aEmbedRange;
331cdf0e10cSrcweir 	ScAddress			aCurTextWidthCalcPos;
332cdf0e10cSrcweir 	ScAddress			aOnlineSpellPos;				// within whole document
333cdf0e10cSrcweir 	ScRange				aVisSpellRange;
334cdf0e10cSrcweir 	ScAddress			aVisSpellPos;					// within aVisSpellRange (see nVisSpellState)
335cdf0e10cSrcweir 
336cdf0e10cSrcweir 	Timer				aTrackTimer;
337cdf0e10cSrcweir 
338cdf0e10cSrcweir     com::sun::star::uno::Reference< com::sun::star::script::vba::XVBAEventProcessor >
339cdf0e10cSrcweir                         mxVbaEvents;
340cdf0e10cSrcweir 
341cdf0e10cSrcweir public:
342cdf0e10cSrcweir     ScTabOpList         aTableOpList;		            // list of ScInterpreterTableOpParams currently in use
343cdf0e10cSrcweir     ScInterpreterTableOpParams  aLastTableOpParams;     // remember last params
344cdf0e10cSrcweir private:
345cdf0e10cSrcweir 
346cdf0e10cSrcweir 	LanguageType		eLanguage;						// default language
347cdf0e10cSrcweir 	LanguageType		eCjkLanguage;					// default language for asian text
348cdf0e10cSrcweir 	LanguageType		eCtlLanguage;					// default language for complex text
349cdf0e10cSrcweir 	CharSet				eSrcSet; 						// Einlesen: Quell-Zeichensatz
350cdf0e10cSrcweir 
351cdf0e10cSrcweir     /** The compiler grammar used in document storage. GRAM_PODF for ODF 1.1
352cdf0e10cSrcweir         documents, GRAM_ODFF for ODF 1.2 documents. */
353cdf0e10cSrcweir     formula::FormulaGrammar::Grammar  eStorageGrammar;
354cdf0e10cSrcweir 
355cdf0e10cSrcweir     /** The compiler grammar used in ODF import after brackets had been
356cdf0e10cSrcweir         stripped (which they shouldn't, but until that's fixed) by the XML
357cdf0e10cSrcweir         importer. */
358cdf0e10cSrcweir     formula::FormulaGrammar::Grammar  eXmlImportGrammar;
359cdf0e10cSrcweir 
360cdf0e10cSrcweir 	sal_uLong				nFormulaCodeInTree;				// FormelRPN im Formelbaum
361cdf0e10cSrcweir     sal_uLong               nXMLImportedFormulaCount;        // progress count during XML import
362cdf0e10cSrcweir 	sal_uInt16				nInterpretLevel;				// >0 wenn im Interpreter
363cdf0e10cSrcweir 	sal_uInt16				nMacroInterpretLevel; 			// >0 wenn Macro im Interpreter
364cdf0e10cSrcweir 	sal_uInt16				nInterpreterTableOpLevel;		// >0 if in Interpreter TableOp
365cdf0e10cSrcweir 	SCTAB				nMaxTableNumber;
366cdf0e10cSrcweir 	sal_uInt16				nSrcVer;						// Dateiversion (Laden/Speichern)
367cdf0e10cSrcweir 	SCROW				nSrcMaxRow;						// Zeilenzahl zum Laden/Speichern
368cdf0e10cSrcweir 	sal_uInt16				nFormulaTrackCount;
369cdf0e10cSrcweir 	sal_uInt16				nHardRecalcState;				// 0: soft, 1: hard-warn, 2: hard
370cdf0e10cSrcweir 	SCTAB				nVisibleTab;					// fuer OLE etc.
371cdf0e10cSrcweir 
372cdf0e10cSrcweir 	ScLkUpdMode			eLinkMode;
373cdf0e10cSrcweir 
374cdf0e10cSrcweir 	sal_Bool				bAutoCalc;						// Automatisch Berechnen
375cdf0e10cSrcweir 	sal_Bool				bAutoCalcShellDisabled;			// in/von/fuer ScDocShell disabled
376cdf0e10cSrcweir 	// ob noch ForcedFormulas berechnet werden muessen,
377cdf0e10cSrcweir 	// im Zusammenspiel mit ScDocShell SetDocumentModified,
378cdf0e10cSrcweir 	// AutoCalcShellDisabled und TrackFormulas
379cdf0e10cSrcweir 	sal_Bool				bForcedFormulaPending;
380cdf0e10cSrcweir 	sal_Bool				bCalculatingFormulaTree;
381cdf0e10cSrcweir 	sal_Bool				bIsClip;
382cdf0e10cSrcweir 	sal_Bool				bIsUndo;
383cdf0e10cSrcweir 	sal_Bool				bIsVisible;						// set from view ctor
384cdf0e10cSrcweir 
385cdf0e10cSrcweir 	sal_Bool				bIsEmbedded;					// Embedded-Bereich anzeigen/anpassen ?
386cdf0e10cSrcweir 
387cdf0e10cSrcweir 	// kein SetDirty bei ScFormulaCell::CompileTokenArray sondern am Ende
388cdf0e10cSrcweir 	// von ScDocument::CompileAll[WithFormats], CopyScenario, CopyBlockFromClip
389cdf0e10cSrcweir 	sal_Bool				bNoSetDirty;
390cdf0e10cSrcweir 	// kein Broadcast, keine Listener aufbauen waehrend aus einem anderen
391cdf0e10cSrcweir 	// Doc (per Filter o.ae.) inserted wird, erst bei CompileAll / CalcAfterLoad
392cdf0e10cSrcweir 	sal_Bool				bInsertingFromOtherDoc;
393cdf0e10cSrcweir     bool                bLoadingMedium;
394cdf0e10cSrcweir     bool                bImportingXML;      // special handling of formula text
395577c0052SWang Lei     bool                mbImportingMSXML;
396cdf0e10cSrcweir     sal_Bool                bXMLFromWrapper;    // distinguish ScXMLImportWrapper from external component
397cdf0e10cSrcweir 	sal_Bool				bCalcingAfterLoad;				// in CalcAfterLoad TRUE
398cdf0e10cSrcweir 	// wenn temporaer keine Listener auf/abgebaut werden sollen
399cdf0e10cSrcweir 	sal_Bool				bNoListening;
400cdf0e10cSrcweir 	sal_Bool				bIdleDisabled;
401cdf0e10cSrcweir 	sal_Bool				bInLinkUpdate;					// TableLink or AreaLink
402cdf0e10cSrcweir 	sal_Bool				bChartListenerCollectionNeedsUpdate;
403cdf0e10cSrcweir 	// ob RC_FORCED Formelzellen im Dokument sind/waren (einmal an immer an)
404cdf0e10cSrcweir 	sal_Bool				bHasForcedFormulas;
405cdf0e10cSrcweir 	// ob das Doc gerade zerstoert wird (kein Notify-Tracking etc. mehr)
406cdf0e10cSrcweir 	sal_Bool				bInDtorClear;
407cdf0e10cSrcweir 	// ob bei Spalte/Zeile einfuegen am Rand einer Referenz die Referenz
408cdf0e10cSrcweir 	// erweitert wird, wird in jedem UpdateReference aus InputOptions geholt,
409cdf0e10cSrcweir 	// gesetzt und am Ende von UpdateReference zurueckgesetzt
410cdf0e10cSrcweir 	sal_Bool				bExpandRefs;
411cdf0e10cSrcweir 	// fuer Detektiv-Update, wird bei jeder Aenderung an Formeln gesetzt
412cdf0e10cSrcweir 	sal_Bool				bDetectiveDirty;
413cdf0e10cSrcweir 
414cdf0e10cSrcweir 	sal_uInt8				nMacroCallMode;		// Makros per Warnung-Dialog disabled?
415cdf0e10cSrcweir 	sal_Bool				bHasMacroFunc;		// valid only after loading
416cdf0e10cSrcweir 
417cdf0e10cSrcweir 	sal_uInt8				nVisSpellState;
418cdf0e10cSrcweir 
419cdf0e10cSrcweir 	sal_uInt8				nAsianCompression;
420cdf0e10cSrcweir 	sal_uInt8				nAsianKerning;
421cdf0e10cSrcweir 
422cdf0e10cSrcweir     sal_Bool                bPastingDrawFromOtherDoc;
423cdf0e10cSrcweir 
424cdf0e10cSrcweir     sal_uInt8                nInDdeLinkUpdate;   // originating DDE links (stacked bool)
425cdf0e10cSrcweir 
426cdf0e10cSrcweir 	sal_Bool				bInUnoBroadcast;
427cdf0e10cSrcweir 	sal_Bool				bInUnoListenerCall;
428cdf0e10cSrcweir     formula::FormulaGrammar::Grammar  eGrammar;
429cdf0e10cSrcweir 
430cdf0e10cSrcweir     mutable sal_Bool        bStyleSheetUsageInvalid;
431cdf0e10cSrcweir 
432cdf0e10cSrcweir     bool                mbUndoEnabled;
433cdf0e10cSrcweir     bool                mbAdjustHeightEnabled;
434cdf0e10cSrcweir     bool                mbExecuteLinkEnabled;
435cdf0e10cSrcweir     bool                mbChangeReadOnlyEnabled;    // allow changes in read-only document (for API import filters)
436cdf0e10cSrcweir     bool                mbStreamValidLocked;
437cdf0e10cSrcweir 
43896f862caSArmin Le Grand     // #118840# Have a flag to know that this ScDocument is used temporary
43996f862caSArmin Le Grand     bool                mbIsTemporary : 1;
44096f862caSArmin Le Grand 
441cdf0e10cSrcweir     sal_Int16           mnNamedRangesLockCount;
442cdf0e10cSrcweir 
4430deba7fbSSteve Yin 	String msDocAccTitle;
444cdf0e10cSrcweir public:
4450deba7fbSSteve Yin 	// SC_DLLPUBLIC sal_Bool RowHidden( SCROW nRow, SCTAB nTab );
4460deba7fbSSteve Yin 	//inline sal_Bool 		RowHidden( SCROW nRow, SCTAB nTab );		// FillInfo
4470deba7fbSSteve Yin 	virtual void setDocAccTitle( const String& rTitle ) { msDocAccTitle = rTitle; }
4480deba7fbSSteve Yin 	virtual const String getDocAccTitle() const { return msDocAccTitle; }
4490deba7fbSSteve Yin 
4500deba7fbSSteve Yin private:
4510deba7fbSSteve Yin 	sal_Bool bReadOnly;  // MT: Really needed???
4520deba7fbSSteve Yin 
4530deba7fbSSteve Yin public:
4540deba7fbSSteve Yin 	virtual void setDocReadOnly( sal_Bool b){ bReadOnly = b; }
4550deba7fbSSteve Yin 	virtual sal_Bool getDocReadOnly() const { return bReadOnly; }
4560deba7fbSSteve Yin 	sal_Bool IsCellInChangeTrack(const ScAddress &cell,Color *pColCellBoder);
4570deba7fbSSteve Yin 	void GetCellChangeTrackNote( const ScAddress &cell,String &strTrackText,sal_Bool &pbLeftEdge);
458cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uLong			GetCellCount() const;		// alle Zellen
459cdf0e10cSrcweir     SCSIZE          GetCellCount(SCTAB nTab, SCCOL nCol) const;
460cdf0e10cSrcweir 	sal_uLong			GetWeightedCount() const;	// Formeln und Edit staerker gewichtet
461cdf0e10cSrcweir 	sal_uLong			GetCodeCount() const;		// RPN-Code in Formeln
462cdf0e10cSrcweir 	DECL_LINK( GetUserDefinedColor, sal_uInt16 * );
463cdf0e10cSrcweir 																// Numberformatter
464cdf0e10cSrcweir 
465cdf0e10cSrcweir public:
466cdf0e10cSrcweir 	SC_DLLPUBLIC 				ScDocument( ScDocumentMode eMode = SCDOCMODE_DOCUMENT,
467cdf0e10cSrcweir 								SfxObjectShell* pDocShell = NULL );
46838e63b1dSArmin Le Grand 	SC_DLLPUBLIC 				virtual ~ScDocument();
469cdf0e10cSrcweir 
470cdf0e10cSrcweir 	inline ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
471cdf0e10cSrcweir 					GetServiceManager() const { return xServiceManager; }
472cdf0e10cSrcweir 
473cdf0e10cSrcweir 	SC_DLLPUBLIC const String& 	GetName() const { return aDocName; }
474cdf0e10cSrcweir 	void			SetName( const String& r ) { aDocName = r; }
475cdf0e10cSrcweir 	const String& 	GetCodeName() const { return aDocCodeName; }
476cdf0e10cSrcweir 	void			SetCodeName( const String& r ) { aDocCodeName = r; }
477cdf0e10cSrcweir 
478cdf0e10cSrcweir 	void			GetDocStat( ScDocStat& rDocStat );
479cdf0e10cSrcweir 
480cdf0e10cSrcweir 	SC_DLLPUBLIC void			InitDrawLayer( SfxObjectShell* pDocShell = NULL );
481c7be74b1SArmin Le Grand 	XColorListSharedPtr GetColorTable();
482cdf0e10cSrcweir 
4830deba7fbSSteve Yin 	ScTable*      GetTableByIndex(sal_Int32 nIndex);
484cdf0e10cSrcweir 	SC_DLLPUBLIC sfx2::LinkManager*		GetLinkManager() const;
485cdf0e10cSrcweir 
486cdf0e10cSrcweir 	SC_DLLPUBLIC const ScDocOptions&		GetDocOptions() const;
487cdf0e10cSrcweir 	SC_DLLPUBLIC void					SetDocOptions( const ScDocOptions& rOpt );
488cdf0e10cSrcweir 	SC_DLLPUBLIC const ScViewOptions&	GetViewOptions() const;
489cdf0e10cSrcweir 	SC_DLLPUBLIC void 					SetViewOptions( const ScViewOptions& rOpt );
490cdf0e10cSrcweir 	void					SetPrintOptions();
491cdf0e10cSrcweir 
492cdf0e10cSrcweir 	ScExtDocOptions*		GetExtDocOptions()	{ return pExtDocOptions; }
493cdf0e10cSrcweir 	SC_DLLPUBLIC void					SetExtDocOptions( ScExtDocOptions* pNewOptions );
494cdf0e10cSrcweir 
495cdf0e10cSrcweir 	void					GetLanguage( LanguageType& rLatin, LanguageType& rCjk, LanguageType& rCtl ) const;
496cdf0e10cSrcweir 	void					SetLanguage( LanguageType eLatin, LanguageType eCjk, LanguageType eCtl );
497cdf0e10cSrcweir 
498cdf0e10cSrcweir 	void						SetConsolidateDlgData( const ScConsolidateParam* pData );
499cdf0e10cSrcweir 	const ScConsolidateParam*	GetConsolidateDlgData() const { return pConsolidateDlgData; }
500cdf0e10cSrcweir 
501cdf0e10cSrcweir 	void			Clear( sal_Bool bFromDestructor = sal_False );
502cdf0e10cSrcweir 
503cdf0e10cSrcweir 	ScFieldEditEngine*	CreateFieldEditEngine();
504cdf0e10cSrcweir 	void				DisposeFieldEditEngine(ScFieldEditEngine*& rpEditEngine);
505cdf0e10cSrcweir 
506*5b2f55ddSSteve Yin 	// Note: the returned ScRangeName is volatile, and it can be changed at any time.
507cdf0e10cSrcweir 	SC_DLLPUBLIC ScRangeName*	GetRangeName();
508cdf0e10cSrcweir 	void			SetRangeName( ScRangeName* pNewRangeName );
509cdf0e10cSrcweir 	SCTAB			GetMaxTableNumber() { return nMaxTableNumber; }
510cdf0e10cSrcweir 	void			SetMaxTableNumber(SCTAB nNumber) { nMaxTableNumber = nNumber; }
511cdf0e10cSrcweir 
512cdf0e10cSrcweir 	ScRangePairList*	GetColNameRanges() { return &xColNameRanges; }
513cdf0e10cSrcweir 	ScRangePairList*	GetRowNameRanges() { return &xRowNameRanges; }
514cdf0e10cSrcweir 	ScRangePairListRef&	GetColNameRangesRef() { return xColNameRanges; }
515cdf0e10cSrcweir 	ScRangePairListRef&	GetRowNameRangesRef() { return xRowNameRanges; }
516cdf0e10cSrcweir 
517cdf0e10cSrcweir 	SC_DLLPUBLIC ScDBCollection*	GetDBCollection() const;
518cdf0e10cSrcweir 	void			SetDBCollection( ScDBCollection* pNewDBCollection,
519cdf0e10cSrcweir 										sal_Bool bRemoveAutoFilter = sal_False );
520cdf0e10cSrcweir 	ScDBData*		GetDBAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab,
521cdf0e10cSrcweir 										sal_Bool bStartOnly = sal_False) const;
522cdf0e10cSrcweir 	ScDBData*		GetDBAtArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2) const;
523cdf0e10cSrcweir     ScDBData*       GetFilterDBAtTable(SCTAB nTab) const;
524cdf0e10cSrcweir 	SC_DLLPUBLIC ScRangeData*	GetRangeAtBlock( const ScRange& rBlock, String* pName=NULL ) const;
525cdf0e10cSrcweir 
526cdf0e10cSrcweir 	SC_DLLPUBLIC ScDPCollection*		GetDPCollection();
527cdf0e10cSrcweir 	ScDPObject*			GetDPAtCursor(SCCOL nCol, SCROW nRow, SCTAB nTab) const;
528cdf0e10cSrcweir     ScDPObject*         GetDPAtBlock( const ScRange& rBlock ) const;
529cdf0e10cSrcweir     // Wang Xu Ming -- 2009-8-17
530cdf0e10cSrcweir     // DataPilot Migration - Cache&&Performance
531cdf0e10cSrcweir     SC_DLLPUBLIC ScDPTableDataCache*    GetDPObjectCache( long nID );
532cdf0e10cSrcweir     SC_DLLPUBLIC ScDPTableDataCache*    GetUsedDPObjectCache ( ScRange rRange );
533cdf0e10cSrcweir     SC_DLLPUBLIC long                                 AddDPObjectCache( ScDPTableDataCache* pData );
534cdf0e10cSrcweir     SC_DLLPUBLIC void                                 RemoveDPObjectCache( long nID );
535cdf0e10cSrcweir     SC_DLLPUBLIC void                                 RemoveUnusedDPObjectCaches();
536cdf0e10cSrcweir     SC_DLLPUBLIC void                                 GetUsedDPObjectCache( std::list<ScDPTableDataCache*>& usedlist );
537cdf0e10cSrcweir     SC_DLLPUBLIC long                                 GetNewDPObjectCacheId ();
538cdf0e10cSrcweir     // End Comments
539cdf0e10cSrcweir 
540cdf0e10cSrcweir 	SC_DLLPUBLIC ScChartCollection*	GetChartCollection() const;
541cdf0e10cSrcweir 
542cdf0e10cSrcweir     void				StopTemporaryChartLock();
543cdf0e10cSrcweir 
544cdf0e10cSrcweir 	void			EnsureGraphicNames();
545cdf0e10cSrcweir 
546cdf0e10cSrcweir 	SdrObject*		GetObjectAtPoint( SCTAB nTab, const Point& rPos );
547cdf0e10cSrcweir 	sal_Bool			HasChartAtPoint( SCTAB nTab, const Point& rPos, String* pName = NULL );
548cdf0e10cSrcweir 
549cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XChartDocument > GetChartByName( const String& rChartName );
550cdf0e10cSrcweir     SC_DLLPUBLIC void            GetChartRanges( const String& rChartName, ::std::vector< ScRangeList >& rRanges, ScDocument* pSheetNameDoc );
551cdf0e10cSrcweir     void            SetChartRanges( const String& rChartName, const ::std::vector< ScRangeList >& rRanges );
552cdf0e10cSrcweir 
553cdf0e10cSrcweir     void			UpdateChartArea( const String& rChartName, const ScRange& rNewArea,
554cdf0e10cSrcweir 										sal_Bool bColHeaders, sal_Bool bRowHeaders, sal_Bool bAdd );
555cdf0e10cSrcweir 	void			UpdateChartArea( const String& rChartName,
556cdf0e10cSrcweir 									const ScRangeListRef& rNewList,
557cdf0e10cSrcweir 									sal_Bool bColHeaders, sal_Bool bRowHeaders, sal_Bool bAdd );
558cdf0e10cSrcweir     void            GetOldChartParameters( const String& rName,
559cdf0e10cSrcweir                                     ScRangeList& rRanges, sal_Bool& rColHeaders, sal_Bool& rRowHeaders );
560cdf0e10cSrcweir     ::com::sun::star::uno::Reference<
561cdf0e10cSrcweir             ::com::sun::star::embed::XEmbeddedObject >
562cdf0e10cSrcweir                     FindOleObjectByName( const String& rName );
563cdf0e10cSrcweir 
564cdf0e10cSrcweir 	SC_DLLPUBLIC void			MakeTable( SCTAB nTab,bool _bNeedsNameCheck = true );
565cdf0e10cSrcweir 
566cdf0e10cSrcweir 	SCTAB			GetVisibleTab() const		{ return nVisibleTab; }
567cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetVisibleTab(SCTAB nTab)	{ nVisibleTab = nTab; }
568cdf0e10cSrcweir 
569cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			HasTable( SCTAB nTab ) const;
570cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			GetName( SCTAB nTab, String& rName ) const;
571cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			GetCodeName( SCTAB nTab, String& rName ) const;
572cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			SetCodeName( SCTAB nTab, const String& rName );
573cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			GetTable( const String& rName, SCTAB& rTab ) const;
574cdf0e10cSrcweir 	SC_DLLPUBLIC inline SCTAB	GetTableCount() const { return nMaxTableNumber; }
575cdf0e10cSrcweir 	SvNumberFormatterIndexTable* GetFormatExchangeList() const { return pFormatExchangeList; }
576cdf0e10cSrcweir 
577cdf0e10cSrcweir     SC_DLLPUBLIC ScDocProtection* GetDocProtection() const;
578cdf0e10cSrcweir     SC_DLLPUBLIC void            SetDocProtection(const ScDocProtection* pProtect);
579cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			IsDocProtected() const;
580cdf0e10cSrcweir 	sal_Bool			IsDocEditable() const;
581cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			IsTabProtected( SCTAB nTab ) const;
582cdf0e10cSrcweir     SC_DLLPUBLIC    ScTableProtection* GetTabProtection( SCTAB nTab ) const;
583cdf0e10cSrcweir     SC_DLLPUBLIC void SetTabProtection(SCTAB nTab, const ScTableProtection* pProtect);
584cdf0e10cSrcweir     void            CopyTabProtection(SCTAB nTabSrc, SCTAB nTabDest);
585cdf0e10cSrcweir 
586cdf0e10cSrcweir 	void			LockTable(SCTAB nTab);
587cdf0e10cSrcweir 	void			UnlockTable(SCTAB nTab);
588cdf0e10cSrcweir 
589cdf0e10cSrcweir 	sal_Bool			IsBlockEditable( SCTAB nTab, SCCOL nStartCol, SCROW nStartRow,
590cdf0e10cSrcweir 										SCCOL nEndCol, SCROW nEndRow,
591cdf0e10cSrcweir 										sal_Bool* pOnlyNotBecauseOfMatrix = NULL ) const;
592cdf0e10cSrcweir 	sal_Bool			IsSelectionEditable( const ScMarkData& rMark,
593cdf0e10cSrcweir 										sal_Bool* pOnlyNotBecauseOfMatrix = NULL ) const;
594cdf0e10cSrcweir 	sal_Bool			HasSelectedBlockMatrixFragment( SCCOL nStartCol, SCROW nStartRow,
595cdf0e10cSrcweir 											SCCOL nEndCol, SCROW nEndRow,
596cdf0e10cSrcweir 											const ScMarkData& rMark ) const;
597cdf0e10cSrcweir 
598cdf0e10cSrcweir 	sal_Bool			GetMatrixFormulaRange( const ScAddress& rCellPos, ScRange& rMatrix );
599cdf0e10cSrcweir 
600cdf0e10cSrcweir 	sal_Bool			IsEmbedded() const;
601cdf0e10cSrcweir 	void			GetEmbedded( ScRange& rRange ) const;
602cdf0e10cSrcweir 	void			SetEmbedded( const ScRange& rRange );
603cdf0e10cSrcweir 	void			ResetEmbedded();
604cdf0e10cSrcweir 	Rectangle		GetEmbeddedRect() const;						// 1/100 mm
605cdf0e10cSrcweir 	void			SetEmbedded( const Rectangle& rRect );			// aus VisArea (1/100 mm)
606cdf0e10cSrcweir 	void			SnapVisArea( Rectangle& rRect ) const;			// 1/100 mm
607cdf0e10cSrcweir 
608cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			ValidTabName( const String& rName ) const;
609cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			ValidNewTabName( const String& rName ) const;
610cdf0e10cSrcweir 	SC_DLLPUBLIC void			CreateValidTabName(String& rName) const;
611cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			InsertTab( SCTAB nPos, const String& rName,
612cdf0e10cSrcweir 								sal_Bool bExternalDocument = sal_False );
613cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool            DeleteTab( SCTAB nTab, ScDocument* pRefUndoDoc = NULL );
614cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			RenameTab( SCTAB nTab, const String& rName,
615cdf0e10cSrcweir 								sal_Bool bUpdateRef = sal_True,
616cdf0e10cSrcweir 								sal_Bool bExternalDocument = sal_False );
617cdf0e10cSrcweir 	sal_Bool			MoveTab( SCTAB nOldPos, SCTAB nNewPos );
618cdf0e10cSrcweir 	sal_Bool			CopyTab( SCTAB nOldPos, SCTAB nNewPos,
619cdf0e10cSrcweir 								const ScMarkData* pOnlyMarked = NULL );
620cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uLong			TransferTab(ScDocument* pSrcDoc, SCTAB nSrcPos, SCTAB nDestPos,
621cdf0e10cSrcweir 									sal_Bool bInsertNew = sal_True,
622cdf0e10cSrcweir 									sal_Bool bResultsOnly = sal_False );
623cdf0e10cSrcweir 	SC_DLLPUBLIC void			TransferDrawPage(ScDocument* pSrcDoc, SCTAB nSrcPos, SCTAB nDestPos);
624cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetVisible( SCTAB nTab, sal_Bool bVisible );
625cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			IsVisible( SCTAB nTab ) const;
626cdf0e10cSrcweir     sal_Bool            IsStreamValid( SCTAB nTab ) const;
627cdf0e10cSrcweir     void            SetStreamValid( SCTAB nTab, sal_Bool bSet, sal_Bool bIgnoreLock = sal_False );
628cdf0e10cSrcweir     void            LockStreamValid( bool bLock );
629cdf0e10cSrcweir     bool            IsStreamValidLocked() const                         { return mbStreamValidLocked; }
63096f862caSArmin Le Grand 
63196f862caSArmin Le Grand     // #118840# Have a flag to know that this ScDocument is used temporary
63296f862caSArmin Le Grand     bool IsTemporary() const { return mbIsTemporary; }
63396f862caSArmin Le Grand 
634237246f4SWang Lei     SC_DLLPUBLIC sal_Bool        IsPendingRowHeights( SCTAB nTab ) const;
635237246f4SWang Lei     SC_DLLPUBLIC void            SetPendingRowHeights( SCTAB nTab, sal_Bool bSet );
636cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetLayoutRTL( SCTAB nTab, sal_Bool bRTL );
637cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			IsLayoutRTL( SCTAB nTab ) const;
638cdf0e10cSrcweir 	sal_Bool			IsNegativePage( SCTAB nTab ) const;
639cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetScenario( SCTAB nTab, sal_Bool bFlag );
640cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			IsScenario( SCTAB nTab ) const;
641cdf0e10cSrcweir 	SC_DLLPUBLIC void			GetScenarioData( SCTAB nTab, String& rComment,
642cdf0e10cSrcweir 										Color& rColor, sal_uInt16& rFlags ) const;
643cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetScenarioData( SCTAB nTab, const String& rComment,
644cdf0e10cSrcweir 										const Color& rColor, sal_uInt16 nFlags );
645cdf0e10cSrcweir     SC_DLLPUBLIC Color GetTabBgColor( SCTAB nTab ) const;
646cdf0e10cSrcweir     SC_DLLPUBLIC void SetTabBgColor( SCTAB nTab, const Color& rColor );
647cdf0e10cSrcweir     SC_DLLPUBLIC bool IsDefaultTabBgColor( SCTAB nTab ) const;
648cdf0e10cSrcweir 	void			GetScenarioFlags( SCTAB nTab, sal_uInt16& rFlags ) const;
649cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			IsActiveScenario( SCTAB nTab ) const;
650cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetActiveScenario( SCTAB nTab, sal_Bool bActive );		// nur fuer Undo etc.
651cdf0e10cSrcweir 	SC_DLLPUBLIC formula::FormulaGrammar::AddressConvention GetAddressConvention() const;
652cdf0e10cSrcweir     SC_DLLPUBLIC formula::FormulaGrammar::Grammar GetGrammar() const;
653cdf0e10cSrcweir     void            SetGrammar( formula::FormulaGrammar::Grammar eGram );
654cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uInt8			GetLinkMode( SCTAB nTab ) const;
655cdf0e10cSrcweir 	sal_Bool			IsLinked( SCTAB nTab ) const;
656cdf0e10cSrcweir 	SC_DLLPUBLIC const String&	GetLinkDoc( SCTAB nTab ) const;
657cdf0e10cSrcweir 	const String&	GetLinkFlt( SCTAB nTab ) const;
658cdf0e10cSrcweir 	const String&	GetLinkOpt( SCTAB nTab ) const;
659cdf0e10cSrcweir 	SC_DLLPUBLIC const String&	GetLinkTab( SCTAB nTab ) const;
660cdf0e10cSrcweir 	sal_uLong			GetLinkRefreshDelay( SCTAB nTab ) const;
661cdf0e10cSrcweir 	void			SetLink( SCTAB nTab, sal_uInt8 nMode, const String& rDoc,
662cdf0e10cSrcweir 							const String& rFilter, const String& rOptions,
663cdf0e10cSrcweir 							const String& rTabName, sal_uLong nRefreshDelay );
664cdf0e10cSrcweir 	sal_Bool			HasLink( const String& rDoc,
665cdf0e10cSrcweir 							const String& rFilter, const String& rOptions ) const;
666cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			LinkExternalTab( SCTAB& nTab, const String& aDocTab,
667cdf0e10cSrcweir 									const String& aFileName,
668cdf0e10cSrcweir 									const String& aTabName );
669cdf0e10cSrcweir 
670cdf0e10cSrcweir     bool            HasExternalRefManager() const { return pExternalRefMgr.get(); }
671cdf0e10cSrcweir     SC_DLLPUBLIC ScExternalRefManager* GetExternalRefManager() const;
672cdf0e10cSrcweir     bool            IsInExternalReferenceMarking() const;
673cdf0e10cSrcweir     void            MarkUsedExternalReferences();
674cdf0e10cSrcweir     bool            MarkUsedExternalReferences( ScTokenArray & rArr );
675cdf0e10cSrcweir 
676cdf0e10cSrcweir     /** Returns the pool containing external formula parsers. Creates the pool
677cdf0e10cSrcweir         on first call. */
678cdf0e10cSrcweir     ScFormulaParserPool& GetFormulaParserPool() const;
679cdf0e10cSrcweir 
680cdf0e10cSrcweir 	sal_Bool			HasDdeLinks() const;
681cdf0e10cSrcweir 	sal_Bool			HasAreaLinks() const;
682cdf0e10cSrcweir     void            UpdateExternalRefLinks();
683cdf0e10cSrcweir 	void			UpdateDdeLinks();
684cdf0e10cSrcweir 	void			UpdateAreaLinks();
685cdf0e10cSrcweir 
686cdf0e10cSrcweir                     // originating DDE links
687cdf0e10cSrcweir     void            IncInDdeLinkUpdate() { if ( nInDdeLinkUpdate < 255 ) ++nInDdeLinkUpdate; }
688cdf0e10cSrcweir     void            DecInDdeLinkUpdate() { if ( nInDdeLinkUpdate ) --nInDdeLinkUpdate; }
689cdf0e10cSrcweir     sal_Bool            IsInDdeLinkUpdate() const   { return nInDdeLinkUpdate != 0; }
690cdf0e10cSrcweir 
691cdf0e10cSrcweir 	SC_DLLPUBLIC void			CopyDdeLinks( ScDocument* pDestDoc ) const;
692cdf0e10cSrcweir 	void			DisconnectDdeLinks();
693cdf0e10cSrcweir 
694cdf0e10cSrcweir 					// Fuer StarOne Api:
695cdf0e10cSrcweir 	sal_uInt16			GetDdeLinkCount() const;
696cdf0e10cSrcweir 	sal_Bool			UpdateDdeLink( const String& rAppl, const String& rTopic, const String& rItem );
697cdf0e10cSrcweir 
698cdf0e10cSrcweir     /** Tries to find a DDE link with the specified connection data.
699cdf0e10cSrcweir         @param rnDdePos  (out-param) Returns the index of the DDE link (does not include other links from link manager).
700cdf0e10cSrcweir         @return  true = DDE link found, rnDdePos valid. */
701cdf0e10cSrcweir     SC_DLLPUBLIC bool            FindDdeLink( const String& rAppl, const String& rTopic, const String& rItem, sal_uInt8 nMode, sal_uInt16& rnDdePos );
702cdf0e10cSrcweir 
703cdf0e10cSrcweir     /** Returns the connection data of the specified DDE link.
704cdf0e10cSrcweir         @param nDdePos  Index of the DDE link (does not include other links from link manager).
705cdf0e10cSrcweir         @param rAppl  (out-param) The application name.
706cdf0e10cSrcweir         @param rTopic  (out-param) The DDE topic.
707cdf0e10cSrcweir         @param rItem  (out-param) The DDE item.
708cdf0e10cSrcweir         @return  true = DDE link found, out-parameters valid. */
709cdf0e10cSrcweir     bool            GetDdeLinkData( sal_uInt16 nDdePos, String& rAppl, String& rTopic, String& rItem ) const;
710cdf0e10cSrcweir     /** Returns the link mode of the specified DDE link.
711cdf0e10cSrcweir         @param nDdePos  Index of the DDE link (does not include other links from link manager).
712cdf0e10cSrcweir         @param rnMode  (out-param) The link mode of the specified DDE link.
713cdf0e10cSrcweir         @return  true = DDE link found, rnMode valid. */
714cdf0e10cSrcweir     bool            GetDdeLinkMode( sal_uInt16 nDdePos, sal_uInt8& rnMode ) const;
715cdf0e10cSrcweir     /** Returns the result matrix of the specified DDE link.
716cdf0e10cSrcweir         @param nDdePos  Index of the DDE link (does not include other links from link manager).
717cdf0e10cSrcweir         @return  The result matrix, if the DDE link has been found, 0 otherwise. */
718cdf0e10cSrcweir     SC_DLLPUBLIC const ScMatrix* GetDdeLinkResultMatrix( sal_uInt16 nDdePos ) const;
719cdf0e10cSrcweir 
720cdf0e10cSrcweir     /** Tries to find a DDE link or creates a new, if not extant.
721cdf0e10cSrcweir         @param pResults  If not 0, sets the matrix as as DDE link result matrix (also for existing links).
722cdf0e10cSrcweir         @return  true = DDE link found; false = Unpredictable error occured, no DDE link created. */
723cdf0e10cSrcweir     SC_DLLPUBLIC bool            CreateDdeLink( const String& rAppl, const String& rTopic, const String& rItem, sal_uInt8 nMode, ScMatrix* pResults = NULL );
724cdf0e10cSrcweir     /** Sets a result matrix for the specified DDE link.
725cdf0e10cSrcweir         @param nDdePos  Index of the DDE link (does not include other links from link manager).
726cdf0e10cSrcweir         @param pResults  The array containing all results of the DDE link (intrusive-ref-counted, do not delete).
727cdf0e10cSrcweir         @return  true = DDE link found and matrix set. */
728cdf0e10cSrcweir     bool            SetDdeLinkResultMatrix( sal_uInt16 nDdePos, ScMatrix* pResults );
729cdf0e10cSrcweir 
730cdf0e10cSrcweir 
731cdf0e10cSrcweir 	SfxBindings*	GetViewBindings();
732cdf0e10cSrcweir 	SfxObjectShell* GetDocumentShell() const	{ return pShell; }
733cdf0e10cSrcweir 	ScDrawLayer*	GetDrawLayer()				{ return pDrawLayer; }
734cdf0e10cSrcweir 	SfxBroadcaster*	GetDrawBroadcaster();		// zwecks Header-Vermeidung
735cdf0e10cSrcweir 	void			BeginDrawUndo();
736ee342afcSWang Lei 	sal_Bool		IsDrawRecording() const;
737ee342afcSWang Lei 	void			EndDrawUndo();//paired with BeginDrawUndo, clear undo object if GetUndoObj is not called.
738ee342afcSWang Lei 								//Not necessary if GetUndoObj is called, but call EndDrawUndo paired with BeginDrawUndo is recommended
739cdf0e10cSrcweir 
740cdf0e10cSrcweir     void            BeginUnoRefUndo();
741cdf0e10cSrcweir     bool            HasUnoRefUndo() const       { return ( pUnoRefUndoList != NULL ); }
742cdf0e10cSrcweir     ScUnoRefList*   EndUnoRefUndo();            // must be deleted by caller!
743cdf0e10cSrcweir     sal_Int64       GetNewUnoId();
744cdf0e10cSrcweir     void            AddUnoRefChange( sal_Int64 nId, const ScRangeList& rOldRanges );
745cdf0e10cSrcweir 
746cdf0e10cSrcweir 	// #109985#
747cdf0e10cSrcweir 	sal_Bool IsChart( const SdrObject* pObject );
748cdf0e10cSrcweir 
749cdf0e10cSrcweir 	SC_DLLPUBLIC void			UpdateAllCharts();
750cdf0e10cSrcweir 	void			UpdateChartRef( UpdateRefMode eUpdateRefMode,
751cdf0e10cSrcweir 									SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
752cdf0e10cSrcweir 									SCCOL nCol2, SCROW nRow2, SCTAB nTab2,
753cdf0e10cSrcweir 									SCsCOL nDx, SCsROW nDy, SCsTAB nDz );
754cdf0e10cSrcweir 					//! setzt nur die neue RangeList, keine ChartListener o.ae.
755cdf0e10cSrcweir 	void			SetChartRangeList( const String& rChartName,
756cdf0e10cSrcweir 						const ScRangeListRef& rNewRangeListRef );
757cdf0e10cSrcweir 
758cdf0e10cSrcweir 	sal_Bool			HasControl( SCTAB nTab, const Rectangle& rMMRect );
759cdf0e10cSrcweir 	void			InvalidateControls( Window* pWin, SCTAB nTab, const Rectangle& rMMRect );
760cdf0e10cSrcweir 
761cdf0e10cSrcweir 	void			StartAnimations( SCTAB nTab, Window* pWin );
762cdf0e10cSrcweir 
763cdf0e10cSrcweir 	sal_Bool			HasBackgroundDraw( SCTAB nTab, const Rectangle& rMMRect );
764cdf0e10cSrcweir 	sal_Bool			HasAnyDraw( SCTAB nTab, const Rectangle& rMMRect );
765cdf0e10cSrcweir 
766cdf0e10cSrcweir     const ScSheetEvents* GetSheetEvents( SCTAB nTab ) const;
767cdf0e10cSrcweir     void            SetSheetEvents( SCTAB nTab, const ScSheetEvents* pNew );
768cdf0e10cSrcweir     bool            HasSheetEventScript( SCTAB nTab, sal_Int32 nEvent, bool bWithVbaEvents = false ) const;
769cdf0e10cSrcweir     bool            HasAnySheetEventScript( sal_Int32 nEvent, bool bWithVbaEvents = false ) const;  // on any sheet
770cdf0e10cSrcweir 
771cdf0e10cSrcweir     bool            HasAnyCalcNotification() const;
772cdf0e10cSrcweir     sal_Bool            HasCalcNotification( SCTAB nTab ) const;
773cdf0e10cSrcweir     void            SetCalcNotification( SCTAB nTab );
774cdf0e10cSrcweir     void            ResetCalcNotifications();
775cdf0e10cSrcweir 
776cdf0e10cSrcweir 	SC_DLLPUBLIC ScOutlineTable*	GetOutlineTable( SCTAB nTab, sal_Bool bCreate = sal_False );
777cdf0e10cSrcweir 	sal_Bool			SetOutlineTable( SCTAB nTab, const ScOutlineTable* pNewOutline );
778cdf0e10cSrcweir 
779cdf0e10cSrcweir 	void			DoAutoOutline( SCCOL nStartCol, SCROW nStartRow,
780cdf0e10cSrcweir 									SCCOL nEndCol, SCROW nEndRow, SCTAB nTab );
781cdf0e10cSrcweir 
782cdf0e10cSrcweir 	sal_Bool			DoSubTotals( SCTAB nTab, ScSubTotalParam& rParam );
783cdf0e10cSrcweir 	void			RemoveSubTotals( SCTAB nTab, ScSubTotalParam& rParam );
784cdf0e10cSrcweir 	sal_Bool			TestRemoveSubTotals( SCTAB nTab, const ScSubTotalParam& rParam );
785cdf0e10cSrcweir 	sal_Bool			HasSubTotalCells( const ScRange& rRange );
786cdf0e10cSrcweir 
787cdf0e10cSrcweir 	SC_DLLPUBLIC void			PutCell( const ScAddress&, ScBaseCell* pCell, sal_Bool bForceTab = sal_False );
788cdf0e10cSrcweir //UNUSED2009-05 SC_DLLPUBLIC void			PutCell( const ScAddress&, ScBaseCell* pCell,
789cdf0e10cSrcweir //UNUSED2009-05                         sal_uLong nFormatIndex, sal_Bool bForceTab = sal_False);
790cdf0e10cSrcweir 	SC_DLLPUBLIC void			PutCell( SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell* pCell,
791cdf0e10cSrcweir 							sal_Bool bForceTab = sal_False );
792cdf0e10cSrcweir 	SC_DLLPUBLIC void			PutCell(SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell* pCell,
793cdf0e10cSrcweir 							sal_uLong nFormatIndex, sal_Bool bForceTab = sal_False);
794cdf0e10cSrcweir 					//	return sal_True = Zahlformat gesetzt
795cdf0e10cSrcweir     SC_DLLPUBLIC sal_Bool           SetString(
796cdf0e10cSrcweir         SCCOL nCol, SCROW nRow, SCTAB nTab, const String& rString,
797cdf0e10cSrcweir         SvNumberFormatter* pFormatter = NULL, bool bDetectNumberFormat = true );
798cdf0e10cSrcweir     SC_DLLPUBLIC void           SetValue( SCCOL nCol, SCROW nRow, SCTAB nTab, const double& rVal );
799cdf0e10cSrcweir 	void 			SetError( SCCOL nCol, SCROW nRow, SCTAB nTab, const sal_uInt16 nError);
800cdf0e10cSrcweir 
801cdf0e10cSrcweir 	SC_DLLPUBLIC void 			InsertMatrixFormula(SCCOL nCol1, SCROW nRow1,
802cdf0e10cSrcweir 										SCCOL nCol2, SCROW nRow2,
803cdf0e10cSrcweir 										const ScMarkData& rMark,
804cdf0e10cSrcweir 										const String& rFormula,
805cdf0e10cSrcweir 										const ScTokenArray* p = NULL,
806cdf0e10cSrcweir                                         const formula::FormulaGrammar::Grammar = formula::FormulaGrammar::GRAM_DEFAULT );
807cdf0e10cSrcweir 	SC_DLLPUBLIC void 			InsertTableOp(const ScTabOpParam& rParam,	// Mehrfachoperation
808cdf0e10cSrcweir 								  SCCOL nCol1, SCROW nRow1,
809cdf0e10cSrcweir 								  SCCOL nCol2, SCROW nRow2, const ScMarkData& rMark);
810cdf0e10cSrcweir 
811cdf0e10cSrcweir 	SC_DLLPUBLIC void			GetString( SCCOL nCol, SCROW nRow, SCTAB nTab, String& rString );
812cdf0e10cSrcweir 	SC_DLLPUBLIC void			GetInputString( SCCOL nCol, SCROW nRow, SCTAB nTab, String& rString );
813cdf0e10cSrcweir     sal_uInt16                  GetStringForFormula( const ScAddress& rPos, rtl::OUString& rString );
814cdf0e10cSrcweir 	SC_DLLPUBLIC double			GetValue( const ScAddress& );
815cdf0e10cSrcweir 	SC_DLLPUBLIC void			GetValue( SCCOL nCol, SCROW nRow, SCTAB nTab, double& rValue );
816cdf0e10cSrcweir 	SC_DLLPUBLIC double			RoundValueAsShown( double fVal, sal_uLong nFormat );
817cdf0e10cSrcweir 	SC_DLLPUBLIC void			GetNumberFormat( SCCOL nCol, SCROW nRow, SCTAB nTab,
818cdf0e10cSrcweir 									 sal_uInt32& rFormat );
819cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uInt32		GetNumberFormat( const ScAddress& ) const;
820cdf0e10cSrcweir                     /** If no number format attribute is set and the cell
821cdf0e10cSrcweir                         pointer passed is of type formula cell, the calculated
822cdf0e10cSrcweir                         number format of the formula cell is returned. pCell
823cdf0e10cSrcweir                         may be NULL. */
824cdf0e10cSrcweir 	SC_DLLPUBLIC void			GetNumberFormatInfo( short& nType, sal_uLong& nIndex,
825cdf0e10cSrcweir 						const ScAddress& rPos, const ScBaseCell* pCell ) const;
826cdf0e10cSrcweir 	void			GetFormula( SCCOL nCol, SCROW nRow, SCTAB nTab, String& rFormula,
827cdf0e10cSrcweir 								sal_Bool bAsciiExport = sal_False ) const;
828cdf0e10cSrcweir 	SC_DLLPUBLIC void			GetCellType( SCCOL nCol, SCROW nRow, SCTAB nTab, CellType& rCellType ) const;
829cdf0e10cSrcweir 	SC_DLLPUBLIC CellType		GetCellType( const ScAddress& rPos ) const;
830cdf0e10cSrcweir 	SC_DLLPUBLIC void			GetCell( SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell*& rpCell ) const;
831cdf0e10cSrcweir 	SC_DLLPUBLIC ScBaseCell*		GetCell( const ScAddress& rPos ) const;
832cdf0e10cSrcweir 
833cdf0e10cSrcweir //UNUSED2008-05  void			RefreshNoteFlags();
834cdf0e10cSrcweir 
835cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			HasData( SCCOL nCol, SCROW nRow, SCTAB nTab );
836cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			HasStringData( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
837cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			HasValueData( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
838cdf0e10cSrcweir 	sal_Bool			HasStringCells( const ScRange& rRange ) const;
839cdf0e10cSrcweir 
840cdf0e10cSrcweir     /** Returns true, if there is any data to create a selection list for rPos. */
841cdf0e10cSrcweir     sal_Bool            HasSelectionData( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
842cdf0e10cSrcweir 
843cdf0e10cSrcweir     /** Returns the pointer to a cell note object at the passed cell address. */
844cdf0e10cSrcweir     ScPostIt*       GetNote( const ScAddress& rPos );
845cdf0e10cSrcweir     /** Sets the passed note at the cell with the passed cell address. */
846cdf0e10cSrcweir     void            TakeNote( const ScAddress& rPos, ScPostIt*& rpNote );
847cdf0e10cSrcweir     /** Returns and forgets the cell note object at the passed cell address. */
848cdf0e10cSrcweir     ScPostIt*       ReleaseNote( const ScAddress& rPos );
849cdf0e10cSrcweir     /** Returns the pointer to an existing or created cell note object at the passed cell address. */
850cdf0e10cSrcweir     SC_DLLPUBLIC ScPostIt* GetOrCreateNote( const ScAddress& rPos );
851cdf0e10cSrcweir     /** Deletes the note at the passed cell address. */
852cdf0e10cSrcweir     void            DeleteNote( const ScAddress& rPos );
853cdf0e10cSrcweir     /** Creates the captions of all uninitialized cell notes in the specified sheet.
854cdf0e10cSrcweir         @param bForced  True = always create all captions, false = skip when Undo is disabled. */
855cdf0e10cSrcweir     void            InitializeNoteCaptions( SCTAB nTab, bool bForced = false );
856cdf0e10cSrcweir     /** Creates the captions of all uninitialized cell notes in all sheets.
857cdf0e10cSrcweir         @param bForced  True = always create all captions, false = skip when Undo is disabled. */
858cdf0e10cSrcweir     void            InitializeAllNoteCaptions( bool bForced = false );
859cdf0e10cSrcweir 
860cdf0e10cSrcweir     sal_Bool            ExtendMergeSel( SCCOL nStartCol, SCROW nStartRow,
861cdf0e10cSrcweir                                 SCCOL& rEndCol, SCROW& rEndRow, const ScMarkData& rMark,
862cdf0e10cSrcweir                                 sal_Bool bRefresh = sal_False, sal_Bool bAttrs = sal_False );
863cdf0e10cSrcweir 	sal_Bool			ExtendMerge( SCCOL nStartCol, SCROW nStartRow,
864cdf0e10cSrcweir 								SCCOL& rEndCol, SCROW& rEndRow, SCTAB nTab,
865cdf0e10cSrcweir 								sal_Bool bRefresh = sal_False, sal_Bool bAttrs = sal_False );
866cdf0e10cSrcweir 	sal_Bool			ExtendMerge( ScRange& rRange, sal_Bool bRefresh = sal_False, sal_Bool bAttrs = sal_False );
867cdf0e10cSrcweir 	sal_Bool			ExtendTotalMerge( ScRange& rRange );
868cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			ExtendOverlapped( SCCOL& rStartCol, SCROW& rStartRow,
869cdf0e10cSrcweir 								SCCOL nEndCol, SCROW nEndRow, SCTAB nTab );
870cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			ExtendOverlapped( ScRange& rRange );
871cdf0e10cSrcweir 
872cdf0e10cSrcweir 	sal_Bool			RefreshAutoFilter( SCCOL nStartCol, SCROW nStartRow,
873cdf0e10cSrcweir 								SCCOL nEndCol, SCROW nEndRow, SCTAB nTab );
874cdf0e10cSrcweir 
875cdf0e10cSrcweir 	SC_DLLPUBLIC void			DoMergeContents( SCTAB nTab, SCCOL nStartCol, SCROW nStartRow,
876cdf0e10cSrcweir 									SCCOL nEndCol, SCROW nEndRow );
877cdf0e10cSrcweir 					//	ohne Ueberpruefung:
878cdf0e10cSrcweir 	SC_DLLPUBLIC void			DoMerge( SCTAB nTab, SCCOL nStartCol, SCROW nStartRow,
879cdf0e10cSrcweir                                     SCCOL nEndCol, SCROW nEndRow, bool bDeleteCaptions = true );
880cdf0e10cSrcweir 	void			RemoveMerge( SCCOL nCol, SCROW nRow, SCTAB nTab );
881cdf0e10cSrcweir 
882cdf0e10cSrcweir 	sal_Bool			IsBlockEmpty( SCTAB nTab, SCCOL nStartCol, SCROW nStartRow,
883cdf0e10cSrcweir 												SCCOL nEndCol, SCROW nEndRow, bool bIgnoreNotes = false ) const;
884cdf0e10cSrcweir 	sal_Bool			IsPrintEmpty( SCTAB nTab, SCCOL nStartCol, SCROW nStartRow,
885cdf0e10cSrcweir 												SCCOL nEndCol, SCROW nEndRow,
886cdf0e10cSrcweir 												sal_Bool bLeftIsEmpty = sal_False,
887cdf0e10cSrcweir 												ScRange* pLastRange = NULL,
888cdf0e10cSrcweir 												Rectangle* pLastMM = NULL ) const;
889cdf0e10cSrcweir 
890cdf0e10cSrcweir 	sal_Bool			IsHorOverlapped( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
891cdf0e10cSrcweir 	sal_Bool			IsVerOverlapped( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
892cdf0e10cSrcweir 
893cdf0e10cSrcweir     SC_DLLPUBLIC bool           HasAttrib( SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
894cdf0e10cSrcweir                                            SCCOL nCol2, SCROW nRow2, SCTAB nTab2, sal_uInt16 nMask );
895cdf0e10cSrcweir     SC_DLLPUBLIC bool           HasAttrib( const ScRange& rRange, sal_uInt16 nMask );
896cdf0e10cSrcweir 
897cdf0e10cSrcweir 	void			GetBorderLines( SCCOL nCol, SCROW nRow, SCTAB nTab,
898cdf0e10cSrcweir 									const SvxBorderLine** ppLeft,
899cdf0e10cSrcweir 									const SvxBorderLine** ppTop,
900cdf0e10cSrcweir 									const SvxBorderLine** ppRight,
901cdf0e10cSrcweir 									const SvxBorderLine** ppBottom ) const;
902cdf0e10cSrcweir 
903cdf0e10cSrcweir 	void			ResetChanged( const ScRange& rRange );
904cdf0e10cSrcweir 
905cdf0e10cSrcweir 	void			SetDirty();
906cdf0e10cSrcweir 	void			SetDirty( const ScRange& );
907cdf0e10cSrcweir 	void			SetTableOpDirty( const ScRange& );	// for Interpreter TableOp
908cdf0e10cSrcweir     void            InterpretDirtyCells( const ScRangeList& rRanges );
909cdf0e10cSrcweir 	void			CalcAll();
910cdf0e10cSrcweir 	SC_DLLPUBLIC void			CalcAfterLoad();
911cdf0e10cSrcweir 	void			CompileAll();
912cdf0e10cSrcweir 	void			CompileXML();
913cdf0e10cSrcweir 
914cdf0e10cSrcweir     ScAutoNameCache* GetAutoNameCache()     { return pAutoNameCache; }
915cdf0e10cSrcweir 
916cdf0e10cSrcweir                     /** Creates a ScLookupCache cache for the range if it
917cdf0e10cSrcweir                         doesn't already exist. */
918cdf0e10cSrcweir     ScLookupCache & GetLookupCache( const ScRange & rRange );
919cdf0e10cSrcweir                     /** Only ScLookupCache ctor uses AddLookupCache(), do not
920cdf0e10cSrcweir                         use elsewhere! */
921cdf0e10cSrcweir     void            AddLookupCache( ScLookupCache & rCache );
922cdf0e10cSrcweir                     /** Only ScLookupCache dtor uses RemoveLookupCache(), do
923cdf0e10cSrcweir                         not use elsewhere! */
924cdf0e10cSrcweir     void            RemoveLookupCache( ScLookupCache & rCache );
925cdf0e10cSrcweir                     /** Zap all caches. */
926cdf0e10cSrcweir     void            ClearLookupCaches();
927cdf0e10cSrcweir 
928cdf0e10cSrcweir 					// Automatisch Berechnen
929cdf0e10cSrcweir 	void			SetAutoCalc( sal_Bool bNewAutoCalc );
930cdf0e10cSrcweir 	sal_Bool			GetAutoCalc() const { return bAutoCalc; }
931cdf0e10cSrcweir 					// Automatisch Berechnen in/von/fuer ScDocShell disabled
932cdf0e10cSrcweir 	void			SetAutoCalcShellDisabled( sal_Bool bNew ) { bAutoCalcShellDisabled = bNew; }
933cdf0e10cSrcweir 	sal_Bool			IsAutoCalcShellDisabled() const { return bAutoCalcShellDisabled; }
934cdf0e10cSrcweir 					// ForcedFormulas zu berechnen
935cdf0e10cSrcweir 	void			SetForcedFormulaPending( sal_Bool bNew ) { bForcedFormulaPending = bNew; }
936cdf0e10cSrcweir 	sal_Bool			IsForcedFormulaPending() const { return bForcedFormulaPending; }
937cdf0e10cSrcweir 					// if CalcFormulaTree() is currently running
938cdf0e10cSrcweir 	sal_Bool			IsCalculatingFormulaTree() { return bCalculatingFormulaTree; }
939cdf0e10cSrcweir 
940cdf0e10cSrcweir 	sal_uInt16			GetErrCode( const ScAddress& ) const;
941cdf0e10cSrcweir 
942cdf0e10cSrcweir                     /** Shrink a range to only include data area.
943cdf0e10cSrcweir 
944cdf0e10cSrcweir                         This is not the actually used area within the
945cdf0e10cSrcweir                         selection, but the bounds of the sheet's data area
946cdf0e10cSrcweir                         instead.
947cdf0e10cSrcweir 
948cdf0e10cSrcweir                         @returns True if the area passed intersected the data
949cdf0e10cSrcweir                                  area, false if not, in which case the values
950cdf0e10cSrcweir                                  obtained may be out of bounds, not in order or
951cdf0e10cSrcweir                                  unmodified. True does not mean that there
952cdf0e10cSrcweir                                  actually is any data within the selection.
953cdf0e10cSrcweir                      */
954cdf0e10cSrcweir     bool            ShrinkToDataArea( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow, SCCOL& rEndCol, SCROW& rEndRow ) const;
955cdf0e10cSrcweir 
956cdf0e10cSrcweir                     /** Shrink a range to only include used data area.
957cdf0e10cSrcweir 
958cdf0e10cSrcweir                         @param o_bShrunk
959cdf0e10cSrcweir                                Out parameter, True if area was shrunk, false if not.
960cdf0e10cSrcweir 
961cdf0e10cSrcweir                         @returns True if there is any data, fakse if not.
962cdf0e10cSrcweir                      */
963cdf0e10cSrcweir     bool            ShrinkToUsedDataArea( bool& o_bShrunk,
964cdf0e10cSrcweir                                           SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow,
965cdf0e10cSrcweir                                           SCCOL& rEndCol, SCROW& rEndRow, bool bColumnsOnly ) const;
966cdf0e10cSrcweir 
967cdf0e10cSrcweir     SC_DLLPUBLIC void           GetDataArea( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow,
968cdf0e10cSrcweir                                     SCCOL& rEndCol, SCROW& rEndRow, sal_Bool bIncludeOld, bool bOnlyDown ) const;
969cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			GetCellArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const;
970cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			GetTableArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const;
971cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			GetPrintArea( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow,
972cdf0e10cSrcweir 									sal_Bool bNotes = sal_True ) const;
973cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			GetPrintAreaHor( SCTAB nTab, SCROW nStartRow, SCROW nEndRow,
974cdf0e10cSrcweir 										SCCOL& rEndCol, sal_Bool bNotes = sal_True ) const;
975cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			GetPrintAreaVer( SCTAB nTab, SCCOL nStartCol, SCCOL nEndCol,
976cdf0e10cSrcweir 										SCROW& rEndRow, sal_Bool bNotes = sal_True ) const;
977cdf0e10cSrcweir 	void			InvalidateTableArea();
978cdf0e10cSrcweir 
979557cb412SWang Lei 	/*
980557cb412SWang Lei 	Get the last cell's row number , which have visual atribute or visual data in specific table
981557cb412SWang Lei 	*/
982557cb412SWang Lei 	SC_DLLPUBLIC void			GetLastAttrCell( SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow ) const;
983cdf0e10cSrcweir 
984cdf0e10cSrcweir     SC_DLLPUBLIC sal_Bool			GetDataStart( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow ) const;
985cdf0e10cSrcweir 
986cdf0e10cSrcweir     /**
987cdf0e10cSrcweir      * Find the maximum column position that contains printable data for the
988cdf0e10cSrcweir      * specified row range.  The final column position must be equal or less
989cdf0e10cSrcweir      * than the initial value of rEndCol.
990cdf0e10cSrcweir      */
991cdf0e10cSrcweir     void			ExtendPrintArea( OutputDevice* pDev, SCTAB nTab,
992cdf0e10cSrcweir                                     SCCOL nStartCol, SCROW nStartRow,
993cdf0e10cSrcweir                                     SCCOL& rEndCol, SCROW nEndRow );
994cdf0e10cSrcweir 	SC_DLLPUBLIC SCSIZE	    	GetEmptyLinesInBlock( SCCOL nStartCol, SCROW nStartRow, SCTAB nStartTab,
995cdf0e10cSrcweir 											SCCOL nEndCol, SCROW nEndRow, SCTAB nEndTab,
996cdf0e10cSrcweir 											ScDirection eDir );
997cdf0e10cSrcweir 
998cdf0e10cSrcweir 	void			FindAreaPos( SCCOL& rCol, SCROW& rRow, SCTAB nTab, SCsCOL nMovX, SCsROW nMovY );
999cdf0e10cSrcweir 	SC_DLLPUBLIC void			GetNextPos( SCCOL& rCol, SCROW& rRow, SCTAB nTab, SCsCOL nMovX, SCsROW nMovY,
1000cdf0e10cSrcweir 								sal_Bool bMarked, sal_Bool bUnprotected, const ScMarkData& rMark );
1001cdf0e10cSrcweir 
1002cdf0e10cSrcweir 	sal_Bool			GetNextMarkedCell( SCCOL& rCol, SCROW& rRow, SCTAB nTab,
1003cdf0e10cSrcweir 										const ScMarkData& rMark );
1004cdf0e10cSrcweir 
1005cdf0e10cSrcweir 	void			LimitChartArea( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow,
1006cdf0e10cSrcweir 													SCCOL& rEndCol, SCROW& rEndRow );
1007cdf0e10cSrcweir 	void			LimitChartIfAll( ScRangeListRef& rRangeList );
1008cdf0e10cSrcweir 
1009cdf0e10cSrcweir 	sal_Bool			InsertRow( SCCOL nStartCol, SCTAB nStartTab,
1010cdf0e10cSrcweir 							   SCCOL nEndCol,   SCTAB nEndTab,
1011cdf0e10cSrcweir                                SCROW nStartRow, SCSIZE nSize, ScDocument* pRefUndoDoc = NULL,
1012cdf0e10cSrcweir                                const ScMarkData* pTabMark = NULL );
1013cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			InsertRow( const ScRange& rRange, ScDocument* pRefUndoDoc = NULL );
1014cdf0e10cSrcweir 	void			DeleteRow( SCCOL nStartCol, SCTAB nStartTab,
1015cdf0e10cSrcweir 							   SCCOL nEndCol,   SCTAB nEndTab,
1016cdf0e10cSrcweir 							   SCROW nStartRow, SCSIZE nSize,
1017cdf0e10cSrcweir                                ScDocument* pRefUndoDoc = NULL, sal_Bool* pUndoOutline = NULL,
1018cdf0e10cSrcweir                                const ScMarkData* pTabMark = NULL );
1019cdf0e10cSrcweir 	void			DeleteRow( const ScRange& rRange,
1020cdf0e10cSrcweir 							   ScDocument* pRefUndoDoc = NULL, sal_Bool* pUndoOutline = NULL );
1021cdf0e10cSrcweir 	sal_Bool			InsertCol( SCROW nStartRow, SCTAB nStartTab,
1022cdf0e10cSrcweir 							   SCROW nEndRow,   SCTAB nEndTab,
1023cdf0e10cSrcweir                                SCCOL nStartCol, SCSIZE nSize, ScDocument* pRefUndoDoc = NULL,
1024cdf0e10cSrcweir                                const ScMarkData* pTabMark = NULL );
1025cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			InsertCol( const ScRange& rRange, ScDocument* pRefUndoDoc = NULL );
1026cdf0e10cSrcweir 	void			DeleteCol( SCROW nStartRow, SCTAB nStartTab,
1027cdf0e10cSrcweir 							   SCROW nEndRow, SCTAB nEndTab,
1028cdf0e10cSrcweir 							   SCCOL nStartCol, SCSIZE nSize,
1029cdf0e10cSrcweir                                ScDocument* pRefUndoDoc = NULL, sal_Bool* pUndoOutline = NULL,
1030cdf0e10cSrcweir                                const ScMarkData* pTabMark = NULL );
1031cdf0e10cSrcweir 	void			DeleteCol( const ScRange& rRange,
1032cdf0e10cSrcweir 							   ScDocument* pRefUndoDoc = NULL, sal_Bool* pUndoOutline = NULL );
1033cdf0e10cSrcweir 
1034cdf0e10cSrcweir 	sal_Bool			CanInsertRow( const ScRange& rRange ) const;
1035cdf0e10cSrcweir 	sal_Bool			CanInsertCol( const ScRange& rRange ) const;
1036cdf0e10cSrcweir 
1037cdf0e10cSrcweir 	void			FitBlock( const ScRange& rOld, const ScRange& rNew, sal_Bool bClear = sal_True );
1038cdf0e10cSrcweir 	sal_Bool			CanFitBlock( const ScRange& rOld, const ScRange& rNew );
1039cdf0e10cSrcweir 
1040cdf0e10cSrcweir 	sal_Bool			IsClipOrUndo() const 						{ return bIsClip || bIsUndo; }
1041cdf0e10cSrcweir 	sal_Bool			IsUndo() const								{ return bIsUndo; }
1042cdf0e10cSrcweir 	sal_Bool			IsClipboard() const 						{ return bIsClip; }
1043cdf0e10cSrcweir 	bool			IsUndoEnabled() const						{ return mbUndoEnabled; }
1044cdf0e10cSrcweir 	void            EnableUndo( bool bVal );
1045cdf0e10cSrcweir 
1046cdf0e10cSrcweir     bool            IsAdjustHeightEnabled() const               { return mbAdjustHeightEnabled; }
1047cdf0e10cSrcweir     void            EnableAdjustHeight( bool bVal )             { mbAdjustHeightEnabled = bVal; }
1048cdf0e10cSrcweir     bool            IsExecuteLinkEnabled() const                { return mbExecuteLinkEnabled; }
1049cdf0e10cSrcweir     void            EnableExecuteLink( bool bVal )              { mbExecuteLinkEnabled = bVal; }
1050cdf0e10cSrcweir     bool            IsChangeReadOnlyEnabled() const             { return mbChangeReadOnlyEnabled; }
1051cdf0e10cSrcweir     void            EnableChangeReadOnly( bool bVal )           { mbChangeReadOnlyEnabled = bVal; }
1052cdf0e10cSrcweir     SC_DLLPUBLIC sal_Int16       GetNamedRangesLockCount() const             { return mnNamedRangesLockCount; }
1053cdf0e10cSrcweir     void            SetNamedRangesLockCount( sal_Int16 nCount ) { mnNamedRangesLockCount = nCount; }
1054cdf0e10cSrcweir     SC_DLLPUBLIC void			ResetClip( ScDocument* pSourceDoc, const ScMarkData* pMarks );
1055cdf0e10cSrcweir 	SC_DLLPUBLIC void			ResetClip( ScDocument* pSourceDoc, SCTAB nTab );
1056cdf0e10cSrcweir 	void			SetCutMode( sal_Bool bCut );
1057cdf0e10cSrcweir 	sal_Bool			IsCutMode();
1058cdf0e10cSrcweir 	void			SetClipArea( const ScRange& rArea, sal_Bool bCut = sal_False );
1059cdf0e10cSrcweir 
1060cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			IsDocVisible() const						{ return bIsVisible; }
1061cdf0e10cSrcweir 	void			SetDocVisible( sal_Bool bSet );
1062cdf0e10cSrcweir 
1063cdf0e10cSrcweir 	sal_Bool			HasOLEObjectsInArea( const ScRange& rRange, const ScMarkData* pTabMark = NULL );
1064cdf0e10cSrcweir 
1065cdf0e10cSrcweir 	void			DeleteObjectsInArea( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
1066cdf0e10cSrcweir 										const ScMarkData& rMark );
1067cdf0e10cSrcweir 	void			DeleteObjectsInSelection( const ScMarkData& rMark );
1068cdf0e10cSrcweir 
1069cdf0e10cSrcweir 	void			DeleteArea(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
1070cdf0e10cSrcweir 							const ScMarkData& rMark, sal_uInt16 nDelFlag);
1071cdf0e10cSrcweir 	void			DeleteAreaTab(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
1072cdf0e10cSrcweir 								SCTAB nTab, sal_uInt16 nDelFlag);
1073cdf0e10cSrcweir 	void			DeleteAreaTab(const ScRange& rRange, sal_uInt16 nDelFlag);
1074cdf0e10cSrcweir 
1075cdf0e10cSrcweir     void            CopyToClip(const ScClipParam& rClipParam, ScDocument* pClipDoc,
1076cdf0e10cSrcweir                                const ScMarkData* pMarks = NULL, bool bAllTabs = false, bool bKeepScenarioFlags = false,
1077cdf0e10cSrcweir                                bool bIncludeObjects = false, bool bCloneNoteCaptions = true);
1078cdf0e10cSrcweir 
1079cdf0e10cSrcweir     void			CopyTabToClip(SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
1080cdf0e10cSrcweir                                 SCTAB nTab, ScDocument* pClipDoc = NULL);
1081cdf0e10cSrcweir 	void 			CopyBlockFromClip( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
1082cdf0e10cSrcweir 									const ScMarkData& rMark, SCsCOL nDx, SCsROW nDy,
1083cdf0e10cSrcweir 									const ScCopyBlockFromClipParams* pCBFCP );
1084cdf0e10cSrcweir 	void 			CopyNonFilteredFromClip( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
1085cdf0e10cSrcweir 									const ScMarkData& rMark, SCsCOL nDx, SCsROW nDy,
1086cdf0e10cSrcweir 									const ScCopyBlockFromClipParams* pCBFCP,
1087cdf0e10cSrcweir                                     SCROW & rClipStartRow );
1088cdf0e10cSrcweir 	void 			StartListeningFromClip( SCCOL nCol1, SCROW nRow1,
1089cdf0e10cSrcweir 										SCCOL nCol2, SCROW nRow2,
1090cdf0e10cSrcweir 										const ScMarkData& rMark, sal_uInt16 nInsFlag );
1091cdf0e10cSrcweir 	void 			BroadcastFromClip( SCCOL nCol1, SCROW nRow1,
1092cdf0e10cSrcweir 									SCCOL nCol2, SCROW nRow2,
1093cdf0e10cSrcweir 									const ScMarkData& rMark, sal_uInt16 nInsFlag );
1094cdf0e10cSrcweir     /** If pDestRanges is given it overrides rDestRange, rDestRange in this
1095cdf0e10cSrcweir         case is the overall encompassing range. */
1096cdf0e10cSrcweir 	void			CopyFromClip( const ScRange& rDestRange, const ScMarkData& rMark,
1097cdf0e10cSrcweir 									sal_uInt16 nInsFlag,
1098cdf0e10cSrcweir 									ScDocument* pRefUndoDoc = NULL,
1099cdf0e10cSrcweir 									ScDocument* pClipDoc = NULL,
1100cdf0e10cSrcweir 									sal_Bool bResetCut = sal_True,
1101cdf0e10cSrcweir 									sal_Bool bAsLink = sal_False,
1102cdf0e10cSrcweir 									sal_Bool bIncludeFiltered = sal_True,
1103cdf0e10cSrcweir 									sal_Bool bSkipAttrForEmpty = sal_False,
1104cdf0e10cSrcweir                                     const ScRangeList * pDestRanges = NULL );
1105cdf0e10cSrcweir 
1106cdf0e10cSrcweir     void            CopyMultiRangeFromClip(const ScAddress& rDestPos, const ScMarkData& rMark,
1107cdf0e10cSrcweir                                            sal_uInt16 nInsFlag, ScDocument* pClipDoc,
1108cdf0e10cSrcweir                                            bool bResetCut = true, bool bAsLink = false,
1109cdf0e10cSrcweir                                            bool bIncludeFiltered = true,
1110cdf0e10cSrcweir                                            bool bSkipAttrForEmpty = false);
1111cdf0e10cSrcweir 
1112cdf0e10cSrcweir 	void			GetClipArea(SCCOL& nClipX, SCROW& nClipY, sal_Bool bIncludeFiltered);
1113cdf0e10cSrcweir 	void			GetClipStart(SCCOL& nClipX, SCROW& nClipY);
1114cdf0e10cSrcweir 
1115cdf0e10cSrcweir 	sal_Bool			HasClipFilteredRows();
1116cdf0e10cSrcweir 
1117cdf0e10cSrcweir 	sal_Bool			IsClipboardSource() const;
1118cdf0e10cSrcweir 
1119cdf0e10cSrcweir 	SC_DLLPUBLIC void			TransposeClip( ScDocument* pTransClip, sal_uInt16 nFlags, sal_Bool bAsLink );
1120cdf0e10cSrcweir 
1121cdf0e10cSrcweir     ScClipParam&    GetClipParam();
1122cdf0e10cSrcweir     void            SetClipParam(const ScClipParam& rParam);
1123cdf0e10cSrcweir 
1124cdf0e10cSrcweir 	void			MixDocument( const ScRange& rRange, sal_uInt16 nFunction, sal_Bool bSkipEmpty,
1125cdf0e10cSrcweir 									ScDocument* pSrcDoc );
1126cdf0e10cSrcweir 
1127cdf0e10cSrcweir 	void			FillTab( const ScRange& rSrcArea, const ScMarkData& rMark,
1128cdf0e10cSrcweir 								sal_uInt16 nFlags, sal_uInt16 nFunction,
1129cdf0e10cSrcweir 								sal_Bool bSkipEmpty, sal_Bool bAsLink );
1130cdf0e10cSrcweir 	void			FillTabMarked( SCTAB nSrcTab, const ScMarkData& rMark,
1131cdf0e10cSrcweir 								sal_uInt16 nFlags, sal_uInt16 nFunction,
1132cdf0e10cSrcweir 								sal_Bool bSkipEmpty, sal_Bool bAsLink );
1133cdf0e10cSrcweir 
1134cdf0e10cSrcweir 	void			TransliterateText( const ScMarkData& rMultiMark, sal_Int32 nType );
1135cdf0e10cSrcweir 
1136cdf0e10cSrcweir 	SC_DLLPUBLIC void			InitUndo( ScDocument* pSrcDoc, SCTAB nTab1, SCTAB nTab2,
1137cdf0e10cSrcweir 								sal_Bool bColInfo = sal_False, sal_Bool bRowInfo = sal_False );
1138cdf0e10cSrcweir 	void			AddUndoTab( SCTAB nTab1, SCTAB nTab2,
1139cdf0e10cSrcweir 								sal_Bool bColInfo = sal_False, sal_Bool bRowInfo = sal_False );
1140cdf0e10cSrcweir 	SC_DLLPUBLIC void			InitUndoSelected( ScDocument* pSrcDoc, const ScMarkData& rTabSelection,
1141cdf0e10cSrcweir 								sal_Bool bColInfo = sal_False, sal_Bool bRowInfo = sal_False );
1142cdf0e10cSrcweir 
1143cdf0e10cSrcweir 					//	nicht mehr benutzen:
1144cdf0e10cSrcweir 	void			CopyToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
1145cdf0e10cSrcweir 								SCCOL nCol2, SCROW nRow2, SCTAB nTab2,
1146cdf0e10cSrcweir 								sal_uInt16 nFlags, sal_Bool bMarked, ScDocument* pDestDoc,
1147cdf0e10cSrcweir 								const ScMarkData* pMarks = NULL, sal_Bool bColRowFlags = sal_True);
1148cdf0e10cSrcweir 	void			UndoToDocument(SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
1149cdf0e10cSrcweir 								SCCOL nCol2, SCROW nRow2, SCTAB nTab2,
1150cdf0e10cSrcweir 								sal_uInt16 nFlags, sal_Bool bMarked, ScDocument* pDestDoc,
1151cdf0e10cSrcweir 								const ScMarkData* pMarks = NULL);
1152cdf0e10cSrcweir 
1153cdf0e10cSrcweir 	void			CopyToDocument(const ScRange& rRange,
1154cdf0e10cSrcweir 								sal_uInt16 nFlags, sal_Bool bMarked, ScDocument* pDestDoc,
1155cdf0e10cSrcweir 								const ScMarkData* pMarks = NULL, sal_Bool bColRowFlags = sal_True);
1156cdf0e10cSrcweir 	void			UndoToDocument(const ScRange& rRange,
1157cdf0e10cSrcweir 								sal_uInt16 nFlags, sal_Bool bMarked, ScDocument* pDestDoc,
1158cdf0e10cSrcweir 								const ScMarkData* pMarks = NULL);
1159cdf0e10cSrcweir 
1160cdf0e10cSrcweir 	void			CopyScenario( SCTAB nSrcTab, SCTAB nDestTab, sal_Bool bNewScenario = sal_False );
1161cdf0e10cSrcweir 	sal_Bool			TestCopyScenario( SCTAB nSrcTab, SCTAB nDestTab ) const;
1162cdf0e10cSrcweir 	void			MarkScenario( SCTAB nSrcTab, SCTAB nDestTab,
1163cdf0e10cSrcweir 									ScMarkData& rDestMark, sal_Bool bResetMark = sal_True,
1164cdf0e10cSrcweir 									sal_uInt16 nNeededBits = 0 ) const;
1165cdf0e10cSrcweir 	sal_Bool			HasScenarioRange( SCTAB nTab, const ScRange& rRange ) const;
1166cdf0e10cSrcweir 	SC_DLLPUBLIC const ScRangeList* GetScenarioRanges( SCTAB nTab ) const;
1167cdf0e10cSrcweir 
1168cdf0e10cSrcweir 	SC_DLLPUBLIC void			CopyUpdated( ScDocument* pPosDoc, ScDocument* pDestDoc );
1169cdf0e10cSrcweir 
1170cdf0e10cSrcweir 	void			UpdateReference( UpdateRefMode eUpdateRefMode, SCCOL nCol1, SCROW nRow1, SCTAB nTab1,
1171cdf0e10cSrcweir 									 SCCOL nCol2, SCROW nRow2, SCTAB nTab2,
1172cdf0e10cSrcweir 									 SCsCOL nDx, SCsROW nDy, SCsTAB nDz,
1173cdf0e10cSrcweir 									 ScDocument* pUndoDoc = NULL, sal_Bool bIncludeDraw = sal_True,
1174cdf0e10cSrcweir                                      bool bUpdateNoteCaptionPos = true );
1175cdf0e10cSrcweir 
1176cdf0e10cSrcweir 	SC_DLLPUBLIC void			UpdateTranspose( const ScAddress& rDestPos, ScDocument* pClipDoc,
1177cdf0e10cSrcweir 										const ScMarkData& rMark, ScDocument* pUndoDoc = NULL );
1178cdf0e10cSrcweir 
1179cdf0e10cSrcweir 	void			UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY );
1180cdf0e10cSrcweir 
1181cdf0e10cSrcweir 	void			Fill(	SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
1182cdf0e10cSrcweir 							const ScMarkData& rMark,
1183cdf0e10cSrcweir 							sal_uLong nFillCount, FillDir eFillDir = FILL_TO_BOTTOM,
1184cdf0e10cSrcweir 							FillCmd eFillCmd = FILL_LINEAR, FillDateCmd eFillDateCmd = FILL_DAY,
1185cdf0e10cSrcweir 							double nStepValue = 1.0, double nMaxValue = 1E307);
1186cdf0e10cSrcweir 	String			GetAutoFillPreview( const ScRange& rSource, SCCOL nEndX, SCROW nEndY );
1187cdf0e10cSrcweir 
1188cdf0e10cSrcweir 	sal_Bool			GetSelectionFunction( ScSubTotalFunc eFunc,
1189cdf0e10cSrcweir 											const ScAddress& rCursor, const ScMarkData& rMark,
1190cdf0e10cSrcweir 											double& rResult );
1191cdf0e10cSrcweir 
1192cdf0e10cSrcweir 	SC_DLLPUBLIC const SfxPoolItem* 		GetAttr( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich ) const;
1193cdf0e10cSrcweir 	SC_DLLPUBLIC const ScPatternAttr*	GetPattern( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
1194cdf0e10cSrcweir     SC_DLLPUBLIC const ScPatternAttr*    GetMostUsedPattern( SCCOL nCol, SCROW nStartRow, SCROW nEndRow, SCTAB nTab ) const;
1195cdf0e10cSrcweir 	const ScPatternAttr*	GetSelectionPattern( const ScMarkData& rMark, sal_Bool bDeep = sal_True );
1196cdf0e10cSrcweir 	ScPatternAttr*			CreateSelectionPattern( const ScMarkData& rMark, sal_Bool bDeep = sal_True );
1197cdf0e10cSrcweir 
1198cdf0e10cSrcweir 	const ScConditionalFormat* GetCondFormat( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
1199cdf0e10cSrcweir 	SC_DLLPUBLIC const SfxItemSet*	GetCondResult( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
1200cdf0e10cSrcweir 	const SfxPoolItem*	GetEffItem( SCCOL nCol, SCROW nRow, SCTAB nTab, sal_uInt16 nWhich ) const;
1201cdf0e10cSrcweir 
1202cdf0e10cSrcweir     SC_DLLPUBLIC const ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator >& GetBreakIterator();
1203cdf0e10cSrcweir 	sal_Bool			HasStringWeakCharacters( const String& rString );
1204cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uInt8			GetStringScriptType( const String& rString );
1205cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uInt8			GetCellScriptType( ScBaseCell* pCell, sal_uLong nNumberFormat );
1206cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uInt8			GetScriptType( SCCOL nCol, SCROW nRow, SCTAB nTab, ScBaseCell* pCell = NULL );
1207cdf0e10cSrcweir 
1208cdf0e10cSrcweir 	sal_Bool			HasDetectiveOperations() const;
1209cdf0e10cSrcweir 	void			AddDetectiveOperation( const ScDetOpData& rData );
1210cdf0e10cSrcweir 	void			ClearDetectiveOperations();
1211cdf0e10cSrcweir 	ScDetOpList*	GetDetOpList() const				{ return pDetOpList; }
1212cdf0e10cSrcweir 	void			SetDetOpList(ScDetOpList* pNew);
1213cdf0e10cSrcweir 
1214cdf0e10cSrcweir 	sal_Bool			HasDetectiveObjects(SCTAB nTab) const;
1215cdf0e10cSrcweir 
1216cdf0e10cSrcweir 	void			GetSelectionFrame( const ScMarkData& rMark,
1217cdf0e10cSrcweir 									   SvxBoxItem&		rLineOuter,
1218cdf0e10cSrcweir 									   SvxBoxInfoItem&	rLineInner );
1219cdf0e10cSrcweir 	void			ApplySelectionFrame( const ScMarkData& rMark,
1220cdf0e10cSrcweir 										 const SvxBoxItem* pLineOuter,
1221cdf0e10cSrcweir 										 const SvxBoxInfoItem* pLineInner );
1222cdf0e10cSrcweir 	void			ApplyFrameAreaTab( const ScRange& rRange,
1223cdf0e10cSrcweir 										 const SvxBoxItem* pLineOuter,
1224cdf0e10cSrcweir 										 const SvxBoxInfoItem* pLineInner );
1225cdf0e10cSrcweir 
1226cdf0e10cSrcweir 	void			ClearSelectionItems( const sal_uInt16* pWhich, const ScMarkData& rMark );
1227cdf0e10cSrcweir 	void			ChangeSelectionIndent( sal_Bool bIncrement, const ScMarkData& rMark );
1228cdf0e10cSrcweir 
1229cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uLong			AddCondFormat( const ScConditionalFormat& rNew );
1230cdf0e10cSrcweir 	SC_DLLPUBLIC void			FindConditionalFormat( sal_uLong nKey, ScRangeList& rRanges );
1231cdf0e10cSrcweir 	SC_DLLPUBLIC void			FindConditionalFormat( sal_uLong nKey, ScRangeList& rRanges, SCTAB nTab );
1232cdf0e10cSrcweir 	void			ConditionalChanged( sal_uLong nKey );
1233cdf0e10cSrcweir 
1234cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uLong			AddValidationEntry( const ScValidationData& rNew );
1235cdf0e10cSrcweir 
1236cdf0e10cSrcweir 	SC_DLLPUBLIC const ScValidationData*	GetValidationEntry( sal_uLong nIndex ) const;
1237cdf0e10cSrcweir 
1238cdf0e10cSrcweir 	ScConditionalFormatList* GetCondFormList() const		// Ref-Undo
1239cdf0e10cSrcweir 					{ return pCondFormList; }
1240cdf0e10cSrcweir 	void			SetCondFormList(ScConditionalFormatList* pNew);
1241cdf0e10cSrcweir 
1242cdf0e10cSrcweir 	ScValidationDataList* GetValidationList() const
1243cdf0e10cSrcweir 					{ return pValidationList; }
1244cdf0e10cSrcweir 
1245cdf0e10cSrcweir 	SC_DLLPUBLIC void			ApplyAttr( SCCOL nCol, SCROW nRow, SCTAB nTab,
1246cdf0e10cSrcweir 								const SfxPoolItem& rAttr );
1247cdf0e10cSrcweir 	SC_DLLPUBLIC void			ApplyPattern( SCCOL nCol, SCROW nRow, SCTAB nTab,
1248cdf0e10cSrcweir 									const ScPatternAttr& rAttr );
1249cdf0e10cSrcweir 	SC_DLLPUBLIC void			ApplyPatternArea( SCCOL nStartCol, SCROW nStartRow,
1250cdf0e10cSrcweir 										SCCOL nEndCol, SCROW nEndRow,
1251cdf0e10cSrcweir 										const ScMarkData& rMark, const ScPatternAttr& rAttr );
1252cdf0e10cSrcweir 	SC_DLLPUBLIC void			ApplyPatternAreaTab( SCCOL nStartCol, SCROW nStartRow,
1253cdf0e10cSrcweir 											SCCOL nEndCol, SCROW nEndRow, SCTAB nTab,
1254cdf0e10cSrcweir 											const ScPatternAttr& rAttr );
12553a02adb1SWang Lei 	SC_DLLPUBLIC void			ApplyPooledPatternAreaTab( SCCOL nStartCol, SCROW nStartRow,
12563a02adb1SWang Lei 											SCCOL nEndCol, SCROW nEndRow, SCTAB nTab,
12573a02adb1SWang Lei 											const ScPatternAttr& rPooledAttr, const ScPatternAttr& rAttr );
1258cdf0e10cSrcweir 	SC_DLLPUBLIC void			ApplyPatternIfNumberformatIncompatible(
1259cdf0e10cSrcweir 							const ScRange& rRange, const ScMarkData& rMark,
1260cdf0e10cSrcweir 							const ScPatternAttr& rPattern, short nNewType );
1261cdf0e10cSrcweir 
1262cdf0e10cSrcweir 	void			ApplyStyle( SCCOL nCol, SCROW nRow, SCTAB nTab,
1263cdf0e10cSrcweir 								const ScStyleSheet& rStyle);
1264cdf0e10cSrcweir 	void			ApplyStyleArea( SCCOL nStartCol, SCROW nStartRow,
1265cdf0e10cSrcweir 									SCCOL nEndCol, SCROW nEndRow,
1266cdf0e10cSrcweir 									const ScMarkData& rMark, const ScStyleSheet& rStyle);
1267cdf0e10cSrcweir 	SC_DLLPUBLIC void			ApplyStyleAreaTab( SCCOL nStartCol, SCROW nStartRow,
1268cdf0e10cSrcweir 										SCCOL nEndCol, SCROW nEndRow, SCTAB nTab,
1269cdf0e10cSrcweir 										const ScStyleSheet& rStyle);
1270cdf0e10cSrcweir 
1271cdf0e10cSrcweir 	void			ApplySelectionStyle( const ScStyleSheet& rStyle, const ScMarkData& rMark );
1272cdf0e10cSrcweir 	void			ApplySelectionLineStyle( const ScMarkData& rMark,
1273cdf0e10cSrcweir 											const SvxBorderLine* pLine, sal_Bool bColorOnly );
1274cdf0e10cSrcweir 
1275cdf0e10cSrcweir 	const ScStyleSheet*	GetStyle( SCCOL nCol, SCROW nRow, SCTAB nTab ) const;
1276cdf0e10cSrcweir 	const ScStyleSheet*	GetSelectionStyle( const ScMarkData& rMark ) const;
1277cdf0e10cSrcweir 
1278cdf0e10cSrcweir 	void			StyleSheetChanged( const SfxStyleSheetBase* pStyleSheet, sal_Bool bRemoved,
1279cdf0e10cSrcweir 										OutputDevice* pDev,
1280cdf0e10cSrcweir 										double nPPTX, double nPPTY,
1281cdf0e10cSrcweir 										const Fraction& rZoomX, const Fraction& rZoomY );
1282cdf0e10cSrcweir 
1283cdf0e10cSrcweir 	sal_Bool			IsStyleSheetUsed( const ScStyleSheet& rStyle, sal_Bool bGatherAllStyles ) const;
1284cdf0e10cSrcweir 
1285cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			ApplyFlagsTab( SCCOL nStartCol, SCROW nStartRow,
1286cdf0e10cSrcweir 											SCCOL nEndCol, SCROW nEndRow,
1287cdf0e10cSrcweir 											SCTAB nTab, sal_Int16 nFlags );
1288cdf0e10cSrcweir 	sal_Bool			RemoveFlagsTab( SCCOL nStartCol, SCROW nStartRow,
1289cdf0e10cSrcweir 											SCCOL nEndCol, SCROW nEndRow,
1290cdf0e10cSrcweir 											SCTAB nTab, sal_Int16 nFlags );
1291cdf0e10cSrcweir 
1292cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetPattern( const ScAddress&, const ScPatternAttr& rAttr,
1293cdf0e10cSrcweir 									sal_Bool bPutToPool = sal_False );
1294cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetPattern( SCCOL nCol, SCROW nRow, SCTAB nTab, const ScPatternAttr& rAttr,
1295cdf0e10cSrcweir 									sal_Bool bPutToPool = sal_False );
1296cdf0e10cSrcweir 	void            DeleteNumberFormat( const sal_uInt32* pDelKeys, sal_uInt32 nCount );
1297cdf0e10cSrcweir 
1298cdf0e10cSrcweir 	void			AutoFormat( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow,
1299cdf0e10cSrcweir 									sal_uInt16 nFormatNo, const ScMarkData& rMark );
1300cdf0e10cSrcweir 	void			GetAutoFormatData( SCTAB nTab, SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow,
1301cdf0e10cSrcweir 										ScAutoFormatData& rData );
1302cdf0e10cSrcweir 	sal_Bool			SearchAndReplace( const SvxSearchItem& rSearchItem,
1303cdf0e10cSrcweir 										SCCOL& rCol, SCROW& rRow, SCTAB& rTab,
1304cdf0e10cSrcweir 										ScMarkData& rMark,
1305cdf0e10cSrcweir 										String& rUndoStr, ScDocument* pUndoDoc = NULL );
1306cdf0e10cSrcweir 
1307cdf0e10cSrcweir 					// Col/Row von Folgeaufrufen bestimmen
1308cdf0e10cSrcweir 					// (z.B. nicht gefunden von Anfang, oder folgende Tabellen)
1309cdf0e10cSrcweir 	static void		GetSearchAndReplaceStart( const SvxSearchItem& rSearchItem,
1310cdf0e10cSrcweir 						SCCOL& rCol, SCROW& rRow );
1311cdf0e10cSrcweir 
1312cdf0e10cSrcweir 	sal_Bool			Solver(SCCOL nFCol, SCROW nFRow, SCTAB nFTab,
1313cdf0e10cSrcweir 							SCCOL nVCol, SCROW nVRow, SCTAB nVTab,
1314cdf0e10cSrcweir 							const String& sValStr, double& nX);
1315cdf0e10cSrcweir 
1316cdf0e10cSrcweir 	void			ApplySelectionPattern( const ScPatternAttr& rAttr, const ScMarkData& rMark );
1317cdf0e10cSrcweir     void            DeleteSelection( sal_uInt16 nDelFlag, const ScMarkData& rMark );
1318cdf0e10cSrcweir 	void			DeleteSelectionTab( SCTAB nTab, sal_uInt16 nDelFlag, const ScMarkData& rMark );
1319cdf0e10cSrcweir 
1320cdf0e10cSrcweir     SC_DLLPUBLIC void           SetColWidth( SCCOL nCol, SCTAB nTab, sal_uInt16 nNewWidth );
13213ce8cab8SWang Lei 	SC_DLLPUBLIC void			SetColWidthOnly( SCCOL nCol, SCTAB nTab, sal_uInt16 nNewWidth );
1322cdf0e10cSrcweir     SC_DLLPUBLIC void           SetRowHeight( SCROW nRow, SCTAB nTab, sal_uInt16 nNewHeight );
1323cdf0e10cSrcweir     SC_DLLPUBLIC void           SetRowHeightRange( SCROW nStartRow, SCROW nEndRow, SCTAB nTab,
1324cdf0e10cSrcweir                                             sal_uInt16 nNewHeight );
1325cdf0e10cSrcweir 
1326cdf0e10cSrcweir     SC_DLLPUBLIC void           SetRowHeightOnly( SCROW nStartRow, SCROW nEndRow, SCTAB nTab,
1327cdf0e10cSrcweir                                                   sal_uInt16 nNewHeight );
1328cdf0e10cSrcweir     void                        SetManualHeight( SCROW nStartRow, SCROW nEndRow, SCTAB nTab, sal_Bool bManual );
1329cdf0e10cSrcweir 
1330cdf0e10cSrcweir     SC_DLLPUBLIC sal_uInt16         GetColWidth( SCCOL nCol, SCTAB nTab ) const;
1331cdf0e10cSrcweir     SC_DLLPUBLIC sal_uInt16         GetRowHeight( SCROW nRow, SCTAB nTab, bool bHiddenAsZero = true ) const;
1332cdf0e10cSrcweir     SC_DLLPUBLIC sal_uInt16         GetRowHeight( SCROW nRow, SCTAB nTab, SCROW* pStartRow, SCROW* pEndRow, bool bHiddenAsZero = true ) const;
1333cdf0e10cSrcweir     SC_DLLPUBLIC sal_uLong          GetRowHeight( SCROW nStartRow, SCROW nEndRow, SCTAB nTab ) const;
1334cdf0e10cSrcweir     SCROW                       GetRowForHeight( SCTAB nTab, sal_uLong nHeight ) const;
1335cdf0e10cSrcweir     sal_uLong                       GetScaledRowHeight( SCROW nStartRow, SCROW nEndRow, SCTAB nTab, double fScale ) const;
1336cdf0e10cSrcweir     SC_DLLPUBLIC sal_uLong          GetColOffset( SCCOL nCol, SCTAB nTab ) const;
1337cdf0e10cSrcweir     SC_DLLPUBLIC sal_uLong          GetRowOffset( SCROW nRow, SCTAB nTab ) const;
1338cdf0e10cSrcweir 
1339cdf0e10cSrcweir     SC_DLLPUBLIC sal_uInt16         GetOriginalWidth( SCCOL nCol, SCTAB nTab ) const;
1340cdf0e10cSrcweir     SC_DLLPUBLIC sal_uInt16         GetOriginalHeight( SCROW nRow, SCTAB nTab ) const;
1341cdf0e10cSrcweir 
1342cdf0e10cSrcweir 	sal_uInt16			GetCommonWidth( SCCOL nEndCol, SCTAB nTab ) const;
1343cdf0e10cSrcweir 
1344cdf0e10cSrcweir 	SCROW			GetHiddenRowCount( SCROW nRow, SCTAB nTab ) const;
1345cdf0e10cSrcweir 
1346cdf0e10cSrcweir 	sal_uInt16			GetOptimalColWidth( SCCOL nCol, SCTAB nTab, OutputDevice* pDev,
1347cdf0e10cSrcweir 										double nPPTX, double nPPTY,
1348cdf0e10cSrcweir 										const Fraction& rZoomX, const Fraction& rZoomY,
1349cdf0e10cSrcweir 										sal_Bool bFormula,
1350cdf0e10cSrcweir 										const ScMarkData* pMarkData = NULL,
1351cdf0e10cSrcweir 										sal_Bool bSimpleTextImport = sal_False );
1352cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			SetOptimalHeight( SCROW nStartRow, SCROW nEndRow, SCTAB nTab, sal_uInt16 nExtra,
1353cdf0e10cSrcweir 										OutputDevice* pDev,
1354cdf0e10cSrcweir 										double nPPTX, double nPPTY,
1355cdf0e10cSrcweir 										const Fraction& rZoomX, const Fraction& rZoomY,
1356cdf0e10cSrcweir 										sal_Bool bShrink );
1357cdf0e10cSrcweir     void            UpdateAllRowHeights( OutputDevice* pDev,
1358cdf0e10cSrcweir                                         double nPPTX, double nPPTY,
1359cdf0e10cSrcweir                                         const Fraction& rZoomX, const Fraction& rZoomY,
1360cdf0e10cSrcweir                                         const ScMarkData* pTabMark = NULL );
1361cdf0e10cSrcweir 	long			GetNeededSize( SCCOL nCol, SCROW nRow, SCTAB nTab,
1362cdf0e10cSrcweir 									OutputDevice* pDev,
1363cdf0e10cSrcweir 									double nPPTX, double nPPTY,
1364cdf0e10cSrcweir 									const Fraction& rZoomX, const Fraction& rZoomY,
1365cdf0e10cSrcweir 									sal_Bool bWidth, sal_Bool bTotalSize = sal_False );
1366cdf0e10cSrcweir 
1367cdf0e10cSrcweir 	SC_DLLPUBLIC void			ShowCol(SCCOL nCol, SCTAB nTab, sal_Bool bShow);
1368cdf0e10cSrcweir 	SC_DLLPUBLIC void			ShowRow(SCROW nRow, SCTAB nTab, sal_Bool bShow);
1369cdf0e10cSrcweir 	SC_DLLPUBLIC void			ShowRows(SCROW nRow1, SCROW nRow2, SCTAB nTab, sal_Bool bShow);
1370cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetColFlags( SCCOL nCol, SCTAB nTab, sal_uInt8 nNewFlags );
1371cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetRowFlags( SCROW nRow, SCTAB nTab, sal_uInt8 nNewFlags );
1372cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetRowFlags( SCROW nStartRow, SCROW nEndRow, SCTAB nTab, sal_uInt8 nNewFlags );
1373cdf0e10cSrcweir 
1374cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uInt8			GetColFlags( SCCOL nCol, SCTAB nTab ) const;
1375cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uInt8			GetRowFlags( SCROW nRow, SCTAB nTab ) const;
1376cdf0e10cSrcweir 
1377cdf0e10cSrcweir     SC_DLLPUBLIC const ScBitMaskCompressedArray< SCROW, sal_uInt8> & GetRowFlagsArray( SCTAB nTab ) const;
1378cdf0e10cSrcweir     SC_DLLPUBLIC       ScBitMaskCompressedArray< SCROW, sal_uInt8> & GetRowFlagsArrayModifiable( SCTAB nTab );
1379cdf0e10cSrcweir 
1380cdf0e10cSrcweir     SC_DLLPUBLIC void           GetAllRowBreaks(::std::set<SCROW>& rBreaks, SCTAB nTab, bool bPage, bool bManual) const;
1381cdf0e10cSrcweir     SC_DLLPUBLIC void           GetAllColBreaks(::std::set<SCCOL>& rBreaks, SCTAB nTab, bool bPage, bool bManual) const;
1382cdf0e10cSrcweir     SC_DLLPUBLIC ScBreakType    HasRowBreak(SCROW nRow, SCTAB nTab) const;
1383cdf0e10cSrcweir     SC_DLLPUBLIC ScBreakType    HasColBreak(SCCOL nCol, SCTAB nTab) const;
1384cdf0e10cSrcweir     SC_DLLPUBLIC void           SetRowBreak(SCROW nRow, SCTAB nTab, bool bPage, bool bManual);
1385cdf0e10cSrcweir     SC_DLLPUBLIC void           SetColBreak(SCCOL nCol, SCTAB nTab, bool bPage, bool bManual);
1386cdf0e10cSrcweir     void                        RemoveRowBreak(SCROW nRow, SCTAB nTab, bool bPage, bool bManual);
1387cdf0e10cSrcweir     void                        RemoveColBreak(SCCOL nCol, SCTAB nTab, bool bPage, bool bManual);
1388cdf0e10cSrcweir     ::com::sun::star::uno::Sequence<
1389cdf0e10cSrcweir         ::com::sun::star::sheet::TablePageBreakData> GetRowBreakData(SCTAB nTab) const;
1390cdf0e10cSrcweir 
1391cdf0e10cSrcweir     SC_DLLPUBLIC bool           RowHidden(SCROW nRow, SCTAB nTab, SCROW* pFirstRow = NULL, SCROW* pLastRow = NULL);
1392cdf0e10cSrcweir     SC_DLLPUBLIC bool           RowHidden(SCROW nRow, SCTAB nTab, SCROW& rLastRow);
1393cdf0e10cSrcweir     SC_DLLPUBLIC bool           HasHiddenRows(SCROW nStartRow, SCROW nEndRow, SCTAB nTab);
1394cdf0e10cSrcweir     SC_DLLPUBLIC bool           ColHidden(SCCOL nCol, SCTAB nTab, SCCOL& rLastCol);
1395cdf0e10cSrcweir     SC_DLLPUBLIC bool           ColHidden(SCCOL nCol, SCTAB nTab, SCCOL* pFirstCol = NULL, SCCOL* pLastCol = NULL);
1396cdf0e10cSrcweir     SC_DLLPUBLIC void           SetRowHidden(SCROW nStartRow, SCROW nEndRow, SCTAB nTab, bool bHidden);
1397cdf0e10cSrcweir     SC_DLLPUBLIC void           SetColHidden(SCCOL nStartCol, SCCOL nEndCol, SCTAB nTab, bool bHidden);
1398cdf0e10cSrcweir     SC_DLLPUBLIC SCROW          FirstVisibleRow(SCROW nStartRow, SCROW nEndRow, SCTAB nTab);
1399cdf0e10cSrcweir     SC_DLLPUBLIC SCROW          LastVisibleRow(SCROW nStartRow, SCROW nEndRow, SCTAB nTab);
1400cdf0e10cSrcweir     SCROW                       CountVisibleRows(SCROW nStartRow, SCROW nEndRow, SCTAB nTab);
1401cdf0e10cSrcweir 
1402cdf0e10cSrcweir     bool                        RowFiltered(SCROW nRow, SCTAB nTab, SCROW* pFirstRow = NULL, SCROW* pLastRow = NULL);
1403cdf0e10cSrcweir     bool                        HasFilteredRows(SCROW nStartRow, SCROW nEndRow, SCTAB nTab);
1404cdf0e10cSrcweir     bool                        ColFiltered(SCCOL nCol, SCTAB nTab, SCCOL* pFirstCol = NULL, SCCOL* pLastCol = NULL);
1405cdf0e10cSrcweir     SC_DLLPUBLIC void           SetRowFiltered(SCROW nStartRow, SCROW nEndRow, SCTAB nTab, bool bFiltered);
1406cdf0e10cSrcweir     SC_DLLPUBLIC void           SetColFiltered(SCCOL nStartCol, SCCOL nEndCol, SCTAB nTab, bool bFiltered);
1407cdf0e10cSrcweir     SCROW                       FirstNonFilteredRow(SCROW nStartRow, SCROW nEndRow, SCTAB nTab);
1408cdf0e10cSrcweir     SCROW                       LastNonFilteredRow(SCROW nStartRow, SCROW nEndRow, SCTAB nTab);
1409cdf0e10cSrcweir     SCROW                       CountNonFilteredRows(SCROW nStartRow, SCROW nEndRow, SCTAB nTab);
1410cdf0e10cSrcweir 
1411cdf0e10cSrcweir     /**
1412cdf0e10cSrcweir      * Write all column row flags to table's flag data, because not all column
1413cdf0e10cSrcweir      * row attributes are stored in the flag data members.  This is necessary
1414cdf0e10cSrcweir      * for ods export.
1415cdf0e10cSrcweir      */
1416cdf0e10cSrcweir     void                        SyncColRowFlags();
1417cdf0e10cSrcweir 
1418cdf0e10cSrcweir                     /// @return  the index of the last row with any set flags (auto-pagebreak is ignored).
1419cdf0e10cSrcweir 	SC_DLLPUBLIC SCROW			GetLastFlaggedRow( SCTAB nTab ) const;
1420cdf0e10cSrcweir 
1421cdf0e10cSrcweir                     /// @return  the index of the last changed column (flags and column width, auto pagebreak is ignored).
1422cdf0e10cSrcweir     SCCOL           GetLastChangedCol( SCTAB nTab ) const;
1423cdf0e10cSrcweir                     /// @return  the index of the last changed row (flags and row height, auto pagebreak is ignored).
1424cdf0e10cSrcweir     SCROW           GetLastChangedRow( SCTAB nTab ) const;
1425cdf0e10cSrcweir 
1426cdf0e10cSrcweir     SCCOL           GetNextDifferentChangedCol( SCTAB nTab, SCCOL nStart) const;
1427cdf0e10cSrcweir 
1428cdf0e10cSrcweir 					// #108550#; if bCareManualSize is set then the row
1429cdf0e10cSrcweir 					// heights are compared only if the manual size flag for
1430cdf0e10cSrcweir 					// the row is set. If the bCareManualSize is not set then
1431cdf0e10cSrcweir 					// the row heights are always compared.
1432cdf0e10cSrcweir     SCROW           GetNextDifferentChangedRow( SCTAB nTab, SCROW nStart, bool bCareManualSize = true) const;
1433cdf0e10cSrcweir 
1434cdf0e10cSrcweir     // returns whether to export a Default style for this col/row or not
1435cdf0e10cSrcweir 	// nDefault is setted to one possition in the current row/col where the Default style is
1436cdf0e10cSrcweir 	sal_Bool			GetColDefault( SCTAB nTab, SCCOL nCol, SCROW nLastRow, SCROW& nDefault);
1437cdf0e10cSrcweir 	sal_Bool			GetRowDefault( SCTAB nTab, SCROW nRow, SCCOL nLastCol, SCCOL& nDefault);
1438cdf0e10cSrcweir 
1439cdf0e10cSrcweir 	sal_Bool			UpdateOutlineCol( SCCOL nStartCol, SCCOL nEndCol, SCTAB nTab, sal_Bool bShow );
1440cdf0e10cSrcweir 	sal_Bool			UpdateOutlineRow( SCROW nStartRow, SCROW nEndRow, SCTAB nTab, sal_Bool bShow );
1441cdf0e10cSrcweir 
1442cdf0e10cSrcweir 	void			StripHidden( SCCOL& rX1, SCROW& rY1, SCCOL& rX2, SCROW& rY2, SCTAB nTab );
1443cdf0e10cSrcweir 	void			ExtendHidden( SCCOL& rX1, SCROW& rY1, SCCOL& rX2, SCROW& rY2, SCTAB nTab );
1444cdf0e10cSrcweir 
1445cdf0e10cSrcweir 	SC_DLLPUBLIC ScPatternAttr*		GetDefPattern() const;
1446cdf0e10cSrcweir 	SC_DLLPUBLIC ScDocumentPool*		GetPool();
1447cdf0e10cSrcweir 	SC_DLLPUBLIC ScStyleSheetPool*	GetStyleSheetPool() const;
1448cdf0e10cSrcweir 
1449cdf0e10cSrcweir 	// PageStyle:
1450cdf0e10cSrcweir 	SC_DLLPUBLIC const String&	GetPageStyle( SCTAB nTab ) const;
1451cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetPageStyle( SCTAB nTab, const String& rName );
1452cdf0e10cSrcweir 	Size			GetPageSize( SCTAB nTab ) const;
1453cdf0e10cSrcweir 	void			SetPageSize( SCTAB nTab, const Size& rSize );
1454cdf0e10cSrcweir 	void			SetRepeatArea( SCTAB nTab, SCCOL nStartCol, SCCOL nEndCol, SCROW nStartRow, SCROW nEndRow );
1455cdf0e10cSrcweir     void            InvalidatePageBreaks(SCTAB nTab);
1456cdf0e10cSrcweir 	void			UpdatePageBreaks( SCTAB nTab, const ScRange* pUserArea = NULL );
1457cdf0e10cSrcweir 	void			RemoveManualBreaks( SCTAB nTab );
1458cdf0e10cSrcweir 	sal_Bool			HasManualBreaks( SCTAB nTab ) const;
1459cdf0e10cSrcweir 
1460cdf0e10cSrcweir 	sal_Bool			IsPageStyleInUse( const String& rStrPageStyle, SCTAB* pInTab = NULL );
1461cdf0e10cSrcweir 	sal_Bool			RemovePageStyleInUse( const String& rStrPageStyle );
1462cdf0e10cSrcweir 	sal_Bool			RenamePageStyleInUse( const String& rOld, const String& rNew );
1463cdf0e10cSrcweir 	void			ModifyStyleSheet( SfxStyleSheetBase& rPageStyle,
1464cdf0e10cSrcweir 									  const SfxItemSet&	 rChanges );
1465cdf0e10cSrcweir 
1466cdf0e10cSrcweir 	void			PageStyleModified( SCTAB nTab, const String& rNewName );
1467cdf0e10cSrcweir 
1468cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			NeedPageResetAfterTab( SCTAB nTab ) const;
1469cdf0e10cSrcweir 
1470cdf0e10cSrcweir 	// war vorher im PageStyle untergracht. Jetzt an jeder Tabelle:
1471cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			HasPrintRange();
1472cdf0e10cSrcweir 	SC_DLLPUBLIC sal_uInt16			GetPrintRangeCount( SCTAB nTab );
1473cdf0e10cSrcweir 	SC_DLLPUBLIC const ScRange*	GetPrintRange( SCTAB nTab, sal_uInt16 nPos );
1474cdf0e10cSrcweir 	SC_DLLPUBLIC const ScRange*	GetRepeatColRange( SCTAB nTab );
1475cdf0e10cSrcweir 	SC_DLLPUBLIC const ScRange*	GetRepeatRowRange( SCTAB nTab );
1476cdf0e10cSrcweir     /** Returns true, if the specified sheet is always printed. */
1477cdf0e10cSrcweir     sal_Bool            IsPrintEntireSheet( SCTAB nTab ) const;
1478cdf0e10cSrcweir 
1479cdf0e10cSrcweir     /** Removes all print ranges. */
1480cdf0e10cSrcweir     SC_DLLPUBLIC void            ClearPrintRanges( SCTAB nTab );
1481cdf0e10cSrcweir     /** Adds a new print ranges. */
1482cdf0e10cSrcweir     SC_DLLPUBLIC void            AddPrintRange( SCTAB nTab, const ScRange& rNew );
1483cdf0e10cSrcweir //UNUSED2009-05 /** Removes all old print ranges and sets the passed print ranges. */
1484cdf0e10cSrcweir //UNUSED2009-05 void            SetPrintRange( SCTAB nTab, const ScRange& rNew );
1485cdf0e10cSrcweir     /** Marks the specified sheet to be printed completely. Deletes old print ranges on the sheet! */
1486cdf0e10cSrcweir     SC_DLLPUBLIC void            SetPrintEntireSheet( SCTAB nTab );
1487cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetRepeatColRange( SCTAB nTab, const ScRange* pNew );
1488cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetRepeatRowRange( SCTAB nTab, const ScRange* pNew );
1489cdf0e10cSrcweir 	ScPrintRangeSaver* CreatePrintRangeSaver() const;
1490cdf0e10cSrcweir 	void			RestorePrintRanges( const ScPrintRangeSaver& rSaver );
1491cdf0e10cSrcweir 
1492cdf0e10cSrcweir 	SC_DLLPUBLIC Rectangle		GetMMRect( SCCOL nStartCol, SCROW nStartRow,
1493cdf0e10cSrcweir 								SCCOL nEndCol, SCROW nEndRow, SCTAB nTab );
1494cdf0e10cSrcweir 	SC_DLLPUBLIC ScRange			GetRange( SCTAB nTab, const Rectangle& rMMRect );
1495cdf0e10cSrcweir 
1496cdf0e10cSrcweir 	void			UpdStlShtPtrsFrmNms();
1497cdf0e10cSrcweir 	void			StylesToNames();
1498cdf0e10cSrcweir 
1499cdf0e10cSrcweir 	SC_DLLPUBLIC void			CopyStdStylesFrom( ScDocument* pSrcDoc );
1500cdf0e10cSrcweir 
1501cdf0e10cSrcweir 	CharSet			GetSrcCharSet() const	{ return eSrcSet; }
1502cdf0e10cSrcweir 	sal_uLong			GetSrcVersion() const	{ return nSrcVer; }
1503cdf0e10cSrcweir 	SCROW			GetSrcMaxRow() const	{ return nSrcMaxRow; }
1504cdf0e10cSrcweir 
1505cdf0e10cSrcweir 	void			SetSrcCharSet( CharSet eNew )	{ eSrcSet = eNew; }
1506cdf0e10cSrcweir 	void			UpdateFontCharSet();
1507cdf0e10cSrcweir 
1508cdf0e10cSrcweir     void            FillInfo( ScTableInfo& rTabInfo, SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2,
1509cdf0e10cSrcweir 						SCTAB nTab, double nScaleX, double nScaleY,
1510cdf0e10cSrcweir 						sal_Bool bPageMode, sal_Bool bFormulaMode,
1511cdf0e10cSrcweir 						const ScMarkData* pMarkData = NULL );
1512cdf0e10cSrcweir 
1513cdf0e10cSrcweir 	SC_DLLPUBLIC SvNumberFormatter*	GetFormatTable() const;
1514cdf0e10cSrcweir 
1515cdf0e10cSrcweir 	void			Sort( SCTAB nTab, const ScSortParam& rSortParam, sal_Bool bKeepQuery );
1516cdf0e10cSrcweir 	SCSIZE			Query( SCTAB nTab, const ScQueryParam& rQueryParam, sal_Bool bKeepSub );
1517cdf0e10cSrcweir 	sal_Bool			ValidQuery( SCROW nRow, SCTAB nTab, const ScQueryParam& rQueryParam, sal_Bool* pSpecial = NULL );
1518cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			CreateQueryParam( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2,
1519cdf0e10cSrcweir 										SCTAB nTab, ScQueryParam& rQueryParam );
1520cdf0e10cSrcweir 	void 			GetUpperCellString(SCCOL nCol, SCROW nRow, SCTAB nTab, String& rStr);
1521cdf0e10cSrcweir 
1522cdf0e10cSrcweir 	sal_Bool			GetFilterEntries( SCCOL nCol, SCROW nRow, SCTAB nTab,
1523cdf0e10cSrcweir                                 bool bFilter, TypedScStrCollection& rStrings, bool& rHasDates);
1524cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			GetFilterEntriesArea( SCCOL nCol, SCROW nStartRow, SCROW nEndRow,
1525cdf0e10cSrcweir                                 SCTAB nTab, TypedScStrCollection& rStrings, bool& rHasDates );
1526cdf0e10cSrcweir 	sal_Bool			GetDataEntries( SCCOL nCol, SCROW nRow, SCTAB nTab,
1527cdf0e10cSrcweir 								TypedScStrCollection& rStrings, sal_Bool bLimit = sal_False );
1528cdf0e10cSrcweir 	sal_Bool			GetFormulaEntries( TypedScStrCollection& rStrings );
1529cdf0e10cSrcweir 
153022407013SOliver-Rainer Wittmann 	sal_Bool			HasAutoFilter(
153122407013SOliver-Rainer Wittmann         const SCCOL nCol,
153222407013SOliver-Rainer Wittmann         const SCROW nRow,
153322407013SOliver-Rainer Wittmann         const SCTAB nTab );
1534cdf0e10cSrcweir 
1535cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			HasColHeader( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow,
1536cdf0e10cSrcweir 									SCTAB nTab );
1537cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			HasRowHeader( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol, SCROW nEndRow,
1538cdf0e10cSrcweir 									SCTAB nTab );
1539cdf0e10cSrcweir 
1540cdf0e10cSrcweir 	SfxPrinter*		GetPrinter( sal_Bool bCreateIfNotExist = sal_True );
1541cdf0e10cSrcweir 	void			SetPrinter( SfxPrinter* pNewPrinter );
1542cdf0e10cSrcweir 	VirtualDevice*	GetVirtualDevice_100th_mm();
1543cdf0e10cSrcweir 	SC_DLLPUBLIC OutputDevice*	GetRefDevice();	// WYSIWYG: Printer, otherwise VirtualDevice...
1544cdf0e10cSrcweir 
1545cdf0e10cSrcweir 	void 			EraseNonUsedSharedNames(sal_uInt16 nLevel);
1546cdf0e10cSrcweir 	sal_Bool			GetNextSpellingCell(SCCOL& nCol, SCROW& nRow, SCTAB nTab,
1547cdf0e10cSrcweir 										sal_Bool bInSel, const ScMarkData& rMark) const;
1548cdf0e10cSrcweir 
1549cdf0e10cSrcweir 	sal_Bool			ReplaceStyle(const SvxSearchItem& rSearchItem,
1550cdf0e10cSrcweir 								 SCCOL nCol, SCROW nRow, SCTAB nTab,
1551cdf0e10cSrcweir 								 ScMarkData& rMark, sal_Bool bIsUndo);
1552cdf0e10cSrcweir 
1553cdf0e10cSrcweir 	void			DoColResize( SCTAB nTab, SCCOL nCol1, SCCOL nCol2, SCSIZE nAdd );
1554cdf0e10cSrcweir 
1555cdf0e10cSrcweir 	void			InvalidateTextWidth( const String& rStyleName );
1556cdf0e10cSrcweir 	void			InvalidateTextWidth( SCTAB nTab );
1557cdf0e10cSrcweir     void            InvalidateTextWidth( const ScAddress* pAdrFrom, const ScAddress* pAdrTo, sal_Bool bNumFormatChanged );
1558cdf0e10cSrcweir 
1559cdf0e10cSrcweir 	sal_Bool			IdleCalcTextWidth();
1560cdf0e10cSrcweir 	sal_Bool			IdleCheckLinks();
1561cdf0e10cSrcweir 
1562cdf0e10cSrcweir 	sal_Bool			ContinueOnlineSpelling();	// sal_True = etwas gefunden
1563cdf0e10cSrcweir 
1564cdf0e10cSrcweir     void            RepaintRange( const ScRange& rRange );
1565cdf0e10cSrcweir 
1566cdf0e10cSrcweir 	sal_Bool		IsIdleDisabled() const		{ return bIdleDisabled; }
1567cdf0e10cSrcweir 	void			DisableIdle(sal_Bool bDo)	{ bIdleDisabled = bDo; }
1568cdf0e10cSrcweir 
1569cdf0e10cSrcweir 	sal_Bool			IsDetectiveDirty() const	 { return bDetectiveDirty; }
1570cdf0e10cSrcweir 	void			SetDetectiveDirty(sal_Bool bSet) { bDetectiveDirty = bSet; }
1571cdf0e10cSrcweir 
1572cdf0e10cSrcweir 	void			RemoveAutoSpellObj();
1573cdf0e10cSrcweir 	void			SetOnlineSpellPos( const ScAddress& rPos );
1574cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool			SetVisibleSpellRange( const ScRange& rRange );	// sal_True = changed
1575cdf0e10cSrcweir 
1576cdf0e10cSrcweir 	sal_uInt8			GetMacroCallMode() const	 { return nMacroCallMode; }
1577cdf0e10cSrcweir 	void			SetMacroCallMode(sal_uInt8 nNew)	 { nMacroCallMode = nNew; }
1578cdf0e10cSrcweir 
1579cdf0e10cSrcweir 	sal_Bool			GetHasMacroFunc() const		 { return bHasMacroFunc; }
1580cdf0e10cSrcweir 	void			SetHasMacroFunc(sal_Bool bSet)	 { bHasMacroFunc = bSet; }
1581cdf0e10cSrcweir 
1582cdf0e10cSrcweir 	sal_Bool			CheckMacroWarn();
1583cdf0e10cSrcweir 
1584cdf0e10cSrcweir     void            SetRangeOverflowType(sal_uInt32 nType)  { nRangeOverflowType = nType; }
1585cdf0e10cSrcweir     sal_Bool        HasRangeOverflow() const                { return nRangeOverflowType != 0; }
1586cdf0e10cSrcweir     SC_DLLPUBLIC sal_uInt32      GetRangeOverflowType() const            { return nRangeOverflowType; }
1587cdf0e10cSrcweir 
1588cdf0e10cSrcweir 	// fuer Broadcasting/Listening
1589cdf0e10cSrcweir 	void			SetNoSetDirty( sal_Bool bVal ) { bNoSetDirty = bVal; }
1590cdf0e10cSrcweir 	sal_Bool			GetNoSetDirty() const { return bNoSetDirty; }
1591cdf0e10cSrcweir 	void			SetInsertingFromOtherDoc( sal_Bool bVal ) { bInsertingFromOtherDoc = bVal; }
1592cdf0e10cSrcweir 	sal_Bool			IsInsertingFromOtherDoc() const { return bInsertingFromOtherDoc; }
1593cdf0e10cSrcweir     void            SetLoadingMedium( bool bVal );
1594cdf0e10cSrcweir     void            SetImportingXML( bool bVal );
1595cdf0e10cSrcweir     bool            IsImportingXML() const { return bImportingXML; }
1596577c0052SWang Lei 	void			SetImportingMSXML( bool bVal );
1597577c0052SWang Lei 	bool			IsImportingMSXML() const { return mbImportingMSXML; }
1598cdf0e10cSrcweir 	void			SetXMLFromWrapper( sal_Bool bVal );
1599cdf0e10cSrcweir 	sal_Bool			IsXMLFromWrapper() const { return bXMLFromWrapper; }
1600cdf0e10cSrcweir 	void			SetCalcingAfterLoad( sal_Bool bVal ) { bCalcingAfterLoad = bVal; }
1601cdf0e10cSrcweir 	sal_Bool			IsCalcingAfterLoad() const { return bCalcingAfterLoad; }
1602cdf0e10cSrcweir 	void			SetNoListening( sal_Bool bVal ) { bNoListening = bVal; }
1603cdf0e10cSrcweir 	sal_Bool			GetNoListening() const { return bNoListening; }
1604cdf0e10cSrcweir 	ScBroadcastAreaSlotMachine*	GetBASM() const { return pBASM; }
1605cdf0e10cSrcweir 
1606cdf0e10cSrcweir 	ScChartListenerCollection* GetChartListenerCollection() const
1607cdf0e10cSrcweir 						{ return pChartListenerCollection; }
1608cdf0e10cSrcweir 	void			SetChartListenerCollection( ScChartListenerCollection*,
1609cdf0e10cSrcweir 						sal_Bool bSetChartRangeLists = sal_False );
1610cdf0e10cSrcweir 	void			UpdateChart( const String& rName );
1611cdf0e10cSrcweir     void            RestoreChartListener( const String& rName );
1612cdf0e10cSrcweir 	SC_DLLPUBLIC void			UpdateChartListenerCollection();
1613cdf0e10cSrcweir 	sal_Bool			IsChartListenerCollectionNeedsUpdate() const
1614cdf0e10cSrcweir 						{ return bChartListenerCollectionNeedsUpdate; }
1615cdf0e10cSrcweir 	void			SetChartListenerCollectionNeedsUpdate( sal_Bool bFlg )
1616cdf0e10cSrcweir 						{ bChartListenerCollectionNeedsUpdate = bFlg; }
1617cdf0e10cSrcweir 	void			AddOLEObjectToCollection(const String& rName);
1618cdf0e10cSrcweir 
1619cdf0e10cSrcweir 	ScChangeViewSettings* GetChangeViewSettings() const		{ return pChangeViewSettings; }
1620cdf0e10cSrcweir 	SC_DLLPUBLIC void				SetChangeViewSettings(const ScChangeViewSettings& rNew);
1621cdf0e10cSrcweir 
1622cdf0e10cSrcweir 	vos::ORef<SvxForbiddenCharactersTable> GetForbiddenCharacters();
1623cdf0e10cSrcweir 	void			SetForbiddenCharacters( const vos::ORef<SvxForbiddenCharactersTable> xNew );
1624cdf0e10cSrcweir 
1625cdf0e10cSrcweir 	sal_uInt8			GetAsianCompression() const;		// CharacterCompressionType values
1626cdf0e10cSrcweir 	sal_Bool			IsValidAsianCompression() const;
1627cdf0e10cSrcweir 	void			SetAsianCompression(sal_uInt8 nNew);
1628cdf0e10cSrcweir 
1629cdf0e10cSrcweir 	sal_Bool			GetAsianKerning() const;
1630cdf0e10cSrcweir 	sal_Bool			IsValidAsianKerning() const;
1631cdf0e10cSrcweir 	void			SetAsianKerning(sal_Bool bNew);
1632cdf0e10cSrcweir 
1633cdf0e10cSrcweir     void            ApplyAsianEditSettings(ScEditEngineDefaulter& rEngine);
1634cdf0e10cSrcweir 
1635cdf0e10cSrcweir 	sal_uInt8			GetEditTextDirection(SCTAB nTab) const;	// EEHorizontalTextDirection values
1636cdf0e10cSrcweir 
1637cdf0e10cSrcweir 	SC_DLLPUBLIC ScLkUpdMode		GetLinkMode() const				{ return eLinkMode ;}
1638cdf0e10cSrcweir 	void			SetLinkMode( ScLkUpdMode nSet )	{ 	eLinkMode  = nSet;}
1639cdf0e10cSrcweir 
1640cdf0e10cSrcweir 
1641cdf0e10cSrcweir private:
1642cdf0e10cSrcweir     ScDocument(const ScDocument& r); // disabled with no definition
1643cdf0e10cSrcweir 
1644cdf0e10cSrcweir 	void				FindMaxRotCol( SCTAB nTab, RowInfo* pRowInfo, SCSIZE nArrCount,
1645cdf0e10cSrcweir 										SCCOL nX1, SCCOL nX2 ) const;
1646cdf0e10cSrcweir 
1647cdf0e10cSrcweir 	sal_uInt16				RowDifferences( SCROW nThisRow, SCTAB nThisTab,
1648cdf0e10cSrcweir 										ScDocument& rOtherDoc,
1649cdf0e10cSrcweir 										SCROW nOtherRow, SCTAB nOtherTab,
1650cdf0e10cSrcweir 										SCCOL nMaxCol, SCCOLROW* pOtherCols );
1651cdf0e10cSrcweir 	sal_uInt16				ColDifferences( SCCOL nThisCol, SCTAB nThisTab,
1652cdf0e10cSrcweir 										ScDocument& rOtherDoc,
1653cdf0e10cSrcweir 										SCCOL nOtherCol, SCTAB nOtherTab,
1654cdf0e10cSrcweir 										SCROW nMaxRow, SCCOLROW* pOtherRows );
1655cdf0e10cSrcweir 	void				FindOrder( SCCOLROW* pOtherRows, SCCOLROW nThisEndRow, SCCOLROW nOtherEndRow,
1656cdf0e10cSrcweir 										sal_Bool bColumns,
1657cdf0e10cSrcweir 										ScDocument& rOtherDoc, SCTAB nThisTab, SCTAB nOtherTab,
1658cdf0e10cSrcweir 										SCCOLROW nEndCol, SCCOLROW* pTranslate,
1659cdf0e10cSrcweir 										ScProgress* pProgress, sal_uLong nProAdd );
1660cdf0e10cSrcweir 	sal_Bool				OnlineSpellInRange( const ScRange& rSpellRange, ScAddress& rSpellPos,
1661cdf0e10cSrcweir 										sal_uInt16 nMaxTest );
1662cdf0e10cSrcweir 
1663cdf0e10cSrcweir 	DECL_LINK( TrackTimeHdl, Timer* );
1664cdf0e10cSrcweir 
1665cdf0e10cSrcweir     static ScRecursionHelper*   CreateRecursionHelperInstance();
1666cdf0e10cSrcweir 
1667cdf0e10cSrcweir public:
1668cdf0e10cSrcweir 	void				StartListeningArea( const ScRange& rRange,
1669cdf0e10cSrcweir 											SvtListener* pListener );
1670cdf0e10cSrcweir 	void				EndListeningArea( const ScRange& rRange,
1671cdf0e10cSrcweir 											SvtListener* pListener );
1672cdf0e10cSrcweir                         /** Broadcast wrapper, calls
1673cdf0e10cSrcweir     SC_DLLPUBLIC                         rHint.GetCell()->Broadcast() and AreaBroadcast()
1674cdf0e10cSrcweir                             and TrackFormulas() and conditional format list
1675cdf0e10cSrcweir                             SourceChanged().
1676cdf0e10cSrcweir                             Preferred.
1677cdf0e10cSrcweir                          */
1678cdf0e10cSrcweir     void                Broadcast( const ScHint& rHint );
1679cdf0e10cSrcweir                         /// deprecated
1680cdf0e10cSrcweir 	void				Broadcast( sal_uLong nHint, const ScAddress& rAddr,
1681cdf0e10cSrcweir 									ScBaseCell* pCell );
1682cdf0e10cSrcweir                         /// only area, no cell broadcast
1683cdf0e10cSrcweir     void                AreaBroadcast( const ScHint& rHint );
1684cdf0e10cSrcweir                         /// only areas in range, no cell broadcasts
1685cdf0e10cSrcweir     void                AreaBroadcastInRange( const ScRange& rRange,
1686cdf0e10cSrcweir                                               const ScHint& rHint );
1687cdf0e10cSrcweir 	void				DelBroadcastAreasInRange( const ScRange& rRange );
1688cdf0e10cSrcweir 	void				UpdateBroadcastAreas( UpdateRefMode eUpdateRefMode,
1689cdf0e10cSrcweir 											const ScRange& rRange,
1690cdf0e10cSrcweir 											SCsCOL nDx, SCsROW nDy, SCsTAB nDz );
1691cdf0e10cSrcweir 
1692cdf0e10cSrcweir 
1693cdf0e10cSrcweir 	void				StartListeningCell( const ScAddress& rAddress,
1694cdf0e10cSrcweir 											SvtListener* pListener );
1695cdf0e10cSrcweir 	void				EndListeningCell( const ScAddress& rAddress,
1696cdf0e10cSrcweir 											SvtListener* pListener );
1697cdf0e10cSrcweir 	void				PutInFormulaTree( ScFormulaCell* pCell );
1698cdf0e10cSrcweir 	void				RemoveFromFormulaTree( ScFormulaCell* pCell );
1699cdf0e10cSrcweir 	void				CalcFormulaTree( sal_Bool bOnlyForced = sal_False,
1700cdf0e10cSrcweir 										sal_Bool bNoProgressBar = sal_False );
1701cdf0e10cSrcweir 	void				ClearFormulaTree();
1702cdf0e10cSrcweir 	void				AppendToFormulaTrack( ScFormulaCell* pCell );
1703cdf0e10cSrcweir 	void				RemoveFromFormulaTrack( ScFormulaCell* pCell );
1704cdf0e10cSrcweir 	void				TrackFormulas( sal_uLong nHintId = SC_HINT_DATACHANGED );
1705cdf0e10cSrcweir 	sal_uInt16				GetFormulaTrackCount() const { return nFormulaTrackCount; }
1706cdf0e10cSrcweir 	sal_Bool				IsInFormulaTree( ScFormulaCell* pCell ) const;
1707cdf0e10cSrcweir 	sal_Bool				IsInFormulaTrack( ScFormulaCell* pCell ) const;
1708cdf0e10cSrcweir 	sal_uInt16				GetHardRecalcState() { return nHardRecalcState; }
1709cdf0e10cSrcweir 	void				SetHardRecalcState( sal_uInt16 nVal ) { nHardRecalcState = nVal; }
1710cdf0e10cSrcweir 	void				StartAllListeners();
1711cdf0e10cSrcweir 	const ScFormulaCell*	GetFormulaTree() const { return pFormulaTree; }
1712cdf0e10cSrcweir 	sal_Bool				HasForcedFormulas() const { return bHasForcedFormulas; }
1713cdf0e10cSrcweir 	void				SetForcedFormulas( sal_Bool bVal ) { bHasForcedFormulas = bVal; }
1714cdf0e10cSrcweir 	sal_uLong				GetFormulaCodeInTree() const { return nFormulaCodeInTree; }
1715cdf0e10cSrcweir 	sal_Bool				IsInInterpreter() const { return nInterpretLevel != 0; }
1716cdf0e10cSrcweir 	sal_uInt16				GetInterpretLevel() { return nInterpretLevel; }
1717cdf0e10cSrcweir 	void				IncInterpretLevel()
1718cdf0e10cSrcweir 							{
1719cdf0e10cSrcweir 								if ( nInterpretLevel < USHRT_MAX )
1720cdf0e10cSrcweir 									nInterpretLevel++;
1721cdf0e10cSrcweir 							}
1722cdf0e10cSrcweir 	void				DecInterpretLevel()
1723cdf0e10cSrcweir 							{
1724cdf0e10cSrcweir 								if ( nInterpretLevel )
1725cdf0e10cSrcweir 									nInterpretLevel--;
1726cdf0e10cSrcweir 							}
1727cdf0e10cSrcweir 	sal_Bool				IsInMacroInterpreter() const { return nMacroInterpretLevel != 0; }
1728cdf0e10cSrcweir 	sal_uInt16				GetMacroInterpretLevel() { return nMacroInterpretLevel; }
1729cdf0e10cSrcweir 	void				IncMacroInterpretLevel()
1730cdf0e10cSrcweir 							{
1731cdf0e10cSrcweir 								if ( nMacroInterpretLevel < USHRT_MAX )
1732cdf0e10cSrcweir 									nMacroInterpretLevel++;
1733cdf0e10cSrcweir 							}
1734cdf0e10cSrcweir 	void				DecMacroInterpretLevel()
1735cdf0e10cSrcweir 							{
1736cdf0e10cSrcweir 								if ( nMacroInterpretLevel )
1737cdf0e10cSrcweir 									nMacroInterpretLevel--;
1738cdf0e10cSrcweir 							}
1739cdf0e10cSrcweir 	sal_Bool				IsInInterpreterTableOp() const { return nInterpreterTableOpLevel != 0; }
1740cdf0e10cSrcweir 	sal_uInt16				GetInterpreterTableOpLevel() { return nInterpreterTableOpLevel; }
1741cdf0e10cSrcweir 	void				IncInterpreterTableOpLevel()
1742cdf0e10cSrcweir 							{
1743cdf0e10cSrcweir 								if ( nInterpreterTableOpLevel < USHRT_MAX )
1744cdf0e10cSrcweir 									nInterpreterTableOpLevel++;
1745cdf0e10cSrcweir 							}
1746cdf0e10cSrcweir 	void				DecInterpreterTableOpLevel()
1747cdf0e10cSrcweir 							{
1748cdf0e10cSrcweir 								if ( nInterpreterTableOpLevel )
1749cdf0e10cSrcweir 									nInterpreterTableOpLevel--;
1750cdf0e10cSrcweir 							}
1751cdf0e10cSrcweir                         // add a formula to be remembered for TableOp broadcasts
1752cdf0e10cSrcweir     void                AddTableOpFormulaCell( ScFormulaCell* );
1753cdf0e10cSrcweir     void                InvalidateLastTableOpParams() { aLastTableOpParams.bValid = sal_False; }
1754cdf0e10cSrcweir     ScRecursionHelper&  GetRecursionHelper()
1755cdf0e10cSrcweir                             {
1756cdf0e10cSrcweir                                 if (!pRecursionHelper)
1757cdf0e10cSrcweir                                     pRecursionHelper = CreateRecursionHelperInstance();
1758cdf0e10cSrcweir                                 return *pRecursionHelper;
1759cdf0e10cSrcweir                             }
1760cdf0e10cSrcweir 	sal_Bool				IsInDtorClear() const { return bInDtorClear; }
1761cdf0e10cSrcweir 	void				SetExpandRefs( sal_Bool bVal ) { bExpandRefs = bVal; }
1762cdf0e10cSrcweir 	sal_Bool				IsExpandRefs() { return bExpandRefs; }
1763cdf0e10cSrcweir 
1764cdf0e10cSrcweir 	SC_DLLPUBLIC void				IncSizeRecalcLevel( SCTAB nTab );
1765cdf0e10cSrcweir 	SC_DLLPUBLIC void				DecSizeRecalcLevel( SCTAB nTab, bool bUpdateNoteCaptionPos = true );
1766cdf0e10cSrcweir 
1767cdf0e10cSrcweir     sal_uLong               GetXMLImportedFormulaCount() const { return nXMLImportedFormulaCount; }
1768cdf0e10cSrcweir     void                IncXMLImportedFormulaCount( sal_uLong nVal )
1769cdf0e10cSrcweir                             {
1770cdf0e10cSrcweir                                 if ( nXMLImportedFormulaCount + nVal > nXMLImportedFormulaCount )
1771cdf0e10cSrcweir                                     nXMLImportedFormulaCount += nVal;
1772cdf0e10cSrcweir                             }
1773cdf0e10cSrcweir     void                DecXMLImportedFormulaCount( sal_uLong nVal )
1774cdf0e10cSrcweir                             {
1775cdf0e10cSrcweir                                 if ( nVal <= nXMLImportedFormulaCount )
1776cdf0e10cSrcweir                                     nXMLImportedFormulaCount -= nVal;
1777cdf0e10cSrcweir                                 else
1778cdf0e10cSrcweir                                     nXMLImportedFormulaCount = 0;
1779cdf0e10cSrcweir                             }
1780cdf0e10cSrcweir 
1781cdf0e10cSrcweir 	void				StartTrackTimer();
1782cdf0e10cSrcweir 
1783cdf0e10cSrcweir 	void 			CompileDBFormula();
1784cdf0e10cSrcweir 	void 			CompileDBFormula( sal_Bool bCreateFormulaString );
1785cdf0e10cSrcweir 	void 			CompileNameFormula( sal_Bool bCreateFormulaString );
1786cdf0e10cSrcweir 	void 			CompileColRowNameFormula();
1787cdf0e10cSrcweir 
1788cdf0e10cSrcweir     /** Maximum string length of a column, e.g. for dBase export.
1789cdf0e10cSrcweir         @return String length in octets (!) of the destination encoding. In
1790cdf0e10cSrcweir                 case of non-octet encodings (e.g. UCS2) the length in code
1791cdf0e10cSrcweir                 points times sizeof(sal_Unicode) is returned. */
1792cdf0e10cSrcweir     sal_Int32       GetMaxStringLen( SCTAB nTab, SCCOL nCol,
1793cdf0e10cSrcweir                                      SCROW nRowStart, SCROW nRowEnd,
1794cdf0e10cSrcweir                                      CharSet eCharSet ) const;
1795cdf0e10cSrcweir     /** Maximum string length of numerical cells of a column, e.g. for dBase export.
1796cdf0e10cSrcweir         @return String length in characters (!) including the decimal
1797cdf0e10cSrcweir                 separator, and the decimal precision needed. */
1798cdf0e10cSrcweir     xub_StrLen      GetMaxNumberStringLen( sal_uInt16& nPrecision,
1799cdf0e10cSrcweir                                            SCTAB nTab, SCCOL nCol,
1800cdf0e10cSrcweir                                            SCROW nRowStart, SCROW nRowEnd ) const;
1801cdf0e10cSrcweir 
1802cdf0e10cSrcweir 	void	KeyInput( const KeyEvent& rKEvt );		// TimerDelays etc.
1803cdf0e10cSrcweir 
1804cdf0e10cSrcweir 	ScChangeTrack*		GetChangeTrack() const { return pChangeTrack; }
1805cdf0e10cSrcweir 
1806cdf0e10cSrcweir 	//! only for import filter, deletes any existing ChangeTrack via
1807cdf0e10cSrcweir 	//! EndChangeTracking() and takes ownership of new ChangeTrack pTrack
1808cdf0e10cSrcweir 	SC_DLLPUBLIC void			SetChangeTrack( ScChangeTrack* pTrack );
1809cdf0e10cSrcweir 
1810cdf0e10cSrcweir 	void			StartChangeTracking();
1811cdf0e10cSrcweir 	void			EndChangeTracking();
1812cdf0e10cSrcweir 
1813cdf0e10cSrcweir 	SC_DLLPUBLIC void			CompareDocument( ScDocument& rOtherDoc );
1814cdf0e10cSrcweir 
1815cdf0e10cSrcweir 	void			AddUnoObject( SfxListener& rObject );
1816cdf0e10cSrcweir 	void			RemoveUnoObject( SfxListener& rObject );
1817cdf0e10cSrcweir 	void			BroadcastUno( const SfxHint &rHint );
1818cdf0e10cSrcweir 	void			AddUnoListenerCall( const ::com::sun::star::uno::Reference<
1819cdf0e10cSrcweir 											::com::sun::star::util::XModifyListener >& rListener,
1820cdf0e10cSrcweir 										const ::com::sun::star::lang::EventObject& rEvent );
1821cdf0e10cSrcweir 
1822cdf0e10cSrcweir 	void			SetInLinkUpdate(sal_Bool bSet);				// TableLink or AreaLink
1823cdf0e10cSrcweir 	sal_Bool			IsInLinkUpdate() const;					// including DdeLink
1824cdf0e10cSrcweir 
1825cdf0e10cSrcweir 	SC_DLLPUBLIC SfxItemPool*		GetEditPool() const;
1826cdf0e10cSrcweir 	SC_DLLPUBLIC SfxItemPool*		GetEnginePool() const;
1827cdf0e10cSrcweir 	SC_DLLPUBLIC ScFieldEditEngine&	GetEditEngine();
1828cdf0e10cSrcweir 	SC_DLLPUBLIC ScNoteEditEngine&	GetNoteEngine();
1829cdf0e10cSrcweir 
1830cdf0e10cSrcweir 	ScRefreshTimerControl*	GetRefreshTimerControl() const
1831cdf0e10cSrcweir 		{ return pRefreshTimerControl; }
1832cdf0e10cSrcweir 	ScRefreshTimerControl * const * GetRefreshTimerControlAddress() const
1833cdf0e10cSrcweir 		{ return &pRefreshTimerControl; }
1834cdf0e10cSrcweir 
1835cdf0e10cSrcweir     void            SetPastingDrawFromOtherDoc( sal_Bool bVal )
1836cdf0e10cSrcweir                         { bPastingDrawFromOtherDoc = bVal; }
1837cdf0e10cSrcweir     sal_Bool            PastingDrawFromOtherDoc() const
1838cdf0e10cSrcweir                         { return bPastingDrawFromOtherDoc; }
1839cdf0e10cSrcweir 
1840cdf0e10cSrcweir                     /// an ID unique to each document instance
1841cdf0e10cSrcweir     sal_uInt32      GetDocumentID() const;
1842cdf0e10cSrcweir 
1843cdf0e10cSrcweir     void            InvalidateStyleSheetUsage()
1844cdf0e10cSrcweir                         { bStyleSheetUsageInvalid = sal_True; }
1845cdf0e10cSrcweir 	void GetSortParam( ScSortParam& rParam, SCTAB nTab );
1846cdf0e10cSrcweir 	void SetSortParam( ScSortParam& rParam, SCTAB nTab );
1847cdf0e10cSrcweir 
1848cdf0e10cSrcweir     inline void     SetVbaEventProcessor( const com::sun::star::uno::Reference< com::sun::star::script::vba::XVBAEventProcessor >& rxVbaEvents )
1849cdf0e10cSrcweir                         { mxVbaEvents = rxVbaEvents; }
1850cdf0e10cSrcweir     inline com::sun::star::uno::Reference< com::sun::star::script::vba::XVBAEventProcessor >
1851cdf0e10cSrcweir                     GetVbaEventProcessor() const { return mxVbaEvents; }
1852cdf0e10cSrcweir 
1853cdf0e10cSrcweir     /** Should only be GRAM_PODF or GRAM_ODFF. */
1854cdf0e10cSrcweir     void                SetStorageGrammar( formula::FormulaGrammar::Grammar eGrammar );
1855cdf0e10cSrcweir     formula::FormulaGrammar::Grammar  GetStorageGrammar() const
1856cdf0e10cSrcweir                             { return eStorageGrammar; }
1857cdf0e10cSrcweir 
1858cdf0e10cSrcweir 	SfxUndoManager*     GetUndoManager();
1859cdf0e10cSrcweir     bool IsInVBAMode() const;
1860cdf0e10cSrcweir     ScRowBreakIterator* GetRowBreakIterator(SCTAB nTab) const;
1861cdf0e10cSrcweir 
1862cdf0e10cSrcweir private: // CLOOK-Impl-Methoden
1863cdf0e10cSrcweir 
1864cdf0e10cSrcweir     /**
1865cdf0e10cSrcweir      * Use this class as a locale variable to merge number formatter from
1866cdf0e10cSrcweir      * another document, and set NULL pointer to pFormatExchangeList when
1867cdf0e10cSrcweir      * done.
1868cdf0e10cSrcweir      */
1869cdf0e10cSrcweir     class NumFmtMergeHandler
1870cdf0e10cSrcweir     {
1871cdf0e10cSrcweir     public:
1872cdf0e10cSrcweir         explicit NumFmtMergeHandler(ScDocument* pDoc, ScDocument* pSrcDoc);
1873cdf0e10cSrcweir         ~NumFmtMergeHandler();
1874cdf0e10cSrcweir 
1875cdf0e10cSrcweir     private:
1876cdf0e10cSrcweir         ScDocument* mpDoc;
1877cdf0e10cSrcweir     };
1878cdf0e10cSrcweir 
1879cdf0e10cSrcweir     void    MergeNumberFormatter(ScDocument* pSrcDoc);
1880cdf0e10cSrcweir 
1881cdf0e10cSrcweir 	void	ImplCreateOptions(); // bei Gelegenheit auf on-demand umstellen?
1882cdf0e10cSrcweir 	void	ImplDeleteOptions();
1883cdf0e10cSrcweir 
1884cdf0e10cSrcweir 	void	DeleteDrawLayer();
1885cdf0e10cSrcweir 	SC_DLLPUBLIC sal_Bool	DrawGetPrintArea( ScRange& rRange, sal_Bool bSetHor, sal_Bool bSetVer ) const;
1886cdf0e10cSrcweir 	void	DrawMovePage( sal_uInt16 nOldPos, sal_uInt16 nNewPos );
1887cdf0e10cSrcweir 	void	DrawCopyPage( sal_uInt16 nOldPos, sal_uInt16 nNewPos );
1888cdf0e10cSrcweir 
1889cdf0e10cSrcweir 	void	UpdateDrawPrinter();
1890cdf0e10cSrcweir 	void	UpdateDrawLanguages();
1891cdf0e10cSrcweir 	SC_DLLPUBLIC void	InitClipPtrs( ScDocument* pSourceDoc );
1892cdf0e10cSrcweir 
1893cdf0e10cSrcweir 	void	LoadDdeLinks(SvStream& rStream);
1894cdf0e10cSrcweir 	void	SaveDdeLinks(SvStream& rStream) const;
1895cdf0e10cSrcweir 
1896cdf0e10cSrcweir     void    DeleteAreaLinksOnTab( SCTAB nTab );
1897cdf0e10cSrcweir 	void	UpdateRefAreaLinks( UpdateRefMode eUpdateRefMode,
1898cdf0e10cSrcweir 							 const ScRange& r, SCsCOL nDx, SCsROW nDy, SCsTAB nDz );
1899cdf0e10cSrcweir 
1900cdf0e10cSrcweir     void    CopyRangeNamesToClip(ScDocument* pClipDoc, const ScRange& rClipRange, const ScMarkData* pMarks, bool bAllTabs);
1901cdf0e10cSrcweir     void    CopyRangeNamesFromClip(ScDocument* pClipDoc, ScClipRangeNameData& rRangeNames);
1902cdf0e10cSrcweir     void    UpdateRangeNamesInFormulas(
1903cdf0e10cSrcweir         ScClipRangeNameData& rRangeNames, const ScRangeList& rDestRanges, const ScMarkData& rMark,
1904cdf0e10cSrcweir         SCCOL nXw, SCROW nYw);
1905cdf0e10cSrcweir 
1906cdf0e10cSrcweir 	sal_Bool	HasPartOfMerged( const ScRange& rRange );
1907cdf0e10cSrcweir 
1908cdf0e10cSrcweir 	std::map< SCTAB, ScSortParam > mSheetSortParams;
1909cdf0e10cSrcweir 
1910b4df81e3SWang Lei public:
1911b4df81e3SWang Lei     void    FillDPCache( ScDPTableDataCache * pCache, SCTAB nDocTab, SCCOL nStartCol, SCCOL nEndCol, SCROW nStartRow, SCROW nEndRow );
19128f4c7c28SSteve Yin private:
19138f4c7c28SSteve Yin     SCSIZE GetPatternCount( SCTAB nTab, SCCOL nCol );
19148f4c7c28SSteve Yin     SCSIZE GetPatternCount( SCTAB nTab, SCCOL nCol, SCROW nRw1, SCROW nRw2 );
19158f4c7c28SSteve Yin     bool   ReservedPatternCount( SCTAB nTab, SCCOL nCol, SCSIZE nReserved );
1916cdf0e10cSrcweir };
1917cdf0e10cSrcweir inline void ScDocument::GetSortParam( ScSortParam& rParam, SCTAB nTab )
1918cdf0e10cSrcweir {
1919cdf0e10cSrcweir 	rParam = mSheetSortParams[ nTab ];
1920cdf0e10cSrcweir }
1921cdf0e10cSrcweir 
1922cdf0e10cSrcweir inline void ScDocument::SetSortParam( ScSortParam& rParam, SCTAB nTab )
1923cdf0e10cSrcweir {
1924cdf0e10cSrcweir 	mSheetSortParams[ nTab ] = rParam;
1925cdf0e10cSrcweir }
1926cdf0e10cSrcweir 
1927cdf0e10cSrcweir #endif
1928cdf0e10cSrcweir 
1929cdf0e10cSrcweir 
1930