search/mag_sel search/close
FontInfoCollection.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 <system/collections/list.h>
13 #include <system/collections/ienumerable.h>
14 #include <cstdint>
15 
16 #include <Aspose.Words.Cpp/aspose_words_api_defs.h>
17 
18 namespace System { namespace Collections { namespace Generic { template <typename> class IEnumerator; } } }
19 namespace Aspose { namespace Words { namespace Fonts { class FontInfo; } } }
20 namespace Aspose { namespace Words { namespace Fonts { class EmbeddedFontCollector; } } }
21 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Reader { namespace Word60 { class Word60ListHelper; } } } } } }
22 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Reader { class RunPrReader; } } } } }
23 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Reader { class StyleReader; } } } } }
24 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Writer { class RunPrWriter; } } } } }
25 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Writer { class StyleWriter; } } } } }
26 namespace Aspose { namespace Words { class DocumentBase; } }
27 namespace Aspose { namespace Words { namespace Validation { class DocumentPostLoader; } } }
28 namespace Aspose { namespace Words { namespace Validation { class DocumentValidator; } } }
29 namespace Aspose { namespace Words { class NodeImporter; } }
30 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Reader { class OdtFontFaceDeclsReader; } } } } }
31 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Reader { class DocxFontTableReader; } } } } }
32 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Writer { class DocxFontTableWriter; } } } } }
33 namespace Aspose { namespace Words { namespace RW { namespace Doc { class DocPrFiler; } } } }
34 namespace Aspose { namespace Words { namespace RW { namespace Doc { class FontInfoFiler; } } } }
35 namespace Aspose { namespace Words { namespace RW { namespace Doc { namespace Writer { class DocWriter; } } } } }
36 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfFontCodeResolver; } } } } }
37 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Writer { class RtfDocPrWriter; } } } } }
38 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Writer { class RtfHeaderWriter; } } } } }
39 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Writer { class RtfRunPrWriter; } } } } }
40 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Writer { class RtfWriterContext; } } } } }
41 namespace Aspose { namespace Words { namespace RW { namespace Wml { namespace Reader { class WmlFontsReader; } } } } }
42 namespace System { namespace Collections { namespace Generic { template <typename, typename> class SortedList; } } }
43 namespace Aspose { namespace Collections { class StringToIntDictionary; } }
44 namespace Aspose { namespace Collections { namespace Generic { template <typename> class ISetGeneric; } } }
45 namespace Aspose { namespace Words { namespace Settings { class DocPr; } } }
46 
47 namespace Aspose {
48 
49 namespace Words {
50 
51 namespace Fonts {
52 
101 class ASPOSE_WORDS_SHARED_CLASS FontInfoCollection : public System::Collections::Generic::IEnumerable<System::SharedPtr<Aspose::Words::Fonts::FontInfo>>
102 {
105 
106  typedef ::System::BaseTypesInfo<BaseType> ThisTypeBaseTypesInfo;
107  ASPOSE_WORDS_SHARED_RTTI_INFO_DECL();
108 
109  friend class Aspose::Words::Fonts::EmbeddedFontCollector;
110  friend class Aspose::Words::RW::Doc::Reader::Word60::Word60ListHelper;
111  friend class Aspose::Words::RW::Doc::Reader::RunPrReader;
112  friend class Aspose::Words::RW::Doc::Reader::StyleReader;
113  friend class Aspose::Words::RW::Doc::Writer::RunPrWriter;
114  friend class Aspose::Words::RW::Doc::Writer::StyleWriter;
115  friend class Aspose::Words::DocumentBase;
116  friend class Aspose::Words::Validation::DocumentPostLoader;
117  friend class Aspose::Words::Validation::DocumentValidator;
118  friend class Aspose::Words::NodeImporter;
119  friend class Aspose::Words::RW::Odt::Reader::OdtFontFaceDeclsReader;
120  friend class Aspose::Words::RW::Docx::Reader::DocxFontTableReader;
121  friend class Aspose::Words::RW::Docx::Writer::DocxFontTableWriter;
122  friend class Aspose::Words::RW::Doc::DocPrFiler;
123  friend class Aspose::Words::RW::Doc::FontInfoFiler;
124  friend class Aspose::Words::RW::Doc::Writer::DocWriter;
125  friend class Aspose::Words::RW::Rtf::Reader::RtfFontCodeResolver;
126  friend class Aspose::Words::RW::Rtf::Writer::RtfDocPrWriter;
127  friend class Aspose::Words::RW::Rtf::Writer::RtfHeaderWriter;
128  friend class Aspose::Words::RW::Rtf::Writer::RtfRunPrWriter;
129  friend class Aspose::Words::RW::Rtf::Writer::RtfWriterContext;
130  friend class Aspose::Words::RW::Wml::Reader::WmlFontsReader;
131 
132 public:
133 
135 
137 
139 
140 public:
141 
160  ASPOSE_WORDS_SHARED_API int32_t get_Count();
161 
192  ASPOSE_WORDS_SHARED_API bool get_EmbedTrueTypeFonts() const;
193 
195  ASPOSE_WORDS_SHARED_API void set_EmbedTrueTypeFonts(bool value);
196 
230  ASPOSE_WORDS_SHARED_API bool get_EmbedSystemFonts() const;
231 
233  ASPOSE_WORDS_SHARED_API void set_EmbedSystemFonts(bool value);
234 
261  ASPOSE_WORDS_SHARED_API bool get_SaveSubsetFonts() const;
262 
264  ASPOSE_WORDS_SHARED_API void set_SaveSubsetFonts(bool value);
265 
297 
328  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Fonts::FontInfo> idx_get(int32_t index);
329 
367 
390  ASPOSE_WORDS_SHARED_API bool Contains(System::String name);
391 
392  ASPOSE_WORDS_SHARED_API iterator begin() noexcept;
393 
394  ASPOSE_WORDS_SHARED_API iterator end() noexcept;
395 
396  ASPOSE_WORDS_SHARED_API const_iterator begin() const noexcept;
397 
398  ASPOSE_WORDS_SHARED_API const_iterator end() const noexcept;
399 
400  ASPOSE_WORDS_SHARED_API const_iterator cbegin() const noexcept;
401 
402  ASPOSE_WORDS_SHARED_API const_iterator cend() const noexcept;
403 
404 protected:
405 
407 
408  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(FontInfoCollection, CODEPORTING_ARGS());
409  int32_t NameToCode(System::String name);
410  System::String CodeToName(int32_t fontCode);
411  int32_t Merge(System::SharedPtr<Aspose::Words::Fonts::FontInfo> fontInfo);
412  void Merge(System::SharedPtr<Aspose::Words::Fonts::FontInfoCollection> srcFontInfoCollection);
413  void UpdateToUsedFonts(System::SharedPtr<Aspose::Collections::Generic::ISetGeneric<System::String>> usedFontNames);
414  System::SharedPtr<Aspose::Words::Fonts::FontInfoCollection> Clone();
415  System::SharedPtr<Aspose::Words::Fonts::FontInfoCollection> CloneWithoutEmbeddedFonts();
416  void RemoveEmbeddedFonts();
417  bool HasEmbeddedFonts();
418  void RemoveUnusedFonts(System::SharedPtr<System::Collections::Generic::SortedList<int32_t, int32_t>> validFontIndexes);
419  void UpdateEmbedFontOptions(System::SharedPtr<Aspose::Words::Settings::DocPr> docPr);
420 
421  virtual ASPOSE_WORDS_SHARED_API ~FontInfoCollection();
422 
423 private:
424 
425  System::SharedPtr<System::Collections::Generic::List<System::SharedPtr<Aspose::Words::Fonts::FontInfo>>> mItems;
426  System::SharedPtr<Aspose::Collections::StringToIntDictionary> mFontNameToItemIndex;
427  System::SharedPtr<System::Collections::Generic::List<System::String>> mExternalCodeToFontName;
428  System::SharedPtr<Aspose::Collections::StringToIntDictionary> mFontAltNameToItemIndex;
429  bool mEmbedTrueTypeFonts;
430  bool mEmbedSystemFonts;
431  bool mSaveSubsetFonts;
432 
433  void UpdateEmbedFontOptions(System::SharedPtr<Aspose::Words::Fonts::FontInfoCollection> fontInfos);
434  void Clear();
435  void FindNewAndUsedExistingFonts(System::SharedPtr<Aspose::Collections::Generic::ISetGeneric<System::String>> usedFontNames, System::SharedPtr<System::Collections::Generic::List<System::String>> newFontNames, System::SharedPtr<System::Collections::Generic::SortedList<int32_t, int32_t>> validFontIndexes);
436  void AddNewFonts(System::SharedPtr<System::Collections::Generic::List<System::String>> newFontNames);
437 
438 };
439 
440 }
441 }
442 }