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