search/mag_sel search/close
LayoutCollector.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/object.h>
12 #include <cstdint>
13 
14 #include <Aspose.Words.Cpp/aspose_words_api_defs.h>
15 
16 namespace Aspose { namespace Words { class PageExtractor; } }
17 namespace Aspose { namespace Words { namespace Layout { namespace Core { class SpanGenerator; } } } }
18 namespace Aspose { namespace Words { class Document; } }
19 namespace System { namespace Collections { namespace Generic { template <typename, typename> class Dictionary; } } }
20 namespace Aspose { namespace Collections { template <typename> class ObjToIntDictionary; } }
21 namespace Aspose { namespace Words { class Node; } }
22 namespace Aspose { namespace Words { namespace Layout { namespace Core { class Span; } } } }
23 namespace System { namespace Collections { namespace Generic { template <typename> class List; } } }
24 namespace Aspose { namespace Words { namespace Layout { namespace Core { class Part; } } } }
25 
26 namespace Aspose {
27 
28 namespace Words {
29 
30 namespace Layout {
31 
98 class ASPOSE_WORDS_SHARED_CLASS LayoutCollector : public System::Object
99 {
100  typedef LayoutCollector ThisType;
101  typedef System::Object BaseType;
102 
103  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
104  ASPOSE_WORDS_SHARED_RTTI_INFO_DECL();
105 
106  friend class Aspose::Words::PageExtractor;
107  friend class Aspose::Words::Layout::Core::SpanGenerator;
108 
109 public:
110 
168 
170  ASPOSE_WORDS_SHARED_API void set_Document(System::SharedPtr<Aspose::Words::Document> value);
171 
231 
288  ASPOSE_WORDS_SHARED_API int32_t GetStartPageIndex(System::SharedPtr<Aspose::Words::Node> node);
289 
346  ASPOSE_WORDS_SHARED_API int32_t GetEndPageIndex(System::SharedPtr<Aspose::Words::Node> node);
347 
405  ASPOSE_WORDS_SHARED_API int32_t GetNumPagesSpanned(System::SharedPtr<Aspose::Words::Node> node);
406 
463  ASPOSE_WORDS_SHARED_API void Clear();
464 
536 
537 protected:
538 
543 
544  virtual ASPOSE_WORDS_SHARED_API ~LayoutCollector();
545 
546 private:
547 
552 
553  static void DetachDocumentAndCollector(System::SharedPtr<Aspose::Words::Document> doc);
554  void EnsureNodeToPageIndexesBuilt();
555  void BuildParaIndex();
557  void BuildRunAndInlineIndex_ProcessSplitParagraphs(System::SharedPtr<Aspose::Collections::ObjToIntDictionary<System::SharedPtr<Aspose::Words::Node>>> splitParas);
558  void BuildRunAndInlineIndex();
559  int32_t BuildOtherIndex(System::SharedPtr<Aspose::Words::Node> node);
560  static int32_t GetFirstPageIndex(int32_t firstLastPage);
561  static int32_t GetLastPageIndex(int32_t firstLastPage);
562 
563 };
564 
565 }
566 }
567 }