1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir #ifndef SW_NDARR_HXX 29*cdf0e10cSrcweir #define SW_NDARR_HXX 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include <vector> 32*cdf0e10cSrcweir 33*cdf0e10cSrcweir #include <boost/utility.hpp> 34*cdf0e10cSrcweir 35*cdf0e10cSrcweir #include <com/sun/star/embed/XEmbeddedObject.hpp> 36*cdf0e10cSrcweir 37*cdf0e10cSrcweir #include <svl/svarray.hxx> 38*cdf0e10cSrcweir #include <svtools/embedhlp.hxx> 39*cdf0e10cSrcweir 40*cdf0e10cSrcweir #include <bparr.hxx> 41*cdf0e10cSrcweir #include <ndtyp.hxx> 42*cdf0e10cSrcweir 43*cdf0e10cSrcweir 44*cdf0e10cSrcweir class Graphic; 45*cdf0e10cSrcweir class GraphicObject; 46*cdf0e10cSrcweir class String; 47*cdf0e10cSrcweir class SwAttrSet; 48*cdf0e10cSrcweir class SfxItemSet; 49*cdf0e10cSrcweir class SwCntntNode; 50*cdf0e10cSrcweir class SwDoc; 51*cdf0e10cSrcweir class SwGrfFmtColl; 52*cdf0e10cSrcweir class SwGrfNode; 53*cdf0e10cSrcweir class SwHistory; 54*cdf0e10cSrcweir class SwNode; 55*cdf0e10cSrcweir class SwNodeIndex; 56*cdf0e10cSrcweir class SwNodeRange; 57*cdf0e10cSrcweir class SwOLENode; 58*cdf0e10cSrcweir class SwOutlineNodes; 59*cdf0e10cSrcweir class SwPaM; 60*cdf0e10cSrcweir class SwSectionData; 61*cdf0e10cSrcweir class SwSectionFmt; 62*cdf0e10cSrcweir class SwTOXBase; 63*cdf0e10cSrcweir class SwSectionNode; 64*cdf0e10cSrcweir class SwStartNode; 65*cdf0e10cSrcweir class SwTableBoxFmt; 66*cdf0e10cSrcweir class SwTableFmt; 67*cdf0e10cSrcweir class SwTableLine; 68*cdf0e10cSrcweir class SwTableLineFmt; 69*cdf0e10cSrcweir class SwTableNode; 70*cdf0e10cSrcweir class SwTblToTxtSaves; 71*cdf0e10cSrcweir class SwTxtFmtColl; 72*cdf0e10cSrcweir class SwTxtNode; 73*cdf0e10cSrcweir class SwUndoTblToTxt; 74*cdf0e10cSrcweir class SwUndoTxtToTbl; 75*cdf0e10cSrcweir struct SwPosition; 76*cdf0e10cSrcweir 77*cdf0e10cSrcweir 78*cdf0e10cSrcweir // -------------------- 79*cdf0e10cSrcweir // class SwNodes 80*cdf0e10cSrcweir // -------------------- 81*cdf0e10cSrcweir 82*cdf0e10cSrcweir typedef SwNode * SwNodePtr; 83*cdf0e10cSrcweir typedef sal_Bool (*FnForEach_SwNodes)( const SwNodePtr&, void* pArgs ); 84*cdf0e10cSrcweir 85*cdf0e10cSrcweir SV_DECL_PTRARR_SORT( SwOutlineNodes, SwNodePtr, 0, 10 ) 86*cdf0e10cSrcweir 87*cdf0e10cSrcweir class SW_DLLPUBLIC SwNodes 88*cdf0e10cSrcweir : private BigPtrArray 89*cdf0e10cSrcweir , private ::boost::noncopyable 90*cdf0e10cSrcweir { 91*cdf0e10cSrcweir friend class SwDoc; 92*cdf0e10cSrcweir friend class SwNode; 93*cdf0e10cSrcweir friend class SwNodeIndex; 94*cdf0e10cSrcweir 95*cdf0e10cSrcweir SwNodeIndex* pRoot; // Liste aller Indizies auf Nodes 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir // --> OD 2008-05-14 #refactorlists# - removed <bSyncNumberAndNumRule> 98*cdf0e10cSrcweir void InsertNode( const SwNodePtr pNode, 99*cdf0e10cSrcweir const SwNodeIndex& rPos ); 100*cdf0e10cSrcweir void InsertNode( const SwNodePtr pNode, 101*cdf0e10cSrcweir sal_uLong nPos ); 102*cdf0e10cSrcweir // <-- 103*cdf0e10cSrcweir 104*cdf0e10cSrcweir 105*cdf0e10cSrcweir SwDoc* pMyDoc; // in diesem Doc ist das Nodes-Array 106*cdf0e10cSrcweir 107*cdf0e10cSrcweir SwNode *pEndOfPostIts, *pEndOfInserts, // das sind die festen Bereiche 108*cdf0e10cSrcweir *pEndOfAutotext, *pEndOfRedlines, 109*cdf0e10cSrcweir *pEndOfContent; 110*cdf0e10cSrcweir 111*cdf0e10cSrcweir mutable SwOutlineNodes* pOutlineNds; // Array aller GliederiungsNodes 112*cdf0e10cSrcweir 113*cdf0e10cSrcweir sal_Bool bInNodesDel : 1; // falls rekursiv aufgerufen wird 114*cdf0e10cSrcweir // Num/Outline nicht aktualisierem 115*cdf0e10cSrcweir sal_Bool bInDelUpdOutl : 1; // Flags fuers aktualisieren von Outl. 116*cdf0e10cSrcweir sal_Bool bInDelUpdNum : 1; // Flags fuers aktualisieren von Outl. 117*cdf0e10cSrcweir 118*cdf0e10cSrcweir // fuer dier Verwaltung der Indizies 119*cdf0e10cSrcweir void RegisterIndex( SwNodeIndex& rIdx ); 120*cdf0e10cSrcweir void DeRegisterIndex( SwNodeIndex& rIdx ); 121*cdf0e10cSrcweir void RemoveNode( sal_uLong nDelPos, sal_uLong nLen, sal_Bool bDel ); 122*cdf0e10cSrcweir 123*cdf0e10cSrcweir // Aktionen auf die Nodes 124*cdf0e10cSrcweir void SectionUpDown( const SwNodeIndex & aStart, const SwNodeIndex & aEnd ); 125*cdf0e10cSrcweir void DelNodes( const SwNodeIndex& rStart, sal_uLong nCnt = 1 ); 126*cdf0e10cSrcweir 127*cdf0e10cSrcweir void ChgNode( SwNodeIndex& rDelPos, sal_uLong nSize, 128*cdf0e10cSrcweir SwNodeIndex& rInsPos, sal_Bool bNewFrms ); 129*cdf0e10cSrcweir 130*cdf0e10cSrcweir void UpdtOutlineIdx( const SwNode& ); // Update ab Node alle OutlineNodes 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir void _CopyNodes( const SwNodeRange&, const SwNodeIndex&, 133*cdf0e10cSrcweir sal_Bool bNewFrms = sal_True, sal_Bool bTblInsDummyNode = sal_False ) const; 134*cdf0e10cSrcweir void _DelDummyNodes( const SwNodeRange& rRg ); 135*cdf0e10cSrcweir 136*cdf0e10cSrcweir protected: 137*cdf0e10cSrcweir SwNodes( SwDoc* pDoc ); 138*cdf0e10cSrcweir 139*cdf0e10cSrcweir public: 140*cdf0e10cSrcweir ~SwNodes(); 141*cdf0e10cSrcweir 142*cdf0e10cSrcweir typedef ::std::vector<SwNodeRange> NodeRanges_t; 143*cdf0e10cSrcweir typedef ::std::vector<NodeRanges_t> TableRanges_t; 144*cdf0e10cSrcweir 145*cdf0e10cSrcweir SwNodePtr operator[]( sal_uLong n ) const 146*cdf0e10cSrcweir { return (SwNodePtr)BigPtrArray::operator[] ( n ); } 147*cdf0e10cSrcweir 148*cdf0e10cSrcweir sal_uLong Count() const { return BigPtrArray::Count(); } 149*cdf0e10cSrcweir void ForEach( FnForEach_SwNodes fnForEach, void* pArgs = 0 ) 150*cdf0e10cSrcweir { 151*cdf0e10cSrcweir BigPtrArray::ForEach( 0, BigPtrArray::Count(), 152*cdf0e10cSrcweir (FnForEach) fnForEach, pArgs ); 153*cdf0e10cSrcweir } 154*cdf0e10cSrcweir void ForEach( sal_uLong nStt, sal_uLong nEnd, FnForEach_SwNodes fnForEach, void* pArgs = 0 ) 155*cdf0e10cSrcweir { 156*cdf0e10cSrcweir BigPtrArray::ForEach( nStt, nEnd, (FnForEach) fnForEach, pArgs ); 157*cdf0e10cSrcweir } 158*cdf0e10cSrcweir void ForEach( const SwNodeIndex& rStart, const SwNodeIndex& rEnd, 159*cdf0e10cSrcweir FnForEach_SwNodes fnForEach, void* pArgs = 0 ); 160*cdf0e10cSrcweir 161*cdf0e10cSrcweir // eine noch leere Section 162*cdf0e10cSrcweir SwNode& GetEndOfPostIts() const { return *pEndOfPostIts; } 163*cdf0e10cSrcweir // Section fuer alle Fussnoten 164*cdf0e10cSrcweir SwNode& GetEndOfInserts() const { return *pEndOfInserts; } 165*cdf0e10cSrcweir // Section fuer alle Flys/Header/Footers 166*cdf0e10cSrcweir SwNode& GetEndOfAutotext() const { return *pEndOfAutotext; } 167*cdf0e10cSrcweir // Section fuer alle Redlines 168*cdf0e10cSrcweir SwNode& GetEndOfRedlines() const { return *pEndOfRedlines; } 169*cdf0e10cSrcweir // das ist der letzte EndNode einer SonderSection. Hier nach kommt nur 170*cdf0e10cSrcweir // noch die normale ContentSection (also der BodyText) 171*cdf0e10cSrcweir SwNode& GetEndOfExtras() const { return *pEndOfRedlines; } 172*cdf0e10cSrcweir // die normale ContentSection (also der BodyText) 173*cdf0e10cSrcweir SwNode& GetEndOfContent() const { return *pEndOfContent; } 174*cdf0e10cSrcweir 175*cdf0e10cSrcweir // ist das NodesArray das normale vom Doc? (nicht das UndoNds, .. ) 176*cdf0e10cSrcweir // Implementierung steht im doc.hxx (weil man dazu Doc kennen muss) ! 177*cdf0e10cSrcweir sal_Bool IsDocNodes() const; 178*cdf0e10cSrcweir 179*cdf0e10cSrcweir sal_uInt16 GetSectionLevel(const SwNodeIndex &rIndex) const; 180*cdf0e10cSrcweir void Delete(const SwNodeIndex &rPos, sal_uLong nNodes = 1); 181*cdf0e10cSrcweir 182*cdf0e10cSrcweir sal_Bool _MoveNodes( const SwNodeRange&, SwNodes& rNodes, const SwNodeIndex&, 183*cdf0e10cSrcweir sal_Bool bNewFrms = sal_True ); 184*cdf0e10cSrcweir void MoveRange( SwPaM&, SwPosition&, SwNodes& rNodes ); 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir void _Copy( const SwNodeRange& rRg, const SwNodeIndex& rInsPos, 187*cdf0e10cSrcweir sal_Bool bNewFrms = sal_True ) const 188*cdf0e10cSrcweir { _CopyNodes( rRg, rInsPos, bNewFrms ); } 189*cdf0e10cSrcweir 190*cdf0e10cSrcweir void SectionUp( SwNodeRange *); 191*cdf0e10cSrcweir void SectionDown( SwNodeRange *pRange, SwStartNodeType = SwNormalStartNode ); 192*cdf0e10cSrcweir 193*cdf0e10cSrcweir sal_Bool CheckNodesRange( const SwNodeIndex& rStt, const SwNodeIndex& rEnd ) const; 194*cdf0e10cSrcweir 195*cdf0e10cSrcweir void GoStartOfSection(SwNodeIndex *) const; 196*cdf0e10cSrcweir void GoEndOfSection(SwNodeIndex *) const; 197*cdf0e10cSrcweir 198*cdf0e10cSrcweir SwCntntNode* GoNext(SwNodeIndex *) const; 199*cdf0e10cSrcweir SwCntntNode* GoPrevious(SwNodeIndex *) const; 200*cdf0e10cSrcweir 201*cdf0e10cSrcweir //Gehe zum naechsten/vorherigen Cntnt/Tabellennode, fuer den 202*cdf0e10cSrcweir //es LayoutFrames gibt, dabei Kopf-/Fusszeilen/Rahmen etc. nicht verlassen 203*cdf0e10cSrcweir SwNode* GoNextWithFrm(SwNodeIndex *) const; 204*cdf0e10cSrcweir SwNode* GoPreviousWithFrm(SwNodeIndex *) const; 205*cdf0e10cSrcweir 206*cdf0e10cSrcweir // zum naechsten Content-Node, der nicht geschuetzt oder versteckt ist 207*cdf0e10cSrcweir // (beides auf sal_False ==> GoNext/GoPrevious!!!) 208*cdf0e10cSrcweir SwCntntNode* GoNextSection( SwNodeIndex *, int bSkipHidden = sal_True, 209*cdf0e10cSrcweir int bSkipProtect = sal_True ) const; 210*cdf0e10cSrcweir SwCntntNode* GoPrevSection( SwNodeIndex *, int bSkipHidden = sal_True, 211*cdf0e10cSrcweir int bSkipProtect = sal_True ) const; 212*cdf0e10cSrcweir 213*cdf0e10cSrcweir // erzeuge ein leere Section von Start und EndNode. Darf nur gerufen 214*cdf0e10cSrcweir // werden, wenn eine neue Section mit Inhalt erzeugt werden soll. 215*cdf0e10cSrcweir // Zum Beispiel bei den Filtern/Undo/... 216*cdf0e10cSrcweir SwStartNode* MakeEmptySection( const SwNodeIndex& rIdx, 217*cdf0e10cSrcweir SwStartNodeType = SwNormalStartNode ); 218*cdf0e10cSrcweir 219*cdf0e10cSrcweir // die Impl. von "Make...Node" stehen in den angegebenen .ccx-Files 220*cdf0e10cSrcweir SwTxtNode *MakeTxtNode( const SwNodeIndex & rWhere, 221*cdf0e10cSrcweir SwTxtFmtColl *pColl, 222*cdf0e10cSrcweir SwAttrSet* pAutoAttr = 0 ); // in ndtxt.cxx 223*cdf0e10cSrcweir SwStartNode* MakeTextSection( const SwNodeIndex & rWhere, 224*cdf0e10cSrcweir SwStartNodeType eSttNdTyp, 225*cdf0e10cSrcweir SwTxtFmtColl *pColl, 226*cdf0e10cSrcweir SwAttrSet* pAutoAttr = 0 ); 227*cdf0e10cSrcweir 228*cdf0e10cSrcweir SwGrfNode *MakeGrfNode( const SwNodeIndex & rWhere, 229*cdf0e10cSrcweir const String& rGrfName, 230*cdf0e10cSrcweir const String& rFltName, 231*cdf0e10cSrcweir const Graphic* pGraphic, 232*cdf0e10cSrcweir SwGrfFmtColl *pColl, 233*cdf0e10cSrcweir SwAttrSet* pAutoAttr = 0, 234*cdf0e10cSrcweir sal_Bool bDelayed = sal_False ); // in ndgrf.cxx 235*cdf0e10cSrcweir 236*cdf0e10cSrcweir SwGrfNode *MakeGrfNode( const SwNodeIndex & rWhere, 237*cdf0e10cSrcweir const GraphicObject& rGrfObj, 238*cdf0e10cSrcweir SwGrfFmtColl *pColl, 239*cdf0e10cSrcweir SwAttrSet* pAutoAttr = 0 ); // in ndgrf.cxx 240*cdf0e10cSrcweir 241*cdf0e10cSrcweir SwOLENode *MakeOLENode( const SwNodeIndex & rWhere, 242*cdf0e10cSrcweir const svt::EmbeddedObjectRef&, 243*cdf0e10cSrcweir SwGrfFmtColl *pColl, 244*cdf0e10cSrcweir SwAttrSet* pAutoAttr = 0 ); // in ndole.cxx 245*cdf0e10cSrcweir SwOLENode *MakeOLENode( const SwNodeIndex & rWhere, 246*cdf0e10cSrcweir const String &rName, 247*cdf0e10cSrcweir sal_Int64 nAspect, 248*cdf0e10cSrcweir SwGrfFmtColl *pColl, 249*cdf0e10cSrcweir SwAttrSet* pAutoAttr ); // in ndole.cxx 250*cdf0e10cSrcweir 251*cdf0e10cSrcweir // Array aller GliederiungsNodes; 252*cdf0e10cSrcweir const SwOutlineNodes& GetOutLineNds() const; 253*cdf0e10cSrcweir 254*cdf0e10cSrcweir //void UpdateOutlineNode( const SwNode&, sal_uInt8 nOldLevel, sal_uInt8 nNewLevel );//#outline level,removed by zhaojianwei 255*cdf0e10cSrcweir // alle Nodes Updaten - Rule/Format-Aenderung 256*cdf0e10cSrcweir void UpdateOutlineNode(SwNode & rNd); 257*cdf0e10cSrcweir 258*cdf0e10cSrcweir // fuege die Nodes fuer die Tabelle ein 259*cdf0e10cSrcweir // wenn Lines angegeben, erzeuge die Matrix aus Lines & Boxen 260*cdf0e10cSrcweir // ansonsten nur die Anzahl von Boxen. 261*cdf0e10cSrcweir /* #109161# 262*cdf0e10cSrcweir 263*cdf0e10cSrcweir New parameter pAttrSet: If pAttrSet is non-null and contains an 264*cdf0e10cSrcweir adjust item it is propagated to the table cells. If there is an 265*cdf0e10cSrcweir adjust in pCntntTxtColl or pHeadlineTxtColl this adjust item 266*cdf0e10cSrcweir overrides the item in pAttrSet. 267*cdf0e10cSrcweir 268*cdf0e10cSrcweir */ 269*cdf0e10cSrcweir SwTableNode* InsertTable( const SwNodeIndex& rNdIdx, 270*cdf0e10cSrcweir sal_uInt16 nBoxes, SwTxtFmtColl* pCntntTxtColl, 271*cdf0e10cSrcweir sal_uInt16 nLines = 0, sal_uInt16 nRepeat = 0, 272*cdf0e10cSrcweir SwTxtFmtColl* pHeadlineTxtColl = 0, 273*cdf0e10cSrcweir const SwAttrSet * pAttrSet = 0); 274*cdf0e10cSrcweir 275*cdf0e10cSrcweir // erzeuge aus dem makierten Bereich eine ausgeglichene Tabelle 276*cdf0e10cSrcweir SwTableNode* TextToTable( const SwNodeRange& rRange, sal_Unicode cCh, 277*cdf0e10cSrcweir SwTableFmt* pTblFmt, 278*cdf0e10cSrcweir SwTableLineFmt* pLineFmt, 279*cdf0e10cSrcweir SwTableBoxFmt* pBoxFmt, 280*cdf0e10cSrcweir SwTxtFmtColl* pTxtColl, 281*cdf0e10cSrcweir SwUndoTxtToTbl* pUndo = 0 ); 282*cdf0e10cSrcweir 283*cdf0e10cSrcweir SwNodeRange * ExpandRangeForTableBox(const SwNodeRange & rRange); 284*cdf0e10cSrcweir 285*cdf0e10cSrcweir //create a table from a vector of NodeRanges - API support 286*cdf0e10cSrcweir SwTableNode* TextToTable( const TableRanges_t& rTableNodes, 287*cdf0e10cSrcweir SwTableFmt* pTblFmt, 288*cdf0e10cSrcweir SwTableLineFmt* pLineFmt, 289*cdf0e10cSrcweir SwTableBoxFmt* pBoxFmt, 290*cdf0e10cSrcweir SwTxtFmtColl* pTxtColl 291*cdf0e10cSrcweir /*, SwUndo... pUndo*/ ); 292*cdf0e10cSrcweir 293*cdf0e10cSrcweir // erzeuge aus der Tabelle wieder normalen Text 294*cdf0e10cSrcweir sal_Bool TableToText( const SwNodeRange& rRange, sal_Unicode cCh, 295*cdf0e10cSrcweir SwUndoTblToTxt* = 0 ); 296*cdf0e10cSrcweir // steht im untbl.cxx und darf nur vom Undoobject gerufen werden 297*cdf0e10cSrcweir SwTableNode* UndoTableToText( sal_uLong nStt, sal_uLong nEnd, 298*cdf0e10cSrcweir const SwTblToTxtSaves& rSavedData ); 299*cdf0e10cSrcweir 300*cdf0e10cSrcweir // fuege in der Line, vor der InsPos eine neue Box ein. Das Format 301*cdf0e10cSrcweir // wird von der nachfolgenden (vorhergenden;wenn an Ende) genommen 302*cdf0e10cSrcweir // in der Line muss schon eine Box vorhanden sein ! 303*cdf0e10cSrcweir sal_Bool InsBoxen( SwTableNode*, SwTableLine*, SwTableBoxFmt*, 304*cdf0e10cSrcweir // Formate fuer den TextNode der Box 305*cdf0e10cSrcweir SwTxtFmtColl*, const SfxItemSet* pAutoAttr, 306*cdf0e10cSrcweir sal_uInt16 nInsPos, sal_uInt16 nCnt = 1 ); 307*cdf0e10cSrcweir // Splittet eine Tabelle in der Grund-Zeile, in der der Index steht. 308*cdf0e10cSrcweir // Alle GrundZeilen dahinter wandern in eine neue Tabelle/-Node. 309*cdf0e10cSrcweir // Ist das Flag bCalcNewSize auf sal_True, wird fuer beide neuen Tabellen 310*cdf0e10cSrcweir // die neue SSize aus dem Max der Boxen errechnet; vorrausgesetzt, 311*cdf0e10cSrcweir // die SSize ist "absolut" gesetzt (LONG_MAX) 312*cdf0e10cSrcweir // (Wird zur Zeit nur fuer den RTF-Parser benoetigt) 313*cdf0e10cSrcweir SwTableNode* SplitTable( const SwNodeIndex& rPos, sal_Bool bAfter = sal_True, 314*cdf0e10cSrcweir sal_Bool bCalcNewSize = sal_False ); 315*cdf0e10cSrcweir // fuegt 2 Tabellen, die hintereinander stehen, wieder zusammen 316*cdf0e10cSrcweir sal_Bool MergeTable( const SwNodeIndex& rPos, sal_Bool bWithPrev = sal_True, 317*cdf0e10cSrcweir sal_uInt16 nMode = 0, SwHistory* pHistory = 0 ); 318*cdf0e10cSrcweir 319*cdf0e10cSrcweir // fuege eine neue SwSection ein 320*cdf0e10cSrcweir SwSectionNode* InsertTextSection(SwNodeIndex const& rNdIdx, 321*cdf0e10cSrcweir SwSectionFmt& rSectionFmt, 322*cdf0e10cSrcweir SwSectionData const&, 323*cdf0e10cSrcweir SwTOXBase const*const pTOXBase, 324*cdf0e10cSrcweir SwNodeIndex const*const pEnde, 325*cdf0e10cSrcweir bool const bInsAtStart = true, 326*cdf0e10cSrcweir bool const bCreateFrms = true); 327*cdf0e10cSrcweir 328*cdf0e10cSrcweir // in welchem Doc steht das Nodes-Array ? 329*cdf0e10cSrcweir SwDoc* GetDoc() { return pMyDoc; } 330*cdf0e10cSrcweir const SwDoc* GetDoc() const { return pMyDoc; } 331*cdf0e10cSrcweir 332*cdf0e10cSrcweir // suche den vorhergehenden [/nachfolgenden ] ContentNode oder 333*cdf0e10cSrcweir // TabellenNode mit Frames. Wird kein Ende angeben, dann wird mit 334*cdf0e10cSrcweir // dem FrameIndex begonnen; ansonsten, wird mit dem vor rFrmIdx und 335*cdf0e10cSrcweir // dem hintern pEnd die Suche gestartet. Sollte kein gueltiger Node 336*cdf0e10cSrcweir // gefunden werden, wird 0 returnt. rFrmIdx zeigt auf dem Node mit 337*cdf0e10cSrcweir // Frames 338*cdf0e10cSrcweir SwNode* FindPrvNxtFrmNode( SwNodeIndex& rFrmIdx, 339*cdf0e10cSrcweir const SwNode* pEnd = 0 ) const; 340*cdf0e10cSrcweir 341*cdf0e10cSrcweir //-> #112139# 342*cdf0e10cSrcweir SwNode * DocumentSectionStartNode(SwNode * pNode) const; 343*cdf0e10cSrcweir SwNode * DocumentSectionEndNode(SwNode * pNode) const; 344*cdf0e10cSrcweir //<- #112139# 345*cdf0e10cSrcweir }; 346*cdf0e10cSrcweir 347*cdf0e10cSrcweir #endif 348