summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordante <dante19031999@gmail.com>2020-11-15 10:11:16 +0100
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-11-17 13:58:13 +0100
commit0643dab6819bdf248321d27f6b58a2cce125e51c (patch)
treeaf4e2eb9ea2bd598049ed0c588675c948bb1ab15
parent00944232373588fa32bcbb7ce6fcd01204346241 (diff)
Starmath has now full support of HTML colors.
Some of them have been added to the UI ( from Css3 ). There was not a criteria for color picking so I chose those whose name told me something, those I liked and some to have a more complete palette. It would be nice to be able to ask our users whose colors from https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#Color_Keywords they want in the UI. The color names have been left in alphabetical order. Starmathdatabse has clang format. Change-Id: I6ac1bdbc9e3ed10bff75a99b90bf92d3dcdcabcb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105892 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--starmath/inc/parse.hxx2
-rw-r--r--starmath/inc/starmathdatabase.hxx137
-rw-r--r--starmath/inc/strings.hrc22
-rw-r--r--starmath/inc/strings.hxx551
-rw-r--r--starmath/inc/token.hxx2
-rw-r--r--starmath/qa/extras/mmlimport-test.cxx2
-rw-r--r--starmath/source/ElementsDockingWindow.cxx31
-rw-r--r--starmath/source/mathmlimport.cxx4
-rw-r--r--starmath/source/parse.cxx12
-rw-r--r--starmath/source/starmathdatabase.cxx319
-rw-r--r--starmath/source/visitors.cxx25
11 files changed, 779 insertions, 328 deletions
diff --git a/starmath/inc/parse.hxx b/starmath/inc/parse.hxx
index 020d22fb37b4..d7db4772e81c 100644
--- a/starmath/inc/parse.hxx
+++ b/starmath/inc/parse.hxx
@@ -89,7 +89,7 @@ class SmParser
// Moves between tokens inside starmath code.
void NextToken();
- void NextTokenColor();
+ void NextTokenColor(bool dvipload);
void NextTokenFontSize();
sal_Int32 GetTokenIndex() const { return m_nTokenIndex; }
void Replace( sal_Int32 nPos, sal_Int32 nLen, const OUString &rText );
diff --git a/starmath/inc/starmathdatabase.hxx b/starmath/inc/starmathdatabase.hxx
index 31e7f4651285..10e177493e68 100644
--- a/starmath/inc/starmathdatabase.hxx
+++ b/starmath/inc/starmathdatabase.hxx
@@ -43,9 +43,138 @@ constexpr Color COL_SM_BLUE(0x0000FF);
constexpr Color COL_SM_TEAL(0x008080);
constexpr Color COL_SM_AQUA(0x00FFFF);
/* CSS Level 2 */
-// TODO
+constexpr Color COL_SM_ORANGE(0xFFA500);
/* CSS Level 3 */
-// TODO
+constexpr Color COL_SM_ALICEBLUE(0xF0F8FF);
+constexpr Color COL_SM_ANTIQUEWHITE(0xFAEBD7);
+constexpr Color COL_SM_AQUAMARINE(0x7FFFD4);
+constexpr Color COL_SM_AZURE(0xF0FFFF);
+constexpr Color COL_SM_BEIGE(0xF5F5DC);
+constexpr Color COL_SM_BISQUE(0xFFE4C4);
+constexpr Color COL_SM_BLANCHEDALMOND(0xFFEBCD);
+constexpr Color COL_SM_BLUEVIOLET(0x8A2BE2);
+constexpr Color COL_SM_BROWN(0xA52A2A);
+constexpr Color COL_SM_BURLYWOOD(0xDEB887);
+constexpr Color COL_SM_CADETBLUE(0x5F9EA0);
+constexpr Color COL_SM_CHARTREUSE(0x7FFF00);
+constexpr Color COL_SM_CHOCOLATE(0xD2691E);
+constexpr Color COL_SM_CORAL(0xFF7F50);
+constexpr Color COL_SM_CORNFLOWERBLUE(0x6495ED);
+constexpr Color COL_SM_CORNSILK(0xFFF8DC);
+constexpr Color COL_SM_CRIMSON(0xDC143C);
+constexpr Color COL_SM_CYAN(0x00FFFF);
+constexpr Color COL_SM_DARKBLUE(0x00008B);
+constexpr Color COL_SM_DARKCYAN(0x008B8B);
+constexpr Color COL_SM_DARKGOLDENROD(0xB8860B);
+constexpr Color COL_SM_DARKGRAY(0xA9A9A9);
+constexpr Color COL_SM_DARKGREEN(0x006400);
+constexpr Color COL_SM_DARKGREY(0xA9A9A9);
+constexpr Color COL_SM_DARKKHAKI(0xBDB76B);
+constexpr Color COL_SM_DARKMAGENTA(0x8B008B);
+constexpr Color COL_SM_DARKOLIVEGREEN(0x556B2F);
+constexpr Color COL_SM_DARKORANGE(0xFF8C00);
+constexpr Color COL_SM_DARKORCHID(0x9932CC);
+constexpr Color COL_SM_DARKRED(0x8B0000);
+constexpr Color COL_SM_DARKSALMON(0xE9967A);
+constexpr Color COL_SM_DARKSEAGREEN(0x8FBC8F);
+constexpr Color COL_SM_DARKSLATEBLUE(0x483D8B);
+constexpr Color COL_SM_DARKSLATEGRAY(0x2F4F4F);
+constexpr Color COL_SM_DARKSLATEGREY(0x2F4F4F);
+constexpr Color COL_SM_DARKTURQUOISE(0x00CED1);
+constexpr Color COL_SM_DARKVIOLET(0x9400D3);
+constexpr Color COL_SM_DEEPPINK(0xFF1493);
+constexpr Color COL_SM_DEEPSKYBLUE(0x00BFFF);
+constexpr Color COL_SM_DIMGRAY(0x696969);
+constexpr Color COL_SM_DIMGREY(0x696969);
+constexpr Color COL_SM_DODGERBLUE(0x1E90FF);
+constexpr Color COL_SM_FIREBRICK(0xB22222);
+constexpr Color COL_SM_FLORALWHITE(0xFFFAF0);
+constexpr Color COL_SM_FORESTGREEN(0x228B22);
+constexpr Color COL_SM_GAINSBORO(0xDCDCDC);
+constexpr Color COL_SM_GHOSTWHITE(0xF8F8FF);
+constexpr Color COL_SM_GOLD(0xFFD700);
+constexpr Color COL_SM_GOLDENROD(0xDAA520);
+constexpr Color COL_SM_GREENYELLOW(0xADFF2F);
+constexpr Color COL_SM_GREY(0x808080);
+constexpr Color COL_SM_HONEYDEW(0xF0FFF0);
+constexpr Color COL_SM_HOTPINK(0xFF69B4);
+constexpr Color COL_SM_INDIANRED(0xCD5C5C);
+constexpr Color COL_SM_INDIGO(0x4B0082);
+constexpr Color COL_SM_IVORY(0xFFFFF0);
+constexpr Color COL_SM_KHAKI(0xF0E68C);
+constexpr Color COL_SM_LAVENDER(0xE6E6FA);
+constexpr Color COL_SM_LAVENDERBLUSH(0xFFF0F5);
+constexpr Color COL_SM_LAWNGREEN(0x7CFC00);
+constexpr Color COL_SM_LEMONCHIFFON(0xFFFACD);
+constexpr Color COL_SM_LIGHTBLUE(0xADD8E6);
+constexpr Color COL_SM_LIGHTCORAL(0xF08080);
+constexpr Color COL_SM_LIGHTCYAN(0xE0FFFF);
+constexpr Color COL_SM_LIGHTGOLDENRODYELLOW(0xFAFAD2);
+constexpr Color COL_SM_LIGHTGRAY(0xD3D3D3);
+constexpr Color COL_SM_LIGHTGREEN(0x90EE90);
+constexpr Color COL_SM_LIGHTGREY(0xD3D3D3);
+constexpr Color COL_SM_LIGHTPINK(0xFFB6C1);
+constexpr Color COL_SM_LIGHTSALMON(0xFFA07A);
+constexpr Color COL_SM_LIGHTSEAGREEN(0x20B2AA);
+constexpr Color COL_SM_LIGHTSKYBLUE(0x87CEFA);
+constexpr Color COL_SM_LIGHTSLATEGRAY(0x778899);
+constexpr Color COL_SM_LIGHTSLATEGREY(0x778899);
+constexpr Color COL_SM_LIGHTSTEELBLUE(0xB0C4DE);
+constexpr Color COL_SM_LIGHTYELLOW(0xFFFFE0);
+constexpr Color COL_SM_LIMEGREEN(0x32CD32);
+constexpr Color COL_SM_LINEN(0xFAF0E6);
+constexpr Color COL_SM_MAGENTA(0xFF00FF);
+constexpr Color COL_SM_MEDIUMAQUAMARINE(0x66CDAA);
+constexpr Color COL_SM_MEDIUMBLUE(0x0000CD);
+constexpr Color COL_SM_MEDIUMORCHID(0xBA55D3);
+constexpr Color COL_SM_MEDIUMPURPLE(0x9370DB);
+constexpr Color COL_SM_MEDIUMSEAGREEN(0x3CB371);
+constexpr Color COL_SM_MEDIUMSLATEBLUE(0x7B68EE);
+constexpr Color COL_SM_MEDIUMSPRINGGREEN(0x00FA9A);
+constexpr Color COL_SM_MEDIUMTURQUOISE(0x48D1CC);
+constexpr Color COL_SM_MEDIUMVIOLETRED(0xC71585);
+constexpr Color COL_SM_MIDNIGHTBLUE(0x191970);
+constexpr Color COL_SM_MINTCREAM(0xF5FFFA);
+constexpr Color COL_SM_MISTYROSE(0xFFE4E1);
+constexpr Color COL_SM_MOCCASIN(0xFFE4B5);
+constexpr Color COL_SM_NAVAJOWHITE(0xFFDEAD);
+constexpr Color COL_SM_OLDLACE(0xFDF5E6);
+constexpr Color COL_SM_OLIVEDRAB(0x6B8E23);
+constexpr Color COL_SM_ORANGERED(0xFF4500);
+constexpr Color COL_SM_ORCHID(0xDA70D6);
+constexpr Color COL_SM_PALEGOLDENROD(0xEEE8AA);
+constexpr Color COL_SM_PALEGREEN(0x98FB98);
+constexpr Color COL_SM_PALETURQUOISE(0xAFEEEE);
+constexpr Color COL_SM_PALEVIOLETRED(0xDB7093);
+constexpr Color COL_SM_PAPAYAWHIP(0xFFEFD5);
+constexpr Color COL_SM_PEACHPUFF(0xFFDAB9);
+constexpr Color COL_SM_PERU(0xCD853F);
+constexpr Color COL_SM_PINK(0xFFC0CB);
+constexpr Color COL_SM_PLUM(0xDDA0DD);
+constexpr Color COL_SM_POWDERBLUE(0xB0E0E6);
+constexpr Color COL_SM_ROSYBROWN(0xBC8F8F);
+constexpr Color COL_SM_ROYALBLUE(0x4169E1);
+constexpr Color COL_SM_SADDLEBROWN(0x8B4513);
+constexpr Color COL_SM_SALMON(0xFA8072);
+constexpr Color COL_SM_SANDYBROWN(0xF4A460);
+constexpr Color COL_SM_SEAGREEN(0x2E8B57);
+constexpr Color COL_SM_SEASHELL(0xFFF5EE);
+constexpr Color COL_SM_SIENNA(0xA0522D);
+constexpr Color COL_SM_SKYBLUE(0x87CEEB);
+constexpr Color COL_SM_SLATEBLUE(0x6A5ACD);
+constexpr Color COL_SM_SLATEGRAY(0x708090);
+constexpr Color COL_SM_SLATEGREY(0x708090);
+constexpr Color COL_SM_SNOW(0xFFFAFA);
+constexpr Color COL_SM_SPRINGGREEN(0x00FF7F);
+constexpr Color COL_SM_STEELBLUE(0x4682B4);
+constexpr Color COL_SM_TAN(0xD2B48C);
+constexpr Color COL_SM_THISTLE(0xD8BFD8);
+constexpr Color COL_SM_TOMATO(0xFF6347);
+constexpr Color COL_SM_TURQUOISE(0x40E0D0);
+constexpr Color COL_SM_VIOLET(0xEE82EE);
+constexpr Color COL_SM_WHEAT(0xF5DEB3);
+constexpr Color COL_SM_WHITESMOKE(0xF5F5F5);
+constexpr Color COL_SM_YELLOWGREEN(0x9ACD32);
/* CSS Level 4 */
constexpr Color COL_SM_REBECCAPURPLE(0x663399);
/* dvipsnames */
@@ -68,8 +197,8 @@ constexpr Color COL_SM_LO_GREEN(0x00A500);
namespace starmathdatabase
{
// Variables containing color information.
-extern const SmColorTokenTableEntry aColorTokenTableParse[31];
-extern const SmColorTokenTableEntry aColorTokenTableHTML[20];
+extern const SmColorTokenTableEntry aColorTokenTableParse[159];
+extern const SmColorTokenTableEntry aColorTokenTableHTML[148];
extern const SmColorTokenTableEntry aColorTokenTableDVIPSNAMES[5];
/**
diff --git a/starmath/inc/strings.hrc b/starmath/inc/strings.hrc
index c93de7c026d1..499d263a4607 100644
--- a/starmath/inc/strings.hrc
+++ b/starmath/inc/strings.hrc
@@ -205,6 +205,17 @@
#define RID_COLORX_RGB_HELP NC_("RID_COLORX_RGB_HELP", "Color RGB" )
#define RID_COLORX_RGBA_HELP NC_("RID_COLORX_RGBA_HELP", "Color RGBA" )
#define RID_COLORX_HEX_HELP NC_("RID_COLORX_HEX_HELP", "Color hexadecimal" )
+#define RID_COLORX_CORAL_HELP NC_("RID_COLORX_CORAL_HELP", "Color Coral" )
+#define RID_COLORX_CRIMSON_HELP NC_("RID_COLORX_CRIMSON_HELP", "Color Crimson" )
+#define RID_COLORX_MIDNIGHT_HELP NC_("RID_COLORX_MIDNIGHT_HELP", "Color Midnight blue" )
+#define RID_COLORX_VIOLET_HELP NC_("RID_COLORX_VIOLET_HELP", "Color Violet" )
+#define RID_COLORX_ORANGE_HELP NC_("RID_COLORX_ORANGE_HELP", "Color Orange" )
+#define RID_COLORX_ORANGERED_HELP NC_("RID_COLORX_ORANGERED_HELP", "Color Orangered" )
+#define RID_COLORX_SEAGREEN_HELP NC_("RID_COLORX_SEAGREEN_HELP", "Color Seagreen" )
+#define RID_COLORX_INDIGO_HELP NC_("RID_COLORX_INDIGO_HELP", "Color Indigo" )
+#define RID_COLORX_HOTPINK_HELP NC_("RID_COLORX_HOTPINK_HELP", "Color Hot pink" )
+#define RID_COLORX_LAVENDER_HELP NC_("RID_COLORX_LAVENDER_HELP", "Color Lavender" )
+#define RID_COLORX_SNOW_HELP NC_("RID_COLORX_SNOW_HELP", "Color Snow" )
#define RID_LRGROUPX_HELP NC_("RID_LRGROUPX_HELP", "Group Brackets" )
#define RID_LRPARENTX_HELP NC_("RID_LRPARENTX_HELP", "Round Brackets" )
#define RID_LRBRACKETX_HELP NC_("RID_LRBRACKETX_HELP", "Square Brackets" )
@@ -337,6 +348,17 @@
#define STR_SILVER NC_("STR_SILVER", "silver" )
#define STR_TEAL NC_("STR_TEAL", "teal" )
#define STR_YELLOW NC_("STR_YELLOW", "yellow" )
+#define STR_CORAL NC_("STR_CORAL", "coral" )
+#define STR_CRIMSON NC_("STR_CRIMSON", "crimson" )
+#define STR_MIDNIGHT NC_("STR_MIDNIGHT", "midnight" )
+#define STR_VIOLET NC_("STR_VIOLET", "violet" )
+#define STR_ORANGE NC_("STR_ORANGE", "orange" )
+#define STR_ORANGERED NC_("STR_ORANGERED", "orangered" )
+#define STR_LAVENDER NC_("STR_LAVENDER", "lavender" )
+#define STR_SNOW NC_("STR_SNOW", "snow" )
+#define STR_SEAGREEN NC_("STR_SEAGREEN", "seagreen" )
+#define STR_INDIGO NC_("STR_INDIGO", "indigo" )
+#define STR_HOTPINK NC_("STR_HOTPINK", "hotpink" )
#define STR_RGB NC_("STR_RGB", "rgb" )
#define STR_RGBA NC_("STR_RGBA", "rgba" )
#define STR_HEX NC_("STR_HEX", "hex" )
diff --git a/starmath/inc/strings.hxx b/starmath/inc/strings.hxx
index fe537df552b6..15b41ec03dab 100644
--- a/starmath/inc/strings.hxx
+++ b/starmath/inc/strings.hxx
@@ -16,277 +16,288 @@
#ifndef INCLUDED_STARMATH_INC_STRINGS_HXX
#define INCLUDED_STARMATH_INC_STRINGS_HXX
-#define RID_UNDOFORMATNAME "Format"
+#define RID_UNDOFORMATNAME "Format"
-#define RID_PLUSX "+<?> "
-#define RID_MINUSX "-<?> "
-#define RID_PLUSMINUSX "+-<?> "
-#define RID_MINUSPLUSX "-+<?> "
-#define RID_NEGX "neg <?> "
-#define RID_XPLUSY "<?> + <?> "
-#define RID_XMINUSY "<?> - <?> "
-#define RID_XCDOTY "<?> cdot <?> "
-#define RID_XTIMESY "<?> times <?> "
-#define RID_XSYMTIMESY "<?> * <?> "
-#define RID_XSYMDIVIDEY "<?> / <?> "
-#define RID_XDIVY "<?> div <?> "
-#define RID_XOVERY "{<?>} over {<?>} "
-#define RID_FRACXY "frac {<?>} {<?>} "
-#define RID_XODIVIDEY "<?> odivide <?> "
-#define RID_XODOTY "<?> odot <?> "
-#define RID_XOMINUSY "<?> ominus <?> "
-#define RID_XOPLUSY "<?> oplus <?> "
-#define RID_XOTIMESY "<?> otimes <?> "
-#define RID_XANDY "<?> and <?> "
-#define RID_XORY "<?> or <?> "
-#define RID_XEQY "<?> = <?> "
-#define RID_XNEQY "<?> <> <?> "
-#define RID_XLTY "<?> < <?> "
-#define RID_XGTY "<?> > <?> "
-#define RID_XLEY "<?> <= <?> "
-#define RID_XGEY "<?> >= <?> "
-#define RID_XLESLANTY "<?> leslant <?> "
-#define RID_XGESLANTY "<?> geslant <?> "
-#define RID_XLLY "<?> << <?> "
-#define RID_XGGY "<?> >> <?> "
-#define RID_XDEFY "<?> def <?> "
-#define RID_XEQUIVY "<?> equiv <?> "
-#define RID_XAPPROXY "<?> approx <?> "
-#define RID_XSIMY "<?> sim <?> "
-#define RID_XSIMEQY "<?> simeq <?> "
-#define RID_XPROPY "<?> prop <?> "
-#define RID_XORTHOY "<?> ortho <?> "
-#define RID_XPARALLELY "<?> parallel <?> "
-#define RID_XTOWARDY "<?> toward <?> "
-#define RID_XTRANSLY "<?> transl <?> "
-#define RID_XTRANSRY "<?> transr <?> "
-#define RID_XINY "<?> in <?> "
-#define RID_XNOTINY "<?> notin <?> "
-#define RID_XOWNSY "<?> owns <?> "
-#define RID_XUNIONY "<?> union <?> "
-#define RID_XINTERSECTIONY "<?> intersection <?> "
-#define RID_XSETMINUSY "<?> setminus <?> "
-#define RID_XSETQUOTIENTY "<?> setquotient <?> "
-#define RID_XSUBSETY "<?> subset <?> "
-#define RID_XSUBSETEQY "<?> subseteq <?> "
-#define RID_XSUPSETY "<?> supset <?> "
-#define RID_XSUPSETEQY "<?> supseteq <?> "
-#define RID_XNSUBSETY "<?> nsubset <?> "
-#define RID_XNSUBSETEQY "<?> nsubseteq <?> "
-#define RID_XNSUPSETY "<?> nsupset <?> "
-#define RID_XNSUPSETEQY "<?> nsupseteq <?> "
-#define RID_FUNCX "func func(<?>) "
-#define RID_ABSX "abs{<?>} "
-#define RID_FACTX "fact{<?>} "
-#define RID_SQRTX "sqrt{<?>} "
-#define RID_NROOTXY "nroot{<?>}{<?>} "
-#define RID_EX "func e^{<?>} "
-#define RID_EXPX "exp(<?>) "
-#define RID_LNX "ln(<?>) "
-#define RID_LOGX "log(<?>) "
-#define RID_SINX "sin(<?>) "
-#define RID_COSX "cos(<?>) "
-#define RID_TANX "tan(<?>) "
-#define RID_COTX "cot(<?>) "
-#define RID_ARCSINX "arcsin(<?>) "
-#define RID_ARCCOSX "arccos(<?>) "
-#define RID_ARCTANX "arctan(<?>) "
-#define RID_ARCCOTX "arccot(<?>) "
-#define RID_SINHX "sinh(<?>) "
-#define RID_COSHX "cosh(<?>) "
-#define RID_TANHX "tanh(<?>) "
-#define RID_COTHX "coth(<?>) "
-#define RID_ARSINHX "arsinh(<?>) "
-#define RID_ARCOSHX "arcosh(<?>) "
-#define RID_ARTANHX "artanh(<?>) "
-#define RID_ARCOTHX "arcoth(<?>) "
-#define RID_OPERX "oper oper <?> "
-#define RID_OPER_FROMX "oper oper from{<?>} <?> "
-#define RID_OPER_TOX "oper oper to{<?>} <?> "
-#define RID_OPER_FROMTOX "oper oper from{<?>} to{<?>} <?> "
-#define RID_SUMX "sum <?> "
-#define RID_SUM_FROMX "sum from{<?>} <?> "
-#define RID_SUM_TOX "sum to{<?>} <?> "
-#define RID_SUM_FROMTOX "sum from{<?>} to{<?>} <?> "
-#define RID_PRODX "prod <?> "
-#define RID_PROD_FROMX "prod from{<?>} <?> "
-#define RID_PROD_TOX "prod to{<?>} <?> "
-#define RID_PROD_FROMTOX "prod from{<?>} to{<?>} <?> "
-#define RID_COPRODX "coprod <?> "
-#define RID_COPROD_FROMX "coprod from{<?>} <?> "
-#define RID_COPROD_TOX "coprod to{<?>} <?> "
-#define RID_COPROD_FROMTOX "coprod from{<?>} to{<?>} <?> "
-#define RID_LIMX "lim <?> "
-#define RID_LIM_FROMX "lim from{<?>} <?> "
-#define RID_LIM_TOX "lim to{<?>} <?> "
-#define RID_LIM_FROMTOX "lim from{<?>} to{<?>} <?> "
-#define RID_LIMINFX "liminf <?> "
-#define RID_LIMINF_FROMX "liminf from{<?>} <?> "
-#define RID_LIMINF_TOX "liminf to{<?>} <?> "
-#define RID_LIMINF_FROMTOX "liminf from{<?>} to{<?>} <?> "
-#define RID_LIMSUPX "limsup <?> "
-#define RID_LIMSUP_FROMX "limsup from{<?>} <?> "
-#define RID_LIMSUP_TOX "limsup to{<?>} <?> "
-#define RID_LIMSUP_FROMTOX "limsup from{<?>} to{<?>} <?> "
-#define RID_EXISTS "exists "
-#define RID_NOTEXISTS "notexists "
-#define RID_FORALL "forall "
-#define RID_INTX "int <?> "
-#define RID_INT_FROMX "int from{<?>} <?> "
-#define RID_INT_TOX "int to{<?>} <?> "
-#define RID_INT_FROMTOX "int from{<?>} to{<?>} <?> "
-#define RID_IINTX "iint <?> "
-#define RID_IINT_FROMX "iint from{<?>} <?> "
-#define RID_IINT_TOX "iint to{<?>} <?> "
-#define RID_IINT_FROMTOX "iint from{<?>} to{<?>} <?> "
-#define RID_IIINTX "iiint <?> "
-#define RID_IIINT_FROMX "iiint from{<?>} <?> "
-#define RID_IIINT_TOX "iiint to{<?>} <?> "
-#define RID_IIINT_FROMTOX "iiint from{<?>} to{<?>} <?> "
-#define RID_LINTX "lint <?> "
-#define RID_LINT_FROMX "lint from{<?>} <?> "
-#define RID_LINT_TOX "lint to{<?>} <?> "
-#define RID_LINT_FROMTOX "lint from{<?>} to{<?>} <?> "
-#define RID_LLINTX "llint <?> "
-#define RID_LLINT_FROMX "llint from{<?>} <?> "
-#define RID_LLINT_TOX "llint to{<?>} <?> "
-#define RID_LLINT_FROMTOX "llint from{<?>} to{<?>} <?> "
-#define RID_LLLINTX "lllint <?> "
-#define RID_LLLINT_FROMX "lllint from{<?>} <?> "
-#define RID_LLLINT_TOX "lllint to{<?>} <?> "
-#define RID_LLLINT_FROMTOX "lllint from{<?>} to{<?>} <?> "
-#define RID_FROMX "from{<?>} <?> "
-#define RID_TOX "to{<?>} <?> "
-#define RID_FROMXTOY "from{<?>} to{<?>} <?> "
-#define RID_ACUTEX "acute <?> "
-#define RID_BARX "bar <?> "
-#define RID_BREVEX "breve <?> "
-#define RID_CHECKX "check <?> "
-#define RID_CIRCLEX "circle <?> "
-#define RID_DOTX "dot <?> "
-#define RID_DDOTX "ddot <?> "
-#define RID_DDDOTX "dddot <?> "
-#define RID_GRAVEX "grave <?> "
-#define RID_HATX "hat <?> "
-#define RID_TILDEX "tilde <?> "
-#define RID_VECX "vec <?> "
-#define RID_HARPOONX "harpoon <?> "
-#define RID_UNDERLINEX "underline {<?>} "
-#define RID_OVERLINEX "overline {<?>} "
-#define RID_OVERSTRIKEX "overstrike {<?>} "
-#define RID_PHANTOMX "phantom {<?>} "
-#define RID_BOLDX "bold <?> "
-#define RID_ITALX "ital <?> "
-#define RID_SIZEXY "size <?> {<?>} "
-#define RID_FONTXY "font <?> {<?>} "
-#define RID_COLORX_BLACK "color black {<?>} "
-#define RID_COLORX_BLUE "color blue {<?>} "
-#define RID_COLORX_GREEN "color green {<?>} "
-#define RID_COLORX_RED "color red {<?>} "
-#define RID_COLORX_AQUA "color aqua {<?>} "
-#define RID_COLORX_FUCHSIA "color fuchsia {<?>} "
-#define RID_COLORX_GRAY "color gray {<?>} "
-#define RID_COLORX_LIME "color lime {<?>} "
-#define RID_COLORX_MAROON "color maroon {<?>} "
-#define RID_COLORX_NAVY "color navy {<?>} "
-#define RID_COLORX_OLIVE "color olive {<?>} "
-#define RID_COLORX_PURPLE "color purple {<?>} "
-#define RID_COLORX_SILVER "color silver {<?>} "
-#define RID_COLORX_TEAL "color teal {<?>} "
-#define RID_COLORX_YELLOW "color yellow {<?>} "
-#define RID_COLORX_RGB "color rgb 0 0 0 {<?>} "
-#define RID_COLORX_RGBA "color rgba 0 0 0 0 {<?>} "
-#define RID_COLORX_HEX "color hex 000000 {<?>} "
-#define RID_LRGROUPX "{<?>} "
-#define RID_LRPARENTX "(<?>) "
-#define RID_LRBRACKETX "[<?>] "
-#define RID_LRDBRACKETX "ldbracket <?> rdbracket "
-#define RID_LRBRACEX "lbrace <?> rbrace "
-#define RID_LRANGLEX "langle <?> rangle "
-#define RID_LRCEILX "lceil <?> rceil "
-#define RID_LRFLOORX "lfloor <?> rfloor "
-#define RID_LRLINEX "lline <?> rline "
-#define RID_LRDLINEX "ldline <?> rdline "
-#define RID_LMRANGLEXY "langle <?> mline <?> rangle "
-#define RID_SLRPARENTX "left ( <?> right ) "
-#define RID_SLRBRACKETX "left [ <?> right ] "
-#define RID_SLRDBRACKETX "left ldbracket <?> right rdbracket "
-#define RID_SLRBRACEX "left lbrace <?> right rbrace "
-#define RID_SLRANGLEX "left langle <?> right rangle "
-#define RID_SLRCEILX "left lceil <?> right rceil "
-#define RID_SLRFLOORX "left lfloor <?> right rfloor "
-#define RID_SLRLINEX "left lline <?> right rline "
-#define RID_SLRDLINEX "left ldline <?> right rdline "
-#define RID_SLMRANGLEXY "left langle <?> mline <?> right rangle "
-#define RID_XEVALUATEDATY "left none {<?>} right rline_{<?>} "
-#define RID_XOVERBRACEY "{<?>} overbrace {<?>} "
-#define RID_XUNDERBRACEY "{<?>} underbrace {<?>} "
-#define RID_EVALX "evaluate <?> "
-#define RID_EVAL_FROMX "evaluate {<?>} from{<?>} "
-#define RID_EVAL_TOX "evaluate {<?>} to{<?>} "
-#define RID_EVAL_FROMTOX "evaluate {<?>} from{<?>} to{<?>} "
-#define RID_RSUBX "<?>_{<?>}"
-#define RID_RSUPX "<?>^{<?>}"
-#define RID_LSUBX "<?> lsub{<?>} "
-#define RID_LSUPX "<?> lsup{<?>} "
-#define RID_CSUBX "<?> csub{<?>} "
-#define RID_CSUPX "<?> csup{<?>} "
-#define RID_SBLANK "`"
-#define RID_BLANK "~"
-#define RID_NEWLINE "newline "
-#define RID_BINOMXY "binom{<?>}{<?>} "
-#define RID_STACK "stack{<?> # <?> # <?>} "
-#define RID_MATRIX "matrix{<?> # <?> ## <?> # <?>} "
-#define RID_ALIGNLX "alignl <?> "
-#define RID_ALIGNCX "alignc <?> "
-#define RID_ALIGNRX "alignr <?> "
-#define RID_ALEPH "aleph "
-#define RID_EMPTYSET "emptyset "
-#define RID_RE "Re "
-#define RID_IM "Im "
-#define RID_INFINITY "infinity "
-#define RID_PARTIAL "partial "
-#define RID_NABLA "nabla "
-#define RID_WP "wp "
-#define RID_LAPLACE "laplace "
-#define RID_FOURIER "fourier "
-#define RID_DOTSAXIS "dotsaxis "
-#define RID_DOTSUP "dotsup "
-#define RID_DOTSDOWN "dotsdown "
-#define RID_DOTSLOW "dotslow "
-#define RID_DOTSVERT "dotsvert "
-#define RID_XCIRCY "<?> circ <?> "
-#define RID_XWIDESLASHY "{<?>} wideslash {<?>} "
-#define RID_XWIDEBSLASHY "{<?>} widebslash {<?>} "
-#define RID_XDIVIDESY "<?> divides <?> "
-#define RID_XNDIVIDESY "<?> ndivides <?> "
-#define RID_DLARROW "<?> dlarrow <?> "
-#define RID_DLRARROW "<?> dlrarrow <?> "
-#define RID_DRARROW "<?> drarrow <?> "
-#define RID_SETN "setN "
-#define RID_SETZ "setZ "
-#define RID_SETQ "setQ "
-#define RID_SETR "setR "
-#define RID_SETC "setC "
-#define RID_WIDEHATX "widehat {<?>} "
-#define RID_WIDETILDEX "widetilde {<?>} "
-#define RID_WIDEVECX "widevec {<?>} "
-#define RID_WIDEHARPOONX "wideharpoon {<?>} "
-#define RID_HBAR "hbar "
-#define RID_LAMBDABAR "lambdabar "
-#define RID_LEFTARROW "leftarrow "
-#define RID_RIGHTARROW "rightarrow "
-#define RID_UPARROW "uparrow "
-#define RID_DOWNARROW "downarrow "
-#define RID_NOSPACE "nospace {<?>} "
-#define RID_XPRECEDESY "<?> prec <?> "
-#define RID_XPRECEDESEQUALY "<?> preccurlyeq <?> "
-#define RID_XPRECEDESEQUIVY "<?> precsim <?> "
-#define RID_XSUCCEEDSY "<?> succ <?> "
-#define RID_XSUCCEEDSEQUALY "<?> succcurlyeq <?> "
-#define RID_XSUCCEEDSEQUIVY "<?> succsim <?> "
-#define RID_XNOTPRECEDESY "<?> nprec <?> "
-#define RID_XNOTSUCCEEDSY "<?> nsucc <?> "
+#define RID_PLUSX "+<?> "
+#define RID_MINUSX "-<?> "
+#define RID_PLUSMINUSX "+-<?> "
+#define RID_MINUSPLUSX "-+<?> "
+#define RID_NEGX "neg <?> "
+#define RID_XPLUSY "<?> + <?> "
+#define RID_XMINUSY "<?> - <?> "
+#define RID_XCDOTY "<?> cdot <?> "
+#define RID_XTIMESY "<?> times <?> "
+#define RID_XSYMTIMESY "<?> * <?> "
+#define RID_XSYMDIVIDEY "<?> / <?> "
+#define RID_XDIVY "<?> div <?> "
+#define RID_XOVERY "{<?>} over {<?>} "
+#define RID_FRACXY "frac {<?>} {<?>} "
+#define RID_XODIVIDEY "<?> odivide <?> "
+#define RID_XODOTY "<?> odot <?> "
+#define RID_XOMINUSY "<?> ominus <?> "
+#define RID_XOPLUSY "<?> oplus <?> "
+#define RID_XOTIMESY "<?> otimes <?> "
+#define RID_XANDY "<?> and <?> "
+#define RID_XORY "<?> or <?> "
+#define RID_XEQY "<?> = <?> "
+#define RID_XNEQY "<?> <> <?> "
+#define RID_XLTY "<?> < <?> "
+#define RID_XGTY "<?> > <?> "
+#define RID_XLEY "<?> <= <?> "
+#define RID_XGEY "<?> >= <?> "
+#define RID_XLESLANTY "<?> leslant <?> "
+#define RID_XGESLANTY "<?> geslant <?> "
+#define RID_XLLY "<?> << <?> "
+#define RID_XGGY "<?> >> <?> "
+#define RID_XDEFY "<?> def <?> "
+#define RID_XEQUIVY "<?> equiv <?> "
+#define RID_XAPPROXY "<?> approx <?> "
+#define RID_XSIMY "<?> sim <?> "
+#define RID_XSIMEQY "<?> simeq <?> "
+#define RID_XPROPY "<?> prop <?> "
+#define RID_XORTHOY "<?> ortho <?> "
+#define RID_XPARALLELY "<?> parallel <?> "
+#define RID_XTOWARDY "<?> toward <?> "
+#define RID_XTRANSLY "<?> transl <?> "
+#define RID_XTRANSRY "<?> transr <?> "
+#define RID_XINY "<?> in <?> "
+#define RID_XNOTINY "<?> notin <?> "
+#define RID_XOWNSY "<?> owns <?> "
+#define RID_XUNIONY "<?> union <?> "
+#define RID_XINTERSECTIONY "<?> intersection <?> "
+#define RID_XSETMINUSY "<?> setminus <?> "
+#define RID_XSETQUOTIENTY "<?> setquotient <?> "
+#define RID_XSUBSETY "<?> subset <?> "
+#define RID_XSUBSETEQY "<?> subseteq <?> "
+#define RID_XSUPSETY "<?> supset <?> "
+#define RID_XSUPSETEQY "<?> supseteq <?> "
+#define RID_XNSUBSETY "<?> nsubset <?> "
+#define RID_XNSUBSETEQY "<?> nsubseteq <?> "
+#define RID_XNSUPSETY "<?> nsupset <?> "
+#define RID_XNSUPSETEQY "<?> nsupseteq <?> "
+#define RID_FUNCX "func func(<?>) "
+#define RID_ABSX "abs{<?>} "
+#define RID_FACTX "fact{<?>} "
+#define RID_SQRTX "sqrt{<?>} "
+#define RID_NROOTXY "nroot{<?>}{<?>} "
+#define RID_EX "func e^{<?>} "
+#define RID_EXPX "exp(<?>) "
+#define RID_LNX "ln(<?>) "
+#define RID_LOGX "log(<?>) "
+#define RID_SINX "sin(<?>) "
+#define RID_COSX "cos(<?>) "
+#define RID_TANX "tan(<?>) "
+#define RID_COTX "cot(<?>) "
+#define RID_ARCSINX "arcsin(<?>) "
+#define RID_ARCCOSX "arccos(<?>) "
+#define RID_ARCTANX "arctan(<?>) "
+#define RID_ARCCOTX "arccot(<?>) "
+#define RID_SINHX "sinh(<?>) "
+#define RID_COSHX "cosh(<?>) "
+#define RID_TANHX "tanh(<?>) "
+#define RID_COTHX "coth(<?>) "
+#define RID_ARSINHX "arsinh(<?>) "
+#define RID_ARCOSHX "arcosh(<?>) "
+#define RID_ARTANHX "artanh(<?>) "
+#define RID_ARCOTHX "arcoth(<?>) "
+#define RID_OPERX "oper oper <?> "
+#define RID_OPER_FROMX "oper oper from{<?>} <?> "
+#define RID_OPER_TOX "oper oper to{<?>} <?> "
+#define RID_OPER_FROMTOX "oper oper from{<?>} to{<?>} <?> "
+#define RID_SUMX "sum <?> "
+#define RID_SUM_FROMX "sum from{<?>} <?> "
+#define RID_SUM_TOX "sum to{<?>} <?> "
+#define RID_SUM_FROMTOX "sum from{<?>} to{<?>} <?> "
+#define RID_PRODX "prod <?> "
+#define RID_PROD_FROMX "prod from{<?>} <?> "
+#define RID_PROD_TOX "prod to{<?>} <?> "
+#define RID_PROD_FROMTOX "prod from{<?>} to{<?>} <?> "
+#define RID_COPRODX "coprod <?> "
+#define RID_COPROD_FROMX "coprod from{<?>} <?> "
+#define RID_COPROD_TOX "coprod to{<?>} <?> "
+#define RID_COPROD_FROMTOX "coprod from{<?>} to{<?>} <?> "
+#define RID_LIMX "lim <?> "
+#define RID_LIM_FROMX "lim from{<?>} <?> "
+#define RID_LIM_TOX "lim to{<?>} <?> "
+#define RID_LIM_FROMTOX "lim from{<?>} to{<?>} <?> "
+#define RID_LIMINFX "liminf <?> "
+#define RID_LIMINF_FROMX "liminf from{<?>} <?> "
+#define RID_LIMINF_TOX "liminf to{<?>} <?> "
+#define RID_LIMINF_FROMTOX "liminf from{<?>} to{<?>} <?> "
+#define RID_LIMSUPX "limsup <?> "
+#define RID_LIMSUP_FROMX "limsup from{<?>} <?> "
+#define RID_LIMSUP_TOX "limsup to{<?>} <?> "
+#define RID_LIMSUP_FROMTOX "limsup from{<?>} to{<?>} <?> "
+#define RID_EXISTS "exists "
+#define RID_NOTEXISTS "notexists "
+#define RID_FORALL "forall "
+#define RID_INTX "int <?> "
+#define RID_INT_FROMX "int from{<?>} <?> "
+#define RID_INT_TOX "int to{<?>} <?> "
+#define RID_INT_FROMTOX "int from{<?>} to{<?>} <?> "
+#define RID_IINTX "iint <?> "
+#define RID_IINT_FROMX "iint from{<?>} <?> "
+#define RID_IINT_TOX "iint to{<?>} <?> "
+#define RID_IINT_FROMTOX "iint from{<?>} to{<?>} <?> "
+#define RID_IIINTX "iiint <?> "
+#define RID_IIINT_FROMX "iiint from{<?>} <?> "
+#define RID_IIINT_TOX "iiint to{<?>} <?> "
+#define RID_IIINT_FROMTOX "iiint from{<?>} to{<?>} <?> "
+#define RID_LINTX "lint <?> "
+#define RID_LINT_FROMX "lint from{<?>} <?> "
+#define RID_LINT_TOX "lint to{<?>} <?> "
+#define RID_LINT_FROMTOX "lint from{<?>} to{<?>} <?> "
+#define RID_LLINTX "llint <?> "
+#define RID_LLINT_FROMX "llint from{<?>} <?> "
+#define RID_LLINT_TOX "llint to{<?>} <?> "
+#define RID_LLINT_FROMTOX "llint from{<?>} to{<?>} <?> "
+#define RID_LLLINTX "lllint <?> "
+#define RID_LLLINT_FROMX "lllint from{<?>} <?> "
+#define RID_LLLINT_TOX "lllint to{<?>} <?> "
+#define RID_LLLINT_FROMTOX "lllint from{<?>} to{<?>} <?> "
+#define RID_FROMX "from{<?>} <?> "
+#define RID_TOX "to{<?>} <?> "
+#define RID_FROMXTOY "from{<?>} to{<?>} <?> "
+#define RID_ACUTEX "acute <?> "
+#define RID_BARX "bar <?> "
+#define RID_BREVEX "breve <?> "
+#define RID_CHECKX "check <?> "
+#define RID_CIRCLEX "circle <?> "
+#define RID_DOTX "dot <?> "
+#define RID_DDOTX "ddot <?> "
+#define RID_DDDOTX "dddot <?> "
+#define RID_GRAVEX "grave <?> "
+#define RID_HATX "hat <?> "
+#define RID_TILDEX "tilde <?> "
+#define RID_VECX "vec <?> "
+#define RID_HARPOONX "harpoon <?> "
+#define RID_UNDERLINEX "underline {<?>} "
+#define RID_OVERLINEX "overline {<?>} "
+#define RID_OVERSTRIKEX "overstrike {<?>} "
+#define RID_PHANTOMX "phantom {<?>} "
+#define RID_BOLDX "bold <?> "
+#define RID_ITALX "ital <?> "
+#define RID_SIZEXY "size <?> {<?>} "
+#define RID_FONTXY "font <?> {<?>} "
+#define RID_COLORX_BLACK "color black {<?>} "
+#define RID_COLORX_BLUE "color blue {<?>} "
+#define RID_COLORX_GREEN "color green {<?>} "
+#define RID_COLORX_RED "color red {<?>} "
+#define RID_COLORX_AQUA "color aqua {<?>} "
+#define RID_COLORX_FUCHSIA "color fuchsia {<?>} "
+#define RID_COLORX_GRAY "color gray {<?>} "
+#define RID_COLORX_LIME "color lime {<?>} "
+#define RID_COLORX_MAROON "color maroon {<?>} "
+#define RID_COLORX_NAVY "color navy {<?>} "
+#define RID_COLORX_OLIVE "color olive {<?>} "
+#define RID_COLORX_PURPLE "color purple {<?>} "
+#define RID_COLORX_SILVER "color silver {<?>} "
+#define RID_COLORX_TEAL "color teal {<?>} "
+#define RID_COLORX_YELLOW "color yellow {<?>} "
+#define RID_COLORX_RGB "color rgb 0 0 0 {<?>} "
+#define RID_COLORX_RGBA "color rgba 0 0 0 0 {<?>} "
+#define RID_COLORX_HEX "color hex 000000 {<?>} "
+#define RID_COLORX_CORAL "color coral {<?>} "
+#define RID_COLORX_CRIMSON "color crimson {<?>} "
+#define RID_COLORX_MIDNIGHT "color mignightblue {<?>} "
+#define RID_COLORX_VIOLET "color violet {<?>} "
+#define RID_COLORX_ORANGE "color orange {<?>} "
+#define RID_COLORX_ORANGERED "color orangered {<?>} "
+#define RID_COLORX_SEAGREEN "color seagreen {<?>} "
+#define RID_COLORX_INDIGO "color indigo {<?>} "
+#define RID_COLORX_HOTPINK "color hotpink {<?>} "
+#define RID_COLORX_LAVENDER "color lavender {<?>} "
+#define RID_COLORX_SNOW "color snow {<?>} "
+#define RID_LRGROUPX "{<?>} "
+#define RID_LRPARENTX "(<?>) "
+#define RID_LRBRACKETX "[<?>] "
+#define RID_LRDBRACKETX "ldbracket <?> rdbracket "
+#define RID_LRBRACEX "lbrace <?> rbrace "
+#define RID_LRANGLEX "langle <?> rangle "
+#define RID_LRCEILX "lceil <?> rceil "
+#define RID_LRFLOORX "lfloor <?> rfloor "
+#define RID_LRLINEX "lline <?> rline "
+#define RID_LRDLINEX "ldline <?> rdline "
+#define RID_LMRANGLEXY "langle <?> mline <?> rangle "
+#define RID_SLRPARENTX "left ( <?> right ) "
+#define RID_SLRBRACKETX "left [ <?> right ] "
+#define RID_SLRDBRACKETX "left ldbracket <?> right rdbracket "
+#define RID_SLRBRACEX "left lbrace <?> right rbrace "
+#define RID_SLRANGLEX "left langle <?> right rangle "
+#define RID_SLRCEILX "left lceil <?> right rceil "
+#define RID_SLRFLOORX "left lfloor <?> right rfloor "
+#define RID_SLRLINEX "left lline <?> right rline "
+#define RID_SLRDLINEX "left ldline <?> right rdline "
+#define RID_SLMRANGLEXY "left langle <?> mline <?> right rangle "
+#define RID_XEVALUATEDATY "left none {<?>} right rline_{<?>} "
+#define RID_XOVERBRACEY "{<?>} overbrace {<?>} "
+#define RID_XUNDERBRACEY "{<?>} underbrace {<?>} "
+#define RID_EVALX "evaluate <?> "
+#define RID_EVAL_FROMX "evaluate {<?>} from{<?>} "
+#define RID_EVAL_TOX "evaluate {<?>} to{<?>} "
+#define RID_EVAL_FROMTOX "evaluate {<?>} from{<?>} to{<?>} "
+#define RID_RSUBX "<?>_{<?>} "
+#define RID_RSUPX "<?>^{<?>} "
+#define RID_LSUBX "<?> lsub{<?>} "
+#define RID_LSUPX "<?> lsup{<?>} "
+#define RID_CSUBX "<?> csub{<?>} "
+#define RID_CSUPX "<?> csup{<?>} "
+#define RID_SBLANK "` "
+#define RID_BLANK "~ "
+#define RID_NEWLINE "newline "
+#define RID_BINOMXY "binom{<?>}{<?>} "
+#define RID_STACK "stack{<?> # <?> # <?>} "
+#define RID_MATRIX "matrix{<?> # <?> ## <?> # <?>} "
+#define RID_ALIGNLX "alignl <?> "
+#define RID_ALIGNCX "alignc <?> "
+#define RID_ALIGNRX "alignr <?> "
+#define RID_ALEPH "aleph "
+#define RID_EMPTYSET "emptyset "
+#define RID_RE "Re "
+#define RID_IM "Im "
+#define RID_INFINITY "infinity "
+#define RID_PARTIAL "partial "
+#define RID_NABLA "nabla "
+#define RID_WP "wp "
+#define RID_LAPLACE "laplace "
+#define RID_FOURIER "fourier "
+#define RID_DOTSAXIS "dotsaxis "
+#define RID_DOTSUP "dotsup "
+#define RID_DOTSDOWN "dotsdown "
+#define RID_DOTSLOW "dotslow "
+#define RID_DOTSVERT "dotsvert "
+#define RID_XCIRCY "<?> circ <?> "
+#define RID_XWIDESLASHY "{<?>} wideslash {<?>} "
+#define RID_XWIDEBSLASHY "{<?>} widebslash {<?>} "
+#define RID_XDIVIDESY "<?> divides <?> "
+#define RID_XNDIVIDESY "<?> ndivides <?> "
+#define RID_DLARROW "<?> dlarrow <?> "
+#define RID_DLRARROW "<?> dlrarrow <?> "
+#define RID_DRARROW "<?> drarrow <?> "
+#define RID_SETN "setN "
+#define RID_SETZ "setZ "
+#define RID_SETQ "setQ "
+#define RID_SETR "setR "
+#define RID_SETC "setC "
+#define RID_WIDEHATX "widehat {<?>} "
+#define RID_WIDETILDEX "widetilde {<?>} "
+#define RID_WIDEVECX "widevec {<?>} "
+#define RID_WIDEHARPOONX "wideharpoon {<?>} "
+#define RID_HBAR "hbar "
+#define RID_LAMBDABAR "lambdabar "
+#define RID_LEFTARROW "leftarrow "
+#define RID_RIGHTARROW "rightarrow "
+#define RID_UPARROW "uparrow "
+#define RID_DOWNARROW "downarrow "
+#define RID_NOSPACE "nospace {<?>} "
+#define RID_XPRECEDESY "<?> prec <?> "
+#define RID_XPRECEDESEQUALY "<?> preccurlyeq <?> "
+#define RID_XPRECEDESEQUIVY "<?> precsim <?> "
+#define RID_XSUCCEEDSY "<?> succ <?> "
+#define RID_XSUCCEEDSEQUALY "<?> succcurlyeq <?> "
+#define RID_XSUCCEEDSEQUIVY "<?> succsim <?> "
+#define RID_XNOTPRECEDESY "<?> nprec <?> "
+#define RID_XNOTSUCCEEDSY "<?> nsucc <?> "
#endif
diff --git a/starmath/inc/token.hxx b/starmath/inc/token.hxx
index 0c3788fd8966..da33c818105b 100644
--- a/starmath/inc/token.hxx
+++ b/starmath/inc/token.hxx
@@ -64,6 +64,7 @@ namespace o3tl {
// Tokens identifiers. Allow to know what kind of information the node contains.
enum SmTokenType
{
+ // clang-format off
// Uncategorized
TEND, TSPECIAL, TNONE, TESCAPE, TUNKNOWN,
TBLANK, TSBLANK, TPLACE, TNOSPACE, TDOTSDOWN,
@@ -139,6 +140,7 @@ enum SmTokenType
// Color
TRGB, TRGBA, THEX, THTMLCOL, TDVIPSNAMESCOL,
TICONICCOL
+ // clang-format on
};
struct SmTokenTableEntry
diff --git a/starmath/qa/extras/mmlimport-test.cxx b/starmath/qa/extras/mmlimport-test.cxx
index 80b608757618..b31fd1676102 100644
--- a/starmath/qa/extras/mmlimport-test.cxx
+++ b/starmath/qa/extras/mmlimport-test.cxx
@@ -148,7 +148,7 @@ void Test::testtdf99556()
void Test::testTdf103430()
{
loadURL(m_directories.getURLFromSrc("starmath/qa/extras/data/tdf103430.mml"));
- CPPUNIT_ASSERT_EQUAL(OUString("frac { { nitalic d ^ 2 nitalic color blue y } } { { color apricot nitalic d font sans bold italic color red x } }"),
+ CPPUNIT_ASSERT_EQUAL(OUString("frac { { nitalic d ^ 2 nitalic color blue y } } { { color dvip apricot nitalic d font sans bold italic color red x } }"),
mxDocShell->GetText());
}
diff --git a/starmath/source/ElementsDockingWindow.cxx b/starmath/source/ElementsDockingWindow.cxx
index 63edc2c2bf56..da7a6c10b343 100644
--- a/starmath/source/ElementsDockingWindow.cxx
+++ b/starmath/source/ElementsDockingWindow.cxx
@@ -191,7 +191,14 @@ const SmElementDescr SmElementsControl::m_aAttributesList[] =
{RID_COLORX_NAVY, RID_COLORX_NAVY_HELP}, {RID_COLORX_OLIVE, RID_COLORX_OLIVE_HELP},
{RID_COLORX_PURPLE, RID_COLORX_PURPLE_HELP}, {RID_COLORX_SILVER, RID_COLORX_SILVER_HELP},
{RID_COLORX_TEAL, RID_COLORX_TEAL_HELP},{RID_COLORX_RGB, RID_COLORX_RGB_HELP},
- {RID_COLORX_HEX, RID_COLORX_HEX_HELP}
+ {RID_COLORX_HEX, RID_COLORX_HEX_HELP},
+ {nullptr, nullptr},
+ {RID_COLORX_CORAL, RID_COLORX_CORAL_HELP}, {RID_COLORX_MIDNIGHT, RID_COLORX_MIDNIGHT_HELP},
+ {RID_COLORX_CRIMSON, RID_COLORX_CRIMSON_HELP}, {RID_COLORX_VIOLET, RID_COLORX_VIOLET_HELP},
+ {RID_COLORX_ORANGE, RID_COLORX_ORANGE_HELP}, {RID_COLORX_ORANGERED, RID_COLORX_ORANGERED_HELP},
+ {RID_COLORX_SEAGREEN, RID_COLORX_SEAGREEN_HELP}, {RID_COLORX_INDIGO, RID_COLORX_INDIGO_HELP},
+ {RID_COLORX_HOTPINK, RID_COLORX_HOTPINK_HELP}, {RID_COLORX_LAVENDER, RID_COLORX_LAVENDER_HELP},
+ {RID_COLORX_SNOW, RID_COLORX_SNOW_HELP},
};
const SmElementDescr SmElementsControl::m_aBracketsList[] =
@@ -933,6 +940,28 @@ void SmElementsControl::addElements(const SmElementDescr aElementsArray[], sal_u
addElement(aParser, "color silver { \"" + SmResId(STR_SILVER) + "\" }", aElement, SmResId(pElementHelp));
else if (aElement == RID_COLORX_TEAL)
addElement(aParser, "color teal { \"" + SmResId(STR_TEAL) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_CORAL)
+ addElement(aParser, "color coral { \"" + SmResId(STR_CORAL) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_CRIMSON)
+ addElement(aParser, "color crimson { \"" + SmResId(STR_CRIMSON) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_MIDNIGHT)
+ addElement(aParser, "color midnightblue { \"" + SmResId(STR_MIDNIGHT) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_VIOLET)
+ addElement(aParser, "color violet { \"" + SmResId(STR_VIOLET) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_ORANGE)
+ addElement(aParser, "color orange { \"" + SmResId(STR_ORANGE) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_ORANGERED)
+ addElement(aParser, "color orangered { \"" + SmResId(STR_ORANGERED) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_SEAGREEN)
+ addElement(aParser, "color seagreen { \"" + SmResId(STR_SEAGREEN) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_INDIGO)
+ addElement(aParser, "color indigo { \"" + SmResId(STR_INDIGO) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_HOTPINK)
+ addElement(aParser, "color hotpink { \"" + SmResId(STR_HOTPINK) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_SNOW)
+ addElement(aParser, "color snow { \"" + SmResId(STR_SNOW) + "\" }", aElement, SmResId(pElementHelp));
+ else if (aElement == RID_COLORX_LAVENDER)
+ addElement(aParser, "color lavender { \"" + SmResId(STR_LAVENDER) + "\" }", aElement, SmResId(pElementHelp));
else if (aElement == RID_COLORX_RGB)
addElement(aParser, "color rgb 0 0 0 { \"" + SmResId(STR_RGB) + "\" }", aElement, SmResId(pElementHelp));
else if (aElement == RID_COLORX_RGBA)
diff --git a/starmath/source/mathmlimport.cxx b/starmath/source/mathmlimport.cxx
index 7a3ca34b9a5a..543a8d02fcb2 100644
--- a/starmath/source/mathmlimport.cxx
+++ b/starmath/source/mathmlimport.cxx
@@ -698,7 +698,9 @@ void SmXMLContext_Helper::ApplyAttrs()
{
std::unique_ptr<SmColorTokenTableEntry> aSmColorTokenTableEntry;
aSmColorTokenTableEntry = starmathdatabase::Identify_ColorName_HTML( sColor );
- if( aSmColorTokenTableEntry )
+ if( aSmColorTokenTableEntry->eType == TRGB )
+ aSmColorTokenTableEntry = starmathdatabase::Identify_Color_Parser( sal_uInt32(aSmColorTokenTableEntry->cColor) );
+ if( aSmColorTokenTableEntry->eType != TERROR )
{
aToken = aSmColorTokenTableEntry;
std::unique_ptr<SmFontNode> pFontNode(new SmFontNode(aToken));
diff --git a/starmath/source/parse.cxx b/starmath/source/parse.cxx
index 86864bd612b2..4ac26866e07c 100644
--- a/starmath/source/parse.cxx
+++ b/starmath/source/parse.cxx
@@ -954,7 +954,7 @@ void SmParser::NextToken() //Central part of the parser
m_nBufferIndex = aRes.EndPos;
}
-void SmParser::NextTokenColor()
+void SmParser::NextTokenColor(bool dvipload)
{
sal_Int32 nBufLen = m_aBufferString.getLength();
@@ -1008,9 +1008,9 @@ void SmParser::NextTokenColor()
assert(n >= 0);
OUString aName( m_aBufferString.copy( nRealStart, n ) );
std::unique_ptr<SmColorTokenTableEntry> aSmColorTokenTableEntry;
- aSmColorTokenTableEntry = starmathdatabase::Identify_ColorName_Parser( aName );
- if ( aSmColorTokenTableEntry ) m_aCurToken = aSmColorTokenTableEntry;
- else m_aCurToken.eType = TNONE;
+ if(dvipload) aSmColorTokenTableEntry = starmathdatabase::Identify_ColorName_DVIPSNAMES( aName );
+ else aSmColorTokenTableEntry = starmathdatabase::Identify_ColorName_Parser( aName );
+ m_aCurToken = aSmColorTokenTableEntry;
}
else if (aRes.TokenType & KParseType::ONE_SINGLE_CHAR)
{
@@ -2085,9 +2085,11 @@ std::unique_ptr<SmStructureNode> SmParser::DoColor()
if (aDepthGuard.TooDeep()) throw std::range_error("parser depth limit");
assert(m_aCurToken.eType == TCOLOR);
- NextTokenColor();
+ NextTokenColor(false);
SmToken aToken;
+ if( m_aCurToken.eType == TDVIPSNAMESCOL ) NextTokenColor(true);
+ if( m_aCurToken.eType == TERROR ) return DoError(SmParseError::ColorExpected);
if (TokenInGroup(TG::Color))
{
aToken = m_aCurToken;
diff --git a/starmath/source/starmathdatabase.cxx b/starmath/source/starmathdatabase.cxx
index ecab361f73c0..90a29c62db6c 100644
--- a/starmath/source/starmathdatabase.cxx
+++ b/starmath/source/starmathdatabase.cxx
@@ -358,72 +358,328 @@ SmToken starmathdatabase::Identify_PrefixPostfix_SmXMLOperatorContext_Impl(sal_U
}
const SmColorTokenTableEntry starmathdatabase::aColorTokenTableParse[]
- = { { "apricot", "Apricot", TDVIPSNAMESCOL, COL_SM_DIV_APRICOT },
+ = { { "aliceblue", "aliceblue", THTMLCOL, COL_SM_ALICEBLUE },
+ { "antiquewhite", "antiquewhite", THTMLCOL, COL_SM_ANTIQUEWHITE },
{ "aqua", "aqua", THTMLCOL, COL_SM_AQUA },
- { "aquamarine", "Aquamarine", TDVIPSNAMESCOL, COL_SM_DIV_AQUAMARINE },
- { "bittersweet", "Bittersweet", TDVIPSNAMESCOL, COL_SM_DIV_BITTERSWEET },
+ { "aquamarine", "aquamarine", THTMLCOL, COL_SM_AQUAMARINE },
+ { "azure", "azure", THTMLCOL, COL_SM_AZURE },
+ { "beige", "beige", THTMLCOL, COL_SM_BEIGE },
+ { "bisque", "bisque", THTMLCOL, COL_SM_BISQUE },
{ "black", "black", THTMLCOL, COL_SM_BLACK },
+ { "blanchedalmond", "blanchedalmond", THTMLCOL, COL_SM_BLANCHEDALMOND },
{ "blue", "blue", THTMLCOL, COL_SM_BLUE },
- { "cyan", "cyan", THTMLCOL, COL_SM_BLACK },
+ { "blueviolet", "blueviolet", THTMLCOL, COL_SM_BLUEVIOLET },
+ { "brown", "brown", THTMLCOL, COL_SM_BROWN },
+ { "burlywood", "burlywood", THTMLCOL, COL_SM_BURLYWOOD },
+ { "cadetblue", "cadetblue", THTMLCOL, COL_SM_CADETBLUE },
+ { "chartreuse", "chartreuse", THTMLCOL, COL_SM_CHARTREUSE },
+ { "chocolate", "chocolate", THTMLCOL, COL_SM_CHOCOLATE },
+ { "coral", "coral", THTMLCOL, COL_SM_CORAL },
+ { "cornflowerblue", "cornflowerblue", THTMLCOL, COL_SM_CORNFLOWERBLUE },
+ { "cornsilk", "cornsilk", THTMLCOL, COL_SM_CORNSILK },
+ { "crimson", "crimson", THTMLCOL, COL_SM_CRIMSON },
+ { "cyan", "cyan", THTMLCOL, COL_SM_CYAN },
+ { "darkblue", "darkblue", THTMLCOL, COL_SM_DARKBLUE },
+ { "darkcyan", "darkcyan", THTMLCOL, COL_SM_DARKCYAN },
+ { "darkgoldenrod", "darkgoldenrod", THTMLCOL, COL_SM_DARKGOLDENROD },
+ { "darkgray", "darkgray", THTMLCOL, COL_SM_DARKGRAY },
+ { "darkgreen", "darkgreen", THTMLCOL, COL_SM_DARKGREEN },
+ { "darkgrey", "darkgrey", THTMLCOL, COL_SM_DARKGREY },
+ { "darkkhaki", "darkkhaki", THTMLCOL, COL_SM_DARKKHAKI },
+ { "darkmagenta", "darkmagenta", THTMLCOL, COL_SM_DARKMAGENTA },
+ { "darkolivegreen", "darkolivegreen", THTMLCOL, COL_SM_DARKOLIVEGREEN },
+ { "darkorange", "darkorange", THTMLCOL, COL_SM_DARKORANGE },
+ { "darkorchid", "darkorchid", THTMLCOL, COL_SM_DARKORCHID },
+ { "darkred", "darkred", THTMLCOL, COL_SM_DARKRED },
+ { "darksalmon", "darksalmon", THTMLCOL, COL_SM_DARKSALMON },
+ { "darkseagreen", "darkseagreen", THTMLCOL, COL_SM_DARKSEAGREEN },
+ { "darkslateblue", "darkslateblue", THTMLCOL, COL_SM_DARKSLATEBLUE },
+ { "darkslategray", "darkslategray", THTMLCOL, COL_SM_DARKSLATEGRAY },
+ { "darkslategrey", "darkslategrey", THTMLCOL, COL_SM_DARKSLATEGREY },
+ { "darkturquoise", "darkturquoise", THTMLCOL, COL_SM_DARKTURQUOISE },
+ { "darkviolet", "darkviolet", THTMLCOL, COL_SM_DARKVIOLET },
{ "debian", "", TICONICCOL, COL_SM_DEBIAN_MAGENTA },
- { "dblack", "Black", TDVIPSNAMESCOL, COL_SM_BLACK },
- { "dblue", "Blue", TDVIPSNAMESCOL, COL_SM_BLACK },
+ { "deeppink", "deeppink", THTMLCOL, COL_SM_DEEPPINK },
+ { "deepskyblue", "deepskyblue", THTMLCOL, COL_SM_DEEPSKYBLUE },
+ { "dimgray", "dimgray", THTMLCOL, COL_SM_DIMGRAY },
+ { "dimgrey", "dimgrey", THTMLCOL, COL_SM_DIMGREY },
+ { "dodgerblue", "dodgerblue", THTMLCOL, COL_SM_DODGERBLUE },
+ { "dvip", "dvip", TDVIPSNAMESCOL, COL_SM_BLACK },
+ { "firebrick", "firebrick", THTMLCOL, COL_SM_FIREBRICK },
+ { "floralwhite", "floralwhite", THTMLCOL, COL_SM_FLORALWHITE },
+ { "forestgreen", "forestgreen", THTMLCOL, COL_SM_FORESTGREEN },
{ "fuchsia", "fuchsia", THTMLCOL, COL_SM_FUCHSIA },
+ { "gainsboro", "gainsboro", THTMLCOL, COL_SM_GAINSBORO },
+ { "ghostwhite", "ghostwhite", THTMLCOL, COL_SM_GHOSTWHITE },
+ { "gold", "gold", THTMLCOL, COL_SM_GOLD },
+ { "goldenrod", "goldenrod", THTMLCOL, COL_SM_GOLDENROD },
{ "gray", "gray", THTMLCOL, COL_SM_GRAY },
{ "green", "green", THTMLCOL, COL_SM_GREEN },
+ { "greenyellow", "greenyellow", THTMLCOL, COL_SM_GREENYELLOW },
+ { "grey", "grey", THTMLCOL, COL_SM_GREY },
{ "hex", "hex", THEX, COL_SM_BLACK },
+ { "honeydew", "honeydew", THTMLCOL, COL_SM_HONEYDEW },
+ { "hotpink", "hotpink", THTMLCOL, COL_SM_HOTPINK },
+ { "indianred", "indianred", THTMLCOL, COL_SM_INDIANRED },
+ { "indigo", "indigo", THTMLCOL, COL_SM_INDIGO },
+ { "ivory", "ivory", THTMLCOL, COL_SM_IVORY },
+ { "khaki", "khaki", THTMLCOL, COL_SM_KHAKI },
+ { "lavender", "lavender", THTMLCOL, COL_SM_LAVENDER },
+ { "lavenderblush", "lavenderblush", THTMLCOL, COL_SM_LAVENDERBLUSH },
+ { "lawngreen", "lawngreen", THTMLCOL, COL_SM_LAWNGREEN },
+ { "lemonchiffon", "lemonchiffon", THTMLCOL, COL_SM_LEMONCHIFFON },
+ { "lightblue", "lightblue", THTMLCOL, COL_SM_LIGHTBLUE },
+ { "lightcoral", "lightcoral", THTMLCOL, COL_SM_LIGHTCORAL },
+ { "lightcyan", "lightcyan", THTMLCOL, COL_SM_LIGHTCYAN },
+ { "lightgoldenrodyellow", "lightgoldenrodyellow", THTMLCOL, COL_SM_LIGHTGOLDENRODYELLOW },
+ { "lightgray", "lightgray", THTMLCOL, COL_SM_LIGHTGRAY },
+ { "lightgreen", "lightgreen", THTMLCOL, COL_SM_LIGHTGREEN },
+ { "lightgrey", "lightgrey", THTMLCOL, COL_SM_LIGHTGREY },
+ { "lightpink", "lightpink", THTMLCOL, COL_SM_LIGHTPINK },
+ { "lightsalmon", "lightsalmon", THTMLCOL, COL_SM_LIGHTSALMON },
+ { "lightseagreen", "lightseagreen", THTMLCOL, COL_SM_LIGHTSEAGREEN },
+ { "lightskyblue", "lightskyblue", THTMLCOL, COL_SM_LIGHTSKYBLUE },
+ { "lightslategray", "lightslategray", THTMLCOL, COL_SM_LIGHTSLATEGRAY },
+ { "lightslategrey", "lightslategrey", THTMLCOL, COL_SM_LIGHTSLATEGREY },
+ { "lightsteelblue", "lightsteelblue", THTMLCOL, COL_SM_LIGHTSTEELBLUE },
+ { "lightyellow", "lightyellow", THTMLCOL, COL_SM_LIGHTYELLOW },
{ "lime", "lime", THTMLCOL, COL_SM_LIME },
+ { "limegreen", "limegreen", THTMLCOL, COL_SM_LIMEGREEN },
+ { "linen", "linen", THTMLCOL, COL_SM_LINEN },
{ "lo", "", TICONICCOL, COL_SM_LO_GREEN },
- { "magenta", "magenta", THTMLCOL, COL_SM_FUCHSIA },
+ { "magenta", "magenta", THTMLCOL, COL_SM_MAGENTA },
{ "maroon", "maroon", THTMLCOL, COL_SM_MAROON },
+ { "mediumaquamarine", "mediumaquamarine", THTMLCOL, COL_SM_MEDIUMAQUAMARINE },
+ { "mediumblue", "mediumblue", THTMLCOL, COL_SM_MEDIUMBLUE },
+ { "mediumorchid", "mediumorchid", THTMLCOL, COL_SM_MEDIUMORCHID },
+ { "mediumpurple", "mediumpurple", THTMLCOL, COL_SM_MEDIUMPURPLE },
+ { "mediumseagreen", "mediumseagreen", THTMLCOL, COL_SM_MEDIUMSEAGREEN },
+ { "mediumslateblue", "mediumslateblue", THTMLCOL, COL_SM_MEDIUMSLATEBLUE },
+ { "mediumspringgreen", "mediumspringgreen", THTMLCOL, COL_SM_MEDIUMSPRINGGREEN },
+ { "mediumturquoise", "mediumturquoise", THTMLCOL, COL_SM_MEDIUMTURQUOISE },
+ { "mediumvioletred", "mediumvioletred", THTMLCOL, COL_SM_MEDIUMVIOLETRED },
+ { "midnightblue", "midnightblue", THTMLCOL, COL_SM_MIDNIGHTBLUE },
+ { "mintcream", "mintcream", THTMLCOL, COL_SM_MINTCREAM },
+ { "mistyrose", "mistyrose", THTMLCOL, COL_SM_MISTYROSE },
+ { "moccasin", "moccasin", THTMLCOL, COL_SM_MOCCASIN },
+ { "navajowhite", "navajowhite", THTMLCOL, COL_SM_NAVAJOWHITE },
{ "navy", "navy", THTMLCOL, COL_SM_NAVY },
+ { "oldlace", "oldlace", THTMLCOL, COL_SM_OLDLACE },
{ "olive", "olive", THTMLCOL, COL_SM_OLIVE },
+ { "olivedrab", "olivedrab", THTMLCOL, COL_SM_OLIVEDRAB },
+ { "orange", "orange", THTMLCOL, COL_SM_ORANGE },
+ { "orangered", "orangered", THTMLCOL, COL_SM_ORANGERED },
+ { "orchid", "orchid", THTMLCOL, COL_SM_ORCHID },
+ { "palegoldenrod", "palegoldenrod", THTMLCOL, COL_SM_PALEGOLDENROD },
+ { "palegreen", "palegreen", THTMLCOL, COL_SM_PALEGREEN },
+ { "paleturquoise", "paleturquoise", THTMLCOL, COL_SM_PALETURQUOISE },
+ { "palevioletred", "palevioletred", THTMLCOL, COL_SM_PALEVIOLETRED },
+ { "papayawhip", "papayawhip", THTMLCOL, COL_SM_PAPAYAWHIP },
+ { "peachpuff", "peachpuff", THTMLCOL, COL_SM_PEACHPUFF },
+ { "peru", "peru", THTMLCOL, COL_SM_PERU },
+ { "pink", "pink", THTMLCOL, COL_SM_PINK },
+ { "plum", "plum", THTMLCOL, COL_SM_PLUM },
+ { "powderblue", "powderblue", THTMLCOL, COL_SM_POWDERBLUE },
{ "purple", "purple", THTMLCOL, COL_SM_PURPLE },
{ "rebeccapurple", "rebeccapurple", THTMLCOL, COL_SM_REBECCAPURPLE },
{ "red", "red", THTMLCOL, COL_SM_RED },
{ "rgb", "rgb", TRGB, COL_AUTO },
{ "rgba", "rgba", TRGBA, COL_AUTO },
+ { "rosybrown", "rosybrown", THTMLCOL, COL_SM_ROSYBROWN },
+ { "royalblue", "royalblue", THTMLCOL, COL_SM_ROYALBLUE },
+ { "saddlebrown", "saddlebrown", THTMLCOL, COL_SM_SADDLEBROWN },
+ { "salmon", "salmon", THTMLCOL, COL_SM_SALMON },
+ { "sandybrown", "sandybrown", THTMLCOL, COL_SM_SANDYBROWN },
+ { "seagreen", "seagreen", THTMLCOL, COL_SM_SEAGREEN },
+ { "seashell", "seashell", THTMLCOL, COL_SM_SEASHELL },
+ { "sienna", "sienna", THTMLCOL, COL_SM_SIENNA },
{ "silver", "silver", THTMLCOL, COL_SM_SILVER },
+ { "skyblue", "skyblue", THTMLCOL, COL_SM_SKYBLUE },
+ { "slateblue", "slateblue", THTMLCOL, COL_SM_SLATEBLUE },
+ { "slategray", "slategray", THTMLCOL, COL_SM_SLATEGRAY },
+ { "slategrey", "slategrey", THTMLCOL, COL_SM_SLATEGREY },
+ { "snow", "snow", THTMLCOL, COL_SM_SNOW },
+ { "springgreen", "springgreen", THTMLCOL, COL_SM_SPRINGGREEN },
+ { "steelblue", "steelblue", THTMLCOL, COL_SM_STEELBLUE },
+ { "tan", "tan", THTMLCOL, COL_SM_TAN },
{ "teal", "teal", THTMLCOL, COL_SM_TEAL },
+ { "thistle", "thistle", THTMLCOL, COL_SM_THISTLE },
+ { "tomato", "tomato", THTMLCOL, COL_SM_TOMATO },
+ { "turquoise", "turquoise", THTMLCOL, COL_SM_TURQUOISE },
{ "ubuntu", "", TICONICCOL, COL_SM_UBUNTU_ORANGE },
+ { "violet", "COL_SM_VIOLET", THTMLCOL, COL_SM_VIOLET },
+ { "wheat", "wheat", THTMLCOL, COL_SM_WHEAT },
{ "white", "white", THTMLCOL, COL_SM_WHITE },
- { "yellow", "yellow", THTMLCOL, COL_SM_YELLOW } };
+ { "whitesmoke", "whitesmoke", THTMLCOL, COL_SM_WHITESMOKE },
+ { "yellow", "yellow", THTMLCOL, COL_SM_YELLOW },
+ { "yellowgreen", "yellowgreen", THTMLCOL, COL_SM_YELLOWGREEN } };
const SmColorTokenTableEntry starmathdatabase::aColorTokenTableHTML[]
- = { { "aqua", "aqua", THTMLCOL, COL_SM_AQUA },
+ = { { "aliceblue", "aliceblue", THTMLCOL, COL_SM_ALICEBLUE },
+ { "antiquewhite", "antiquewhite", THTMLCOL, COL_SM_ANTIQUEWHITE },
+ { "aqua", "aqua", THTMLCOL, COL_SM_AQUA },
+ { "aquamarine", "aquamarine", THTMLCOL, COL_SM_AQUAMARINE },
+ { "azure", "azure", THTMLCOL, COL_SM_AZURE },
+ { "beige", "beige", THTMLCOL, COL_SM_BEIGE },
+ { "bisque", "bisque", THTMLCOL, COL_SM_BISQUE },
{ "black", "black", THTMLCOL, COL_SM_BLACK },
+ { "blanchedalmond", "blanchedalmond", THTMLCOL, COL_SM_BLANCHEDALMOND },
{ "blue", "blue", THTMLCOL, COL_SM_BLUE },
- { "cyan", "cyan", THTMLCOL, COL_SM_BLACK },
+ { "blueviolet", "blueviolet", THTMLCOL, COL_SM_BLUEVIOLET },
+ { "brown", "brown", THTMLCOL, COL_SM_BROWN },
+ { "burlywood", "burlywood", THTMLCOL, COL_SM_BURLYWOOD },
+ { "cadetblue", "cadetblue", THTMLCOL, COL_SM_CADETBLUE },
+ { "chartreuse", "chartreuse", THTMLCOL, COL_SM_CHARTREUSE },
+ { "chocolate", "chocolate", THTMLCOL, COL_SM_CHOCOLATE },
+ { "coral", "coral", THTMLCOL, COL_SM_CORAL },
+ { "cornflowerblue", "cornflowerblue", THTMLCOL, COL_SM_CORNFLOWERBLUE },
+ { "cornsilk", "cornsilk", THTMLCOL, COL_SM_CORNSILK },
+ { "crimson", "crimson", THTMLCOL, COL_SM_CRIMSON },
+ { "cyan", "cyan", THTMLCOL, COL_SM_CYAN },
+ { "darkblue", "darkblue", THTMLCOL, COL_SM_DARKBLUE },
+ { "darkcyan", "darkcyan", THTMLCOL, COL_SM_DARKCYAN },
+ { "darkgoldenrod", "darkgoldenrod", THTMLCOL, COL_SM_DARKGOLDENROD },
+ { "darkgray", "darkgray", THTMLCOL, COL_SM_DARKGRAY },
+ { "darkgreen", "darkgreen", THTMLCOL, COL_SM_DARKGREEN },
+ { "darkgrey", "darkgrey", THTMLCOL, COL_SM_DARKGREY },
+ { "darkkhaki", "darkkhaki", THTMLCOL, COL_SM_DARKKHAKI },
+ { "darkmagenta", "darkmagenta", THTMLCOL, COL_SM_DARKMAGENTA },
+ { "darkolivegreen", "darkolivegreen", THTMLCOL, COL_SM_DARKOLIVEGREEN },
+ { "darkorange", "darkorange", THTMLCOL, COL_SM_DARKORANGE },
+ { "darkorchid", "darkorchid", THTMLCOL, COL_SM_DARKORCHID },
+ { "darkred", "darkred", THTMLCOL, COL_SM_DARKRED },
+ { "darksalmon", "darksalmon", THTMLCOL, COL_SM_DARKSALMON },
+ { "darkseagreen", "darkseagreen", THTMLCOL, COL_SM_DARKSEAGREEN },
+ { "darkslateblue", "darkslateblue", THTMLCOL, COL_SM_DARKSLATEBLUE },
+ { "darkslategray", "darkslategray", THTMLCOL, COL_SM_DARKSLATEGRAY },
+ { "darkslategrey", "darkslategrey", THTMLCOL, COL_SM_DARKSLATEGREY },
+ { "darkturquoise", "darkturquoise", THTMLCOL, COL_SM_DARKTURQUOISE },
+ { "darkviolet", "darkviolet", THTMLCOL, COL_SM_DARKVIOLET },
+ { "deeppink", "deeppink", THTMLCOL, COL_SM_DEEPPINK },
+ { "deepskyblue", "deepskyblue", THTMLCOL, COL_SM_DEEPSKYBLUE },
+ { "dimgray", "dimgray", THTMLCOL, COL_SM_DIMGRAY },
+ { "dimgrey", "dimgrey", THTMLCOL, COL_SM_DIMGREY },
+ { "dodgerblue", "dodgerblue", THTMLCOL, COL_SM_DODGERBLUE },
+ { "firebrick", "firebrick", THTMLCOL, COL_SM_FIREBRICK },
+ { "floralwhite", "floralwhite", THTMLCOL, COL_SM_FLORALWHITE },
+ { "forestgreen", "forestgreen", THTMLCOL, COL_SM_FORESTGREEN },
{ "fuchsia", "fuchsia", THTMLCOL, COL_SM_FUCHSIA },
+ { "gainsboro", "gainsboro", THTMLCOL, COL_SM_GAINSBORO },
+ { "ghostwhite", "ghostwhite", THTMLCOL, COL_SM_GHOSTWHITE },
+ { "gold", "gold", THTMLCOL, COL_SM_GOLD },
+ { "goldenrod", "goldenrod", THTMLCOL, COL_SM_GOLDENROD },
{ "gray", "gray", THTMLCOL, COL_SM_GRAY },
{ "green", "green", THTMLCOL, COL_SM_GREEN },
- { "hex", "hex", THEX, COL_SM_BLACK },
+ { "greenyellow", "greenyellow", THTMLCOL, COL_SM_GREENYELLOW },
+ { "grey", "grey", THTMLCOL, COL_SM_GREY },
+ { "honeydew", "honeydew", THTMLCOL, COL_SM_HONEYDEW },
+ { "hotpink", "hotpink", THTMLCOL, COL_SM_HOTPINK },
+ { "indianred", "indianred", THTMLCOL, COL_SM_INDIANRED },
+ { "indigo", "indigo", THTMLCOL, COL_SM_INDIGO },
+ { "ivory", "ivory", THTMLCOL, COL_SM_IVORY },
+ { "khaki", "khaki", THTMLCOL, COL_SM_KHAKI },
+ { "lavender", "lavender", THTMLCOL, COL_SM_LAVENDER },
+ { "lavenderblush", "lavenderblush", THTMLCOL, COL_SM_LAVENDERBLUSH },
+ { "lawngreen", "lawngreen", THTMLCOL, COL_SM_LAWNGREEN },
+ { "lemonchiffon", "lemonchiffon", THTMLCOL, COL_SM_LEMONCHIFFON },
+ { "lightblue", "lightblue", THTMLCOL, COL_SM_LIGHTBLUE },
+ { "lightcoral", "lightcoral", THTMLCOL, COL_SM_LIGHTCORAL },
+ { "lightcyan", "lightcyan", THTMLCOL, COL_SM_LIGHTCYAN },
+ { "lightgoldenrodyellow", "lightgoldenrodyellow", THTMLCOL, COL_SM_LIGHTGOLDENRODYELLOW },
+ { "lightgray", "lightgray", THTMLCOL, COL_SM_LIGHTGRAY },
+ { "lightgreen", "lightgreen", THTMLCOL, COL_SM_LIGHTGREEN },
+ { "lightgrey", "lightgrey", THTMLCOL, COL_SM_LIGHTGREY },
+ { "lightpink", "lightpink", THTMLCOL, COL_SM_LIGHTPINK },
+ { "lightsalmon", "lightsalmon", THTMLCOL, COL_SM_LIGHTSALMON },
+ { "lightseagreen", "lightseagreen", THTMLCOL, COL_SM_LIGHTSEAGREEN },
+ { "lightskyblue", "lightskyblue", THTMLCOL, COL_SM_LIGHTSKYBLUE },
+ { "lightslategray", "lightslategray", THTMLCOL, COL_SM_LIGHTSLATEGRAY },
+ { "lightslategrey", "lightslategrey", THTMLCOL, COL_SM_LIGHTSLATEGREY },
+ { "lightsteelblue", "lightsteelblue", THTMLCOL, COL_SM_LIGHTSTEELBLUE },
+ { "lightyellow", "lightyellow", THTMLCOL, COL_SM_LIGHTYELLOW },
{ "lime", "lime", THTMLCOL, COL_SM_LIME },
- { "magenta", "magenta", THTMLCOL, COL_SM_FUCHSIA },
+ { "limegreen", "limegreen", THTMLCOL, COL_SM_LIMEGREEN },
+ { "linen", "linen", THTMLCOL, COL_SM_LINEN },
+ { "magenta", "magenta", THTMLCOL, COL_SM_MAGENTA },
{ "maroon", "maroon", THTMLCOL, COL_SM_MAROON },
+ { "mediumaquamarine", "mediumaquamarine", THTMLCOL, COL_SM_MEDIUMAQUAMARINE },
+ { "mediumblue", "mediumblue", THTMLCOL, COL_SM_MEDIUMBLUE },
+ { "mediumorchid", "mediumorchid", THTMLCOL, COL_SM_MEDIUMORCHID },
+ { "mediumpurple", "mediumpurple", THTMLCOL, COL_SM_MEDIUMPURPLE },
+ { "mediumseagreen", "mediumseagreen", THTMLCOL, COL_SM_MEDIUMSEAGREEN },
+ { "mediumslateblue", "mediumslateblue", THTMLCOL, COL_SM_MEDIUMSLATEBLUE },
+ { "mediumspringgreen", "mediumspringgreen", THTMLCOL, COL_SM_MEDIUMSPRINGGREEN },
+ { "mediumturquoise", "mediumturquoise", THTMLCOL, COL_SM_MEDIUMTURQUOISE },
+ { "mediumvioletred", "mediumvioletred", THTMLCOL, COL_SM_MEDIUMVIOLETRED },
+ { "midnightblue", "midnightblue", THTMLCOL, COL_SM_MIDNIGHTBLUE },
+ { "mintcream", "mintcream", THTMLCOL, COL_SM_MINTCREAM },
+ { "mistyrose", "mistyrose", THTMLCOL, COL_SM_MISTYROSE },
+ { "moccasin", "moccasin", THTMLCOL, COL_SM_MOCCASIN },
+ { "navajowhite", "navajowhite", THTMLCOL, COL_SM_NAVAJOWHITE },
{ "navy", "navy", THTMLCOL, COL_SM_NAVY },
+ { "oldlace", "oldlace", THTMLCOL, COL_SM_OLDLACE },
{ "olive", "olive", THTMLCOL, COL_SM_OLIVE },
+ { "olivedrab", "olivedrab", THTMLCOL, COL_SM_OLIVEDRAB },
+ { "orange", "orange", THTMLCOL, COL_SM_ORANGE },
+ { "orangered", "orangered", THTMLCOL, COL_SM_ORANGERED },
+ { "orchid", "orchid", THTMLCOL, COL_SM_ORCHID },
+ { "palegoldenrod", "palegoldenrod", THTMLCOL, COL_SM_PALEGOLDENROD },
+ { "palegreen", "palegreen", THTMLCOL, COL_SM_PALEGREEN },
+ { "paleturquoise", "paleturquoise", THTMLCOL, COL_SM_PALETURQUOISE },
+ { "palevioletred", "palevioletred", THTMLCOL, COL_SM_PALEVIOLETRED },
+ { "papayawhip", "papayawhip", THTMLCOL, COL_SM_PAPAYAWHIP },
+ { "peachpuff", "peachpuff", THTMLCOL, COL_SM_PEACHPUFF },
+ { "peru", "peru", THTMLCOL, COL_SM_PERU },
+ { "pink", "pink", THTMLCOL, COL_SM_PINK },
+ { "plum", "plum", THTMLCOL, COL_SM_PLUM },
+ { "powderblue", "powderblue", THTMLCOL, COL_SM_POWDERBLUE },
{ "purple", "purple", THTMLCOL, COL_SM_PURPLE },
{ "rebeccapurple", "rebeccapurple", THTMLCOL, COL_SM_REBECCAPURPLE },
{ "red", "red", THTMLCOL, COL_SM_RED },
+ { "rosybrown", "rosybrown", THTMLCOL, COL_SM_ROSYBROWN },
+ { "royalblue", "royalblue", THTMLCOL, COL_SM_ROYALBLUE },
+ { "saddlebrown", "saddlebrown", THTMLCOL, COL_SM_SADDLEBROWN },
+ { "salmon", "salmon", THTMLCOL, COL_SM_SALMON },
+ { "sandybrown", "sandybrown", THTMLCOL, COL_SM_SANDYBROWN },
+ { "seagreen", "seagreen", THTMLCOL, COL_SM_SEAGREEN },
+ { "seashell", "seashell", THTMLCOL, COL_SM_SEASHELL },
+ { "sienna", "sienna", THTMLCOL, COL_SM_SIENNA },
{ "silver", "silver", THTMLCOL, COL_SM_SILVER },
+ { "skyblue", "skyblue", THTMLCOL, COL_SM_SKYBLUE },
+ { "slateblue", "slateblue", THTMLCOL, COL_SM_SLATEBLUE },
+ { "slategray", "slategray", THTMLCOL, COL_SM_SLATEGRAY },
+ { "slategrey", "slategrey", THTMLCOL, COL_SM_SLATEGREY },
+ { "snow", "snow", THTMLCOL, COL_SM_SNOW },
+ { "springgreen", "springgreen", THTMLCOL, COL_SM_SPRINGGREEN },
+ { "steelblue", "steelblue", THTMLCOL, COL_SM_STEELBLUE },
+ { "tan", "tan", THTMLCOL, COL_SM_TAN },
{ "teal", "teal", THTMLCOL, COL_SM_TEAL },
+ { "thistle", "thistle", THTMLCOL, COL_SM_THISTLE },
+ { "tomato", "tomato", THTMLCOL, COL_SM_TOMATO },
+ { "turquoise", "turquoise", THTMLCOL, COL_SM_TURQUOISE },
+ { "violet", "COL_SM_VIOLET", THTMLCOL, COL_SM_VIOLET },
+ { "wheat", "wheat", THTMLCOL, COL_SM_WHEAT },
{ "white", "white", THTMLCOL, COL_SM_WHITE },
- { "yellow", "yellow", THTMLCOL, COL_SM_YELLOW } };
+ { "whitesmoke", "whitesmoke", THTMLCOL, COL_SM_WHITESMOKE },
+ { "yellow", "yellow", THTMLCOL, COL_SM_YELLOW },
+ { "yellowgreen", "yellowgreen", THTMLCOL, COL_SM_YELLOWGREEN } };
-const SmColorTokenTableEntry starmathdatabase::aColorTokenTableDVIPSNAMES[] = {
- { "apricot", "Apricot", TDVIPSNAMESCOL, COL_SM_DIV_APRICOT },
- { "aquamarine", "Aquamarine", TDVIPSNAMESCOL, COL_SM_DIV_AQUAMARINE },
- { "bittersweet", "Bittersweet", TDVIPSNAMESCOL, COL_SM_DIV_BITTERSWEET },
- { "dblack", "Black", TDVIPSNAMESCOL, COL_SM_BLACK },
- { "dblue", "Blue", TDVIPSNAMESCOL, COL_SM_BLACK },
-};
+const SmColorTokenTableEntry starmathdatabase::aColorTokenTableDVIPSNAMES[]
+ = { { "apricot", "Apricot", TDVIPSNAMESCOL, COL_SM_DIV_APRICOT },
+ { "aquamarine", "Aquamarine", TDVIPSNAMESCOL, COL_SM_DIV_AQUAMARINE },
+ { "bittersweet", "Bittersweet", TDVIPSNAMESCOL, COL_SM_DIV_BITTERSWEET },
+ { "black", "Black", TDVIPSNAMESCOL, COL_SM_BLACK },
+ { "blue", "Blue", TDVIPSNAMESCOL, COL_SM_BLACK } };
std::unique_ptr<SmColorTokenTableEntry> starmathdatabase::Identify_Color_Parser(sal_uInt32 cColor)
{
for (auto i = std::begin(aColorTokenTableParse); i < std::end(aColorTokenTableParse); ++i)
if (i->equals(cColor))
return std::unique_ptr<SmColorTokenTableEntry>(new SmColorTokenTableEntry(i));
+ for (auto i = std::begin(aColorTokenTableDVIPSNAMES); i < std::end(aColorTokenTableDVIPSNAMES);
+ ++i)
+ if (i->equals(cColor))
+ return std::unique_ptr<SmColorTokenTableEntry>(new SmColorTokenTableEntry(i));
if ((cColor & 0x00FFFFFF) == cColor)
return std::unique_ptr<SmColorTokenTableEntry>(
new SmColorTokenTableEntry("", "", TRGB, cColor));
@@ -464,34 +720,41 @@ std::unique_ptr<SmColorTokenTableEntry>
starmathdatabase::Identify_ColorName_Parser(const OUString& colorname)
{
if (colorname.isEmpty())
- return nullptr;
+ return std::unique_ptr<SmColorTokenTableEntry>(
+ new SmColorTokenTableEntry("", "", TERROR, COL_SM_BLACK));
for (auto i = std::begin(aColorTokenTableParse); i < std::end(aColorTokenTableParse); ++i)
if (i->equals(colorname))
return std::unique_ptr<SmColorTokenTableEntry>(new SmColorTokenTableEntry(i));
- return nullptr;
+ return std::unique_ptr<SmColorTokenTableEntry>(
+ new SmColorTokenTableEntry("", "", TERROR, COL_SM_BLACK));
}
std::unique_ptr<SmColorTokenTableEntry>
starmathdatabase::Identify_ColorName_HTML(const OUString& colorname)
{
if (colorname.isEmpty())
- return nullptr;
- for (auto i = std::begin(aColorTokenTableParse); i < std::end(aColorTokenTableParse); ++i)
+ return std::unique_ptr<SmColorTokenTableEntry>(
+ new SmColorTokenTableEntry("", "", TERROR, COL_SM_BLACK));
+ for (auto i = std::begin(aColorTokenTableHTML); i < std::end(aColorTokenTableHTML); ++i)
if (i->equals(colorname))
return std::unique_ptr<SmColorTokenTableEntry>(new SmColorTokenTableEntry(i));
if (colorname[0] == '#' && colorname.getLength() == 7)
return std::unique_ptr<SmColorTokenTableEntry>(
new SmColorTokenTableEntry("", "", TRGB, colorname.copy(1, 6).toUInt32(16)));
- return nullptr;
+ return std::unique_ptr<SmColorTokenTableEntry>(
+ new SmColorTokenTableEntry("", "", TERROR, COL_SM_BLACK));
}
std::unique_ptr<SmColorTokenTableEntry>
starmathdatabase::Identify_ColorName_DVIPSNAMES(const OUString& colorname)
{
if (colorname.isEmpty())
- return nullptr;
- for (auto i = std::begin(aColorTokenTableParse); i < std::end(aColorTokenTableParse); ++i)
+ return std::unique_ptr<SmColorTokenTableEntry>(
+ new SmColorTokenTableEntry("", "", TERROR, COL_SM_BLACK));
+ for (auto i = std::begin(aColorTokenTableDVIPSNAMES); i < std::end(aColorTokenTableDVIPSNAMES);
+ ++i)
if (i->equals(colorname))
return std::unique_ptr<SmColorTokenTableEntry>(new SmColorTokenTableEntry(i));
- return nullptr;
+ return std::unique_ptr<SmColorTokenTableEntry>(
+ new SmColorTokenTableEntry("", "", TERROR, COL_SM_BLACK));
}
diff --git a/starmath/source/visitors.cxx b/starmath/source/visitors.cxx
index 924690282e42..0fbe4271d477 100644
--- a/starmath/source/visitors.cxx
+++ b/starmath/source/visitors.cxx
@@ -2135,22 +2135,23 @@ void SmNodeToTextVisitor::Visit( SmFontNode* pNode )
Separate( );
}
break;
- case THTMLCOL:
+
case TDVIPSNAMESCOL:
- case TICONICCOL:
+ Append( "color dvip " );
nc = pNode->GetToken().aText.toUInt32(16);
+ aSmColorTokenTableEntry = starmathdatabase::Identify_Color_Parser( nc );
+ Append( aSmColorTokenTableEntry->pIdent );
+ break;
+ case THTMLCOL:
+ case TICONICCOL:
Append( "color " );
+ nc = pNode->GetToken().aText.toUInt32(16);
aSmColorTokenTableEntry = starmathdatabase::Identify_Color_Parser( nc );
Append( aSmColorTokenTableEntry->pIdent );
break;
case TRGB:
nc = pNode->GetToken().aText.toUInt32(16);
aSmColorTokenTableEntry = starmathdatabase::Identify_Color_Parser( nc );
- if ( aSmColorTokenTableEntry ) {
- Append( "color " );
- Append( aSmColorTokenTableEntry->pIdent );
- break;
- }
Append( "color rgb " );
nb = nc % 256;
nc /= 256;
@@ -2167,11 +2168,6 @@ void SmNodeToTextVisitor::Visit( SmFontNode* pNode )
case TRGBA:
nc = pNode->GetToken().aText.toUInt32(16);
aSmColorTokenTableEntry = starmathdatabase::Identify_Color_Parser( nc );
- if ( aSmColorTokenTableEntry ) {
- Append( "color " );
- Append( aSmColorTokenTableEntry->pIdent );
- break;
- }
Append( "color rgba " );
nc = pNode->GetToken().aText.toUInt32(16);
nb = nc % 256;
@@ -2192,11 +2188,6 @@ void SmNodeToTextVisitor::Visit( SmFontNode* pNode )
case THEX:
nc = pNode->GetToken().aText.toUInt32(16);
aSmColorTokenTableEntry = starmathdatabase::Identify_Color_Parser( nc );
- if ( aSmColorTokenTableEntry ) {
- Append( "color " );
- Append( aSmColorTokenTableEntry->pIdent );
- break;
- }
Append( "color hex " );
nc = pNode->GetToken().aText.toUInt32(16);
Append(OUString::number(nc,16));