LibreOffice Module sw (master)  1
ndcopy.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 #include <doc.hxx>
21 #include <node.hxx>
22 #include <frmfmt.hxx>
23 #include <swtable.hxx>
24 #include <ndtxt.hxx>
25 #include <swtblfmt.hxx>
26 #include <cellatr.hxx>
27 #include <docary.hxx>
28 #include <ddefld.hxx>
29 #include <swddetbl.hxx>
30 #include <vcl/fmtfield.hxx>
31 #include <ndindex.hxx>
32 #include <vector>
33 #include <osl/diagnose.h>
34 
35 
36 #ifdef DBG_UTIL
37 #define CHECK_TABLE(t) (t).CheckConsistency();
38 #else
39 #define CHECK_TABLE(t)
40 #endif
41 
42 
43 // Structure for the mapping from old and new frame formats to the
44 // boxes and lines of a table
46 {
49  MapTableFrameFormat( const SwFrameFormat *pOldFormat, SwFrameFormat*pNewFormat )
50  : pOld( pOldFormat ), pNew( pNewFormat )
51  {}
52 };
53 
54 typedef std::vector<MapTableFrameFormat> MapTableFrameFormats;
55 
56 SwContentNode* SwTextNode::MakeCopy(SwDoc* pDoc, const SwNodeIndex& rIdx, bool const bNewFrames) const
57 {
58  // the Copy-Textnode is the Node with the Text, the Copy-Attrnode is the
59  // node with the collection and hard attributes. Normally is the same
60  // node, but if insert a glossary without formatting, then the Attrnode
61  // is the prev node of the destination position in dest. document.
62  SwTextNode* pCpyTextNd = const_cast<SwTextNode*>(this);
63  SwTextNode* pCpyAttrNd = pCpyTextNd;
64 
65  // Copy the formats to the other document
66  SwTextFormatColl* pColl = nullptr;
67  if( pDoc->IsInsOnlyTextGlossary() )
68  {
69  SwNodeIndex aIdx( rIdx, -1 );
70  if( aIdx.GetNode().IsTextNode() )
71  {
72  pCpyAttrNd = aIdx.GetNode().GetTextNode();
73  pColl = &pCpyAttrNd->GetTextColl()->GetNextTextFormatColl();
74  }
75  }
76  if( !pColl )
77  pColl = pDoc->CopyTextColl( *GetTextColl() );
78 
79  SwTextNode* pTextNd = pDoc->GetNodes().MakeTextNode(rIdx, pColl, bNewFrames);
80 
81  // METADATA: register copy
82  pTextNd->RegisterAsCopyOf(*pCpyTextNd);
83 
84  // Copy Attribute/Text
85  if( !pCpyAttrNd->HasSwAttrSet() )
86  // An AttrSet was added for numbering, so delete it
87  pTextNd->ResetAllAttr();
88 
89  // if Copy-Textnode unequal to Copy-Attrnode, then copy first
90  // the attributes into the new Node.
91  if( pCpyAttrNd != pCpyTextNd )
92  {
93  pCpyAttrNd->CopyAttr( pTextNd, 0, 0 );
94  if( pCpyAttrNd->HasSwAttrSet() )
95  {
96  SwAttrSet aSet( *pCpyAttrNd->GetpSwAttrSet() );
97  aSet.ClearItem( RES_PAGEDESC );
98  aSet.ClearItem( RES_BREAK );
99  aSet.CopyToModify( *pTextNd );
100  }
101  }
102 
103  // Is that enough? What about PostIts/Fields/FieldTypes?
104  // #i96213# - force copy of all attributes
105  pCpyTextNd->CopyText( pTextNd, SwIndex( pCpyTextNd ),
106  pCpyTextNd->GetText().getLength(), true );
107 
108  if( RES_CONDTXTFMTCOLL == pColl->Which() )
109  pTextNd->ChkCondColl();
110 
111  return pTextNd;
112 }
113 
114 static bool lcl_SrchNew( const MapTableFrameFormat& rMap, SwFrameFormat** pPara )
115 {
116  if( rMap.pOld != *pPara )
117  return true;
118  *pPara = rMap.pNew;
119  return false;
120 }
121 
122 struct CopyTable
123 {
131 
133  SwTableNode& rTableNd, const SwTable* pOldTable)
134  : m_pDoc(pDc), m_nOldTableSttIdx(nOldStt), m_rMapArr(rArr),
135  m_pInsLine(nullptr), m_pInsBox(nullptr), m_pTableNd(&rTableNd), m_pOldTable(pOldTable)
136  {}
137 };
138 
139 static void lcl_CopyTableLine( const SwTableLine* pLine, CopyTable* pCT );
140 
141 static void lcl_CopyTableBox( SwTableBox* pBox, CopyTable* pCT )
142 {
143  SwTableBoxFormat * pBoxFormat = static_cast<SwTableBoxFormat*>(pBox->GetFrameFormat());
144  for (const auto& rMap : pCT->m_rMapArr)
145  if ( !lcl_SrchNew( rMap, reinterpret_cast<SwFrameFormat**>(&pBoxFormat) ) )
146  break;
147 
148  if (pBoxFormat == pBox->GetFrameFormat()) // Create a new one?
149  {
150  const SfxPoolItem* pItem;
151  if( SfxItemState::SET == pBoxFormat->GetItemState( RES_BOXATR_FORMULA, false,
152  &pItem ) && static_cast<const SwTableBoxFormula*>(pItem)->IsIntrnlName() )
153  {
154  const_cast<SwTableBoxFormula*>(static_cast<const SwTableBoxFormula*>(pItem))->PtrToBoxNm(pCT->m_pOldTable);
155  }
156 
157  pBoxFormat = pCT->m_pDoc->MakeTableBoxFormat();
158  pBoxFormat->CopyAttrs( *pBox->GetFrameFormat() );
159 
160  if( pBox->GetSttIdx() )
161  {
162  SvNumberFormatter* pN = pCT->m_pDoc->GetNumberFormatter(false);
163  if( pN && pN->HasMergeFormatTable() && SfxItemState::SET == pBoxFormat->
164  GetItemState( RES_BOXATR_FORMAT, false, &pItem ) )
165  {
166  sal_uLong nOldIdx = static_cast<const SwTableBoxNumFormat*>(pItem)->GetValue();
167  sal_uLong nNewIdx = pN->GetMergeFormatIndex( nOldIdx );
168  if( nNewIdx != nOldIdx )
169  pBoxFormat->SetFormatAttr( SwTableBoxNumFormat( nNewIdx ));
170 
171  }
172  }
173 
174  pCT->m_rMapArr.emplace_back(pBox->GetFrameFormat(), pBoxFormat);
175  }
176 
177  sal_uInt16 nLines = pBox->GetTabLines().size();
178  SwTableBox* pNewBox;
179  if( nLines )
180  pNewBox = new SwTableBox(pBoxFormat, nLines, pCT->m_pInsLine);
181  else
182  {
183  SwNodeIndex aNewIdx(*pCT->m_pTableNd, pBox->GetSttIdx() - pCT->m_nOldTableSttIdx);
184  assert(aNewIdx.GetNode().IsStartNode() && "Index is not on the start node");
185 
186  pNewBox = new SwTableBox(pBoxFormat, aNewIdx, pCT->m_pInsLine);
187  pNewBox->setRowSpan( pBox->getRowSpan() );
188  }
189 
190  pCT->m_pInsLine->GetTabBoxes().push_back( pNewBox );
191 
192  if (nLines)
193  {
194  CopyTable aPara(*pCT);
195  aPara.m_pInsBox = pNewBox;
196  for( const SwTableLine* pLine : pBox->GetTabLines() )
197  lcl_CopyTableLine( pLine, &aPara );
198  }
199  else if (pNewBox->IsInHeadline(&pCT->m_pTableNd->GetTable()))
200  {
201  // In the headline, the paragraphs must match conditional styles
202  pNewBox->GetSttNd()->CheckSectionCondColl();
203  }
204 }
205 
206 static void lcl_CopyTableLine( const SwTableLine* pLine, CopyTable* pCT )
207 {
208  SwTableLineFormat * pLineFormat = static_cast<SwTableLineFormat*>(pLine->GetFrameFormat());
209  for (const auto& rMap : pCT->m_rMapArr)
210  if ( !lcl_SrchNew( rMap, reinterpret_cast<SwFrameFormat**>(&pLineFormat) ) )
211  break;
212 
213  if( pLineFormat == pLine->GetFrameFormat() ) // Create a new one?
214  {
215  pLineFormat = pCT->m_pDoc->MakeTableLineFormat();
216  pLineFormat->CopyAttrs( *pLine->GetFrameFormat() );
217  pCT->m_rMapArr.emplace_back(pLine->GetFrameFormat(), pLineFormat);
218  }
219 
220  SwTableLine* pNewLine = new SwTableLine(pLineFormat, pLine->GetTabBoxes().size(), pCT->m_pInsBox);
221  // Insert the new row into the table
222  if (pCT->m_pInsBox)
223  {
224  pCT->m_pInsBox->GetTabLines().push_back(pNewLine);
225  }
226  else
227  {
228  pCT->m_pTableNd->GetTable().GetTabLines().push_back(pNewLine);
229  }
230 
231  pCT->m_pInsLine = pNewLine;
232  for( auto& rpBox : const_cast<SwTableLine*>(pLine)->GetTabBoxes() )
233  lcl_CopyTableBox(rpBox, pCT);
234 }
235 
237 {
238  // In which array are we? Nodes? UndoNodes?
239  SwNodes& rNds = const_cast<SwNodes&>(GetNodes());
240 
241  {
242  if( rIdx < pDoc->GetNodes().GetEndOfInserts().GetIndex() &&
243  rIdx >= pDoc->GetNodes().GetEndOfInserts().StartOfSectionIndex() )
244  return nullptr;
245  }
246 
247  // Copy the TableFrameFormat
248  OUString sTableName( GetTable().GetFrameFormat()->GetName() );
249  if( !pDoc->IsCopyIsMove() )
250  {
251  const SwFrameFormats& rTableFormats = *pDoc->GetTableFrameFormats();
252  for( size_t n = rTableFormats.size(); n; )
253  if( rTableFormats[ --n ]->GetName() == sTableName )
254  {
255  sTableName = pDoc->GetUniqueTableName();
256  break;
257  }
258  }
259 
260  SwFrameFormat* pTableFormat = pDoc->MakeTableFrameFormat( sTableName, pDoc->GetDfltFrameFormat() );
261  pTableFormat->CopyAttrs( *GetTable().GetFrameFormat() );
262  SwTableNode* pTableNd = new SwTableNode( rIdx );
263  SwEndNode* pEndNd = new SwEndNode( rIdx, *pTableNd );
264  SwNodeIndex aInsPos( *pEndNd );
265 
266  SwTable& rTable = pTableNd->GetTable();
267  rTable.RegisterToFormat( *pTableFormat );
268 
269  rTable.SetRowsToRepeat( GetTable().GetRowsToRepeat() );
270  rTable.SetTableChgMode( GetTable().GetTableChgMode() );
271  rTable.SetTableModel( GetTable().IsNewModel() );
272 
273  SwDDEFieldType* pDDEType = nullptr;
274  if( auto pSwDDETable = dynamic_cast<const SwDDETable*>( &GetTable() ) )
275  {
276  // We're copying a DDE table
277  // Is the field type available in the new document?
278  pDDEType = const_cast<SwDDETable*>(pSwDDETable)->GetDDEFieldType();
279  if( pDDEType->IsDeleted() )
280  pDoc->getIDocumentFieldsAccess().InsDeletedFieldType( *pDDEType );
281  else
282  pDDEType = static_cast<SwDDEFieldType*>(pDoc->getIDocumentFieldsAccess().InsertFieldType( *pDDEType ));
283  OSL_ENSURE( pDDEType, "unknown FieldType" );
284 
285  // Swap the table pointers in the node
286  std::unique_ptr<SwDDETable> pNewTable(new SwDDETable( pTableNd->GetTable(), pDDEType ));
287  pTableNd->SetNewTable( std::move(pNewTable), false );
288  }
289  // First copy the content of the tables, we will later assign the
290  // boxes/lines and create the frames
291  SwNodeRange aRg( *this, +1, *EndOfSectionNode() );
292 
293  // If there is a table in this table, the table format for the outer table
294  // does not seem to be used, because the table does not have any contents yet
295  // (see IsUsed). Therefore the inner table gets the same name as the outer table.
296  // We have to make sure that the table node of the SwTable is accessible, even
297  // without any content in m_TabSortContentBoxes. #i26629#
298  pTableNd->GetTable().SetTableNode( pTableNd );
299  rNds.Copy_( aRg, aInsPos, false );
300  pTableNd->GetTable().SetTableNode( nullptr );
301 
302  // Special case for a single box
303  if( 1 == GetTable().GetTabSortBoxes().size() )
304  {
305  aRg.aStart.Assign( *pTableNd, 1 );
306  aRg.aEnd.Assign( *pTableNd->EndOfSectionNode() );
307  pDoc->GetNodes().SectionDown( &aRg, SwTableBoxStartNode );
308  }
309 
310  // Delete all frames from the copied area, they will be created
311  // during the generation of the table frame
312  pTableNd->DelFrames();
313 
314  MapTableFrameFormats aMapArr;
315  CopyTable aPara( pDoc, aMapArr, GetIndex(), *pTableNd, &GetTable() );
316 
317  for( const SwTableLine* pLine : GetTable().GetTabLines() )
318  lcl_CopyTableLine( pLine, &aPara );
319 
320  if( pDDEType )
321  pDDEType->IncRefCnt();
322 
323  CHECK_TABLE( GetTable() );
324  return pTableNd;
325 }
326 
328 {
329  // Copy the formats into the other document:
330  // Special case for PageBreak/PageDesc/ColBrk
331  SwDoc* pDestDoc = rDestNd.GetDoc();
332  SwAttrSet aPgBrkSet( pDestDoc->GetAttrPool(), aBreakSetRange );
333  const SwAttrSet* pSet;
334 
335  if( nullptr != ( pSet = rDestNd.GetpSwAttrSet() ) )
336  {
337  // Special cases for Break-Attributes
338  const SfxPoolItem* pAttr;
339  if( SfxItemState::SET == pSet->GetItemState( RES_BREAK, false, &pAttr ) )
340  aPgBrkSet.Put( *pAttr );
341 
342  if( SfxItemState::SET == pSet->GetItemState( RES_PAGEDESC, false, &pAttr ) )
343  aPgBrkSet.Put( *pAttr );
344  }
345 
346  rDestNd.ChgFormatColl( pDestDoc->CopyTextColl( *GetTextColl() ));
347  if( nullptr != ( pSet = GetpSwAttrSet() ) )
348  pSet->CopyToModify( rDestNd );
349 
350  if( aPgBrkSet.Count() )
351  rDestNd.SetAttr( aPgBrkSet );
352 }
353 
354 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SwTableFormat * MakeTableFrameFormat(const OUString &rFormatName, SwFrameFormat *pDerivedFrom)
Definition: docfmt.cxx:823
const SwEndNode * EndOfSectionNode() const
Definition: node.hxx:682
SwNode & GetEndOfInserts() const
Section fpr all footnotes.
Definition: ndarr.hxx:155
sal_uLong GetIndex() const
Definition: node.hxx:282
SwTableLineFormat * MakeTableLineFormat()
Definition: docfmt.cxx:1731
void SetRowsToRepeat(sal_uInt16 nNumOfRows)
Definition: swtable.hxx:194
Represents the style of a paragraph.
Definition: fmtcol.hxx:55
void RegisterToFormat(SwFormat &rFormat)
Definition: swtable.cxx:2743
void RegisterAsCopyOf(Metadatable const &i_rSource, const bool i_bCopyPrecedesSource=false)
#define RES_CONDTXTFMTCOLL
Definition: hintids.hxx:278
sal_uLong StartOfSectionIndex() const
Definition: node.hxx:673
void DelFrames(SwRootFrame const *pLayout=nullptr)
Method deletes all views of document for the node.
Definition: ndtbl.cxx:2415
const OUString & GetText() const
Definition: ndtxt.hxx:211
sal_uLong GetSttIdx() const
Definition: swtable.cxx:1880
virtual sal_uInt16 ResetAllAttr() override
Definition: ndtxt.cxx:5148
virtual bool SetAttr(const SfxPoolItem &) override
overriding to handle change of certain paragraph attributes
Definition: ndtxt.cxx:4890
std::string GetValue
SvNumberFormatter * GetNumberFormatter(bool bCreate=true)
Definition: doc.hxx:1399
const SwFrameFormats * GetTableFrameFormats() const
Definition: doc.hxx:806
sal_uIntPtr sal_uLong
SwTableNode * MakeCopy(SwDoc *, const SwNodeIndex &) const
Definition: ndcopy.cxx:236
OUString GetUniqueTableName() const
Definition: ndtbl.cxx:3852
bool IsDeleted() const
Definition: ddefld.hxx:86
const SwFrameFormat * pOld
Definition: ndcopy.cxx:47
Definition: doc.hxx:185
void push_back(SwTableLine *pLine)
Definition: swtable.hxx:90
SwTableLine is one table row in the document model.
Definition: swtable.hxx:344
SwNode & GetNode() const
Definition: ndindex.hxx:118
bool IsInHeadline(const SwTable *pTable) const
Definition: swtable.cxx:1864
void CheckSectionCondColl() const
Call ChkCondcoll to all ContentNodes of section.
Definition: node.cxx:931
void Copy_(const SwNodeRange &rRg, const SwNodeIndex &rInsPos, bool bNewFrames=true) const
Definition: ndarr.hxx:177
bool IsInsOnlyTextGlossary() const
Definition: doc.hxx:651
SwFrameFormat *const pNew
Definition: ndcopy.cxx:48
static bool lcl_SrchNew(const MapTableFrameFormat &rMap, SwFrameFormat **pPara)
Definition: ndcopy.cxx:114
size_type size() const
Definition: swtable.hxx:74
IDocumentFieldsAccess const & getIDocumentFieldsAccess() const
Definition: doc.cxx:389
const SwTable * m_pOldTable
Definition: ndcopy.cxx:130
SwNodeIndex aStart
Definition: ndindex.hxx:131
void SetTableModel(bool bNew)
Definition: swtable.hxx:184
#define CHECK_TABLE(t)
Definition: ndcopy.cxx:37
SwTextFormatColl * CopyTextColl(const SwTextFormatColl &rColl)
copy TextNodes
Definition: docfmt.cxx:1188
const SwTable & GetTable() const
Definition: node.hxx:497
SwTableLine * m_pInsLine
Definition: ndcopy.cxx:127
CopyTable(SwDoc *pDc, MapTableFrameFormats &rArr, sal_uLong nOldStt, SwTableNode &rTableNd, const SwTable *pOldTable)
Definition: ndcopy.cxx:132
void SetTableNode(SwTableNode *pNode)
Definition: swtable.hxx:318
void CopyText(SwTextNode *const pDest, const SwIndex &rStart, const sal_Int32 nLen, const bool bForceCopyOfAllAttrs)
Actions on text and attributes.
Definition: ndtxt.cxx:1993
void PtrToBoxNm(const SwTable *pTable)
create from the internal formula (for CORE) the external formula (for UI)
Definition: cellfml.cxx:542
Specific frame formats (frames, DrawObjects).
Definition: docary.hxx:201
SwTableBox * m_pInsBox
Definition: ndcopy.cxx:128
const SwAttrSet * GetpSwAttrSet() const
Definition: node.hxx:443
sal_uInt16 ClearItem(sal_uInt16 nWhich=0)
Style of a layout element.
Definition: frmfmt.hxx:57
void SectionDown(SwNodeRange *pRange, SwStartNodeType=SwNormalStartNode)
create a start/end section pair
Definition: nodes.cxx:894
virtual SwContentNode * MakeCopy(SwDoc *, const SwNodeIndex &, bool bNewFrames) const override
Definition: ndcopy.cxx:56
static void lcl_CopyTableLine(const SwTableLine *pLine, CopyTable *pCT)
Definition: ndcopy.cxx:206
SAL_DLLPRIVATE void CopyAttr(SwTextNode *pDest, const sal_Int32 nStart, const sal_Int32 nOldPos)
Copies the attributes at nStart to pDest.
Definition: ndtxt.cxx:1933
SwDoc * GetDoc()
Definition: node.hxx:702
virtual SwFormatColl * ChgFormatColl(SwFormatColl *) override
Definition: ndtxt.cxx:3927
virtual void InsDeletedFieldType(SwFieldType &)=0
SwFrameFormat * GetFrameFormat()
Definition: swtable.hxx:366
size
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
Definition: format.cxx:398
Marks a node in the document model.
Definition: ndindex.hxx:31
SwFrameFormat * GetFrameFormat()
Definition: swtable.hxx:425
SwNodes & GetNodes()
Node is in which nodes-array/doc?
Definition: node.hxx:693
bool HasSwAttrSet() const
Definition: node.hxx:444
SwTableNode(const SwNodeIndex &)
Definition: ndtbl.cxx:2317
bool HasMergeFormatTable() const
SwTableLines & GetTabLines()
Definition: swtable.hxx:198
SwTable is one table in the document model, containing rows (which contain cells).
Definition: swtable.hxx:110
SwTableLines & GetTabLines()
Definition: swtable.hxx:418
const SwFrameFormat * GetDfltFrameFormat() const
Definition: doc.hxx:741
virtual bool SetFormatAttr(const SfxPoolItem &rAttr)
Definition: format.cxx:460
SwTableNode * m_pTableNd
Definition: ndcopy.cxx:129
sal_uInt16 Which() const
for Querying of Writer-functions.
Definition: format.hxx:78
void SetTableChgMode(TableChgMode eMode)
Definition: swtable.hxx:329
void CopyCollFormat(SwTextNode &rDestNd)
Copy collection with all auto formats to dest-node.
Definition: ndcopy.cxx:327
SwTextNode is a paragraph in the document model.
Definition: ndtxt.hxx:79
MapTableFrameFormat(const SwFrameFormat *pOldFormat, SwFrameFormat *pNewFormat)
Definition: ndcopy.cxx:49
SwTableBoxes & GetTabBoxes()
Definition: swtable.hxx:354
friend class SwIndex
Definition: index.hxx:112
const SwStartNode * GetSttNd() const
Definition: swtable.hxx:439
std::vector< MapTableFrameFormat > MapTableFrameFormats
Definition: ndcopy.cxx:54
long getRowSpan() const
Definition: swtable.cxx:102
void CopyAttrs(const SwFormat &)
Copy attributes even among documents.
Definition: format.cxx:180
void ChkCondColl()
Definition: node.cxx:1933
sal_uInt32 GetMergeFormatIndex(sal_uInt32 nOldFmt) const
virtual SwFieldType * InsertFieldType(const SwFieldType &)=0
SwDoc * m_pDoc
Definition: ndcopy.cxx:124
bool IsCopyIsMove() const
Definition: doc.hxx:1360
friend class SwEndNode
to set the theEndOfSection !!
Definition: node.hxx:307
SwNodes & GetNodes()
Definition: doc.hxx:403
SwNodeIndex aEnd
Definition: ndindex.hxx:132
SwTableBox is one table cell in the document model.
Definition: swtable.hxx:386
static void lcl_CopyTableBox(SwTableBox *pBox, CopyTable *pCT)
Definition: ndcopy.cxx:141
size_t size() const
Definition: docary.hxx:225
Ends a section of nodes in the document model.
Definition: node.hxx:333
void SetNewTable(std::unique_ptr< SwTable >, bool bNewFrames=true)
Definition: ndtbl.cxx:2455
#define RES_PAGEDESC
Definition: hintids.hxx:198
#define RES_BREAK
Definition: hintids.hxx:199
sal_uInt16 const aBreakSetRange[]
Definition: init.cxx:148
bool IsTextNode() const
Definition: node.hxx:636
MapTableFrameFormats & m_rMapArr
Definition: ndcopy.cxx:126
void IncRefCnt()
Definition: ddefld.hxx:98
sal_uLong const m_nOldTableSttIdx
Definition: ndcopy.cxx:125
SwTableBoxFormat * MakeTableBoxFormat()
Definition: docfmt.cxx:1724
#define RES_BOXATR_FORMAT
Definition: hintids.hxx:261
SwTextFormatColl & GetNextTextFormatColl() const
Definition: fmtcol.hxx:97
const SwAttrPool & GetAttrPool() const
Definition: doc.hxx:1307
SwTextNode * GetTextNode()
Inline methods from Node.hxx.
Definition: ndtxt.hxx:843
SwTextNode * MakeTextNode(const SwNodeIndex &rWhere, SwTextFormatColl *pColl, bool bNewFrames=true)
Implementations of "Make...Node" are in the given .cxx-files.
Definition: ndtxt.cxx:114
#define RES_BOXATR_FORMULA
Definition: hintids.hxx:262
SwNodeIndex & Assign(SwNodes const &rNds, sal_uLong)
Definition: ndindex.hxx:271
SwTextFormatColl * GetTextColl() const
Definition: ndtxt.hxx:837