summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKhaled Hosny <khaled@libreoffice.org>2023-09-28 11:46:32 +0300
committerخالد حسني <khaled@libreoffice.org>2023-09-28 14:34:35 +0200
commit0eebe81f9def5f65e797281927e74ae20a4a6564 (patch)
tree3d4bd5d2402925d6416aec5b87227c63407c5e8a
parentff28544c5310870cd98402d89ba53cfa7b7f598d (diff)
starmath: Add Arabic functions
Change-Id: Ie7597cbde29c8b9cd53d591dc9a722e7df76048b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/157361 Tested-by: Jenkins Reviewed-by: خالد حسني <khaled@libreoffice.org>
-rw-r--r--starmath/inc/token.hxx3
-rw-r--r--starmath/source/parse5.cxx33
2 files changed, 34 insertions, 2 deletions
diff --git a/starmath/inc/token.hxx b/starmath/inc/token.hxx
index 8409af89dd8a..eb0de6d23875 100644
--- a/starmath/inc/token.hxx
+++ b/starmath/inc/token.hxx
@@ -84,7 +84,7 @@ enum SmTokenType
TIM, TRE, THBAR, TLAMBDABAR, // Complex and constants
TPLUSMINUS, TMINUSPLUS, TSIM, TSIMEQ, // +- -+ ~ ~=
TLIM, TLIMSUP, TLIMINF, TTOWARD, // Limits
- THADD,
+ THADD, TNAHA,
TOVER, TTIMES, TCDOT, TDIV, // Product type
TSLASH, TBACKSLASH, TWIDESLASH, TWIDEBACKSLASH, //Slash
TFRAC, TIT, // mathml related
@@ -139,6 +139,7 @@ enum SmTokenType
// Function
TFUNC, TLN, TLOG, TEXP, // Exp - Log
TSIN, TCOS, TTAN, TCOT, // Trigo
+ TSEC, TCSC, TSECH, TCSCH,
TSINH, TCOSH, TTANH, TCOTH, // Trigo hyperbolic
TASIN, TACOS, TATAN, TACOT, // Arctrigo
TASINH, TACOSH, TATANH, TACOTH, // Arctrigo hyperbolic
diff --git a/starmath/source/parse5.cxx b/starmath/source/parse5.cxx
index 935d2ba30c68..d2742b27afa6 100644
--- a/starmath/source/parse5.cxx
+++ b/starmath/source/parse5.cxx
@@ -259,7 +259,35 @@ const SmTokenTableEntry aTokenTable[]
{ u"wideslash", TWIDESLASH, MS_SLASH, TG::Product, 0 },
{ u"widetilde", TWIDETILDE, MS_TILDE, TG::Attribute, 5 },
{ u"widevec", TWIDEVEC, MS_VEC, TG::Attribute, 5 },
- { u"wp", TWP, MS_WP, TG::Standalone, 5 } };
+ { u"wp", TWP, MS_WP, TG::Standalone, 5 },
+ { u"جا", TSIN, '\0', TG::Function, 5 },
+ { u"جاز", TSINH, '\0', TG::Function, 5 },
+ { u"جتا", TCOS, '\0', TG::Function, 5 },
+ { u"جتاز", TCOSH, '\0', TG::Function, 5 },
+ { u"حا", TSIN, '\0', TG::Function, 5 },
+ { u"حاز", TSINH, '\0', TG::Function, 5 },
+ { u"حتا", TCOS, '\0', TG::Function, 5 },
+ { u"حتاز", TCOSH, '\0', TG::Function, 5 },
+ { u"حد", THADD, MS_HADD, TG::Oper, 5 },
+ { u"طا", TTAN, '\0', TG::Function, 5 },
+ { u"طاز", TTANH, '\0', TG::Function, 5 },
+ { u"طتا", TCOT, '\0', TG::Function, 5 },
+ { u"طتاز", TCOTH, '\0', TG::Function, 5 },
+ { u"ظا", TTAN, '\0', TG::Function, 5 },
+ { u"ظاز", TTANH, '\0', TG::Function, 5 },
+ { u"ظتا", TCOT, '\0', TG::Function, 5 },
+ { u"ظتاز", TCOTH, '\0', TG::Function, 5 },
+ { u"قا", TSEC, '\0', TG::Function, 5 },
+ { u"قاز", TSECH, '\0', TG::Function, 5 },
+ { u"قتا", TCSC, '\0', TG::Function, 5 },
+ { u"قتاز", TCSCH, '\0', TG::Function, 5 },
+ { u"لو", TLOG, '\0', TG::Function, 5 },
+ { u"مجـ", TSUM, MS_MAJ, TG::Oper, 5 },
+ { u"نها", TNAHA, '\0', TG::Oper, 5 },
+ { u"ٯا", TSEC, '\0', TG::Function, 5 },
+ { u"ٯاز", TSECH, '\0', TG::Function, 5 },
+ { u"ٯتا", TCSC, '\0', TG::Function, 5 },
+ { u"ٯتاز", TCSCH, '\0', TG::Function, 5 } };
// First character may be any alphabetic
const sal_Int32 coStartFlags = KParseTokens::ANY_LETTER | KParseTokens::IGNORE_LEADING_WS;
@@ -1900,10 +1928,13 @@ std::unique_ptr<SmNode> SmParser5::DoOper()
case TLIMSUP:
case TLIMINF:
case THADD:
+ case TNAHA:
if (eType == TLIMSUP)
m_aCurToken.aText = u"lim sup";
else if (eType == TLIMINF)
m_aCurToken.aText = u"lim inf";
+ else if (eType == TNAHA)
+ m_aCurToken.aText = u"نها";
else if (eType == THADD)
m_aCurToken.aText = OUString(&MS_HADD, 1);
else