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 <ndindex.hxx>
31 #include <vector>
32 #include <osl/diagnose.h>
33 
34 
35 #ifdef DBG_UTIL
36 #define CHECK_TABLE(t) (t).CheckConsistency();
37 #else
38 #define CHECK_TABLE(t)
39 #endif
40 
41 
42 // Structure for the mapping from old and new frame formats to the
43 // boxes and lines of a table
45 {
48  MapTableFrameFormat( const SwFrameFormat *pOldFormat, SwFrameFormat*pNewFormat )
49  : pOld( pOldFormat ), pNew( pNewFormat )
50  {}
51 };
52 
53 typedef std::vector<MapTableFrameFormat> MapTableFrameFormats;
54 
55 SwContentNode* SwTextNode::MakeCopy(SwDoc* pDoc, const SwNodeIndex& rIdx, bool const bNewFrames) const
56 {
57  // the Copy-Textnode is the Node with the Text, the Copy-Attrnode is the
58  // node with the collection and hard attributes. Normally is the same
59  // node, but if insert a glossary without formatting, then the Attrnode
60  // is the prev node of the destination position in dest. document.
61  SwTextNode* pCpyTextNd = const_cast<SwTextNode*>(this);
62  SwTextNode* pCpyAttrNd = pCpyTextNd;
63 
64  // Copy the formats to the other document
65  SwTextFormatColl* pColl = nullptr;
66  if( pDoc->IsInsOnlyTextGlossary() )
67  {
68  SwNodeIndex aIdx( rIdx, -1 );
69  if( aIdx.GetNode().IsTextNode() )
70  {
71  pCpyAttrNd = aIdx.GetNode().GetTextNode();
72  pColl = &pCpyAttrNd->GetTextColl()->GetNextTextFormatColl();
73  }
74  }
75  if( !pColl )
76  pColl = pDoc->CopyTextColl( *GetTextColl() );
77 
78  SwTextNode* pTextNd = pDoc->GetNodes().MakeTextNode(rIdx, pColl, bNewFrames);
79 
80  // METADATA: register copy
81  pTextNd->RegisterAsCopyOf(*pCpyTextNd);
82 
83  // Copy Attribute/Text
84  if( !pCpyAttrNd->HasSwAttrSet() )
85  // An AttrSet was added for numbering, so delete it
86  pTextNd->ResetAllAttr();
87 
88  // if Copy-Textnode unequal to Copy-Attrnode, then copy first
89  // the attributes into the new Node.
90  if( pCpyAttrNd != pCpyTextNd )
91  {
92  pCpyAttrNd->CopyAttr( pTextNd, 0, 0 );
93  if( pCpyAttrNd->HasSwAttrSet() )
94  {
95  SwAttrSet aSet( *pCpyAttrNd->GetpSwAttrSet() );
96  aSet.ClearItem( RES_PAGEDESC );
97  aSet.ClearItem( RES_BREAK );
98  aSet.CopyToModify( *pTextNd );
99  }
100  }
101 
102  // Is that enough? What about PostIts/Fields/FieldTypes?
103  // #i96213# - force copy of all attributes
104  pCpyTextNd->CopyText( pTextNd, SwIndex( pCpyTextNd ),
105  pCpyTextNd->GetText().getLength(), true );
106 
107  if( RES_CONDTXTFMTCOLL == pColl->Which() )
108  pTextNd->ChkCondColl();
109 
110  return pTextNd;
111 }
112 
113 static bool lcl_SrchNew( const MapTableFrameFormat& rMap, SwFrameFormat** pPara )
114 {
115  if( rMap.pOld != *pPara )
116  return true;
117  *pPara = rMap.pNew;
118  return false;
119 }
120 
121 struct CopyTable
122 {
130 
132  SwTableNode& rTableNd, const SwTable* pOldTable)
133  : m_pDoc(pDc), m_nOldTableSttIdx(nOldStt), m_rMapArr(rArr),
134  m_pInsLine(nullptr), m_pInsBox(nullptr), m_pTableNd(&rTableNd), m_pOldTable(pOldTable)
135  {}
136 };
137 
138 static void lcl_CopyTableLine( const SwTableLine* pLine, CopyTable* pCT );
139 
140 static void lcl_CopyTableBox( SwTableBox* pBox, CopyTable* pCT )
141 {
142  SwTableBoxFormat * pBoxFormat = static_cast<SwTableBoxFormat*>(pBox->GetFrameFormat());
143  for (const auto& rMap : pCT->m_rMapArr)
144  if ( !lcl_SrchNew( rMap, reinterpret_cast<SwFrameFormat**>(&pBoxFormat) ) )
145  break;
146 
147  if (pBoxFormat == pBox->GetFrameFormat()) // Create a new one?
148  {
149  const SfxPoolItem* pItem;
150  if( SfxItemState::SET == pBoxFormat->GetItemState( RES_BOXATR_FORMULA, false,
151  &pItem ) && static_cast<const SwTableBoxFormula*>(pItem)->IsIntrnlName() )
152  {
153  const_cast<SwTableBoxFormula*>(static_cast<const SwTableBoxFormula*>(pItem))->PtrToBoxNm(pCT->m_pOldTable);
154  }
155 
156  pBoxFormat = pCT->m_pDoc->MakeTableBoxFormat();
157  pBoxFormat->CopyAttrs( *pBox->GetFrameFormat() );
158 
159  if( pBox->GetSttIdx() )
160  {
161  SvNumberFormatter* pN = pCT->m_pDoc->GetNumberFormatter(false);
162  if( pN && pN->HasMergeFormatTable() && SfxItemState::SET == pBoxFormat->
163  GetItemState( RES_BOXATR_FORMAT, false, &pItem ) )
164  {
165  sal_uLong nOldIdx = static_cast<const SwTableBoxNumFormat*>(pItem)->GetValue();
166  sal_uLong nNewIdx = pN->GetMergeFormatIndex( nOldIdx );
167  if( nNewIdx != nOldIdx )
168  pBoxFormat->SetFormatAttr( SwTableBoxNumFormat( nNewIdx ));
169 
170  }
171  }
172 
173  pCT->m_rMapArr.emplace_back(pBox->GetFrameFormat(), pBoxFormat);
174  }
175 
176  sal_uInt16 nLines = pBox->GetTabLines().size();
177  SwTableBox* pNewBox;
178  if( nLines )
179  pNewBox = new SwTableBox(pBoxFormat, nLines, pCT->m_pInsLine);
180  else
181  {
182  SwNodeIndex aNewIdx(*pCT->m_pTableNd, pBox->GetSttIdx() - pCT->m_nOldTableSttIdx);
183  assert(aNewIdx.GetNode().IsStartNode() && "Index is not on the start node");
184 
185  pNewBox = new SwTableBox(pBoxFormat, aNewIdx, pCT->m_pInsLine);
186  pNewBox->setRowSpan( pBox->getRowSpan() );
187  }
188 
189  pCT->m_pInsLine->GetTabBoxes().push_back( pNewBox );
190 
191  if (nLines)
192  {
193  CopyTable aPara(*pCT);
194  aPara.m_pInsBox = pNewBox;
195  for( const SwTableLine* pLine : pBox->GetTabLines() )
196  lcl_CopyTableLine( pLine, &aPara );
197  }
198  else if (pNewBox->IsInHeadline(&pCT->m_pTableNd->GetTable()))
199  {
200  // In the headline, the paragraphs must match conditional styles
201  pNewBox->GetSttNd()->CheckSectionCondColl();
202  }
203 }
204 
205 static void lcl_CopyTableLine( const SwTableLine* pLine, CopyTable* pCT )
206 {
207  SwTableLineFormat * pLineFormat = static_cast<SwTableLineFormat*>(pLine->GetFrameFormat());
208  for (const auto& rMap : pCT->m_rMapArr)
209  if ( !lcl_SrchNew( rMap, reinterpret_cast<SwFrameFormat**>(&pLineFormat) ) )
210  break;
211 
212  if( pLineFormat == pLine->GetFrameFormat() ) // Create a new one?
213  {
214  pLineFormat = pCT->m_pDoc->MakeTableLineFormat();
215  pLineFormat->CopyAttrs( *pLine->GetFrameFormat() );
216  pCT->m_rMapArr.emplace_back(pLine->GetFrameFormat(), pLineFormat);
217  }
218 
219  SwTableLine* pNewLine = new SwTableLine(pLineFormat, pLine->GetTabBoxes().size(), pCT->m_pInsBox);
220  // Insert the new row into the table
221  if (pCT->m_pInsBox)
222  {
223  pCT->m_pInsBox->GetTabLines().push_back(pNewLine);
224  }
225  else
226  {
227  pCT->m_pTableNd->GetTable().GetTabLines().push_back(pNewLine);
228  }
229 
230  pCT->m_pInsLine = pNewLine;
231  for( auto& rpBox : const_cast<SwTableLine*>(pLine)->GetTabBoxes() )
232  lcl_CopyTableBox(rpBox, pCT);
233 }
234 
236 {
237  // In which array are we? Nodes? UndoNodes?
238  SwNodes& rNds = const_cast<SwNodes&>(GetNodes());
239 
240  {
241  if( rIdx < pDoc->GetNodes().GetEndOfInserts().GetIndex() &&
242  rIdx >= pDoc->GetNodes().GetEndOfInserts().StartOfSectionIndex() )
243  return nullptr;
244  }
245 
246  // Copy the TableFrameFormat
247  OUString sTableName( GetTable().GetFrameFormat()->GetName() );
248  if( !pDoc->IsCopyIsMove() )
249  {
250  const SwFrameFormats& rTableFormats = *pDoc->GetTableFrameFormats();
251  for( size_t n = rTableFormats.size(); n; )
252  if( rTableFormats[ --n ]->GetName() == sTableName )
253  {
254  sTableName = pDoc->GetUniqueTableName();
255  break;
256  }
257  }
258 
259  SwFrameFormat* pTableFormat = pDoc->MakeTableFrameFormat( sTableName, pDoc->GetDfltFrameFormat() );
260  pTableFormat->CopyAttrs( *GetTable().GetFrameFormat() );
261  SwTableNode* pTableNd = new SwTableNode( rIdx );
262  SwEndNode* pEndNd = new SwEndNode( rIdx, *pTableNd );
263  SwNodeIndex aInsPos( *pEndNd );
264 
265  SwTable& rTable = pTableNd->GetTable();
266  rTable.RegisterToFormat( *pTableFormat );
267 
268  rTable.SetRowsToRepeat( GetTable().GetRowsToRepeat() );
269  rTable.SetTableChgMode( GetTable().GetTableChgMode() );
270  rTable.SetTableModel( GetTable().IsNewModel() );
271 
272  SwDDEFieldType* pDDEType = nullptr;
273  if( auto pSwDDETable = dynamic_cast<const SwDDETable*>( &GetTable() ) )
274  {
275  // We're copying a DDE table
276  // Is the field type available in the new document?
277  pDDEType = const_cast<SwDDETable*>(pSwDDETable)->GetDDEFieldType();
278  if( pDDEType->IsDeleted() )
279  pDoc->getIDocumentFieldsAccess().InsDeletedFieldType( *pDDEType );
280  else
281  pDDEType = static_cast<SwDDEFieldType*>(pDoc->getIDocumentFieldsAccess().InsertFieldType( *pDDEType ));
282  OSL_ENSURE( pDDEType, "unknown FieldType" );
283 
284  // Swap the table pointers in the node
285  std::unique_ptr<SwDDETable> pNewTable(new SwDDETable( pTableNd->GetTable(), pDDEType ));
286  pTableNd->SetNewTable( std::move(pNewTable), false );
287  }
288  // First copy the content of the tables, we will later assign the
289  // boxes/lines and create the frames
290  SwNodeRange aRg( *this, +1, *EndOfSectionNode() );
291 
292  // If there is a table in this table, the table format for the outer table
293  // does not seem to be used, because the table does not have any contents yet
294  // (see IsUsed). Therefore the inner table gets the same name as the outer table.
295  // We have to make sure that the table node of the SwTable is accessible, even
296  // without any content in m_TabSortContentBoxes. #i26629#
297  pTableNd->GetTable().SetTableNode( pTableNd );
298  rNds.Copy_( aRg, aInsPos, false );
299  pTableNd->GetTable().SetTableNode( nullptr );
300 
301  // Special case for a single box
302  if( 1 == GetTable().GetTabSortBoxes().size() )
303  {
304  aRg.aStart.Assign( *pTableNd, 1 );
305  aRg.aEnd.Assign( *pTableNd->EndOfSectionNode() );
306  pDoc->GetNodes().SectionDown( &aRg, SwTableBoxStartNode );
307  }
308 
309  // Delete all frames from the copied area, they will be created
310  // during the generation of the table frame
311  pTableNd->DelFrames();
312 
313  MapTableFrameFormats aMapArr;
314  CopyTable aPara( pDoc, aMapArr, GetIndex(), *pTableNd, &GetTable() );
315 
316  for( const SwTableLine* pLine : GetTable().GetTabLines() )
317  lcl_CopyTableLine( pLine, &aPara );
318 
319  if( pDDEType )
320  pDDEType->IncRefCnt();
321 
322  CHECK_TABLE( GetTable() );
323  return pTableNd;
324 }
325 
327 {
328  // Copy the formats into the other document:
329  // Special case for PageBreak/PageDesc/ColBrk
330  SwDoc* pDestDoc = rDestNd.GetDoc();
331  SwAttrSet aPgBrkSet( pDestDoc->GetAttrPool(), aBreakSetRange );
332  const SwAttrSet* pSet;
333 
334  if( nullptr != ( pSet = rDestNd.GetpSwAttrSet() ) )
335  {
336  // Special cases for Break-Attributes
337  const SfxPoolItem* pAttr;
338  if( SfxItemState::SET == pSet->GetItemState( RES_BREAK, false, &pAttr ) )
339  aPgBrkSet.Put( *pAttr );
340 
341  if( SfxItemState::SET == pSet->GetItemState( RES_PAGEDESC, false, &pAttr ) )
342  aPgBrkSet.Put( *pAttr );
343  }
344 
345  rDestNd.ChgFormatColl( pDestDoc->CopyTextColl( *GetTextColl() ));
346  if( nullptr != ( pSet = GetpSwAttrSet() ) )
347  pSet->CopyToModify( rDestNd );
348 
349  if( aPgBrkSet.Count() )
350  rDestNd.SetAttr( aPgBrkSet );
351 }
352 
353 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SwTableFormat * MakeTableFrameFormat(const OUString &rFormatName, SwFrameFormat *pDerivedFrom)
Definition: docfmt.cxx:791
const SwEndNode * EndOfSectionNode() const
Definition: node.hxx:682
SwNode & GetEndOfInserts() const
Section for all footnotes.
Definition: ndarr.hxx:155
sal_uLong GetIndex() const
Definition: node.hxx:282
SwTableLineFormat * MakeTableLineFormat()
Definition: docfmt.cxx:1703
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:280
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:2408
const OUString & GetText() const
Definition: ndtxt.hxx:210
sal_uLong GetSttIdx() const
Definition: swtable.cxx:1880
virtual sal_uInt16 ResetAllAttr() override
Definition: ndtxt.cxx:5150
virtual bool SetAttr(const SfxPoolItem &) override
overriding to handle change of certain paragraph attributes
Definition: ndtxt.cxx:4892
std::string GetValue
SvNumberFormatter * GetNumberFormatter(bool bCreate=true)
Definition: doc.hxx:1401
const SwFrameFormats * GetTableFrameFormats() const
Definition: doc.hxx:807
sal_uIntPtr sal_uLong
SwTableNode * MakeCopy(SwDoc *, const SwNodeIndex &) const
Definition: ndcopy.cxx:235
OUString GetUniqueTableName() const
Definition: ndtbl.cxx:3845
bool IsDeleted() const
Definition: ddefld.hxx:86
const SwFrameFormat * pOld
Definition: ndcopy.cxx:46
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:119
bool IsInHeadline(const SwTable *pTable) const
Definition: swtable.cxx:1864
void CheckSectionCondColl() const
Call ChkCondcoll to all ContentNodes of section.
Definition: node.cxx:927
void Copy_(const SwNodeRange &rRg, const SwNodeIndex &rInsPos, bool bNewFrames=true) const
Definition: ndarr.hxx:177
bool IsInsOnlyTextGlossary() const
Definition: doc.hxx:650
SwFrameFormat *const pNew
Definition: ndcopy.cxx:47
static bool lcl_SrchNew(const MapTableFrameFormat &rMap, SwFrameFormat **pPara)
Definition: ndcopy.cxx:113
size_type size() const
Definition: swtable.hxx:74
IDocumentFieldsAccess const & getIDocumentFieldsAccess() const
Definition: doc.cxx:356
const SwTable * m_pOldTable
Definition: ndcopy.cxx:129
SwNodeIndex aStart
Definition: ndindex.hxx:132
void SetTableModel(bool bNew)
Definition: swtable.hxx:184
#define CHECK_TABLE(t)
Definition: ndcopy.cxx:36
SwTextFormatColl * CopyTextColl(const SwTextFormatColl &rColl)
copy TextNodes
Definition: docfmt.cxx:1156
const SwTable & GetTable() const
Definition: node.hxx:497
SwTableLine * m_pInsLine
Definition: ndcopy.cxx:126
CopyTable(SwDoc *pDc, MapTableFrameFormats &rArr, sal_uLong nOldStt, SwTableNode &rTableNd, const SwTable *pOldTable)
Definition: ndcopy.cxx:131
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:1996
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:127
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:892
virtual SwContentNode * MakeCopy(SwDoc *, const SwNodeIndex &, bool bNewFrames) const override
Definition: ndcopy.cxx:55
static void lcl_CopyTableLine(const SwTableLine *pLine, CopyTable *pCT)
Definition: ndcopy.cxx:205
SAL_DLLPRIVATE void CopyAttr(SwTextNode *pDest, const sal_Int32 nStart, const sal_Int32 nOldPos)
Copies the attributes at nStart to pDest.
Definition: ndtxt.cxx:1936
SwDoc * GetDoc()
Definition: node.hxx:702
virtual SwFormatColl * ChgFormatColl(SwFormatColl *) override
Definition: ndtxt.cxx:3929
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:396
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:2310
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:740
virtual bool SetFormatAttr(const SfxPoolItem &rAttr)
Definition: format.cxx:458
SwTableNode * m_pTableNd
Definition: ndcopy.cxx:128
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:326
SwTextNode is a paragraph in the document model.
Definition: ndtxt.hxx:79
MapTableFrameFormat(const SwFrameFormat *pOldFormat, SwFrameFormat *pNewFormat)
Definition: ndcopy.cxx:48
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:53
long getRowSpan() const
Definition: swtable.cxx:102
void CopyAttrs(const SwFormat &)
Copy attributes even among documents.
Definition: format.cxx:178
void ChkCondColl()
Definition: node.cxx:1946
sal_uInt32 GetMergeFormatIndex(sal_uInt32 nOldFmt) const
virtual SwFieldType * InsertFieldType(const SwFieldType &)=0
SwDoc * m_pDoc
Definition: ndcopy.cxx:123
bool IsCopyIsMove() const
Definition: doc.hxx:1362
friend class SwEndNode
to set the theEndOfSection !!
Definition: node.hxx:307
SwNodes & GetNodes()
Definition: doc.hxx:402
SwNodeIndex aEnd
Definition: ndindex.hxx:133
SwTableBox is one table cell in the document model.
Definition: swtable.hxx:386
static void lcl_CopyTableBox(SwTableBox *pBox, CopyTable *pCT)
Definition: ndcopy.cxx:140
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:2448
#define RES_PAGEDESC
Definition: hintids.hxx:200
#define RES_BREAK
Definition: hintids.hxx:201
sal_uInt16 const aBreakSetRange[]
Definition: init.cxx:142
bool IsTextNode() const
Definition: node.hxx:636
MapTableFrameFormats & m_rMapArr
Definition: ndcopy.cxx:125
void IncRefCnt()
Definition: ddefld.hxx:98
sal_uLong const m_nOldTableSttIdx
Definition: ndcopy.cxx:124
SwTableBoxFormat * MakeTableBoxFormat()
Definition: docfmt.cxx:1696
#define RES_BOXATR_FORMAT
Definition: hintids.hxx:263
SwTextFormatColl & GetNextTextFormatColl() const
Definition: fmtcol.hxx:97
const SwAttrPool & GetAttrPool() const
Definition: doc.hxx:1309
SwTextNode * GetTextNode()
Inline methods from Node.hxx.
Definition: ndtxt.hxx:842
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:264
SwNodeIndex & Assign(SwNodes const &rNds, sal_uLong)
Definition: ndindex.hxx:272
SwTextFormatColl * GetTextColl() const
Definition: ndtxt.hxx:836