search/mag_sel search/close
OfficeMath.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/enum_helpers.h>
13 
14 #include <Aspose.Words.Cpp/RunPrExpandFlags.h>
15 #include <Aspose.Words.Cpp/IInline.h>
16 #include <Aspose.Words.Cpp/Revisions/ITrackableNode.h>
17 #include <Aspose.Words.Cpp/NodeType.h>
18 #include <Aspose.Words.Cpp/CompositeNode.h>
19 #include <Aspose.Words.Cpp/Math/OfficeMathJustification.h>
20 #include <Aspose.Words.Cpp/Math/OfficeMathDisplayType.h>
21 #include <Aspose.Words.Cpp/Math/MathObjectType.h>
22 #include <Aspose.Words.Cpp/aspose_words_api_defs.h>
23 
24 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathMatrixRowElement; } } } }
25 namespace Aspose { namespace Words { namespace Layout { namespace Core { class LayoutShapeOfficeMathAdapter; } } } }
26 namespace Aspose { namespace Words { namespace Fields { class FieldQuoteUpdater; } } }
27 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Dml { namespace Text { class DmlTextShapeToShapeConvertor; } } } } }
28 namespace Aspose { namespace Words { namespace Math { class OfficeMathUtil; } } }
29 namespace Aspose { namespace Words { namespace RW { namespace Nrx { namespace Reader { class NrxMathReaderBase; } } } } }
30 namespace Aspose { namespace Words { namespace RW { namespace MathML { class MathMLReadContext; } } } }
31 namespace Aspose { namespace Words { namespace Validation { namespace DmlToVml { class FallbackShapeValidator; } } } }
32 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathFunctionElement; } } } }
33 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathElement; } } } }
34 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathArrayElement; } } } }
35 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathMatrixElement; } } } }
36 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathBracketElement; } } } }
37 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathGroupCharElement; } } } }
38 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathLimitElement; } } } }
39 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathAccentElement; } } } }
40 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathElementFactory; } } } }
41 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathFractionElement; } } } }
42 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathNaryElement; } } } }
43 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathRadicalElement; } } } }
44 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class MathScriptElement; } } } }
45 namespace Aspose { namespace Words { namespace ApsBuilder { namespace Math { class OfficeMathToApsConverter; } } } }
46 namespace Aspose { namespace Words { namespace Fields { class FieldEQ; } } }
47 namespace Aspose { namespace Words { namespace RW { namespace MathML { class MathMLWriter; } } } }
48 namespace Aspose { namespace Words { namespace RW { namespace MathML { class MathMLReader; } } } }
49 namespace Aspose { namespace Words { namespace Fields { class FieldToc; } } }
50 namespace Aspose { namespace Words { namespace Math { class MathObject; } } }
51 namespace Aspose { namespace Words { namespace Math { class MathObjectFraction; } } }
52 namespace Aspose { namespace Words { namespace Math { class MathObjectFunction; } } }
53 namespace Aspose { namespace Words { namespace Math { class MathObjectLowerLimit; } } }
54 namespace Aspose { namespace Words { namespace Math { class MathObjectMatrix; } } }
55 namespace Aspose { namespace Words { namespace Math { class MathObjectNAry; } } }
56 namespace Aspose { namespace Words { namespace Math { class MathObjectOMathPara; } } }
57 namespace Aspose { namespace Words { namespace Math { class MathObjectPreSubSuperscript; } } }
58 namespace Aspose { namespace Words { namespace Math { class MathObjectRadical; } } }
59 namespace Aspose { namespace Words { namespace Math { class MathObjectSubscript; } } }
60 namespace Aspose { namespace Words { namespace Math { class MathObjectSubSuperscript; } } }
61 namespace Aspose { namespace Words { namespace Math { class MathObjectSuperscript; } } }
62 namespace Aspose { namespace Words { namespace Math { class MathObjectUpperLimit; } } }
63 namespace Aspose { namespace Words { class NodeCopier; } }
64 namespace Aspose { namespace Words { namespace Layout { namespace Core { class SpanShape; } } } }
65 namespace Aspose { namespace Words { namespace Layout { class DocumentSpanConverter; } } }
66 namespace Aspose { namespace Words { namespace Validation { class MathValidator; } } }
67 namespace Aspose { namespace Words { namespace Validation { class MathObjectMatrixValidator; } } }
68 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Writer { class HtmlCoreWriter; } } } } }
69 namespace Aspose { namespace Words { namespace Validation { class RubyConverter; } } }
70 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Reader { class OdtObjectReader; } } } } }
71 namespace Aspose { namespace Words { namespace RW { namespace Docx { namespace Writer { class DocxDocumentWriterBase; } } } } }
72 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfMathHandler; } } } } }
73 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Reader { class RtfMathPropertiesHandler; } } } } }
74 namespace Aspose { namespace Words { namespace RW { namespace Rtf { namespace Writer { class RtfMathWriter; } } } } }
75 namespace Aspose { namespace Words { namespace RW { namespace Html { namespace Reader { class HtmlReader; } } } } }
76 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtParagraphPropertiesWriter; } } } } }
77 namespace Aspose { namespace Words { namespace RW { namespace Odt { namespace Writer { class OdtWriter; } } } } }
78 namespace Aspose { namespace Words { namespace RW { namespace Wml { namespace Writer { class WmlWriter; } } } } }
79 namespace Aspose { namespace Words { class Paragraph; } }
80 namespace Aspose { namespace Words { class RunPr; } }
81 namespace Aspose { namespace Words { class DocumentBase; } }
82 namespace System { namespace Text { class Encoding; } }
83 namespace Aspose { namespace Words { namespace Revisions { class EditRevision; } } }
84 namespace Aspose { namespace Words { namespace Revisions { class MoveRevision; } } }
85 namespace Aspose { namespace Words { class DocumentVisitor; } }
86 namespace Aspose { namespace Words { namespace Rendering { class OfficeMathRenderer; } } }
87 namespace Aspose { namespace Words { class Node; } }
88 namespace Aspose { namespace Words { class INodeCloningListener; } }
89 namespace Aspose { namespace Words { enum class VisitorAction; } }
90 namespace System { namespace Text { class StringBuilder; } }
91 
92 namespace Aspose {
93 
94 namespace Words {
95 
96 namespace Math {
97 
130 class ASPOSE_WORDS_SHARED_CLASS OfficeMath : public Aspose::Words::CompositeNode, public Aspose::Words::IInline, public Aspose::Words::Revisions::ITrackableNode
131 {
132  typedef OfficeMath ThisType;
134  typedef Aspose::Words::IInline BaseType1;
135  typedef Aspose::Words::Revisions::ITrackableNode BaseType2;
136 
137  typedef ::System::BaseTypesInfo<BaseType, BaseType1, BaseType2> ThisTypeBaseTypesInfo;
138  ASPOSE_WORDS_SHARED_RTTI_INFO_DECL();
139 
140  friend class Aspose::Words::ApsBuilder::Math::MathMatrixRowElement;
141  friend class Aspose::Words::Layout::Core::LayoutShapeOfficeMathAdapter;
142  friend class Aspose::Words::Fields::FieldQuoteUpdater;
143  friend class Aspose::Words::ApsBuilder::Dml::Text::DmlTextShapeToShapeConvertor;
144  friend class Aspose::Words::Math::OfficeMathUtil;
145  friend class Aspose::Words::RW::Nrx::Reader::NrxMathReaderBase;
146  friend class Aspose::Words::RW::MathML::MathMLReadContext;
147  friend class Aspose::Words::Validation::DmlToVml::FallbackShapeValidator;
148  friend class Aspose::Words::ApsBuilder::Math::MathFunctionElement;
149  friend class Aspose::Words::ApsBuilder::Math::MathElement;
150  friend class Aspose::Words::ApsBuilder::Math::MathArrayElement;
151  friend class Aspose::Words::ApsBuilder::Math::MathMatrixElement;
152  friend class Aspose::Words::ApsBuilder::Math::MathBracketElement;
153  friend class Aspose::Words::ApsBuilder::Math::MathGroupCharElement;
154  friend class Aspose::Words::ApsBuilder::Math::MathLimitElement;
155  friend class Aspose::Words::ApsBuilder::Math::MathAccentElement;
156  friend class Aspose::Words::ApsBuilder::Math::MathElementFactory;
157  friend class Aspose::Words::ApsBuilder::Math::MathFractionElement;
158  friend class Aspose::Words::ApsBuilder::Math::MathNaryElement;
159  friend class Aspose::Words::ApsBuilder::Math::MathRadicalElement;
160  friend class Aspose::Words::ApsBuilder::Math::MathScriptElement;
161  friend class Aspose::Words::ApsBuilder::Math::OfficeMathToApsConverter;
162  friend class Aspose::Words::Fields::FieldEQ;
163  friend class Aspose::Words::RW::MathML::MathMLWriter;
164  friend class Aspose::Words::RW::MathML::MathMLReader;
165  friend class Aspose::Words::Fields::FieldToc;
166  friend class Aspose::Words::Math::MathObject;
167  friend class Aspose::Words::Math::MathObjectFraction;
168  friend class Aspose::Words::Math::MathObjectFunction;
169  friend class Aspose::Words::Math::MathObjectLowerLimit;
170  friend class Aspose::Words::Math::MathObjectMatrix;
171  friend class Aspose::Words::Math::MathObjectNAry;
172  friend class Aspose::Words::Math::MathObjectOMathPara;
173  friend class Aspose::Words::Math::MathObjectPreSubSuperscript;
174  friend class Aspose::Words::Math::MathObjectRadical;
175  friend class Aspose::Words::Math::MathObjectSubscript;
176  friend class Aspose::Words::Math::MathObjectSubSuperscript;
177  friend class Aspose::Words::Math::MathObjectSuperscript;
178  friend class Aspose::Words::Math::MathObjectUpperLimit;
179  friend class Aspose::Words::NodeCopier;
180  friend class Aspose::Words::Layout::Core::SpanShape;
181  friend class Aspose::Words::Layout::DocumentSpanConverter;
182  friend class Aspose::Words::Validation::MathValidator;
183  friend class Aspose::Words::Validation::MathObjectMatrixValidator;
184  friend class Aspose::Words::RW::Html::Writer::HtmlCoreWriter;
185  friend class Aspose::Words::Validation::RubyConverter;
186  friend class Aspose::Words::RW::Odt::Reader::OdtObjectReader;
187  friend class Aspose::Words::RW::Docx::Writer::DocxDocumentWriterBase;
188  friend class Aspose::Words::RW::Rtf::Reader::RtfMathHandler;
189  friend class Aspose::Words::RW::Rtf::Reader::RtfMathPropertiesHandler;
190  friend class Aspose::Words::RW::Rtf::Writer::RtfMathWriter;
191  friend class Aspose::Words::RW::Html::Reader::HtmlReader;
192  friend class Aspose::Words::RW::Odt::Writer::OdtParagraphPropertiesWriter;
193  friend class Aspose::Words::RW::Odt::Writer::OdtWriter;
194  friend class Aspose::Words::RW::Wml::Writer::WmlWriter;
195 
196 public:
197  using Aspose::Words::CompositeNode::Clone;
198 
199 public:
200 
226  ASPOSE_WORDS_SHARED_API Aspose::Words::NodeType get_NodeType() const override;
227 
254  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Paragraph> get_ParentParagraph_IInline() override;
255  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::DocumentBase> get_Document_IInline() override;
256  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::RunPr> get_RunPr_IInline() override;
257  ASPOSE_WORDS_SHARED_API void set_RunPr_IInline(System::SharedPtr<Aspose::Words::RunPr> value) override;
258 
357 
385 
388 
421 
424 
456 
458  ASPOSE_WORDS_SHARED_API void set_DisplayType(Aspose::Words::Math::OfficeMathDisplayType value);
459  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Revisions::EditRevision> get_InsertRevision() override;
460  ASPOSE_WORDS_SHARED_API void set_InsertRevision(System::SharedPtr<Aspose::Words::Revisions::EditRevision> value) override;
461  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Revisions::EditRevision> get_DeleteRevision() override;
462  ASPOSE_WORDS_SHARED_API void set_DeleteRevision(System::SharedPtr<Aspose::Words::Revisions::EditRevision> value) override;
463  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Revisions::MoveRevision> get_MoveFromRevision() override;
464  ASPOSE_WORDS_SHARED_API void set_MoveFromRevision(System::SharedPtr<Aspose::Words::Revisions::MoveRevision> value) override;
465  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Revisions::MoveRevision> get_MoveToRevision() override;
466  ASPOSE_WORDS_SHARED_API void set_MoveToRevision(System::SharedPtr<Aspose::Words::Revisions::MoveRevision> value) override;
467 
573  ASPOSE_WORDS_SHARED_API bool Accept(System::SharedPtr<Aspose::Words::DocumentVisitor> visitor) override;
574 
600  ASPOSE_WORDS_SHARED_API System::SharedPtr<System::Object> GetDirectRunAttr(int32_t fontAttr) override;
601  ASPOSE_WORDS_SHARED_API System::SharedPtr<System::Object> FetchInheritedRunAttr(int32_t fontAttr) override;
602  ASPOSE_WORDS_SHARED_API void SetRunAttr(int32_t fontAttr, System::SharedPtr<System::Object> value) override;
603  ASPOSE_WORDS_SHARED_API void RemoveRunAttr(int32_t key) override;
604  ASPOSE_WORDS_SHARED_API void ClearRunAttrs() override;
605  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::RunPr> GetExpandedRunPr_IInline(Aspose::Words::RunPrExpandFlags flags) override;
606  ASPOSE_WORDS_SHARED_API void RemoveMoveRevisions() override;
607 
608 protected:
609 
610  bool get_IsTopLevel();
611  bool get_IsInline();
612  bool get_IsConvertedFromRuby() const;
613  void set_IsConvertedFromRuby(bool value);
614  bool get_IsConvertedFromEQ() const;
615  void set_IsConvertedFromEQ(bool value);
617  void set_MathObject(System::SharedPtr<Aspose::Words::Math::MathObject> value);
618  System::SharedPtr<Aspose::Words::RunPr> get_RunPr() const;
619 
621 
623 
625 
626  MEMBER_FUNCTION_MAKE_OBJECT_DECLARATION(OfficeMath, CODEPORTING_ARGS(System::SharedPtr<Aspose::Words::DocumentBase> doc, System::SharedPtr<Aspose::Words::Math::MathObject> mathObject));
627  ASPOSE_WORDS_SHARED_API System::SharedPtr<Aspose::Words::Node> Clone(bool isCloneChildren, System::SharedPtr<Aspose::Words::INodeCloningListener> cloningListener) override;
628  ASPOSE_WORDS_SHARED_API Aspose::Words::VisitorAction AcceptStart(System::SharedPtr<Aspose::Words::DocumentVisitor> visitor) override;
629  ASPOSE_WORDS_SHARED_API Aspose::Words::VisitorAction AcceptEnd(System::SharedPtr<Aspose::Words::DocumentVisitor> visitor) override;
630  ASPOSE_WORDS_SHARED_API bool CanInsert(System::SharedPtr<Aspose::Words::Node> newChild) override;
632  bool HasDeleteRevision();
633  bool HasInsertRevision();
634  System::String GetId();
635 
636  virtual ASPOSE_WORDS_SHARED_API ~OfficeMath();
637 
638 private:
639 
642  System::SharedPtr<System::Text::Encoding> mEquationXmlEncoding;
643  bool mIsConvertedFromRuby;
644  bool mIsConvertedFromEQ;
645 
646  bool HasRevisableParts();
647  bool AllRevisablePartsHaveDeleteRevisions();
648  bool AllRevisablePartsHaveInsertRevisions();
649  System::String ToStringInternal(System::String indent) const;
650  bool IsRevisable();
652  ThisType* CppMemberwiseClone() const override { return new ThisType(*this); }
653 
654 };
655 
656 }
657 }
658 }