summaryrefslogtreecommitdiff
path: root/starmath/inc/token.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'starmath/inc/token.hxx')
-rw-r--r--starmath/inc/token.hxx156
1 files changed, 143 insertions, 13 deletions
diff --git a/starmath/inc/token.hxx b/starmath/inc/token.hxx
index d5f90abcada4..0c3788fd8966 100644
--- a/starmath/inc/token.hxx
+++ b/starmath/inc/token.hxx
@@ -30,8 +30,10 @@
#define INCLUDED_STARMATH_INC_TOKEN_HXX
#include <sal/types.h>
+#include "types.hxx"
#include <rtl/ustring.hxx>
#include <o3tl/typed_flags_set.hxx>
+#include <tools/color.hxx>
// TokenGroups
enum class TG {
@@ -135,11 +137,91 @@ enum SmTokenType
TASINH, TACOSH, TATANH, TACOTH, // Arctrigo hyperbolic
TSQRT, TNROOT, TFACT, TABS, // roots, n! |z|
// Color
- TRGB, TRGBA, THEX,
- TAQUA, TBLACK, TBLUE, TCYAN, TFUCHSIA,
- TGRAY, TGREEN, TLIME, TMAGENTA, TMAROON,
- TNAVY, TOLIVE, TPURPLE, TRED, TSILVER,
- TTEAL, TWHITE, TYELLOW
+ TRGB, TRGBA, THEX, THTMLCOL, TDVIPSNAMESCOL,
+ TICONICCOL
+};
+
+struct SmTokenTableEntry
+{
+ const char* pIdent;
+ SmTokenType eType;
+ sal_Unicode cMathChar;
+ TG nGroup;
+ sal_uInt16 nLevel;
+};
+
+struct SmColorTokenTableEntry
+{
+ const char* pIdent;
+ const char* cIdent;
+ SmTokenType eType;
+ Color cColor;
+
+ SmColorTokenTableEntry()
+ : pIdent("")
+ , cIdent("")
+ , eType(TERROR)
+ , cColor()
+ {}
+
+ SmColorTokenTableEntry( const SmColorTokenTableEntry * amColorTokenTableEntry )
+ : pIdent(amColorTokenTableEntry->pIdent)
+ , cIdent(amColorTokenTableEntry->cIdent)
+ , eType(amColorTokenTableEntry->eType)
+ , cColor(amColorTokenTableEntry->cColor)
+ {}
+
+ SmColorTokenTableEntry( const std::unique_ptr<SmColorTokenTableEntry> amColorTokenTableEntry )
+ : pIdent(amColorTokenTableEntry->pIdent)
+ , cIdent(amColorTokenTableEntry->cIdent)
+ , eType(amColorTokenTableEntry->eType)
+ , cColor(amColorTokenTableEntry->cColor)
+ {}
+
+ SmColorTokenTableEntry( const char* name, const char* codename, SmTokenType ctype, Color ncolor)
+ : pIdent(name)
+ , cIdent(codename)
+ , eType(ctype)
+ , cColor(ncolor)
+ {}
+
+ SmColorTokenTableEntry( const char* name, const char* codename, SmTokenType ctype, sal_uInt32 ncolor)
+ : pIdent(name)
+ , cIdent(codename)
+ , eType(ctype)
+ , cColor(ncolor)
+ {}
+
+ bool operator == ( const OUString & colorname ) const
+ {
+ return colorname.compareToIgnoreAsciiCaseAscii( pIdent ) == 0;
+ }
+
+ bool operator == ( sal_uInt32 colorcode ) const
+ {
+ return colorcode == cColor.mValue;
+ }
+
+ bool operator == ( Color colorcode ) const
+ {
+ return colorcode == cColor;
+ }
+
+ bool equals( const OUString & colorname ) const
+ {
+ return colorname.compareToIgnoreAsciiCaseAscii( pIdent ) == 0;
+ }
+
+ bool equals( sal_uInt32 colorcode ) const
+ {
+ return colorcode == cColor.mValue;
+ }
+
+ bool equals( Color colorcode ) const
+ {
+ return colorcode == cColor;
+ }
+
};
struct SmToken
@@ -177,15 +259,63 @@ struct SmToken
, nLevel(nTokenLevel)
, nRow(0)
, nCol(0){}
-};
-struct SmTokenTableEntry
-{
- const char* pIdent;
- SmTokenType eType;
- sal_Unicode cMathChar;
- TG nGroup;
- sal_uInt16 nLevel;
+ void operator = (const SmTokenTableEntry & aTokenTableEntry)
+ {
+ aText = OUString::createFromAscii(aTokenTableEntry.pIdent);
+ eType = aTokenTableEntry.eType;
+ cMathChar = aTokenTableEntry.cMathChar;
+ nGroup = aTokenTableEntry.nGroup;
+ nLevel = aTokenTableEntry.nLevel;
+ nRow = 0;
+ nCol = 0;
+ }
+
+ void operator = (const SmTokenTableEntry * aTokenTableEntry)
+ {
+ aText = OUString::createFromAscii(aTokenTableEntry->pIdent);
+ eType = aTokenTableEntry->eType;
+ cMathChar = aTokenTableEntry->cMathChar;
+ nGroup = aTokenTableEntry->nGroup;
+ nLevel = aTokenTableEntry->nLevel;
+ nRow = 0;
+ nCol = 0;
+ }
+
+ void operator = (const SmColorTokenTableEntry & aTokenTableEntry)
+ {
+ aText = OUString::number(aTokenTableEntry.cColor.mValue, 16);
+ eType = aTokenTableEntry.eType;
+ cMathChar = MS_NULLCHAR;
+ nGroup = TG::Color;
+ nLevel = 0;
+ nRow = 0;
+ nCol = 0;
+ }
+
+ void operator = (const SmColorTokenTableEntry * aTokenTableEntry)
+ {
+ aText = OUString::number(aTokenTableEntry->cColor.mValue, 16);
+ eType = aTokenTableEntry->eType;
+ cMathChar = MS_NULLCHAR;
+ nGroup = TG::Color;
+ nLevel = 0;
+ nRow = 0;
+ nCol = 0;
+ }
+
+ void operator = (const std::unique_ptr<SmColorTokenTableEntry> & aTokenTableEntry)
+ {
+ aText = OUString::number(aTokenTableEntry->cColor.mValue, 16);
+ eType = aTokenTableEntry->eType;
+ cMathChar = MS_NULLCHAR;
+ nGroup = TG::Color;
+ nLevel = 0;
+ nRow = 0;
+ nCol = 0;
+ }
+
+
};
#endif