search/mag_sel search/close
FieldMergeField.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/array.h>
12 #include <cstdint>
13 
14 #include <Aspose.Words.Cpp/Fields/FieldSwitchType.h>
15 #include <Aspose.Words.Cpp/Fields/FieldType.h>
16 #include <Aspose.Words.Cpp/Fields/IFieldCodeTokenInfoProvider.h>
17 #include <Aspose.Words.Cpp/Fields/Field.h>
18 #include <Aspose.Words.Cpp/aspose_words_api_defs.h>
19 
20 namespace Aspose { namespace Words { namespace MailMerging { class MailMergeRegion; } } }
21 namespace Aspose { namespace Words { namespace MailMerging { class MailMergeRegionUtil; } } }
22 namespace Aspose { namespace Words { namespace Fields { class FieldMergeFieldParamBag; } } }
23 namespace Aspose { namespace Words { namespace MailMerging { class MailMergeDataSourceResettableDecorator; } } }
24 namespace Aspose { namespace Words { namespace Fields { class FieldFactory; } } }
25 namespace Aspose { namespace Words { namespace MailMerging { class TagReplacer; } } }
26 namespace Aspose { namespace Words { namespace MailMerging { class MailMerge; } } }
27 namespace Aspose { namespace Words { namespace Fields { class MergeFieldImageDimension; } } }
28 namespace System { namespace Text { namespace RegularExpressions { class Regex; } } }
29 namespace Aspose { namespace Words { namespace Fields { class IMergeFieldSurrogate; } } }
30 namespace Aspose { namespace Words { namespace Fields { class FieldStart; } } }
31 namespace Aspose { namespace Words { namespace Fields { class FieldSeparator; } } }
32 namespace Aspose { namespace Words { namespace Fields { class FieldEnd; } } }
33 namespace Aspose { namespace Words { namespace Fields { class FieldCode; } } }
34 namespace Aspose { namespace Words { namespace Fields { class FieldUpdateAction; } } }
35 namespace Aspose { namespace Words { namespace Fields { namespace Expressions { class Constant; } } } }
36 namespace System { namespace IO { class Stream; } }
37 namespace Aspose { namespace Words { namespace MailMerging { class ImageFieldMergingArgs; } } }
38 namespace Aspose { namespace Bidi { class IBidiParagraphLevelOverride; } }
39 
40 namespace Aspose {
41 
42 namespace Words {
43 
44 namespace Fields {
45 
47 class ASPOSE_WORDS_SHARED_CLASS FieldMergeField : public Aspose::Words::Fields::Field, public Aspose::Words::Fields::IFieldCodeTokenInfoProvider
48 {
49  typedef FieldMergeField ThisType;
51  typedef Aspose::Words::Fields::IFieldCodeTokenInfoProvider BaseType1;
52 
53  typedef ::System::BaseTypesInfo<BaseType, BaseType1> ThisTypeBaseTypesInfo;
54  ASPOSE_WORDS_SHARED_RTTI_INFO_DECL();
55 
56  friend class Aspose::Words::MailMerging::MailMergeRegion;
57  friend class Aspose::Words::MailMerging::MailMergeRegionUtil;
58  friend class Aspose::Words::Fields::FieldMergeFieldParamBag;
59  friend class Aspose::Words::MailMerging::MailMergeDataSourceResettableDecorator;
60  friend class Aspose::Words::Fields::FieldFactory;
61  friend class Aspose::Words::MailMerging::TagReplacer;
63 
64 protected:
65 
67  enum class MergeFieldType
68  {
69  Common,
70  Image,
71  Barcode,
72  RegionStart,
73  RegionEnd
74  };
75 
76 public:
77 
79  ASPOSE_WORDS_SHARED_API Aspose::Words::Fields::FieldType get_Type() override;
80 
82  ASPOSE_WORDS_SHARED_API System::String get_FieldNameNoPrefix() const;
83 
85  ASPOSE_WORDS_SHARED_API System::String get_FieldName();
86 
88  ASPOSE_WORDS_SHARED_API void set_FieldName(System::String value);
89 
91  ASPOSE_WORDS_SHARED_API System::String get_TextBefore();
92 
94  ASPOSE_WORDS_SHARED_API void set_TextBefore(System::String value);
95 
97  ASPOSE_WORDS_SHARED_API System::String get_TextAfter();
98 
100  ASPOSE_WORDS_SHARED_API void set_TextAfter(System::String value);
101 
103  ASPOSE_WORDS_SHARED_API bool get_IsMapped();
104 
106  ASPOSE_WORDS_SHARED_API void set_IsMapped(bool value);
107 
109  ASPOSE_WORDS_SHARED_API bool get_IsVerticalFormatting();
110 
112  ASPOSE_WORDS_SHARED_API void set_IsVerticalFormatting(bool value);
113 
114  ASPOSE_WORDS_SHARED_API Aspose::Words::Fields::FieldSwitchType GetSwitchType(System::String switchName) override;
115 
116 protected:
117 
118  bool get_IsRegionStartMark();
119  bool get_IsRegionEndMark();
120  bool get_IsImageField();
121  System::String get_Prefix() const;
122 
123  FieldMergeField();
124 
125  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(FieldMergeField, CODEPORTING_ARGS());
129  ASPOSE_WORDS_SHARED_API void ParseFieldCode() override;
132  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Fields::FieldUpdateAction> UpdateCore() override;
133  ASPOSE_WORDS_SHARED_API void EndUpdate() override;
134  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Bidi::IBidiParagraphLevelOverride> GetBidiParagraphLevelOverride() override;
137  static bool ContainsNamePrefixSeparator(System::String value);
138 
139  virtual ASPOSE_WORDS_SHARED_API ~FieldMergeField();
140 
141 private:
142 
143  bool get_HasTextBeforeOrTextAfter();
144 
145  System::String pr_Prefix;
146 
147  void set_Prefix(System::String value);
148 
149  System::String pr_FieldNameNoPrefix;
150 
151  ASPOSE_WORDS_SHARED_API void set_FieldNameNoPrefix(System::String value);
152 
153  bool mIsSurrogate;
154  Aspose::Words::Fields::FieldMergeField::MergeFieldType mMergeFieldType;
157 
159  static System::ArrayPtr<char16_t>& gNamePrefixSeparators();
160  static const System::String& TextBeforeSwitch();
161  static const System::String& TextAfterSwitch();
162  static const System::String& IsMappedSwitch();
163  static const System::String& IsVerticalFormattingSwitch();
164 
165  FieldMergeField(bool isSurrogate);
166 
167  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(FieldMergeField, CODEPORTING_ARGS(bool isSurrogate));
168  void ParseFieldCode(System::SharedPtr<Aspose::Words::Fields::FieldCode> fieldCode);
169  static bool ProcessPossibleImageField(System::String prefix, System::SharedPtr<Aspose::Words::Fields::FieldMergeFieldParamBag> param);
178 
179 private:
180 
181  static constexpr int32_t ImageSizeGroupIndex = 3;
182  static constexpr int32_t ImageWidthValueGroupIndex = 4;
183  static constexpr int32_t ImageWidthUnitGroupIndex = 5;
184  static constexpr int32_t ImageHeightValueGroupIndex = 6;
185  static constexpr int32_t ImageHeightUnitGroupIndex = 7;
186  static constexpr int32_t FieldNameArgumentIndex = 0;
187 
188 };
189 
190 }
191 }
192 }