search/mag_sel search/close
NodeImporter.h
1 // Copyright 2001-2021 Aspose Pty Ltd. All Rights Reserved.
3 //
4 // This file is part of Aspose.Words. The source code in this file
5 // is only intended as a supplement to the documentation, and is provided
6 // "as is", without warranty of any kind, either expressed or implied.
9 #pragma once
10 
11 #include <system/string.h>
12 #include <cstdint>
13 
14 #include <Aspose.Words.Cpp/ImportFormatMode.h>
15 #include <Aspose.Words.Cpp/aspose_words_api_defs.h>
16 
17 namespace Aspose { namespace Words { class Node; } }
18 namespace Aspose { namespace Words { class FormattingDifferenceCalculator; } }
19 namespace Aspose { namespace Words { class DocumentInserter; } }
20 namespace Aspose { namespace Words { class DocumentBase; } }
21 namespace Aspose { namespace Words { namespace Fields { class ExternalDocumentModifier; } } }
22 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Reader { class DocxDocumentReaderBase; } } } } }
23 namespace Aspose { namespace Words { class ImportContext; } }
24 namespace Aspose { namespace Collections { namespace Generic { template <typename> class HashSetGeneric; } } }
25 namespace System { namespace Collections { namespace Generic { template <typename, typename> class Dictionary; } } }
26 namespace Aspose { namespace Collections { template <typename> class IntToObjDictionary; } }
27 namespace Aspose { namespace Collections { namespace Generic { template <typename> class SortedIntegerListGeneric; } } }
28 namespace Aspose { namespace Words { namespace Drawing { class ShapeBase; } } }
29 namespace System { namespace Collections { namespace Generic { template <typename> class List; } } }
30 namespace Aspose { namespace Words { class BookmarkStart; } }
31 namespace Aspose { namespace Words { class BookmarkEnd; } }
32 namespace Aspose { namespace Words { class ImportFormatOptions; } }
33 namespace Aspose { namespace Words { class INodeCloningListener; } }
34 namespace Aspose { namespace Words { class CompositeNode; } }
35 namespace Aspose { namespace Words { class ParaPr; } }
36 namespace Aspose { namespace Words { class IInline; } }
37 namespace Aspose { namespace Words { class Paragraph; } }
38 namespace Aspose { namespace Words { namespace Markup { class StructuredDocumentTag; } } }
39 namespace Aspose { namespace Words { namespace BuildingBlocks { class BuildingBlock; } } }
40 namespace Aspose { namespace Words { namespace BuildingBlocks { class GlossaryDocument; } } }
41 namespace Aspose { namespace Words { namespace Markup { class CustomXmlPartCollection; } } }
42 namespace Aspose { namespace Words { class INodeWithAnnotationId; } }
43 namespace Aspose { namespace Words { class Style; } }
44 namespace Aspose { namespace Words { namespace Tables { class Row; } } }
45 namespace Aspose { namespace Words { class AttrCollection; } }
46 namespace Aspose { namespace Words { class IParaAttrSource; } }
47 namespace Aspose { namespace Words { namespace Lists { class List; } } }
48 namespace Aspose { namespace Words { class WordAttrCollection; } }
49 namespace Aspose { namespace Words { namespace Markup { class CustomXmlPart; } } }
50 namespace Aspose { namespace Words { namespace Markup { class XmlMapping; } } }
51 
52 namespace Aspose {
53 
54 namespace Words {
55 
158 class ASPOSE_WORDS_SHARED_CLASS NodeImporter : public System::Object
159 {
160  typedef NodeImporter ThisType;
161  typedef System::Object BaseType;
162 
163  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
164  ASPOSE_WORDS_SHARED_RTTI_INFO_DECL();
165 
166  friend class Aspose::Words::FormattingDifferenceCalculator;
167  friend class Aspose::Words::DocumentInserter;
168  friend class Aspose::Words::DocumentBase;
169  friend class Aspose::Words::Fields::ExternalDocumentModifier;
170  friend class Aspose::Words::RW::Docx::Reader::DocxDocumentReaderBase;
171 
172 public:
173 
246 
311 
396  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Node> ImportNode(System::SharedPtr<Aspose::Words::Node> srcNode, bool isImportChildren);
397 
398 protected:
399 
401 
403 
406  void ImportAndAppendChildren(System::SharedPtr<Aspose::Words::CompositeNode> srcContainer, System::SharedPtr<Aspose::Words::CompositeNode> dstContainer);
408 
409 private:
410 
412 
421 
422  static const System::String& GoBackBookmark();
423 
424  bool mIsApplyFormattingDifference;
426 
427  void UpdateShapeIds();
428  void UpdateDmlTextboxIds();
429  void ProcessBrokenTxbxChain(System::SharedPtr<Aspose::Collections::Generic::SortedIntegerListGeneric<System::SharedPtr<Aspose::Words::Drawing::ShapeBase>>> lnkItems);
430  void UpdateTxBxNextShapeId(System::SharedPtr<Aspose::Words::Drawing::ShapeBase> dml, System::SharedPtr<Aspose::Collections::Generic::SortedIntegerListGeneric<System::SharedPtr<Aspose::Words::Drawing::ShapeBase>>> lnkItems);
431  void RemoveGoBackBookmarks();
433  void UpdateShapes();
435  void ImportNodeWithoutChildren(System::SharedPtr<Aspose::Words::Node> srcNode, System::SharedPtr<Aspose::Words::Node> dstNode);
437  void ImportCell(System::SharedPtr<Aspose::Words::Node> dstNode);
438  void ImportRow(System::SharedPtr<Aspose::Words::Node> dstNode);
440  void CollectTextBoxes(System::SharedPtr<Aspose::Words::Drawing::ShapeBase> dstDml);
441  void CollectLinkedTxbx(System::SharedPtr<Aspose::Words::Drawing::ShapeBase> lnkTxbx);
445  void ImportStructuredDocumentTagRange(System::SharedPtr<Aspose::Words::Node> srcSdtRange, System::SharedPtr<Aspose::Words::Node> dstSdtRange);
452  void CopyThemeNoOverride();
453  void UpdateBookmarkNameIfNeeded(System::SharedPtr<Aspose::Words::BookmarkStart> srcBookmarkStart, System::SharedPtr<Aspose::Words::BookmarkStart> dstBookmarkStart);
454  void UpdateBookmarkNameIfNeeded(System::SharedPtr<Aspose::Words::BookmarkEnd> srcBookmarkEnd, System::SharedPtr<Aspose::Words::BookmarkEnd> dstBookmarkEnd);
455  System::String GetNewBookmarkName(System::String name);
457  void ImportStyleUseDestinationMode(System::SharedPtr<Aspose::Words::AttrCollection> srcAttrs, System::SharedPtr<Aspose::Words::AttrCollection> dstAttrs, int32_t istdKey);
459  void CreateMissingBuiltInParagraphStyles(System::SharedPtr<Aspose::Words::Paragraph> paragraph);
460  void CreateMissedBuiltInStyle(System::SharedPtr<Aspose::Words::Style> builtinStyle);
461  static int64_t GetNonReusableListDefId(System::SharedPtr<Aspose::Words::Paragraph> curPara);
462  static int32_t GetEffectiveParaIndent(System::SharedPtr<Aspose::Words::IParaAttrSource> para);
464  static bool IsContainsOnlyEmptyRunsOrCrossAnnotation(System::SharedPtr<Aspose::Words::Paragraph> para);
465  bool CanApplyFormattingDifference(System::SharedPtr<Aspose::Words::IInline> inline_);
466  bool CanApplyFormattingDifference(System::SharedPtr<Aspose::Words::Paragraph> para);
467  bool IsIgnoreParaInTextBox(System::SharedPtr<Aspose::Words::Paragraph> para);
468  bool CanPreserveSourceStyles(System::SharedPtr<Aspose::Words::Node> node);
471  static void CollectUsedStyles(System::SharedPtr<Aspose::Words::Node> node, System::SharedPtr<Aspose::Collections::Generic::HashSetGeneric<int32_t>> usedStyleIds);
472  static void AddStyle(System::SharedPtr<Aspose::Collections::Generic::HashSetGeneric<int32_t>> hashSet, System::SharedPtr<Aspose::Words::WordAttrCollection> attrs, int32_t istdKey);
475 
476 };
477 
478 }
479 }