From 9662ed2d69504412b52ac7c7498e74b6a362120e Mon Sep 17 00:00:00 2001 From: jkriege2 Date: Fri, 5 Jan 2024 23:26:47 +0100 Subject: [PATCH] MODIFIED: Synchronization of JKQTMathText and JKQTBasePlotter over threads: using read/write lockers now and removed some unnecessary mutexes by using a kind of singleton pattern --- doc/images/palettes/palette_alpha.png | Bin 0 -> 155 bytes doc/images/palettes/palette_invalpha.png | Bin 0 -> 155 bytes examples/multithreaded/README.md | 7 +- examples/multithreaded/multithreaded.cpp | 5 +- lib/jkqtcommon/jkqtpbasicimagetools.cpp | 58 +- lib/jkqtcommon/jkqtpbasicimagetools.h | 16 +- lib/jkqtcommon/jkqtpconcurrencytools.h | 67 +- lib/jkqtcommon/jkqtpdrawingtools.cpp | 4 +- lib/jkqtcommon/jkqtpdrawingtools.h | 5 +- lib/jkqtmathtext/jkqtmathtexttools.cpp | 121 +- .../nodes/jkqtmathtextboxinstructionnode.cpp | 302 ++-- .../nodes/jkqtmathtextboxinstructionnode.h | 6 +- .../nodes/jkqtmathtextdecoratednode.cpp | 116 +- .../nodes/jkqtmathtextdecoratednode.h | 4 +- .../nodes/jkqtmathtextfracnode.cpp | 58 +- lib/jkqtmathtext/nodes/jkqtmathtextfracnode.h | 4 +- .../nodes/jkqtmathtextinstructionnode.cpp | 81 +- .../nodes/jkqtmathtextinstructionnode.h | 7 +- .../jkqtmathtextmodifyenvironmentnode.cpp | 1288 ++++++++--------- .../nodes/jkqtmathtextmodifyenvironmentnode.h | 24 +- .../nodes/jkqtmathtextsymbolnode.cpp | 893 ++++++------ .../nodes/jkqtmathtextsymbolnode.h | 7 +- .../nodes/jkqtmathtexttextnode.cpp | 64 +- lib/jkqtmathtext/nodes/jkqtmathtexttextnode.h | 4 +- .../nodes/jkqtmathtextwhitespacenode.cpp | 88 +- .../nodes/jkqtmathtextwhitespacenode.h | 17 +- lib/jkqtplotter/jkqtpbaseplotter.cpp | 28 +- screenshots/multithreaded.png | Bin 153068 -> 153313 bytes screenshots/multithreaded_small.png | Bin 37675 -> 37693 bytes 29 files changed, 1636 insertions(+), 1638 deletions(-) create mode 100644 doc/images/palettes/palette_alpha.png create mode 100644 doc/images/palettes/palette_invalpha.png diff --git a/doc/images/palettes/palette_alpha.png b/doc/images/palettes/palette_alpha.png new file mode 100644 index 0000000000000000000000000000000000000000..d3476a28fa768e919d16969c88349747fa8d69e5 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K51UT4$0sJ%JQwfk$L90|Va?5N4dJ%_j{M z^!0Rc45^s&_KG1Rg96V1g9H1YD<-=Ov+k`*Pve{LWgByYEgM53kx0Icokhmv$do3a O!3>_RelF{r5}E*3>?0!p literal 0 HcmV?d00001 diff --git a/doc/images/palettes/palette_invalpha.png b/doc/images/palettes/palette_invalpha.png new file mode 100644 index 0000000000000000000000000000000000000000..d3476a28fa768e919d16969c88349747fa8d69e5 GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K51UT4$0sJ%JQwfk$L90|Va?5N4dJ%_j{M z^!0Rc45^s&_KG1Rg96V1g9H1YD<-=Ov+k`*Pve{LWgByYEgM53kx0Icokhmv$do3a O!3>_RelF{r5}E*3>?0!p literal 0 HcmV?d00001 diff --git a/examples/multithreaded/README.md b/examples/multithreaded/README.md index a448c091aa..fb1ea0eb7f 100644 --- a/examples/multithreaded/README.md +++ b/examples/multithreaded/README.md @@ -94,10 +94,13 @@ This test results in the following numbers (on my AMD Ryzen5 8/16-core laptop): [comment]:RESULTS -SERIAL RESULTS:
runtime, overall = 1822.3ms
single runtimes = (227.7 +/- 306.8) ms
speedup = 1.00x
threads / available = 1 / 16

+VERSION: 5.0.0 +BUILD MODE: Release + +SERIAL RESULTS:
runtime, overall = 1896.0ms
single runtimes = (236.9 +/- 379.1) ms
speedup = 1.00x
threads / available = 1 / 16

PARALLEL RESULTS:
-runtime, overall = 811.1ms
single runtimes = (760.8 +/- 63.8) ms
speedup = 7.50x
threads / available = 8 / 16

speedup vs. serial = 2.2x +runtime, overall = 624.7ms
single runtimes = (564.3 +/- 107.7) ms
speedup = 7.23x
threads / available = 8 / 16

speedup vs. serial = 3.0x [comment]:RESULTS_END diff --git a/examples/multithreaded/multithreaded.cpp b/examples/multithreaded/multithreaded.cpp index 026c80a9e8..a0f60c9dc3 100644 --- a/examples/multithreaded/multithreaded.cpp +++ b/examples/multithreaded/multithreaded.cpp @@ -15,6 +15,7 @@ #include "multithreaded_thread.h" #include "jkqtmath/jkqtpstatbasics.h" #include "jkqtpexampleapplication.h" +#include "jkqtplotter_version.h" #define NUM_SHOWN_PLOTS 3 #define NUM_PLOTS 8 @@ -129,7 +130,9 @@ int main(int argc, char* argv[]) const auto iend=md.indexOf("[comment]:RESULTS_END"); qDebug()<<" istart="<SERIAL RESULTS:
"+ser_result.toUtf8() + const QByteArray newResults="[comment]:RESULTS\n\nVERSION: "+QByteArray(JKQTPLOTTER_VERSION::PROJECT_VERSION) + +"\nBUILD MODE: "+QByteArray(JKQTPLOTTER_VERSION::PROJECT_BUILDTYPE) + +"\n\nSERIAL RESULTS:
"+ser_result.toUtf8() +"\n\nPARALLEL RESULTS:
\n"+par_result.toUtf8()+"\n\n"; md.replace(istart,iend-istart,newResults); if (f.open(QFile::WriteOnly)) { diff --git a/lib/jkqtcommon/jkqtpbasicimagetools.cpp b/lib/jkqtcommon/jkqtpbasicimagetools.cpp index 9f349360c3..e2d60fe80c 100644 --- a/lib/jkqtcommon/jkqtpbasicimagetools.cpp +++ b/lib/jkqtcommon/jkqtpbasicimagetools.cpp @@ -40,7 +40,9 @@ const int JKQTPImageTools::NDEFAULTSTEPS = 5; QMap JKQTPImageTools::global_jkqtpimagetools_lutstore = JKQTPImageTools::getDefaultLUTs(); int JKQTPImageTools::global_next_userpalette = JKQTPMathImageFIRST_REGISTERED_USER_PALETTE; -std::mutex JKQTPImageTools::lutMutex; +QReadWriteLock JKQTPImageTools::lutMutex; +QStringList JKQTPImageTools::getPredefinedPalettesGlobalList = QStringList(); +QStringList JKQTPImageTools::getPredefinedPalettesMachineReadableGlobalList = QStringList(); @@ -2040,38 +2042,44 @@ bool JKQTPImagePlot_QPairCompareFirst(const QPair &s1, const QPair lock(JKQTPImageTools::lutMutex); - static QStringList sl; + QReadLocker lock(&JKQTPImageTools::lutMutex); - if (sl.size()!=JKQTPImageTools::global_jkqtpimagetools_lutstore.size()) { - sl.clear(); - for (auto it=JKQTPImageTools::global_jkqtpimagetools_lutstore.begin(); it!=JKQTPImageTools::global_jkqtpimagetools_lutstore.end(); ++it) { - if (it.key()>=0 && it.key()<=JKQTPMathImageLAST_POSSIBLE_REGISTERED_USER_PALETTE) { - if (it.value().nameT.size()!=0) sl<=0 && it.key()<=JKQTPMathImageLAST_POSSIBLE_REGISTERED_USER_PALETTE) { + if (it.value().nameT.size()!=0) getPredefinedPalettesGlobalList< lock(JKQTPImageTools::lutMutex); - static QStringList sl; + QReadLocker lock(&JKQTPImageTools::lutMutex); - if (sl.size()!=JKQTPImageTools::global_jkqtpimagetools_lutstore.size()) { - sl.clear(); - for (auto it=JKQTPImageTools::global_jkqtpimagetools_lutstore.begin(); it!=JKQTPImageTools::global_jkqtpimagetools_lutstore.end(); ++it) { - if (it.key()>=0) { - if (it.value().name.size()!=0) sl<=0) { + if (it.value().name.size()!=0) getPredefinedPalettesMachineReadableGlobalList< lock(JKQTPImageTools::lutMutex); + QReadLocker lock(&JKQTPImageTools::lutMutex); auto it=JKQTPImageTools::global_jkqtpimagetools_lutstore.find(p); if (it==JKQTPImageTools::global_jkqtpimagetools_lutstore.end()) return QString::number(static_cast(p)); else { @@ -2091,7 +2099,7 @@ QString JKQTPImageTools::JKQTPMathImageColorPalette2String(JKQTPMathImageColorPa QString JKQTPImageTools::JKQTPMathImageColorPalette2StringHumanReadable(JKQTPMathImageColorPalette p) { - std::lock_guard lock(JKQTPImageTools::lutMutex); + QReadLocker lock(&JKQTPImageTools::lutMutex); auto it=JKQTPImageTools::global_jkqtpimagetools_lutstore.find(p); if (it==JKQTPImageTools::global_jkqtpimagetools_lutstore.end()) return QString::number(static_cast(p)); else { @@ -2103,7 +2111,7 @@ QString JKQTPImageTools::JKQTPMathImageColorPalette2StringHumanReadable(JKQTPMat JKQTPMathImageColorPalette JKQTPImageTools::String2JKQTPMathImageColorPalette(const QString &p) { - std::lock_guard lock(JKQTPImageTools::lutMutex); + QReadLocker lock(&JKQTPImageTools::lutMutex); for (auto it=JKQTPImageTools::global_jkqtpimagetools_lutstore.begin(); it!=JKQTPImageTools::global_jkqtpimagetools_lutstore.end(); ++it) { if (QString::compare(p, it.value().name, Qt::CaseInsensitive)==0) { return static_cast(it.key()); @@ -2234,7 +2242,7 @@ QVector JKQTPImageTools::getColorsforPalette(JKQTPMathImageColorPalette int JKQTPImageTools::registerPalette(const QString &name, const JKQTPImageTools::LUTType &paletteLut, const QString &nameT) { - std::lock_guard lock(JKQTPImageTools::lutMutex); + QWriteLocker lock(&JKQTPImageTools::lutMutex); int id=JKQTPImageTools::global_next_userpalette++; JKQTPImageTools::global_jkqtpimagetools_lutstore[id].name=name; JKQTPImageTools::global_jkqtpimagetools_lutstore[id].nameT=((nameT.size()>0)?nameT:name); diff --git a/lib/jkqtcommon/jkqtpbasicimagetools.h b/lib/jkqtcommon/jkqtpbasicimagetools.h index ac32c11ac3..f73528e6fe 100644 --- a/lib/jkqtcommon/jkqtpbasicimagetools.h +++ b/lib/jkqtcommon/jkqtpbasicimagetools.h @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include #include "jkqtcommon/jkqtcommon_imexport.h" #include "jkqtcommon/jkqtpmathtools.h" @@ -341,16 +341,16 @@ enum JKQTPMathImageColorPalette { JKQTPMathImagePastel2_STEP, /*!< \image{inline} html palettes/palette_pastel2_step.png */ JKQTPMathImageSet1_STEP, /*!< \image{inline} html palettes/palette_set1_step.png */ JKQTPMathImageSet2_STEP, /*!< \image{inline} html palettes/palette_set2_step.png */ + JKQTPMathImageALPHA, /*!< \brief special palette with increasing alpha values */ + JKQTPMathImageINVERTED_ALPHA, /*!< \brief special palette with decreasing alpha values */ JKQTPMathImagePREDEFINED_PALETTES_COUNT, /*!< \brief the number of predefined palettes */ JKQTPMathImageUSER_PALETTE=65000, /*!< \brief special value for JKQTPImageTools::array2image(), which signals the usage of a provided user-defined palette */ - JKQTPMathImageALPHA=JKQTPMathImageUSER_PALETTE-2, /*!< \brief special palette with increasing alpha values */ - JKQTPMathImageINVERTED_ALPHA=JKQTPMathImageUSER_PALETTE-1, /*!< \brief special palette with decreasing alpha values */ JKQTPMathImageFIRST_REGISTERED_USER_PALETTE=JKQTPMathImagePREDEFINED_PALETTES_COUNT, /*!< \brief the ID of the first user-defined paletted, registered with JKQTPImageTools::registerPalette() or JKQTPImageTools::registerPalettesFromFile() */ - JKQTPMathImageLAST_POSSIBLE_REGISTERED_USER_PALETTE=JKQTPMathImageUSER_PALETTE-10, /*!< \brief the ID of the first user-defined paletted, registered with JKQTPImageTools::registerPalette() or JKQTPImageTools::registerPalettesFromFile() */ + JKQTPMathImageLAST_POSSIBLE_REGISTERED_USER_PALETTE=JKQTPMathImageUSER_PALETTE-10, /*!< \brief the ID of the last user-defined paletted, registered with JKQTPImageTools::registerPalette() or JKQTPImageTools::registerPalettesFromFile() */ }; @@ -664,8 +664,12 @@ struct JKQTPImageTools { \see registerPalette() registerPalettesFromFile() */ static JKQTCOMMON_LIB_EXPORT int global_next_userpalette; - /** \brief Mutex to protect global_jkqtpimagetools_lutstore and global_next_userpalette */ - static JKQTCOMMON_LIB_EXPORT std::mutex lutMutex; + /** \brief storage for the palette names in getPredefinedPalettes() \internal */ + static JKQTCOMMON_LIB_EXPORT QStringList getPredefinedPalettesGlobalList; + /** \brief storage for the palette names in etPredefinedPalettesMachineReadable() \internal */ + static JKQTCOMMON_LIB_EXPORT QStringList getPredefinedPalettesMachineReadableGlobalList; + /** \brief Mutex to protect global_jkqtpimagetools_lutstore, getPredefinedPalettesGlobalList, getPredefinedPalettesMachineReadableGlobalList and global_next_userpalette */ + static JKQTCOMMON_LIB_EXPORT QReadWriteLock lutMutex; /*! \brief returns data of the default LUTs, used to initialize global_jkqtpimagetools_lutstore diff --git a/lib/jkqtcommon/jkqtpconcurrencytools.h b/lib/jkqtcommon/jkqtpconcurrencytools.h index a4e1e31e1c..b1f8cf8238 100644 --- a/lib/jkqtcommon/jkqtpconcurrencytools.h +++ b/lib/jkqtcommon/jkqtpconcurrencytools.h @@ -25,6 +25,9 @@ #define JKQTPCONCURRENCYTOOLS_H #include "jkqtcommon/jkqtcommon_imexport.h" +#include +#include +#include #include /** \brief template class that wraps any datatype and combines it with a mutex, exposes the lock()/unlock() @@ -37,9 +40,39 @@ template class JKQTPSynchronized { public: /** \brief Mutex used by this temmplate */ - typedef std::mutex MutexType; - /** \brief type of a lock_guard for a JKQTPSynchronized */ - typedef std::lock_guard > Locker; + typedef QReadWriteLock MutexType; + + /** \brief type of AdoptLock tag, which is used in ReadLocker and WriteLocker to adopt a pre-locked JKQTPSynchronized */ + struct AdoptLockType { explicit AdoptLockType() = default; }; + /** \brief tag, which is used in ReadLocker and WriteLocker to adopt a pre-locked JKQTPSynchronized */ + static constexpr AdoptLockType AdoptLock { }; + + /** \brief type of a lock_guard for a JKQTPSynchronized for reading */ + class ReadLocker + { + public: + inline ReadLocker(const JKQTPSynchronized &sync) noexcept: m_sync(sync) { m_sync.lockForRead(); }; + inline ReadLocker(const JKQTPSynchronized &sync, AdoptLockType) noexcept : m_sync(sync) { }; + inline ~ReadLocker() { m_sync.unlock(); } + private: + Q_DISABLE_COPY(ReadLocker) + const JKQTPSynchronized &m_sync; + }; + + /** \brief type of a lock_guard for a JKQTPSynchronized for writing */ + class WriteLocker + { + public: + inline WriteLocker(JKQTPSynchronized &sync) noexcept: m_sync(sync) { m_sync.lockForWrite(); }; + inline WriteLocker(JKQTPSynchronized &sync, AdoptLockType) noexcept : m_sync(sync) { }; + inline ~WriteLocker() { m_sync.unlock(); } + private: + Q_DISABLE_COPY(WriteLocker) + JKQTPSynchronized &m_sync; + }; + + /** \brief type of a lock_guard for a JKQTPSynchronized for writing */ + typedef JKQTPSynchronized::WriteLocker Locker; /** \brief contained data type T */ typedef T data_type; /** \brief default constructor, the internal data is default-initialized */ @@ -59,18 +92,32 @@ public: m_data=std::move(other.m_data); } - /** \brief locks the internal mutex until unlock() is called, + /** \brief locks the internal mutex for writing, until unlock() is called * - * \note Use Locker instances to actually lock, using a RAII-idiom, as this is safer than doing this by hand! + * \note Use WriteLocker or Locker instances to actually lock, using a RAII-idiom, as this is safer than doing this by hand! */ - inline void lock() { - m_mutex.lock(); + inline void lock() const { + lockForWrite(); } - /** \brief unlocks the internal mutex from a previous lock() call + /** \brief locks the internal mutex for writing, until unlock() is called + * + * \note Use WriteLocker or Locker instances to actually lock, using a RAII-idiom, as this is safer than doing this by hand! + */ + inline void lockForWrite() const { + m_mutex.lockForWrite(); + } + /** \brief locks the internal mutex for writing, until unlock() is called + * + * \note Use WriteLocker or Locker instances to actually lock, using a RAII-idiom, as this is safer than doing this by hand! + */ + inline void lockForRead() const { + m_mutex.lockForRead(); + } + /** \brief unlocks the internal mutex from a previous lock(), lockForWrite() or lockForRead() call * * \note Use Locker instances to actually lock, using a RAII-idiom, as this is safer than doing this by hand! */ - inline void unlock() { + inline void unlock() const { m_mutex.unlock(); } /** \brief assign a value to the internal data storage, not thread-safe. @@ -130,7 +177,7 @@ public: /** \brief returns the value in the internal data storage, thread-safe. */ inline T get_safe() const { - Locker lck(m_mutex); + ReadLocker lck(this); return m_data; } diff --git a/lib/jkqtcommon/jkqtpdrawingtools.cpp b/lib/jkqtcommon/jkqtpdrawingtools.cpp index c85cae705c..0de9c43d4d 100644 --- a/lib/jkqtcommon/jkqtpdrawingtools.cpp +++ b/lib/jkqtcommon/jkqtpdrawingtools.cpp @@ -556,14 +556,14 @@ JKQTPSynchronized > JKQTPlotterDrawingToo JKQTPGraphSymbols JKQTPRegisterCustomGraphSymbol(JKQTPCustomGraphSymbolFunctor&& f) { - JKQTPlotterDrawingTools::SymbolsLocker lock(JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore); + JKQTPlotterDrawingTools::SymbolsWriteLocker lock(JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore); JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore->push_back(std::move(f)); return static_cast(static_cast(JKQTPFirstCustomSymbol)+static_cast(JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore->size()-1)); } JKQTPGraphSymbols JKQTPRegisterCustomGraphSymbol(const JKQTPCustomGraphSymbolFunctor& f) { - JKQTPlotterDrawingTools::SymbolsLocker lock(JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore); + JKQTPlotterDrawingTools::SymbolsWriteLocker lock(JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore); JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore->push_back(f); return static_cast(static_cast(JKQTPFirstCustomSymbol)+static_cast(JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore->size()-1)); } diff --git a/lib/jkqtcommon/jkqtpdrawingtools.h b/lib/jkqtcommon/jkqtpdrawingtools.h index 2910710926..3046e8740a 100644 --- a/lib/jkqtcommon/jkqtpdrawingtools.h +++ b/lib/jkqtcommon/jkqtpdrawingtools.h @@ -87,7 +87,8 @@ struct JKQTPlotterDrawingTools { * \internal */ static JKQTCOMMON_LIB_EXPORT JKQTPSynchronized > JKQTPCustomGraphSymbolStore; - typedef JKQTPSynchronized >::Locker SymbolsLocker; + typedef JKQTPSynchronized >::ReadLocker SymbolsReadLocker; + typedef JKQTPSynchronized >::WriteLocker SymbolsWriteLocker; }; @@ -982,7 +983,7 @@ inline void JKQTPPlotSymbol(TPainter& painter, double x, double y, JKQTPGraphSym painter.drawPath(path); } if (symbol>=JKQTPFirstCustomSymbol) { - JKQTPlotterDrawingTools::SymbolsLocker lock(JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore); + JKQTPlotterDrawingTools::SymbolsReadLocker lock(JKQTPlotterDrawingTools::JKQTPCustomGraphSymbolStore); const int idx(static_cast(symbol-JKQTPFirstCustomSymbol)); if (idx>=0 && idxsize()) { painter.setPen(p); diff --git a/lib/jkqtmathtext/jkqtmathtexttools.cpp b/lib/jkqtmathtext/jkqtmathtexttools.cpp index 4b50daf5a8..56da2c014d 100644 --- a/lib/jkqtmathtext/jkqtmathtexttools.cpp +++ b/lib/jkqtmathtext/jkqtmathtexttools.cpp @@ -29,22 +29,21 @@ #include #include #include +#include void initJKQTMathTextResources() { - static bool initialized=false; - static std::mutex mutex_initialized; - std::lock_guard lock(mutex_initialized); - if (!initialized) { -#ifdef JKQTMATHTEXT_COMPILED_WITH_XITS - Q_INIT_RESOURCE(xits); -#endif -#ifdef JKQTMATHTEXT_COMPILED_WITH_FIRAMATH - Q_INIT_RESOURCE(firamath); -#endif - initialized=true; - } + static std::once_flag flag; + std::call_once(flag, []() { + #ifdef JKQTMATHTEXT_COMPILED_WITH_XITS + Q_INIT_RESOURCE(xits); + #endif + #ifdef JKQTMATHTEXT_COMPILED_WITH_FIRAMATH + Q_INIT_RESOURCE(firamath); + #endif + } + ); } JKQTMathTextFontSpecifier::JKQTMathTextFontSpecifier(): @@ -234,6 +233,8 @@ bool JKQTMathTextFontSpecifier::hasFallbackSymbolFontName() const JKQTMathTextFontSpecifier JKQTMathTextFontSpecifier::getXITSFamilies() { initJKQTMathTextResources(); + + #if (QT_VERSION lock(fontSpecMutex); + static JKQTMathTextFontSpecifier fontSpec; if (fontSpec.m_fontName.isEmpty() && fontSpec.m_mathFontName.isEmpty()) { fontSpec.m_transformOnOutput=false; for (int i=0; i JKQTMathTextFontSpecifier { + initJKQTMathTextResources(); + #if (QT_VERSION lock(fontSpecMutex); - if (fontSpec.m_fontName.isEmpty() && fontSpec.m_mathFontName.isEmpty()) { + JKQTMathTextFontSpecifier fontSpec; fontSpec.m_transformOnOutput=false; for (int i=0; i JKQTMathTextFontSpecifier { + initJKQTMathTextResources(); + static QStringList mathNames{"STIX Two Math", "STIX Math", "STIX Two Math Standard", "STIX Math Standard"}; + static QStringList textNames{"STIX", "STIXGeneral", "STIX General"}; - static JKQTMathTextFontSpecifier fontSpec; - static std::mutex fontSpecMutex; - std::lock_guard lock(fontSpecMutex); - if (fontSpec.m_fontName.isEmpty() && fontSpec.m_mathFontName.isEmpty()) { + JKQTMathTextFontSpecifier fontSpec; fontSpec.m_transformOnOutput=false; #if (QT_VERSION JKQTMathTextFontSpecifier { + initJKQTMathTextResources(); + #if (QT_VERSION lock(fontSpecMutex); - if (fontSpec.m_fontName.isEmpty() && fontSpec.m_mathFontName.isEmpty()) { + JKQTMathTextFontSpecifier fontSpec; fontSpec.m_transformOnOutput=false; for (int i=0; i lock(fontSpecMutex); - if (fontSpec.m_fontName.isEmpty() && fontSpec.m_mathFontName.isEmpty()) { + static JKQTMathTextFontSpecifier fontSpec=[]() -> JKQTMathTextFontSpecifier { + JKQTMathTextFontSpecifier fontSpec; #if (QT_VERSION lock(fontSpecMutex); - if (fontSpec.m_fontName.isEmpty() && fontSpec.m_mathFontName.isEmpty()) { + static JKQTMathTextFontSpecifier fontSpec=[]() -> JKQTMathTextFontSpecifier { const QFont f=QGuiApplication::font().family(); QFont testFnt; if (f.styleHint()==QFont::SansSerif) { @@ -467,7 +457,8 @@ JKQTMathTextFontSpecifier JKQTMathTextFontSpecifier::getAppFontSFFamilies() testFnt.setStyleHint(QFont::StyleHint::SansSerif); fontSpec.m_fontName=fontSpec.m_mathFontName=testFnt.defaultFamily(); } - } + return fontSpec; + }(); return fontSpec; } diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextboxinstructionnode.cpp b/lib/jkqtmathtext/nodes/jkqtmathtextboxinstructionnode.cpp index b05b256018..74b14ac266 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextboxinstructionnode.cpp +++ b/lib/jkqtmathtext/nodes/jkqtmathtextboxinstructionnode.cpp @@ -41,7 +41,7 @@ JKQTMathTextBoxInstructionNode::JKQTMathTextBoxInstructionNode(JKQTMathText* _parent, const QString& name, JKQTMathTextNode* child, const QStringList& parameters): JKQTMathTextInstruction1Node(_parent, name, child, parameters) { - fillInstructions(); + } JKQTMathTextBoxInstructionNode::~JKQTMathTextBoxInstructionNode() { @@ -56,7 +56,7 @@ QString JKQTMathTextBoxInstructionNode::getTypeName() const JKQTMathTextNodeSize JKQTMathTextBoxInstructionNode::getSizeInternal(QPainter& painter, JKQTMathTextEnvironment currentEv) const { JKQTMathTextEnvironment ev=currentEv; - const auto& inst=instructions.value(getInstructionName()); + const auto& inst=instructions().value(getInstructionName()); inst.modifier(ev, getParameters()); const QPen p=inst.pen(ev, getParameters(), parentMathText); const QBrush b=inst.brush(ev, getParameters(), parentMathText); @@ -77,7 +77,7 @@ double JKQTMathTextBoxInstructionNode::draw(QPainter& painter, double x, double doDrawBoxes(painter, x, y, currentEv); JKQTMathTextEnvironment ev=currentEv; - const auto& inst=instructions.value(getInstructionName()); + const auto& inst=instructions().value(getInstructionName()); inst.modifier(ev, getParameters()); const QPen p=inst.pen(ev, getParameters(), parentMathText); const QBrush b=inst.brush(ev, getParameters(), parentMathText); @@ -111,8 +111,8 @@ double JKQTMathTextBoxInstructionNode::draw(QPainter& painter, double x, double bool JKQTMathTextBoxInstructionNode::toHtml(QString &html, JKQTMathTextEnvironment currentEv, JKQTMathTextEnvironment defaultEv) const { JKQTMathTextEnvironment ev=currentEv; - fillInstructions(); - const auto& inst=instructions.value(getInstructionName()); + + const auto& inst=instructions().value(getInstructionName()); inst.modifier(ev, getParameters()); const QPen p=inst.pen(ev, getParameters(), parentMathText); const QBrush b=inst.brush(ev, getParameters(), parentMathText); @@ -140,174 +140,172 @@ bool JKQTMathTextBoxInstructionNode::toHtml(QString &html, JKQTMathTextEnvironme bool JKQTMathTextBoxInstructionNode::supportsInstructionName(const QString &instructionName) { - fillInstructions(); - return instructions.contains(instructionName); + return instructions().contains(instructionName); } size_t JKQTMathTextBoxInstructionNode::countParametersOfInstruction(const QString &instructionName) { - fillInstructions(); - if (instructions.contains(instructionName)) return instructions[instructionName].NParams; + if (instructions().contains(instructionName)) return instructions()[instructionName].NParams; return 0; } void JKQTMathTextBoxInstructionNode::modifyInMathEnvironment(const QString &instructionName, bool &insideMath, bool& insideMathTextStyle, const QStringList& params) { - fillInstructions(); - if (instructions.contains(instructionName)) { + + if (instructions().contains(instructionName)) { JKQTMathTextEnvironment ev; ev.insideMath=insideMath; ev.insideMathUseTextStyle=insideMathTextStyle; - instructions[instructionName].modifier(ev, params); + instructions()[instructionName].modifier(ev, params); insideMath=ev.insideMath; insideMathTextStyle=ev.insideMathUseTextStyle; } } -QHash JKQTMathTextBoxInstructionNode::instructions; +const QHash& JKQTMathTextBoxInstructionNode::instructions() { + static QHash table=[](){ + QHash instructions; -void JKQTMathTextBoxInstructionNode::fillInstructions() -{ - static std::mutex sMutex; - std::lock_guard lock(sMutex); - if (instructions.size()>0) return; - - { - InstructionProperties i(InstructionProperties::NoModification, - InstructionProperties::DefaultPen, - InstructionProperties::NoBrush, - InstructionProperties::DefaultPadding, - /*Nparams=*/0); - instructions["fbox"] = i; - instructions["framebox"] = i; - instructions["boxed"] = i; - instructions["framed"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - InstructionProperties::DefaultPen, - InstructionProperties::NoBrush, - InstructionProperties::DefaultPadding, - /*Nparams=*/0); - i.doubleLine=true; - instructions["doublebox"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - InstructionProperties::DefaultPen, - InstructionProperties::NoBrush, - InstructionProperties::DefaultPadding, - /*Nparams=*/0); - i.roundingFactor=0.7; - instructions["ovalbox"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - [](JKQTMathTextEnvironment& ev, const QStringList& parameters, JKQTMathText* parent){ - QPen p=InstructionProperties::DefaultPen(ev, parameters, parent); - p.setWidthF(p.widthF()*1.5); - return p; - }, - InstructionProperties::NoBrush, - InstructionProperties::DefaultPadding, - /*Nparams=*/0); - i.roundingFactor=0.8; - instructions["Ovalbox"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - InstructionProperties::DefaultPen, - InstructionProperties::NoBrush, - InstructionProperties::DefaultPadding, - /*Nparams=*/0); - i.roundingFactor=0.7; - i.doubleLine=true; - instructions["ovaldoublebox"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - [](JKQTMathTextEnvironment& ev, const QStringList& parameters, JKQTMathText* parent){ - QPen p=InstructionProperties::DefaultPen(ev, parameters, parent); - p.setColor(jkqtp_String2QColor(parameters.value(0, p.color().name()))); - return p; - }, - InstructionProperties::NoBrush, - InstructionProperties::DefaultPadding, - /*Nparams=*/1); - instructions["colorbox"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - [](JKQTMathTextEnvironment& ev, const QStringList& parameters, JKQTMathText* parent){ - QPen p=InstructionProperties::DefaultPen(ev, parameters, parent); - p.setStyle(Qt::DashLine); - return p; - }, - InstructionProperties::NoBrush, - InstructionProperties::DefaultPadding, - /*Nparams=*/0); - instructions["dashbox"] = i; - instructions["dashedbox"] = i; - instructions["dbox"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - [](JKQTMathTextEnvironment& ev, const QStringList& parameters, JKQTMathText* parent){ - QPen p=InstructionProperties::DefaultPen(ev, parameters, parent); - p.setStyle(Qt::DotLine); - return p; - }, - InstructionProperties::NoBrush, - InstructionProperties::DefaultPadding, - /*Nparams=*/0); - instructions["dottedbox"] = i; - instructions["dotbox"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - InstructionProperties::NoPen, - [](JKQTMathTextEnvironment& /*ev*/, const QStringList& parameters, JKQTMathText* /*parent*/){ - return QBrush(jkqtp_String2QColor(parameters.value(0, QColor(Qt::transparent).name())), Qt::SolidPattern); - }, - InstructionProperties::DefaultPadding, - /*Nparams=*/1); - instructions["shaded"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - InstructionProperties::NoPen, - [](JKQTMathTextEnvironment& /*ev*/, const QStringList& parameters, JKQTMathText* /*parent*/){ - return QBrush(jkqtp_String2QColor(parameters.value(0, QColor(Qt::transparent).name())), Qt::SolidPattern); - }, - 0, - /*Nparams=*/1); - instructions["snugshade"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - InstructionProperties::DefaultPen, - InstructionProperties::NoBrush, - 0, - /*Nparams=*/0); - instructions["snugbox"] = i; - } - { - InstructionProperties i(InstructionProperties::NoModification, - [](JKQTMathTextEnvironment& ev, const QStringList& parameters, JKQTMathText* parent){ - QPen p=InstructionProperties::DefaultPen(ev, parameters, parent); - p.setColor(jkqtp_String2QColor(parameters.value(0, p.color().name()))); - return p; - }, - [](JKQTMathTextEnvironment& /*ev*/, const QStringList& parameters, JKQTMathText* /*parent*/){ - return QBrush(jkqtp_String2QColor(parameters.value(1, QColor(Qt::transparent).name())), Qt::SolidPattern); - }, - InstructionProperties::DefaultPadding, - /*Nparams=*/2); - instructions["fcolorbox"] = i; - } + { + InstructionProperties i(InstructionProperties::NoModification, + InstructionProperties::DefaultPen, + InstructionProperties::NoBrush, + InstructionProperties::DefaultPadding, + /*Nparams=*/0); + instructions["fbox"] = i; + instructions["framebox"] = i; + instructions["boxed"] = i; + instructions["framed"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + InstructionProperties::DefaultPen, + InstructionProperties::NoBrush, + InstructionProperties::DefaultPadding, + /*Nparams=*/0); + i.doubleLine=true; + instructions["doublebox"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + InstructionProperties::DefaultPen, + InstructionProperties::NoBrush, + InstructionProperties::DefaultPadding, + /*Nparams=*/0); + i.roundingFactor=0.7; + instructions["ovalbox"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + [](JKQTMathTextEnvironment& ev, const QStringList& parameters, JKQTMathText* parent){ + QPen p=InstructionProperties::DefaultPen(ev, parameters, parent); + p.setWidthF(p.widthF()*1.5); + return p; + }, + InstructionProperties::NoBrush, + InstructionProperties::DefaultPadding, + /*Nparams=*/0); + i.roundingFactor=0.8; + instructions["Ovalbox"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + InstructionProperties::DefaultPen, + InstructionProperties::NoBrush, + InstructionProperties::DefaultPadding, + /*Nparams=*/0); + i.roundingFactor=0.7; + i.doubleLine=true; + instructions["ovaldoublebox"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + [](JKQTMathTextEnvironment& ev, const QStringList& parameters, JKQTMathText* parent){ + QPen p=InstructionProperties::DefaultPen(ev, parameters, parent); + p.setColor(jkqtp_String2QColor(parameters.value(0, p.color().name()))); + return p; + }, + InstructionProperties::NoBrush, + InstructionProperties::DefaultPadding, + /*Nparams=*/1); + instructions["colorbox"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + [](JKQTMathTextEnvironment& ev, const QStringList& parameters, JKQTMathText* parent){ + QPen p=InstructionProperties::DefaultPen(ev, parameters, parent); + p.setStyle(Qt::DashLine); + return p; + }, + InstructionProperties::NoBrush, + InstructionProperties::DefaultPadding, + /*Nparams=*/0); + instructions["dashbox"] = i; + instructions["dashedbox"] = i; + instructions["dbox"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + [](JKQTMathTextEnvironment& ev, const QStringList& parameters, JKQTMathText* parent){ + QPen p=InstructionProperties::DefaultPen(ev, parameters, parent); + p.setStyle(Qt::DotLine); + return p; + }, + InstructionProperties::NoBrush, + InstructionProperties::DefaultPadding, + /*Nparams=*/0); + instructions["dottedbox"] = i; + instructions["dotbox"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + InstructionProperties::NoPen, + [](JKQTMathTextEnvironment& /*ev*/, const QStringList& parameters, JKQTMathText* /*parent*/){ + return QBrush(jkqtp_String2QColor(parameters.value(0, QColor(Qt::transparent).name())), Qt::SolidPattern); + }, + InstructionProperties::DefaultPadding, + /*Nparams=*/1); + instructions["shaded"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + InstructionProperties::NoPen, + [](JKQTMathTextEnvironment& /*ev*/, const QStringList& parameters, JKQTMathText* /*parent*/){ + return QBrush(jkqtp_String2QColor(parameters.value(0, QColor(Qt::transparent).name())), Qt::SolidPattern); + }, + 0, + /*Nparams=*/1); + instructions["snugshade"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + InstructionProperties::DefaultPen, + InstructionProperties::NoBrush, + 0, + /*Nparams=*/0); + instructions["snugbox"] = i; + } + { + InstructionProperties i(InstructionProperties::NoModification, + [](JKQTMathTextEnvironment& ev, const QStringList& parameters, JKQTMathText* parent){ + QPen p=InstructionProperties::DefaultPen(ev, parameters, parent); + p.setColor(jkqtp_String2QColor(parameters.value(0, p.color().name()))); + return p; + }, + [](JKQTMathTextEnvironment& /*ev*/, const QStringList& parameters, JKQTMathText* /*parent*/){ + return QBrush(jkqtp_String2QColor(parameters.value(1, QColor(Qt::transparent).name())), Qt::SolidPattern); + }, + InstructionProperties::DefaultPadding, + /*Nparams=*/2); + instructions["fcolorbox"] = i; + } + return instructions; + }(); + return table; } + JKQTMathTextBoxInstructionNode::InstructionProperties::ModifyEnvironmentFunctor JKQTMathTextBoxInstructionNode::InstructionProperties::NoModification= [](JKQTMathTextEnvironment& /*ev*/, const QStringList& /*parameters*/){}; diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextboxinstructionnode.h b/lib/jkqtmathtext/nodes/jkqtmathtextboxinstructionnode.h index cfa069c223..e183b5180a 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextboxinstructionnode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextboxinstructionnode.h @@ -106,13 +106,11 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextBoxInstructionNode: public JKQTMathTex double roundingFactor; }; - /** \brief fills instructions + /** \brief defines all implemented instructions in this node * * \note this is the customization point for new instructions! */ - static void fillInstructions(); - /** \brief defines all implemented instructions in this node */ - static QHash instructions; + static const QHash& instructions(); }; diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.cpp b/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.cpp index d32af005f4..069cddcb5d 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.cpp +++ b/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.cpp @@ -108,14 +108,12 @@ QString JKQTMathTextDecoratedNode::DecorationType2String(JKQTMathTextDecoratedNo JKQTMathTextDecoratedNode::DecorationType JKQTMathTextDecoratedNode::InstructionName2DecorationType(const QString &mode) { - fillInstructions(); - return instructions[mode]; + return instructions()[mode]; } bool JKQTMathTextDecoratedNode::supportsInstructionName(const QString &instructionName) { - fillInstructions(); - return instructions.contains(instructionName); + return instructions().contains(instructionName); } @@ -168,64 +166,64 @@ JKQTMathTextNodeSize JKQTMathTextDecoratedNode::getSizeInternal(QPainter& painte return s; } -QHash JKQTMathTextDecoratedNode::instructions; +const QHash& JKQTMathTextDecoratedNode::instructions() { + static QHash table =[](){ + QHash instructions; -void JKQTMathTextDecoratedNode::fillInstructions() -{ - static std::mutex sMutex; - std::lock_guard lock(sMutex); - if (instructions.size()>0) return; + instructions["vec"]=MTDvec; + instructions["overline"]=MTDoverline; + instructions["oline"]=MTDoverline; + instructions["ol"]=MTDoverline; + instructions["underline"]=MTDunderline; + instructions["uline"]=MTDunderline; + instructions["ul"]=MTDunderline; + instructions["dashuline"]=MTDunderlineDashed; + instructions["dotuline"]=MTDunderlineDotted; + instructions["uuline"]=MTDdoubleunderline; + instructions["uul"]=MTDdoubleunderline; + instructions["ooline"]=MTDdoubleoverline; + instructions["ool"]=MTDdoubleoverline; + instructions["arrow"]=MTDarrow; + instructions["overrightarrow"]=MTDarrow; + instructions["overarrow"]=MTDarrow; + instructions["hat"]=MTDhat; + instructions["^"]=MTDhat; + instructions["widehat"]=MTDwidehat; + instructions["check"]=MTDcheck; + instructions["v"]=MTDcheck; + instructions["widecheck"]=MTDwidecheck; + instructions["bar"]=MTDbar; + instructions["="]=MTDbar; + instructions["dot"]=MTDdot; + instructions["."]=MTDdot; + instructions["ocirc"]=MTDocirc; + instructions["tilde"]=MTDtilde; + instructions["~"]=MTDtilde; + instructions["acute"]=MTDacute; + instructions["'"]=MTDacute; + instructions["grave"]=MTDgrave; + instructions["`"]=MTDgrave; + instructions["breve"]=MTDbreve; + instructions["u"]=MTDbreve; + instructions["widetilde"]=MTDwidetilde; + instructions["ddot"]=MTDddot; + instructions["cancel"]=MTDcancel; + instructions["xcancel"]=MTDxcancel; + instructions["bcancel"]=MTDbcancel; + instructions["strike"]=MTDstrike; + instructions["st"]=MTDstrike; + instructions["sout"]=MTDstrike; + instructions["overleftarrow"]=MTDoverleftarrow; + instructions["overrightarrow"]=MTDoverrightarrow; + instructions["overleftrightarrow"]=MTDoverleftrightarrow; + instructions["underleftarrow"]=MTDunderleftarrow; + instructions["underrightarrow"]=MTDunderrightarrow; + instructions["underleftrightarrow"]=MTDunderleftrightarrow; - instructions["vec"]=MTDvec; - instructions["overline"]=MTDoverline; - instructions["oline"]=MTDoverline; - instructions["ol"]=MTDoverline; - instructions["underline"]=MTDunderline; - instructions["uline"]=MTDunderline; - instructions["ul"]=MTDunderline; - instructions["dashuline"]=MTDunderlineDashed; - instructions["dotuline"]=MTDunderlineDotted; - instructions["uuline"]=MTDdoubleunderline; - instructions["uul"]=MTDdoubleunderline; - instructions["ooline"]=MTDdoubleoverline; - instructions["ool"]=MTDdoubleoverline; - instructions["arrow"]=MTDarrow; - instructions["overrightarrow"]=MTDarrow; - instructions["overarrow"]=MTDarrow; - instructions["hat"]=MTDhat; - instructions["^"]=MTDhat; - instructions["widehat"]=MTDwidehat; - instructions["check"]=MTDcheck; - instructions["v"]=MTDcheck; - instructions["widecheck"]=MTDwidecheck; - instructions["bar"]=MTDbar; - instructions["="]=MTDbar; - instructions["dot"]=MTDdot; - instructions["."]=MTDdot; - instructions["ocirc"]=MTDocirc; - instructions["tilde"]=MTDtilde; - instructions["~"]=MTDtilde; - instructions["acute"]=MTDacute; - instructions["'"]=MTDacute; - instructions["grave"]=MTDgrave; - instructions["`"]=MTDgrave; - instructions["breve"]=MTDbreve; - instructions["u"]=MTDbreve; - instructions["widetilde"]=MTDwidetilde; - instructions["ddot"]=MTDddot; - instructions["cancel"]=MTDcancel; - instructions["xcancel"]=MTDxcancel; - instructions["bcancel"]=MTDbcancel; - instructions["strike"]=MTDstrike; - instructions["st"]=MTDstrike; - instructions["sout"]=MTDstrike; - instructions["overleftarrow"]=MTDoverleftarrow; - instructions["overrightarrow"]=MTDoverrightarrow; - instructions["overleftrightarrow"]=MTDoverleftrightarrow; - instructions["underleftarrow"]=MTDunderleftarrow; - instructions["underrightarrow"]=MTDunderrightarrow; - instructions["underleftrightarrow"]=MTDunderleftrightarrow; + return instructions; + }(); + return table; } double JKQTMathTextDecoratedNode::draw(QPainter& painter, double x, double y, JKQTMathTextEnvironment currentEv) const { diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.h b/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.h index cf6ea52086..1d634ce350 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextdecoratednode.h @@ -104,9 +104,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextDecoratedNode: public JKQTMathTextSing /** \brief type of decoration that is added to the child node */ DecorationType decoration; /** \brief lists all supported instructions */ - static QHash instructions; - /** \brief fills instructions */ - static void fillInstructions(); + static const QHash& instructions(); }; #endif // JKQTMATHTEXTDECORATEDNODE_H diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.cpp b/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.cpp index 758d6670d9..5f2a773f02 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.cpp +++ b/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.cpp @@ -34,38 +34,36 @@ #include -QHash JKQTMathTextFracNode::instructions; - - -void JKQTMathTextFracNode::fillInstructions() -{ - static std::mutex sMutex; - std::lock_guard lock(sMutex); - if (instructions.size()>0) return; - instructions["frac"]=MTFMfrac; - instructions["dfrac"] = MTFMdfrac; - instructions["cfrac"]=MTFMdfrac; - instructions["sfrac"] = MTFMsfrac; - instructions["slantfrac"] = MTFMsfrac; - instructions["xfrac"]=MTFMsfrac; - instructions["stfrac"] = MTFMstfrac; - instructions["nicefrac"] = MTFMstfrac; - instructions["slanttextfrac"] = MTFMstfrac; - instructions["xtfrac"]=MTFMstfrac; - instructions["tfrac"]=MTFMtfrac; - instructions["stackrel"]=MTFMstackrel; - instructions["underbrace"]=MTFMunderbrace; - instructions["underbracket"]=MTFMunderbracket; - instructions["underset"]=MTFMunderset; - instructions["overbrace"]=MTFMoverbrace; - instructions["overbracket"]=MTFMoverbracket; - instructions["overset"]=MTFMoverset; +const QHash& JKQTMathTextFracNode::instructions() { + static QHash table=[]() + { + QHash instructions; + instructions["frac"]=MTFMfrac; + instructions["dfrac"] = MTFMdfrac; + instructions["cfrac"]=MTFMdfrac; + instructions["sfrac"] = MTFMsfrac; + instructions["slantfrac"] = MTFMsfrac; + instructions["xfrac"]=MTFMsfrac; + instructions["stfrac"] = MTFMstfrac; + instructions["nicefrac"] = MTFMstfrac; + instructions["slanttextfrac"] = MTFMstfrac; + instructions["xtfrac"]=MTFMstfrac; + instructions["tfrac"]=MTFMtfrac; + instructions["stackrel"]=MTFMstackrel; + instructions["underbrace"]=MTFMunderbrace; + instructions["underbracket"]=MTFMunderbracket; + instructions["underset"]=MTFMunderset; + instructions["overbrace"]=MTFMoverbrace; + instructions["overbracket"]=MTFMoverbracket; + instructions["overset"]=MTFMoverset; + return instructions; + }(); + return table; } - QString JKQTMathTextFracNode::FracType2String(JKQTMathTextFracNode::FracType mode) { switch(mode) { @@ -99,14 +97,12 @@ QString JKQTMathTextFracNode::FracType2String(JKQTMathTextFracNode::FracType mod JKQTMathTextFracNode::FracType JKQTMathTextFracNode::InstructionName2FracType(const QString &mode) { - fillInstructions(); - return instructions.value(mode, MTFMfrac); + return instructions().value(mode, MTFMfrac); } bool JKQTMathTextFracNode::supportsInstructionName(const QString &instructionName) { - fillInstructions(); - return instructions.contains(instructionName); + return instructions().contains(instructionName); } diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.h b/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.h index aff8c56c47..f22449353e 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextfracnode.h @@ -90,9 +90,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextFracNode: public JKQTMathTextDualChild JKQTMathTextFracNode::FracType getMode() const; protected: /** \brief lists all supported instructions */ - static QHash instructions; - /** \brief fills instructions */ - static void fillInstructions(); + static const QHash& instructions(); /** \copydoc JKQTMathTextNode::getSizeInternal() */ virtual JKQTMathTextNodeSize getSizeInternal(QPainter& painter, JKQTMathTextEnvironment currentEv) const override; /** \brief actual display type of fraction object */ diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.cpp b/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.cpp index 43b988f7f8..1d3f66347b 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.cpp +++ b/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.cpp @@ -64,7 +64,6 @@ JKQTMathTextSimpleInstructionNode::JKQTMathTextSimpleInstructionNode(JKQTMathTex instructionName(_name), parameters(_parameters) { - fillInstructions(); } @@ -81,7 +80,6 @@ QString JKQTMathTextSimpleInstructionNode::getTypeName() const double JKQTMathTextSimpleInstructionNode::draw(QPainter &painter, double x, double y, JKQTMathTextEnvironment currentEv) const { doDrawBoxes(painter, x, y, currentEv); - fillInstructions(); QFont f=currentEv.getFont(parentMathText); f.setStyleStrategy(QFont::PreferDefault); const QFontMetricsF fm(f, painter.device()); @@ -95,7 +93,6 @@ double JKQTMathTextSimpleInstructionNode::draw(QPainter &painter, double x, doub bool JKQTMathTextSimpleInstructionNode::toHtml(QString &html, JKQTMathTextEnvironment currentEv, JKQTMathTextEnvironment defaultEv) const { - fillInstructions(); const QString txt=executeInstruction(); html+=txt; return true; @@ -113,20 +110,17 @@ const QStringList &JKQTMathTextSimpleInstructionNode::getParameters() const bool JKQTMathTextSimpleInstructionNode::supportsInstructionName(const QString &instructionName) { - fillInstructions(); - return instructions.contains(instructionName); + return instructions().contains(instructionName); } size_t JKQTMathTextSimpleInstructionNode::countParametersOfInstruction(const QString &instructionName) { - fillInstructions(); - if (instructions.contains(instructionName)) return instructions[instructionName].NParams; + if (instructions().contains(instructionName)) return instructions()[instructionName].NParams; return 0; } JKQTMathTextNodeSize JKQTMathTextSimpleInstructionNode::getSizeInternal(QPainter &painter, JKQTMathTextEnvironment currentEv) const { - fillInstructions(); QFont f=currentEv.getFont(parentMathText); f.setStyleStrategy(QFont::PreferDefault); const QFontMetricsF fm(f, painter.device()); @@ -140,47 +134,46 @@ JKQTMathTextNodeSize JKQTMathTextSimpleInstructionNode::getSizeInternal(QPainter return s; } -QHash JKQTMathTextSimpleInstructionNode::instructions; - -void JKQTMathTextSimpleInstructionNode::fillInstructions() -{ - static std::mutex sMutex; - std::lock_guard lock(sMutex); - if (instructions.size()>0) return; - { - InstructionProperties i([](const QStringList& parameters) -> QString { - bool ok=false; - qlonglong code=parameters.value(0, "0").toLongLong(&ok, 16); - ok=ok&&(code>=0); - if (ok&&(code>=0)&&(code<=0xFFFFFFFF)) return QString::fromStdString(jkqtp_UnicodeToUTF8(static_cast(code))); - else return QString(); - }, 1); - instructions["unicode"]= i; - instructions["usym"]= i; - } - { - InstructionProperties i([](const QStringList& parameters) -> QString { - bool ok=false; - qlonglong code=parameters.value(0, "0").toLongLong(&ok, 16); - ok=ok&&(code>=0); - if (ok) { - QByteArray bytes; - while (code!=0) { - bytes.prepend(static_cast(code&0xFF)); - code=code>>8; - } - return QString::fromUtf8(bytes); +const QHash& JKQTMathTextSimpleInstructionNode::instructions() { + static QHash table=[]() + { + QHash instructions; + { + InstructionProperties i([](const QStringList& parameters) -> QString { + bool ok=false; + qlonglong code=parameters.value(0, "0").toLongLong(&ok, 16); + ok=ok&&(code>=0); + if (ok&&(code>=0)&&(code<=0xFFFFFFFF)) return QString::fromStdString(jkqtp_UnicodeToUTF8(static_cast(code))); + else return QString(); + }, 1); + instructions["unicode"]= i; + instructions["usym"]= i; } - return QChar(0); - }, 1); - instructions["utfeight"]= i; - } + { + InstructionProperties i([](const QStringList& parameters) -> QString { + bool ok=false; + qlonglong code=parameters.value(0, "0").toLongLong(&ok, 16); + ok=ok&&(code>=0); + if (ok) { + QByteArray bytes; + while (code!=0) { + bytes.prepend(static_cast(code&0xFF)); + code=code>>8; + } + return QString::fromUtf8(bytes); + } + return QChar(0); + }, 1); + instructions["utfeight"]= i; + } + return instructions; + }(); + return table; } QString JKQTMathTextSimpleInstructionNode::executeInstruction() const { - fillInstructions(); - return instructions.value(getInstructionName(), InstructionProperties()).evaluator(getParameters()); + return instructions().value(getInstructionName(), InstructionProperties()).evaluator(getParameters()); } JKQTMathTextSimpleInstructionNode::InstructionProperties::InstructionProperties(): diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.h b/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.h index 408bc1c757..1ce40c6a5f 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextinstructionnode.h @@ -103,14 +103,11 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextSimpleInstructionNode: public JKQTMath /** \brief output of the instruction */ EvaluateInstructionFunctor evaluator; }; - - /** \brief fills instructions + /** \brief defines all implemented instructions in this node * * \note this is the customization point for new instructions! */ - static void fillInstructions(); - /** \brief defines all implemented instructions in this node */ - static QHash instructions; + static const QHash& instructions(); /** \brief executes the instruction on \a ev */ QString executeInstruction() const; /** \brief instruction name */ diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextmodifyenvironmentnode.cpp b/lib/jkqtmathtext/nodes/jkqtmathtextmodifyenvironmentnode.cpp index 4ea968edc0..a275c8e772 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextmodifyenvironmentnode.cpp +++ b/lib/jkqtmathtext/nodes/jkqtmathtextmodifyenvironmentnode.cpp @@ -38,7 +38,6 @@ JKQTMathTextModifiedTextPropsInstructionNode::JKQTMathTextModifiedTextPropsInstructionNode(JKQTMathText* _parent, const QString& name, JKQTMathTextNode* child, const QStringList& parameters): JKQTMathTextInstruction1Node(_parent, name, child, parameters) { - fillInstructions(); } JKQTMathTextModifiedTextPropsInstructionNode::~JKQTMathTextModifiedTextPropsInstructionNode() { @@ -51,7 +50,6 @@ QString JKQTMathTextModifiedTextPropsInstructionNode::getTypeName() const } JKQTMathTextNodeSize JKQTMathTextModifiedTextPropsInstructionNode::getSizeInternal(QPainter& painter, JKQTMathTextEnvironment currentEv) const { - fillInstructions(); JKQTMathTextEnvironment ev=currentEv; executeInstruction(ev); @@ -60,7 +58,6 @@ JKQTMathTextNodeSize JKQTMathTextModifiedTextPropsInstructionNode::getSizeIntern } double JKQTMathTextModifiedTextPropsInstructionNode::draw(QPainter& painter, double x, double y, JKQTMathTextEnvironment currentEv) const { - fillInstructions(); doDrawBoxes(painter, x, y, currentEv); JKQTMathTextEnvironment ev=currentEv; @@ -71,7 +68,6 @@ double JKQTMathTextModifiedTextPropsInstructionNode::draw(QPainter& painter, dou bool JKQTMathTextModifiedTextPropsInstructionNode::toHtml(QString &html, JKQTMathTextEnvironment currentEv, JKQTMathTextEnvironment defaultEv) const { JKQTMathTextEnvironment ev=currentEv; - fillInstructions(); executeInstruction(ev); return getChild()->toHtml(html, ev, defaultEv); @@ -79,25 +75,22 @@ bool JKQTMathTextModifiedTextPropsInstructionNode::toHtml(QString &html, JKQTMat bool JKQTMathTextModifiedTextPropsInstructionNode::supportsInstructionName(const QString &instructionName) { - fillInstructions(); - return instructions.contains(instructionName); + return instructions().contains(instructionName); } size_t JKQTMathTextModifiedTextPropsInstructionNode::countParametersOfInstruction(const QString &instructionName) { - fillInstructions(); - if (instructions.contains(instructionName)) return instructions[instructionName].NParams; + if (instructions().contains(instructionName)) return instructions()[instructionName].NParams; return 0; } void JKQTMathTextModifiedTextPropsInstructionNode::modifyInMathEnvironment(const QString &instructionName, bool &insideMath, bool& insideMathTextStyle, const QStringList& params) { - fillInstructions(); - if (instructions.contains(instructionName)) { + if (instructions().contains(instructionName)) { JKQTMathTextEnvironment ev; ev.insideMath=insideMath; ev.insideMathUseTextStyle=insideMathTextStyle; - instructions[instructionName].modifier(ev, params); + instructions()[instructionName].modifier(ev, params); insideMath=ev.insideMath; insideMathTextStyle=ev.insideMathUseTextStyle; } @@ -106,356 +99,355 @@ void JKQTMathTextModifiedTextPropsInstructionNode::modifyInMathEnvironment(const void JKQTMathTextModifiedTextPropsInstructionNode::executeInstruction(JKQTMathTextEnvironment &ev) const { - fillInstructions(); - instructions.value(getInstructionName(), InstructionProperties()).modifier(ev, getParameters()); + instructions().value(getInstructionName(), InstructionProperties()).modifier(ev, getParameters()); } -QHash JKQTMathTextModifiedTextPropsInstructionNode::instructions; +const QHash& JKQTMathTextModifiedTextPropsInstructionNode::instructions() { + static QHash table=[]() + { -void JKQTMathTextModifiedTextPropsInstructionNode::fillInstructions() -{ - - static std::mutex sMutex; - std::lock_guard lock(sMutex); - if (instructions.size()>0) return; - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.bold=false; - ev.insideMathForceDigitsUpright=true; - ev.italic=false; - ev.underlined=false; - ev.overline=false; - ev.strike=false; - ev.font=MTEroman; - }, 0); - instructions["textnormal"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.bold=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["textbf"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.bold=true; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathbf"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.italic=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["textit"] = i; - instructions["mathit"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.italic=!ev.italic; - }, 0); - instructions["emph"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.italic=false; - }, 0); - instructions["textup"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters) { - ev.color=jkqtp_String2QColor(parameters.value(0, ev.color.name())); - }, 1); - instructions["textcolor"] = i; - instructions["mathcolor"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters) { - ev.customFontName=parameters.value(0, ""); - ev.font=MTECustomFont; - }, 1); - instructions["userfont"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.beginMathMode(); - }, 0); - instructions["ensuremath"] = i; - instructions["equation"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.capitalization=QFont::SmallCaps; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["textsc"] = i; - instructions["mathsc"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.capitalization=QFont::AllUppercase; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["uppercase"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.capitalization=QFont::AllLowercase; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["lowercase"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.underlined=true; - }, 0); - instructions["ul"] = i; - instructions["underlined"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.overline=true; - }, 0); - instructions["ol"] = i; - instructions["overlined"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.strike=true; - }, 0); - instructions["strike"]= i; - instructions["st"]= i; - instructions["sout"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEroman; - ev.italic=false; - }, 0); - instructions["textrm"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEroman; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathrm"] = i; - instructions["unit"] = i; - instructions["operatorname"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.bold=true; - ev.italic=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathbfit"] = i; - instructions["textbfit"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.endMathMode(); - ev.font=JKQTMathTextEnvironmentFont::MTEroman; - }, 0); - instructions["text"] = i; - instructions["mbox"] = i; - instructions["ensuretext"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEroman; - ev.italic=false; - ev.bold=true; - }, 0); - instructions["mat"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathcal"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; - }, 0); - instructions["textcal"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; - ev.italic=false; - ev.bold=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathbfcal"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; - ev.bold=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["textfcal"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; - }, 0); - instructions["textfrak"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathfrak"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; - ev.bold=true; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathbffrak"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; - ev.bold=true; - }, 0); - instructions["textbffrak"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEblackboard; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["textbb"] = i; - instructions["mathbb"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; - }, 0); - instructions["texttt"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathtt"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; - ev.bold=true; - }, 0); - instructions["textbftt"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; - ev.italic=false; - ev.bold=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathbftt"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEsans; - }, 0); - instructions["textsf"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEsans; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathsf"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEsans; - ev.italic=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["textitsf"] = i; - instructions["mathitsf"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEscript; - }, 0); - instructions["textscript"] = i; - instructions["textscr"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEscript; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathscript"] = i; - instructions["mathscr"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEscript; - ev.bold=true; - }, 0); - instructions["textbfscript"] = i; - instructions["textbfscr"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.font=JKQTMathTextEnvironmentFont::MTEscript; - ev.bold=true; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["mathbfscript"] = i; - instructions["mathbfscr"]= i; - } + QHash instructions; + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.bold=false; + ev.insideMathForceDigitsUpright=true; + ev.italic=false; + ev.underlined=false; + ev.overline=false; + ev.strike=false; + ev.font=MTEroman; + }, 0); + instructions["textnormal"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.bold=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["textbf"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.bold=true; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathbf"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.italic=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["textit"] = i; + instructions["mathit"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.italic=!ev.italic; + }, 0); + instructions["emph"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.italic=false; + }, 0); + instructions["textup"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters) { + ev.color=jkqtp_String2QColor(parameters.value(0, ev.color.name())); + }, 1); + instructions["textcolor"] = i; + instructions["mathcolor"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters) { + ev.customFontName=parameters.value(0, ""); + ev.font=MTECustomFont; + }, 1); + instructions["userfont"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.beginMathMode(); + }, 0); + instructions["ensuremath"] = i; + instructions["equation"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.capitalization=QFont::SmallCaps; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["textsc"] = i; + instructions["mathsc"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.capitalization=QFont::AllUppercase; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["uppercase"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.capitalization=QFont::AllLowercase; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["lowercase"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.underlined=true; + }, 0); + instructions["ul"] = i; + instructions["underlined"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.overline=true; + }, 0); + instructions["ol"] = i; + instructions["overlined"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.strike=true; + }, 0); + instructions["strike"]= i; + instructions["st"]= i; + instructions["sout"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEroman; + ev.italic=false; + }, 0); + instructions["textrm"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEroman; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathrm"] = i; + instructions["unit"] = i; + instructions["operatorname"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.bold=true; + ev.italic=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathbfit"] = i; + instructions["textbfit"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.endMathMode(); + ev.font=JKQTMathTextEnvironmentFont::MTEroman; + }, 0); + instructions["text"] = i; + instructions["mbox"] = i; + instructions["ensuretext"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEroman; + ev.italic=false; + ev.bold=true; + }, 0); + instructions["mat"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathcal"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; + }, 0); + instructions["textcal"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; + ev.italic=false; + ev.bold=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathbfcal"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; + ev.bold=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["textfcal"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; + }, 0); + instructions["textfrak"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathfrak"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; + ev.bold=true; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathbffrak"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; + ev.bold=true; + }, 0); + instructions["textbffrak"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEblackboard; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["textbb"] = i; + instructions["mathbb"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; + }, 0); + instructions["texttt"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathtt"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; + ev.bold=true; + }, 0); + instructions["textbftt"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; + ev.italic=false; + ev.bold=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathbftt"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEsans; + }, 0); + instructions["textsf"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEsans; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathsf"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEsans; + ev.italic=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["textitsf"] = i; + instructions["mathitsf"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEscript; + }, 0); + instructions["textscript"] = i; + instructions["textscr"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEscript; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathscript"] = i; + instructions["mathscr"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEscript; + ev.bold=true; + }, 0); + instructions["textbfscript"] = i; + instructions["textbfscr"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.font=JKQTMathTextEnvironmentFont::MTEscript; + ev.bold=true; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["mathbfscript"] = i; + instructions["mathbfscr"]= i; + } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.fontSize=ev.fontSize*1.2; - }, 0); - instructions["bigsize"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.fontSize=ev.fontSize*1.85; - }, 0); - instructions["Bigsize"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.fontSize=ev.fontSize*2.4; - }, 0); - instructions["biggsize"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { - ev.fontSize=ev.fontSize*3.1; - }, 0); - instructions["Biggsize"]= i; - } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.fontSize=ev.fontSize*1.2; + }, 0); + instructions["bigsize"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.fontSize=ev.fontSize*1.85; + }, 0); + instructions["Bigsize"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.fontSize=ev.fontSize*2.4; + }, 0); + instructions["biggsize"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/) { + ev.fontSize=ev.fontSize*3.1; + }, 0); + instructions["Biggsize"]= i; + } + return instructions; + }(); + return table; } JKQTMathTextModifiedTextPropsInstructionNode::InstructionProperties::InstructionProperties(): @@ -479,7 +471,6 @@ JKQTMathTextModifiedEnvironmentInstructionNode::JKQTMathTextModifiedEnvironmentI instructionName(name_), parameters(parameters_) { - fillInstructions(); } JKQTMathTextModifiedEnvironmentInstructionNode::~JKQTMathTextModifiedEnvironmentInstructionNode() @@ -504,323 +495,316 @@ const QStringList &JKQTMathTextModifiedEnvironmentInstructionNode::getParameters void JKQTMathTextModifiedEnvironmentInstructionNode::modifyEnvironment(JKQTMathTextEnvironment ¤tEv) const { - fillInstructions(); - instructions.value(getInstructionName(), InstructionProperties()).modifier(currentEv, getParameters(), parentMathText); + instructions().value(getInstructionName(), InstructionProperties()).modifier(currentEv, getParameters(), parentMathText); } bool JKQTMathTextModifiedEnvironmentInstructionNode::supportsInstructionName(const QString &instructionName) { - fillInstructions(); - return instructions.contains(instructionName); + return instructions().contains(instructionName); } size_t JKQTMathTextModifiedEnvironmentInstructionNode::countParametersOfInstruction(const QString &instructionName) { - fillInstructions(); - if (instructions.contains(instructionName)) return instructions[instructionName].NParams; + if (instructions().contains(instructionName)) return instructions()[instructionName].NParams; return 0; } void JKQTMathTextModifiedEnvironmentInstructionNode::modifyInMathTextStyleEnvironment(const QString &instructionName, bool &insideMathTextStyle, JKQTMathText* parentMathText, const QStringList ¶ms) { - fillInstructions(); - if (instructions.contains(instructionName)) { + if (instructions().contains(instructionName)) { JKQTMathTextEnvironment ev; ev.insideMathUseTextStyle=insideMathTextStyle; - instructions[instructionName].modifier(ev, params, parentMathText); + instructions()[instructionName].modifier(ev, params, parentMathText); insideMathTextStyle=ev.insideMathUseTextStyle; } } -QHash JKQTMathTextModifiedEnvironmentInstructionNode::instructions; +const QHash& JKQTMathTextModifiedEnvironmentInstructionNode::instructions() { + static QHash table=[](){ + QHash instructions; -void JKQTMathTextModifiedEnvironmentInstructionNode::fillInstructions() -{ - static std::mutex sMutex; - std::lock_guard lock(sMutex); - if (instructions.size()>0) return; - - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.bold=false; - ev.insideMathForceDigitsUpright=true; - ev.italic=false; - ev.underlined=false; - ev.overline=false; - ev.strike=false; - ev.font=MTEroman; - ev.fontSize=parentMathText->getFontSize(); - ev.capitalization=QFont::MixedCase; - ev.color=parentMathText->getFontColor(); - }, 0); - instructions["normalfont"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.bold=false; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["md"] = i; - instructions["mdseries"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.bold=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["bf"] = i; - instructions["bfseries"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.italic=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["it"] = i; - instructions["itshape"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["up"] = i; - instructions["upshape"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.italic=!ev.italic; - }, 0); - instructions["em"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters, const JKQTMathText* parentMathText) { - ev.color=jkqtp_String2QColor(parameters.value(0, ev.color.name())); - }, 1); - instructions["color"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters, const JKQTMathText* parentMathText) { - ev.customFontName=parameters.value(0, ""); - ev.font=MTECustomFont; - }, 1); - instructions["setfont"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.capitalization=QFont::SmallCaps; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["sc"] = i; - instructions["scshape"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEroman; - ev.italic=false; - }, 0); - instructions["rm"] = i; - instructions["rmfamily"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.bold=true; - ev.italic=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["bfit"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; - }, 0); - instructions["cal"] = i; - instructions["calfamily"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; - ev.bold=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["bbfcal"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; - }, 0); - instructions["frak"] = i; - instructions["frakfamily"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; - ev.bold=true; - }, 0); - instructions["bffrak"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEblackboard; - ev.italic=false; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["bb"] = i; - instructions["bbfamily"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; - }, 0); - instructions["tt"] = i; - instructions["ttfamily"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; - ev.bold=true; - }, 0); - instructions["bftt"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEsans; - }, 0); - instructions["sf"] = i; - instructions["sffamily"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEsans; - ev.italic=true; - ev.insideMathForceDigitsUpright=false; - }, 0); - instructions["itsf"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEscript; - }, 0); - instructions["script"] = i; - instructions["scr"] = i; - instructions["scriptseries"] = i; - instructions["scrseries"] = i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.font=JKQTMathTextEnvironmentFont::MTEscript; - ev.bold=true; - }, 0); - instructions["bfscript"] = i; - instructions["bfscr"] = i; - } - - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize(); - ev.insideMathUseTextStyle=false; - }, 0); - instructions["displaystyle"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize(); - ev.insideMathUseTextStyle=true; - }, 0); - instructions["textstyle"]= i; - } - - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*0.75; - ev.insideMathUseTextStyle=true; - }, 0); - instructions["scriptstyle"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*0.5; - ev.insideMathUseTextStyle=true; - }, 0); - instructions["scriptscriptstyle"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*6.0/11.0; - }, 0); - instructions["tiny"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*7.0/11.0; - }, 0); - instructions["ssmall"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*8.0/11.0; - }, 0); - instructions["scriptsize"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*9.0/11.0; - }, 0); - instructions["footnotesize"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*10.0/11.0; - }, 0); - instructions["small"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*11.0/11.0; - }, 0); - instructions["normalsize"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*12.0/11.0; - }, 0); - instructions["large"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*14.4/11.0; - }, 0); - instructions["Large"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*17.28/11.0; - }, 0); - instructions["LARGE"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*20.74/11.0; - }, 0); - instructions["huge"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { - ev.fontSize=parentMathText->getFontSize()*24.88/11.0; - }, 0); - instructions["Huge"]= i; - } - { - InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters, const JKQTMathText* parentMathText) { - ev.fontSize=parameters.value(0, QString::number(ev.fontSize)).toDouble(); - ev.fontSizeUnit=JKQTMathTextEnvironment::POINTS; - }, 1); - instructions["userfontsize"]= i; - instructions["fontsize"]= i; - } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.bold=false; + ev.insideMathForceDigitsUpright=true; + ev.italic=false; + ev.underlined=false; + ev.overline=false; + ev.strike=false; + ev.font=MTEroman; + ev.fontSize=parentMathText->getFontSize(); + ev.capitalization=QFont::MixedCase; + ev.color=parentMathText->getFontColor(); + }, 0); + instructions["normalfont"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.bold=false; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["md"] = i; + instructions["mdseries"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.bold=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["bf"] = i; + instructions["bfseries"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.italic=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["it"] = i; + instructions["itshape"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["up"] = i; + instructions["upshape"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.italic=!ev.italic; + }, 0); + instructions["em"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters, const JKQTMathText* parentMathText) { + ev.color=jkqtp_String2QColor(parameters.value(0, ev.color.name())); + }, 1); + instructions["color"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters, const JKQTMathText* parentMathText) { + ev.customFontName=parameters.value(0, ""); + ev.font=MTECustomFont; + }, 1); + instructions["setfont"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.capitalization=QFont::SmallCaps; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["sc"] = i; + instructions["scshape"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEroman; + ev.italic=false; + }, 0); + instructions["rm"] = i; + instructions["rmfamily"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.bold=true; + ev.italic=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["bfit"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; + }, 0); + instructions["cal"] = i; + instructions["calfamily"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEcaligraphic; + ev.bold=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["bbfcal"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; + }, 0); + instructions["frak"] = i; + instructions["frakfamily"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEfraktur; + ev.bold=true; + }, 0); + instructions["bffrak"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEblackboard; + ev.italic=false; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["bb"] = i; + instructions["bbfamily"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; + }, 0); + instructions["tt"] = i; + instructions["ttfamily"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEtypewriter; + ev.bold=true; + }, 0); + instructions["bftt"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEsans; + }, 0); + instructions["sf"] = i; + instructions["sffamily"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEsans; + ev.italic=true; + ev.insideMathForceDigitsUpright=false; + }, 0); + instructions["itsf"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEscript; + }, 0); + instructions["script"] = i; + instructions["scr"] = i; + instructions["scriptseries"] = i; + instructions["scrseries"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.font=JKQTMathTextEnvironmentFont::MTEscript; + ev.bold=true; + }, 0); + instructions["bfscript"] = i; + instructions["bfscr"] = i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize(); + ev.insideMathUseTextStyle=false; + }, 0); + instructions["displaystyle"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize(); + ev.insideMathUseTextStyle=true; + }, 0); + instructions["textstyle"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*0.75; + ev.insideMathUseTextStyle=true; + }, 0); + instructions["scriptstyle"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*0.5; + ev.insideMathUseTextStyle=true; + }, 0); + instructions["scriptscriptstyle"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*6.0/11.0; + }, 0); + instructions["tiny"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*7.0/11.0; + }, 0); + instructions["ssmall"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*8.0/11.0; + }, 0); + instructions["scriptsize"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*9.0/11.0; + }, 0); + instructions["footnotesize"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*10.0/11.0; + }, 0); + instructions["small"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*11.0/11.0; + }, 0); + instructions["normalsize"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*12.0/11.0; + }, 0); + instructions["large"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*14.4/11.0; + }, 0); + instructions["Large"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*17.28/11.0; + }, 0); + instructions["LARGE"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*20.74/11.0; + }, 0); + instructions["huge"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& /*parameters*/, const JKQTMathText* parentMathText) { + ev.fontSize=parentMathText->getFontSize()*24.88/11.0; + }, 0); + instructions["Huge"]= i; + } + { + InstructionProperties i([](JKQTMathTextEnvironment& ev, const QStringList& parameters, const JKQTMathText* parentMathText) { + ev.fontSize=parameters.value(0, QString::number(ev.fontSize)).toDouble(); + ev.fontSizeUnit=JKQTMathTextEnvironment::POINTS; + }, 1); + instructions["userfontsize"]= i; + instructions["fontsize"]= i; + } + return instructions; + }(); + return table; } JKQTMathTextModifiedEnvironmentInstructionNode::InstructionProperties::InstructionProperties(): diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextmodifyenvironmentnode.h b/lib/jkqtmathtext/nodes/jkqtmathtextmodifyenvironmentnode.h index 00a7d772fa..039d610701 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextmodifyenvironmentnode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextmodifyenvironmentnode.h @@ -53,15 +53,15 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextModifiedTextPropsInstructionNode: publ virtual bool toHtml(QString& html, JKQTMathTextEnvironment currentEv, JKQTMathTextEnvironment defaultEv) const override; /** \brief returns true, if the given \a instructionName can be represented by this node - * \see instructions + * \see instructions() */ static bool supportsInstructionName(const QString& instructionName); /** \brief returns the number of additional string parameters, required for the given \a instructionName - * \see instructions + * \see instructions() */ static size_t countParametersOfInstruction(const QString& instructionName); /** \brief sets \a insideMath to \c true if inside the node is to be parsed in math mode and \c false else - * \see instructions + * \see instructions() */ static void modifyInMathEnvironment(const QString& instructionName, bool& insideMath, bool &insideMathTextStyle, const QStringList ¶ms=QStringList()); @@ -82,13 +82,11 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextModifiedTextPropsInstructionNode: publ ModifyEnvironmentFunctor modifier; }; - /** \brief fills instructions + /** \brief defines all implemented instructions in this node * * \note this is the customization point for new instructions! */ - static void fillInstructions(); - /** \brief defines all implemented instructions in this node */ - static QHash instructions; + static const QHash& instructions(); /** \brief executes the instruction on \a ev */ void executeInstruction(JKQTMathTextEnvironment& ev) const; }; @@ -116,15 +114,15 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextModifiedEnvironmentInstructionNode: pu virtual void modifyEnvironment(JKQTMathTextEnvironment& currentEv) const override; /** \brief returns true, if the given \a instructionName can be represented by this node - * \see instructions + * \see instructions() */ static bool supportsInstructionName(const QString& instructionName); /** \brief returns the number of additional string parameters, required for the given \a instructionName - * \see instructions + * \see instructions() */ static size_t countParametersOfInstruction(const QString& instructionName); /** \brief sets \a insideMathTextStyle to \c true if textstyle is set inside math - * \see instructions + * \see instructions() */ static void modifyInMathTextStyleEnvironment(const QString& instructionName, bool &insideMathTextStyle, JKQTMathText *parentMathText, const QStringList ¶ms=QStringList()); protected: @@ -146,13 +144,11 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextModifiedEnvironmentInstructionNode: pu ModifyEnvironmentFunctor modifier; }; - /** \brief fills instructions + /** \brief defines all implemented instructions in this node * * \note this is the customization point for new instructions! */ - static void fillInstructions(); - /** \brief defines all implemented instructions in this node */ - static QHash instructions; + static const QHash& instructions(); }; diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextsymbolnode.cpp b/lib/jkqtmathtext/nodes/jkqtmathtextsymbolnode.cpp index ff9c064a5b..68cdfc9c05 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextsymbolnode.cpp +++ b/lib/jkqtmathtext/nodes/jkqtmathtextsymbolnode.cpp @@ -38,7 +38,6 @@ JKQTMathTextSymbolNode::JKQTMathTextSymbolNode(JKQTMathText* _parent, const QString& name): JKQTMathTextNode(_parent), symbolName(name) { - fillSymbolTables(); } JKQTMathTextSymbolNode::~JKQTMathTextSymbolNode() { @@ -142,7 +141,7 @@ double JKQTMathTextSymbolNode::draw(QPainter& painter, double x, double y, JKQTM const NodeSize s=getSymbolSize(painter, currentEv); doDrawBoxes(painter, x, y, s); - const auto fullProps=symbols.value(symbolName, SymbolFullProps()); + const auto fullProps=symbols().value(symbolName, SymbolFullProps()); const GlobalSymbolFlags globalFlags=fullProps.globalFlags; const auto drawProps=fullProps.getDrawingData(currentEv, parentMathText, painter); const QFont f=drawProps.first; @@ -217,7 +216,7 @@ double JKQTMathTextSymbolNode::draw(QPainter& painter, double x, double y, JKQTM bool JKQTMathTextSymbolNode::toHtml(QString &html, JKQTMathTextEnvironment currentEv, JKQTMathTextEnvironment defaultEv) const { bool ok=true; - const auto props=symbols.value(symbolName, SymbolFullProps()); + const auto props=symbols().value(symbolName, SymbolFullProps()); QString s=props.html.symbol; JKQTMathTextEnvironment ev=currentEv; ev.fontSize=ev.fontSize*props.html.fontScalingFactor; @@ -235,7 +234,7 @@ JKQTMathTextSymbolNode::NodeSize JKQTMathTextSymbolNode::getSymbolSize(QPainter { NodeSize s; - const auto fullProps=symbols.value(symbolName, SymbolFullProps()); + const auto fullProps=symbols().value(symbolName, SymbolFullProps()); const GlobalSymbolFlags globalFlags=fullProps.globalFlags; const auto drawProps=fullProps.getDrawingData(currentEv, parentMathText, painter); const QFont f=drawProps.first; @@ -297,39 +296,34 @@ JKQTMathTextSymbolNode::NodeSize JKQTMathTextSymbolNode::getSymbolSize(QPainter bool JKQTMathTextSymbolNode::hasSymbol(const QString &symbolName) { - fillSymbolTables(); - return symbols.contains(symbolName); + return symbols().contains(symbolName); } QStringList JKQTMathTextSymbolNode::getSymbols() { - fillSymbolTables(); - return symbols.keys(); + return symbols().keys(); } bool JKQTMathTextSymbolNode::isSubSuperscriptBelowAboveSymbol(const QString &symbolName) { - fillSymbolTables(); - if (symbols.contains(symbolName)) { - return has(symbols[symbolName].globalFlags, SubSuperscriptBelowAboveSymbol); + if (symbols().contains(symbolName)) { + return has(symbols()[symbolName].globalFlags, SubSuperscriptBelowAboveSymbol); } return false; } bool JKQTMathTextSymbolNode::isExtendedWidthSymbol(const QString &symbolName) { - fillSymbolTables(); - if (symbols.contains(symbolName)) { - return has(symbols[symbolName].globalFlags, ExtendWidthInMathmode) || has(symbols[symbolName].globalFlags, SmallExtendWidthInMathmode); + if (symbols().contains(symbolName)) { + return has(symbols()[symbolName].globalFlags, ExtendWidthInMathmode) || has(symbols()[symbolName].globalFlags, SmallExtendWidthInMathmode); } return false; } int JKQTMathTextSymbolNode::getSymbolLength(const QString &symbolName) { - fillSymbolTables(); - if (symbols.contains(symbolName)) { - return symbols[symbolName].props.value(MTFEUnicode, symbols[symbolName].props.value(MTFEStandard, SymbolProps())).symbol.size(); + if (symbols().contains(symbolName)) { + return symbols()[symbolName].props.value(MTFEUnicode, symbols()[symbolName].props.value(MTFEStandard, SymbolProps())).symbol.size(); } return 0; } @@ -381,6 +375,439 @@ JKQTMathTextSymbolNode::SymbolFullProps JKQTMathTextSymbolNode::NarrowMathOperat return SymbolFullProps(SymbolProps(op, ItalicOff|BoldOff|HeightIsAscent, 1.0, 0.0)).addGlobalFlags(SmallExtendWidthInMathmode|MakeWhitespaceHalf).addHtml(ophtml, ItalicOff|BoldOff|HeightIsAscent, 1.0, 0.0); } +const QHash &JKQTMathTextSymbolNode::symbols() +{ + static QHash s_symbols=[](){ + QHash symbols; + + /************************************************************************************** + * STANDARD Symbols available in all standard fonts + **************************************************************************************/ + symbols["#"]=SimpleTextSymbol("#", "#"); + symbols["%"]=SimpleTextSymbol("%", "≫"); + symbols["&"]=SimpleTextSymbol("&", "&"); + symbols["("]=SimpleUprightTextSymbol("("); + symbols[")"]=SimpleUprightTextSymbol(")"); + symbols["["]=SimpleUprightTextSymbol("["); + symbols["]"]=SimpleUprightTextSymbol("]"); + symbols["_"]=SimpleTextSymbol("_"); + symbols["{"]=SimpleUprightTextSymbol("{"); + symbols["|"]=SimpleUprightTextSymbol("||", "‖").addUprightUnicode(QChar(0x2016)); + symbols["}"]=SimpleUprightTextSymbol("}"); + symbols["AC"]=UprightSymbolUnicode(QChar(0x223F)).addUprightHtml("∿").addUprightStd("~"); + symbols["circonflex"]=SimpleTextSymbol("^"); + symbols["aa"]=SimpleTextSymbol(QChar(0xE5)); + symbols["ae"]=SimpleTextSymbol(QChar(0xE6)); + symbols["AE"]=SimpleTextSymbol(QChar(0xC6)); + symbols["AA"]=SimpleTextSymbol(QChar(0xC5)); + symbols["oe"]=UnicodeSymbol(QChar(0x153)).addStd("oe").addHtml("œ"); + symbols["OE"]=UnicodeSymbol(QChar(0x152)).addStd("OE").addHtml("Œ"); + symbols["ss"]=SimpleTextSymbol(QChar(0xDF)).addHtml("ß"); + symbols["l"]=UnicodeSymbol(QChar(0x141)).addHtml("ł"); + symbols["L"]=UnicodeSymbol(QChar(0x142)).addHtml("Ł"); + symbols["o"]=SimpleTextSymbol(QChar(0xF8)).addHtml("ø"); + symbols["O"]=SimpleTextSymbol(QChar(0xD8)).addHtml("Ø"); + { auto s=UprightSymbolUnicode(QChar(0x212B)).addUprightStd(QChar(0xC5)); + symbols["Angstrom"]=s; symbols["angstrom"]=s; } + { auto s=UnicodeSymbol(QChar(0x2136)).addHtml("ℶ"); + symbols["Beth"]=s; symbols["Bet"]=s; symbols["beth"]=s; symbols["bet"]=s; } + symbols["Box"]=UprightSymbolUnicode(QChar(0x25A1)); + symbols["DC"]=UnicodeSymbol(QChar(0x2393)).addWinSymbol(QChar(0xBB)).addStd("="); + symbols["EUR"]=UnicodeSymbol(QChar(0x20AC)); + symbols["Im"]=UprightSymbolUnicode(QChar(0x2111)).addHtml("ℑ").addWinSymbol(QChar(0xC1)); + symbols["No"]=UnicodeSymbol(QChar(0x2116)); + { auto s=UprightSymbolUnicode(QChar(0x2126)).addUprightWinSymbol("W").addUprightHtml("Ω"); + symbols["Ohm"]=s; symbols["ohm"]=s; } + symbols["P"]=SimpleTextSymbol(QChar(0xB6)).addHtml("¶"); + symbols["Re"]=UnicodeSymbol(QChar(0x211C)).addHtml("ℜ").addWinSymbol(QChar(0xC2)); + { auto s=SimpleTextSymbol(QChar(0xA7)).addHtml("§"); + symbols["S"]=s; symbols["§"]=s;} + symbols["accurrent"]=UnicodeSymbol(QChar(0x23E6)); + { auto s=UnicodeSymbol(QChar(0x2135)).addHtml("ℵ").addWinSymbol(QChar(0xC0)); + symbols["alef"]=s; symbols["aleph"]=s; symbols["Aleph"]=s; symbols["Alef"]=s; } + symbols["angle"]=UprightSymbolUnicode(QChar(0x2220)).addHtml("∠").addWinSymbol(QChar(0xD0)); + symbols["backslash"]=SimpleTextSymbol("\\"); + symbols["benzene"]=UprightSymbolUnicode(QChar(0x232C)); + symbols["benzenr"]=UprightSymbolUnicode(QChar(0x23E3)); + symbols["blacksquare"]=UprightSymbolUnicode(QChar(0x220E)).addUprightHtml("□"); + { auto s=UprightSymbolUnicode(QChar(0x231E)); + symbols["blcorner"]=s; symbols["llcorner"]=s; } + { auto s=UprightSymbolUnicode(QChar(0x231F)); + symbols["brcorner"]=s; symbols["lrcorner"]=s; } + { auto s=UprightSymbolUnicode(QChar(0x2022)).addUprightHtml("•").addUprightWinSymbol(QChar(0xB7)); + symbols["bullet"]=s; symbols["textbullet"]=s; } + symbols["cdots"]=UprightSymbolUnicode(QChar(0x22EF)).addUprightHtml("···").addUprightStd(QString(3, QChar(0xB7))); + { auto s=UnicodeSymbol(QChar(0x2103)).addUprightStd("°C").addUprightHtml("°C"); + symbols["celsius"]=s; symbols["degC"]=s; symbols["degreeCelsius"]=s; } + symbols["ell"]=UprightSymbolUnicode(QChar(0x2113), "ℓ"); + symbols["wp"]=UprightSymbolUnicode(QChar(0x2118), "℘").addGlobalFlags(SubscriptCorrection); + symbols["mho"]=UprightSymbolUnicode(QChar(0x2127), "℧"); + symbols["lozenge"]=UprightSymbolUnicode(QChar(0x25CA), "◊"); + symbols["cent"]=SimpleTextSymbol(QChar(0xA2), "¢"); + symbols["checkmark"]=UprightSymbolStd(QChar(0x2713)).addUprightHtml("✓"); + symbols["circ"]=UprightSymbolStd(QChar(0x2218)).addUprightHtml("∘").addStd("o", ItalicOff,0.7, -0.25); + symbols["co"]=UprightSymbolUnicode(QChar(0x2105)); + { auto s=SimpleTextSymbol(QChar(0xA9), "©"); + symbols["copyright"]=s; symbols["textcopyright"]=s; symbols["circledC"]=s; } + { auto s=UprightSymbolUnicode(QChar(0x2020)).addUprightHtml("†"); + symbols["dagger"]=s; symbols["dag"]=s; symbols["textdagger"]=s; } + { auto s=UprightSymbolUnicode(QChar(0x2021)).addUprightHtml("‡"); + symbols["ddagger"]=s; symbols["ddag"]=s; symbols["textdaggerdbl"]=s; } + { auto s=UnicodeSymbol(QChar(0x2138)).addHtml("ℸ"); + symbols["dalet"]=s; symbols["Dalet"]=s; symbols["daleth"]=s; symbols["Daleth"]=s; } + symbols["dd"] = SymbolFullProps(SymbolProps("d", Upright|BoldOff), "d", Upright|BoldOff); + symbols["diamond"]=UprightSymbolUnicode(QChar(0x22C4)).addHtml("⋄").addWinSymbol(QChar(0xE0)); + symbols["dollar"]=UnicodeSymbol(QChar(0x0024)); + { auto s=SimpleTextSymbol(QChar(0x24), "$"); + symbols["dollar"]=s; symbols["$"]=s; } + symbols["dprime"]=UnicodeSymbol(QChar(0x2033)).addHtml("″").addStd("''"); + symbols["complement"] = SymbolFullProps(SymbolProps("C", Upright|BoldOff), "C", Upright|BoldOff).addUnicode(QChar(0x2201), Upright|BoldOff); + symbols["ee"] = SymbolFullProps(SymbolProps("e", Upright|BoldOff), "e", Upright|BoldOff); + { auto s=UnicodeSymbol(QChar(0x2026)).addHtml("…").addWinSymbol(QChar(0xBC)).addStd("..."); + symbols["ellipsis"]=s; symbols["dots"]=s; symbols["ldots"]=s; } + { auto s=SimpleTextSymbol(QChar(0x20AC), "€"); + symbols["euro"]=s; symbols["EUR"]=s; } + { auto s=UnicodeSymbol(QChar(0x2109)); + symbols["fahrenheit"]=s; symbols["degF"]=s; } + symbols["female"]=UnicodeSymbol(QChar(0x2640)).addHtml("♀"); + symbols["flq"]=UnicodeSymbol(QChar(0x2039)).addHtml("‹").addStd("<"); + symbols["flqq"]=UnicodeSymbol(QChar(0x00AB)).addHtml("«").addStd(QChar(0xAB)); + //symbols["frown"]=UnicodeSymbol(QChar(0x2322)).addHtml("⌢"); + symbols["frq"]=UnicodeSymbol(QChar(0x203A)).addHtml("›").addStd(">"); + symbols["frqq"]=UnicodeSymbol(QChar(0x00BB)).addHtml("»").addStd(QChar(0xBB)); + { auto s=UnicodeSymbol(QChar(0x2137)).addHtml("ℷ"); + symbols["gimel"]=s; symbols["Gimel"]=s; } + symbols["glq"]=UnicodeSymbol(QChar(0x2018)).addHtml("‘").addStd("'"); + symbols["glqq"]=UnicodeSymbol(QChar(0x201C)).addHtml("“").addStd("\""); + symbols["grq"]=UnicodeSymbol(QChar(0x2019)).addHtml("’").addStd("'"); + symbols["grqq"]=UnicodeSymbol(QChar(0x201D)).addHtml("”").addStd("\""); + symbols["hbar"]=UprightSymbolUnicode(QChar(0x210F)).addUprightHtml("ℏ").addStd("h", ItalicOn|DrawLeftHBar).addGlobalFlags(SubscriptCorrection); + symbols["hexagon"]=UprightSymbolUnicode(QChar(0x2394)); + symbols["ii"] = SymbolFullProps(SymbolProps("i", Upright|BoldOff), "i", Upright|BoldOff); + symbols["infty"]=UprightSymbolUnicode(QChar(0x221E)).addUprightHtml("∞").addUprightWinSymbol(QChar(0xA5)).addUprightStd("8", RotateSymbol90); + symbols["langle"]=UprightSymbolUnicode(QChar(0x2329)).addWinSymbol(QChar(0xE1)); + symbols["lceil"]=UprightSymbolUnicode(QChar(0x2308)).addUprightHtml("⌈").addUprightWinSymbol(QChar(0xE9)); + symbols["lfloor"]=UprightSymbolUnicode(QChar(0x230A)).addUprightHtml("⌊").addUprightWinSymbol(QChar(0xEB)); + symbols["lightning"]=UnicodeSymbol(QChar(0x21AF)); + symbols["male"]=UnicodeSymbol(QChar(0x2642)).addHtml("♂"); + symbols["measuredangle"]=UprightSymbolUnicode(QChar(0x2221)).addUprightHtml("∡"); + symbols["micro"] = SimpleTextSymbol(QChar(0xB5), "µ"); + symbols["ohm"]=UprightSymbolUnicode(QChar(0x2126)).addUprightHtml("Ω").addUprightWinSymbol(QChar(0x57)); + symbols["partial"]=UprightSymbolUnicode(QChar(0x2202)).addUprightHtml("∂").addUprightWinSymbol(QChar(0xB6)); + { auto s=UnicodeSymbol(QChar(0x2030)).addHtml("‰"); + symbols["perthousand"]=s; symbols["permil"]=s; } + symbols["pound"]=SimpleTextSymbol(QChar(0xA3), "£"); + symbols["pound"]=UnicodeSymbol(QChar(0x00A3)); + symbols["prime"]=UnicodeSymbol(QChar(0x2032)).addHtml("′").addStd("'"); + symbols["arcminute"]=UnicodeSymbol(QChar(0x2032)).addHtml("′").addStd("'"); + symbols["arcsecond"]=UnicodeSymbol(QChar(0x2033)).addHtml("&dprime;").addStd("'"); + symbols["rangle"]=UprightSymbolUnicode(QChar(0x232A)).addUprightWinSymbol(QChar(0xF1)); + symbols["rceil"]=UprightSymbolUnicode(QChar(0x2309)).addUprightHtml("⌉").addUprightWinSymbol(QChar(0xF9)); + { auto s=SimpleTextSymbol(QChar(0xAE), "®"); + symbols["registered"]=s; symbols["textregistered"]=s; symbols["circledR"]=s; } + symbols["rfloor"]=UprightSymbolUnicode(QChar(0x230B)).addUprightHtml("⌋").addUprightWinSymbol(QChar(0xFB)); + symbols["rightangle"]=UprightSymbolUnicode(QChar(0x221F)).addUprightHtml("∟"); + //symbols["smile"]=UprightSymbolUnicode(QChar(0x2323)).addUprightHtml("⌣"); + symbols["sphericalangle"]=UprightSymbolUnicode(QChar(0x2222)).addUprightHtml("∢"); + symbols["star"]=UprightSymbolUnicode(QChar(0x22C6)); + symbols["tcohm"]=UnicodeSymbol(QChar(0x2126)); + { auto s=UnicodeSymbol(QChar(0x2014), "⹀"); + symbols["dblhyphen"]=s; symbols["textdblhyphen"]=s; symbols["textdblhyphenchar"]=s; } + { auto s=UnicodeSymbol(QChar(0x2014), "—"); + symbols["---"]=s; symbols["textemdash"]=s; symbols["emdash"]=s; } + { auto s=UnicodeSymbol(QChar(0x2013), "–"); + symbols["--"]=s; symbols["textendash"]=s; symbols["endash"]=s; } + { auto s=SimpleTextSymbol("-"); + symbols["texthyphen"]=s; symbols["hyphen"]=s; } + symbols["textbar"]=SimpleTextSymbol("|", "|"); + { auto s=SimpleTextSymbol(QChar(0xB0), "°"); + symbols["textdegree"]=s; symbols["degree"] = s; } + symbols["textgreater"]=SimpleTextSymbol(">", ">"); + symbols["textless"]=SimpleTextSymbol("<", "<"); + symbols["textquestiondown"]=SimpleTextSymbol(QChar(0xBF), "¿"); + symbols["textexclamdown"]=SimpleTextSymbol(QChar(0xA1), "¡"); + { auto s=UnicodeSymbol(QChar(0x231C)); + symbols["tlcorner"]=s; symbols["ulcorner"]=s; } + symbols["trademark"]=UnicodeSymbol(QChar(0x2122)).addHtml("™").addWinSymbol(QChar(0xD4)).addStd("(TM)"); + symbols["trapezium"]=UnicodeSymbol(QChar(0x23E2)).addHtml("⏢"); + { auto s=UprightSymbolUnicode(QChar(0x231D)); + symbols["trcorner"]=s; symbols["urcorner"]=s; } + symbols["trprime"]=UnicodeSymbol(QChar(0x2034)).addHtml("‴").addStd("'''"); + symbols["varcarriagereturn"]=UnicodeSymbol(QChar(0x23CE)).addWinSymbol(QChar(0xBF)); + symbols["varhexagonlrbonds"]=UnicodeSymbol(QChar(0x232C)); + symbols["yen"]=SimpleTextSymbol(QChar(0xA5), "¥"); + + + + + + /************************************************************************************** + * STANDARD MathOperator Strings + **************************************************************************************/ + symbols["Pr"] = NarrowMathOperatorText("Pr"); + symbols["acos"] = NarrowMathOperatorText("acos"); + symbols["arccos"] = NarrowMathOperatorText("arccos"); + symbols["arcsin"] = NarrowMathOperatorText("arcsin"); + symbols["arctan"] = NarrowMathOperatorText("arctan"); + symbols["arg"] = NarrowMathOperatorText("arg").addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["argmax"] = NarrowMathOperatorText("arg max", "arg max").addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["argmin"] = NarrowMathOperatorText("arg min", "arg min").addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["asin"] = NarrowMathOperatorText("asin"); + symbols["atan"] = NarrowMathOperatorText("atan"); + symbols["cos"] = NarrowMathOperatorText("cos"); + symbols["cosh"] = NarrowMathOperatorText("cosh"); + symbols["cot"] = NarrowMathOperatorText("cot"); + symbols["coth"] = NarrowMathOperatorText("coth"); + symbols["coth"] = NarrowMathOperatorText("coth"); + symbols["deg"] = NarrowMathOperatorText("deg"); + symbols["det"] = NarrowMathOperatorText("det"); + symbols["dim"] = NarrowMathOperatorText("dim"); + symbols["exp"] = NarrowMathOperatorText("exp"); + symbols["gcd"] = NarrowMathOperatorText("gcd"); + symbols["hom"] = NarrowMathOperatorText("hom"); + symbols["ker"] = NarrowMathOperatorText("ker"); + symbols["lb"] = NarrowMathOperatorText("lb"); + symbols["ld"] = NarrowMathOperatorText("ld"); + symbols["lim"] = NarrowMathOperatorText("lim").addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["liminf"] = NarrowMathOperatorText("lim inf", "lim inf").addGlobalFlags(SubSuperscriptBelowAboveSymbol).addGlobalFlags(SubscriptCorrection); + symbols["limsup"] = NarrowMathOperatorText("lim sup", "lim sup").addGlobalFlags(SubSuperscriptBelowAboveSymbol).addGlobalFlags(SubscriptCorrection); + symbols["ln"] = NarrowMathOperatorText("ln"); + symbols["log"] = NarrowMathOperatorText("log"); + symbols["max"] = NarrowMathOperatorText("max"); + symbols["median"] = NarrowMathOperatorText("median"); + symbols["min"] = NarrowMathOperatorText("min"); + symbols["mod"] = NarrowMathOperatorText("mod"); + symbols["sec"] = NarrowMathOperatorText("sec"); + symbols["sgn"] = NarrowMathOperatorText("sgn"); + symbols["sign"] = NarrowMathOperatorText("sign"); + symbols["sin"] = NarrowMathOperatorText("sin"); + symbols["sinh"] = NarrowMathOperatorText("sinh"); + symbols["tan"] = NarrowMathOperatorText("tan"); + symbols["tanh"] = NarrowMathOperatorText("tanh"); + + /************************************************************************************** + * STANDARD MathOperator Symbols + **************************************************************************************/ + { auto s=MathOperatorSymbolUnicode(QChar(0x2217)).addMathOperatorStd("*").addMathOperatorHtml("*"); + symbols["*"]=s; symbols["ast"]=s; symbols["asterisk"]=s; } + symbols["/"]=NarrowMathOperatorSymbolStd("/"); + symbols["+"]=MathOperatorSymbolUnicode(QChar(0x2B)).addMathOperatorHtml("+").addMathOperatorStd("+"); + symbols["-"]=MathOperatorSymbolUnicode(QChar(0x2212)).addMathOperatorHtml("-").addMathOperatorStd("-"); + symbols["<"]=MathOperatorSymbol("<", "<"); + symbols["="]=MathOperatorSymbol("="); + symbols[">"]=MathOperatorSymbol(">", ">"); + symbols["Downarrow"]=UprightSymbolUnicode(QChar(0x21D3)).addUprightHtml("⇓").addUprightWinSymbol(QChar(0xDF)); + symbols["Leftarrow"]=UprightSymbolUnicode(QChar(0x21D0)).addUprightHtml("⇐").addUprightWinSymbol(QChar(0xDC)); + symbols["Rightarrow"]=UprightSymbolUnicode(QChar(0x21D2)).addUprightHtml("⇒").addUprightWinSymbol(QChar(0xDE)); + symbols["Uparrow"]=UprightSymbolUnicode(QChar(0x21D1)).addUprightHtml("⇑").addUprightWinSymbol(QChar(0xDD)); + symbols["Updownarrow"]=UprightSymbolUnicode(QChar(0x21D5)).addUprightHtml("⇕"); + symbols["approx"]=MathOperatorSymbolUnicode(QChar(0x2248)).addMathOperatorHtml("≈").addMathOperatorWinSymbol(QChar(0xBB)); + symbols["bbC"]=UnicodeSymbol(QChar(0x2102)); + symbols["bbH"]=UnicodeSymbol(QChar(0x210D)); + symbols["bbN"]=UnicodeSymbol(QChar(0x2115)); + symbols["bbP"]=UnicodeSymbol(QChar(0x2119)); + symbols["bbQ"]=UnicodeSymbol(QChar(0x211A)); + symbols["bbR"]=UnicodeSymbol(QChar(0x211D)); + symbols["bbZ"]=UnicodeSymbol(QChar(0x2124)); + symbols["because"]=MathOperatorSymbolUnicode(QChar(0x2235)).addMathOperatorHtml("∵"); + symbols["bigcap"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C2)).addMathOperatorHtml("⋂").addMathOperatorWinSymbol(QChar(0xC7), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["bigcup"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C3)).addMathOperatorHtml("⋃").addMathOperatorWinSymbol(QChar(0xC8), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); + { auto s=NarrowMathOperatorSymbolUnicode(QChar(0x22C0)).addMathOperatorHtml("⋀").addMathOperatorWinSymbol(QChar(0xD9), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["bigwedge"]=s; symbols["bighat"]=s; } + symbols["bigvee"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C1)).addMathOperatorHtml("⋁").addMathOperatorWinSymbol(QChar(0xDA), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["bigotimes"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A02)).addMathOperatorHtml("⨂").addMathOperatorWinSymbol(QChar(0xC4), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["bigoplus"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A01)).addMathOperatorHtml("⨁").addMathOperatorWinSymbol(QChar(0xC5), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["bigodot"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A00)).addMathOperatorHtml("⨀").addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["biguplus"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A04)).addMathOperatorHtml("⨄").addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["bigsqcup"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A06)).addMathOperatorHtml("⨆").addGlobalFlags(SubSuperscriptBelowAboveSymbol); + { auto s=MathOperatorSymbolUnicode(QChar(0x22A5)).addMathOperatorHtml("⊥"); + symbols["bot"]=s; symbols["perp"]=s; } + { auto s=MathOperatorSymbolUnicode(QChar(0x2229)).addMathOperatorHtml("∩").addMathOperatorWinSymbol(QChar(0xC7)); + symbols["cap"]=s; symbols["land"]=s; } + symbols["cdot"]=MathOperatorSymbol(QChar(0xB7)).addMathOperatorHtml("·").addMathOperatorWinSymbol(QChar(0xD7)); + symbols["cong"]=MathOperatorSymbolUnicode(QChar(0x2245)).addMathOperatorHtml("≅"); + symbols["coprod"]=NarrowMathOperatorSymbolUnicode(QChar(0x2210)).addMathOperatorHtml("∐").addWinSymbol(QChar(0xD5), ItalicOff|BoldOff|FlipSymbolUpDown, 1.8, 0.1).addGlobalFlags(SubSuperscriptBelowAboveSymbol); + { auto s=MathOperatorSymbolUnicode(QChar(0x222A)).addMathOperatorHtml("∪").addMathOperatorWinSymbol(QChar(0xC8)); + symbols["cup"]=s; symbols["lor"]=s; } + symbols["ddots"]=UprightSymbolUnicode(QChar(0x22F1)).addMathOperatorHtml("⋱"); + symbols["div"]=MathOperatorSymbolUnicode(QChar(0x00F7)).addMathOperatorHtml("÷").addMathOperatorWinSymbol(QChar(0xB8)); + symbols["downarrow"]=UprightSymbolUnicode(QChar(0x2193)).addUprightHtml("↓").addUprightWinSymbol(QChar(0xAF)); + symbols["downharpoonleft"]=UprightSymbolUnicode(QChar(0x21C3)).addUprightHtml("⇃"); + symbols["downharpoonright"]=UprightSymbolUnicode(QChar(0x21C2)).addUprightHtml("⇂"); + { auto s=MathOperatorSymbolUnicode(QChar(0x2205)).addMathOperatorHtml("∅").addMathOperatorWinSymbol(QChar(0xC6)).addStd("0", BoldOff|ItalicOff|DrawSlash); + symbols["emptyset"]=s; symbols["varnothing"]=s; } + symbols["equiv"]=MathOperatorSymbolUnicode(QChar(0x2261)).addMathOperatorHtml("≡").addMathOperatorWinSymbol(QChar(0xBA)); + symbols["exists"]=NarrowMathOperatorSymbolUnicode(QChar(0x2203)).addMathOperatorHtml("∃").addMathOperatorWinSymbol(QChar(0x24)).addStd("E", ItalicOff|BoldOff|FlipSymbolLeftRight); + symbols["forall"]=NarrowMathOperatorSymbolUnicode(QChar(0x2200)).addMathOperatorHtml("∀").addMathOperatorWinSymbol(QChar(0x22)).addStd("A", ItalicOff|BoldOff|FlipSymbolUpDown).addGlobalFlags(SubscriptCorrection); + { auto s=MathOperatorSymbolUnicode(QChar(0x2265)).addMathOperatorHtml("≥").addMathOperatorWinSymbol(QChar(0xB3)); + symbols["geq"]=s; symbols["ge"]=s; } + symbols["geqq"]=MathOperatorSymbolUnicode(QChar(0x2267)).addMathOperatorHtml("≧"); + symbols["gg"]=MathOperatorSymbolUnicode(QChar(0x226B)).addMathOperatorHtml("≫").addMathOperatorStd(">>"); + symbols["iddots"]=UprightSymbolUnicode(QChar(0x22F0)).addMathOperatorHtml("⋰"); + { auto s=UprightSymbolUnicode(QChar(0x21D4)).addUprightHtml("⇔").addUprightWinSymbol(QChar(0xDB)); + symbols["iff"]=s; symbols["Leftrightarrow"]=s; } + symbols["iiint"]=NarrowMathOperatorSymbolUnicode(QChar(0x222D)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∭").addMathOperatorWinSymbol(QString(3, QChar(0xF2)), 1.8, 0.1); + symbols["iint"]=NarrowMathOperatorSymbolUnicode(QChar(0x222C)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∬").addMathOperatorWinSymbol(QString(2, QChar(0xF2)), 1.8, 0.1); + symbols["in"]=MathOperatorSymbolUnicode(QChar(0x2208)).addMathOperatorHtml("∈").addMathOperatorWinSymbol(QChar(0xCE)); + symbols["int"]=NarrowMathOperatorSymbolUnicode(QChar(0x222B)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∫").addMathOperatorWinSymbol(QChar(0xF2), 1.8, 0.1); + symbols["leftarrow"]=UprightSymbolUnicode(QChar(0x2190)).addUprightHtml("←").addUprightWinSymbol(QChar(0xAC)); + symbols["longleftarrow"]=UprightSymbolUnicode(QChar(0x27F5)).addUprightHtml("⟵"); + symbols["longrightarrow"]=UprightSymbolUnicode(QChar(0x27F6)).addUprightHtml("⟶"); + symbols["longleftrightarrow"]=UprightSymbolUnicode(QChar(0x27F7)).addUprightHtml("⟷"); + symbols["Longleftarrow"]=UprightSymbolUnicode(QChar(0x27F8)).addUprightHtml("⟸"); + symbols["Longrightarrow"]=UprightSymbolUnicode(QChar(0x27F9)).addUprightHtml("⟹"); + symbols["Longleftrightarrow"]=UprightSymbolUnicode(QChar(0x27FA)).addUprightHtml("⟺"); + symbols["leftharpoondown"]=UprightSymbolUnicode(QChar(0x21BD)).addUprightHtml("↽"); + symbols["leftharpoonup"]=UprightSymbolUnicode(QChar(0x21BC)).addUprightHtml("↼"); + symbols["leftrightarrow"]=UprightSymbolUnicode(QChar(0x2194)).addUprightHtml("↔").addUprightWinSymbol(QChar(0xAB)); + symbols["leftrightharpoon"]=UprightSymbolUnicode(QChar(0x21CB)).addUprightHtml("⇋"); + { auto s=MathOperatorSymbolUnicode(QChar(0x2264)).addMathOperatorHtml("≤").addMathOperatorWinSymbol(QChar(0xA3)); + symbols["leq"]=s; symbols["le"]=s; } + symbols["leqq"]=MathOperatorSymbolUnicode(QChar(0x2266)).addMathOperatorHtml("≦"); + symbols["ll"]=MathOperatorSymbolUnicode(QChar(0x226A)).addMathOperatorHtml("≪").addMathOperatorStd("<<"); + symbols["lnot"]=MathOperatorSymbolUnicode(QChar(0xAC)).addMathOperatorWinSymbol(QChar(0xD8)).addMathOperatorHtml("¬"); + symbols["mapimage"]=MathOperatorSymbolUnicode(QChar(0x22B7)).addMathOperatorHtml("⊷"); + symbols["maporiginal"]=MathOperatorSymbolUnicode(QChar(0x22B6)).addMathOperatorHtml("⊶"); + symbols["mapsto"]=MathOperatorSymbolUnicode(QChar(0x21A6)).addMathOperatorHtml("↦"); + symbols["mid"]=MathOperatorSymbolUnicode(QChar(0x2223)).addMathOperatorHtml("∣").addMathOperatorWinSymbol(QChar(0xBD)).addMathOperatorStd("|"); + symbols["mp"]=MathOperatorSymbolUnicode(QChar(0x2213)).addMathOperatorHtml("∓").addWinSymbol(QChar(0xB1),ItalicOff|BoldOff|FlipSymbolUpDown).addStd(QChar(0xB1),ItalicOff|BoldOff|FlipSymbolUpDown); + symbols["multimap"]=MathOperatorSymbolUnicode(QChar(0x22B8)).addMathOperatorHtml("⊸"); + symbols["nabla"]=NarrowMathOperatorSymbolUnicode(QChar(0x2207)).addMathOperatorHtml("∇").addMathOperatorWinSymbol(QChar(0xD1)).addGlobalFlags(IntLikeSymbolCorrection); + symbols["ne"]=NarrowMathOperatorSymbolUnicode(QChar(0x2260)).addMathOperatorHtml("≠").addMathOperatorWinSymbol(QChar(0xB9)); + symbols["nearrow"]=UprightSymbolUnicode(QChar(0x2197)).addUprightHtml("↗"); + { auto s=MathOperatorSymbolUnicode(QChar(0x00AC)).addMathOperatorHtml("¬").addMathOperatorWinSymbol(QChar(0xD8)); + symbols["neg"]=s; symbols["lnot"]=s; } + symbols["neq"]=MathOperatorSymbolUnicode(QChar(0x2260)).addMathOperatorHtml("≠").addMathOperatorWinSymbol(QChar(0xB9)).addStd("=", ItalicOff|BoldOff|DrawSlash); + symbols["nexists"]=NarrowMathOperatorSymbolUnicode(QChar(0x2204)).addMathOperatorHtml("∄").addStd("E", ItalicOff|BoldOff|FlipSymbolLeftRight|DrawSlash).addMathOperatorWinSymbol(QChar(0x24), ItalicOff|BoldOff|DrawSlash); + symbols["ni"]=NarrowMathOperatorSymbolUnicode(QChar(0x220B)).addMathOperatorHtml("∋").addMathOperatorWinSymbol(QChar(0xCE), ItalicOff|BoldOff|FlipSymbolLeftRight); + symbols["nmid"]=NarrowMathOperatorSymbolUnicode(QChar(0x2224)).addMathOperatorHtml("∤"); + symbols["notin"]=NarrowMathOperatorSymbolUnicode(QChar(0x2209)).addMathOperatorHtml("∉").addMathOperatorWinSymbol(QChar(0xCF)); + symbols["notni"]=NarrowMathOperatorSymbolUnicode(QChar(0x220C)).addMathOperatorHtml("∌"); + symbols["nparallel"]=MathOperatorSymbolUnicode(QChar(0x2226)).addMathOperatorHtml("∦"); + symbols["nwarrow"]=UprightSymbolUnicode(QChar(0x2196)).addUprightHtml("↖"); + symbols["odot"]=MathOperatorSymbolUnicode(QChar(0x2299)).addMathOperatorHtml("⊙"); + symbols["oiiint"]=NarrowMathOperatorSymbolUnicode(QChar(0x2230)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∰"); + symbols["oiint"]=NarrowMathOperatorSymbolUnicode(QChar(0x222F)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∯"); + symbols["oint"]=NarrowMathOperatorSymbolUnicode(QChar(0x222E)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∮"); + symbols["ominus"]=MathOperatorSymbolUnicode(QChar(0x2296)).addMathOperatorHtml("⊖"); + symbols["oplus"]=MathOperatorSymbolUnicode(QChar(0x2295)).addMathOperatorHtml("⊕").addMathOperatorWinSymbol(QChar(0xC5)); + symbols["oslash"]=MathOperatorSymbolUnicode(QChar(0x2298)).addMathOperatorHtml("⊘"); + symbols["otimes"]=MathOperatorSymbolUnicode(QChar(0x2297)).addMathOperatorHtml("⊗").addMathOperatorWinSymbol(QChar(0xC4)); + symbols["parallel"]=NarrowMathOperatorSymbolUnicode(QChar(0x2225)).addMathOperatorHtml("∥").addMathOperatorStd("||"); + symbols["pm"] = MathOperatorSymbol(QChar(0xB1), "±").addMathOperatorWinSymbol(QChar(0xB1)); + symbols["prec"]=MathOperatorSymbolUnicode(QChar(0x227A)).addMathOperatorHtml("≺"); + symbols["prod"]=NarrowMathOperatorSymbolUnicode(QChar(0x220F)).addMathOperatorWinSymbol(QChar(0xD5), 1.8, 0.1).addMathOperatorHtml("∏").addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["propto"]=MathOperatorSymbolUnicode(QChar(0x221D)).addMathOperatorWinSymbol(QChar(0xB5)).addMathOperatorHtml("∝"); + symbols["rightharpoondown"]=UprightSymbolUnicode(QChar(0x21C1)).addUprightHtml("⇁"); + symbols["rightharpoonup"]=UprightSymbolUnicode(QChar(0x21C0)).addUprightHtml("⇀"); + symbols["rightleftharpoon"]=UprightSymbolUnicode(QChar(0x21CC)).addUprightHtml("⇌"); + symbols["searrow"]=UprightSymbolUnicode(QChar(0x2198)).addUprightHtml("↘"); + symbols["setminus"]=MathOperatorSymbolUnicode(QChar(0x2216)).addMathOperatorHtml("∖"); + { auto s=MathOperatorSymbolUnicode(QChar(0x223C)).addMathOperatorHtml("˜").addMathOperatorStd("~"); + symbols["~"]=s; symbols["sim"]=s; } + symbols["simeq"]=MathOperatorSymbolUnicode(QChar(0x2243)).addMathOperatorHtml("≃"); + symbols["sqcap"]=MathOperatorSymbolUnicode(QChar(0x2293)).addMathOperatorHtml("⊓"); + symbols["sqcup"]=MathOperatorSymbolUnicode(QChar(0x2294)).addMathOperatorHtml("⊔"); + symbols["square"]=MathOperatorSymbolUnicode(QChar(0x25A1)); + symbols["subset"]=MathOperatorSymbolUnicode(QChar(0x2282)).addMathOperatorHtml("⊂").addMathOperatorWinSymbol(QChar(0xCC)); + symbols["subseteq"]=MathOperatorSymbolUnicode(QChar(0x2286)).addMathOperatorHtml("⊆").addMathOperatorWinSymbol(QChar(0xCD)); + symbols["subsetnot"]=MathOperatorSymbolUnicode(QChar(0x2284)).addMathOperatorHtml("⊄").addMathOperatorWinSymbol(QChar(0xCB)); + symbols["succ"]=MathOperatorSymbolUnicode(QChar(0x227B)).addMathOperatorHtml("≻"); + symbols["sum"]=NarrowMathOperatorSymbolUnicode(QChar(0x2211)).addMathOperatorWinSymbol(QChar(0xE5), 1.8, 0.1).addMathOperatorHtml("∑").addGlobalFlags(SubSuperscriptBelowAboveSymbol); + symbols["supset"]=MathOperatorSymbolUnicode(QChar(0x2283)).addMathOperatorHtml("⊃").addMathOperatorWinSymbol(QChar(0xC9)); + symbols["supseteq"]=MathOperatorSymbolUnicode(QChar(0x2287)).addMathOperatorHtml("⊇").addMathOperatorWinSymbol(QChar(0xCA)); + symbols["supsetnot"]=MathOperatorSymbolUnicode(QChar(0x2285)).addMathOperatorHtml("⊅"); + symbols["swarrow"]=UprightSymbolUnicode(QChar(0x2199)).addUprightHtml("↙"); + symbols["therefore"]=MathOperatorSymbolUnicode(QChar(0x2234)).addMathOperatorHtml("∴").addMathOperatorWinSymbol(QChar(0x5C)); + symbols["times"] = MathOperatorSymbol(QChar(0xD7), "×").addMathOperatorWinSymbol(QChar(0xB4)); + { auto s=UprightSymbolUnicode(QChar(0x2192)).addUprightHtml("→").addUprightWinSymbol(QChar(0xAE)); + symbols["to"]=s; symbols["rightarrow"]=s; } + symbols["top"]=MathOperatorSymbolUnicode(QChar(0x22A4)).addMathOperatorHtml("⊤").addMathOperatorWinSymbol(QChar(0x5E)).addUprightStd("T"); + symbols["triangle"]=NarrowMathOperatorSymbolUnicode(QChar(0x2206)); + symbols["uparrow"]=UprightSymbolUnicode(QChar(0x2191)).addUprightHtml("↑").addUprightWinSymbol(QChar(0xAD)); + symbols["updownarrow"]=UprightSymbolUnicode(QChar(0x2195)).addUprightHtml("↕"); + symbols["upharpoonleft"]=UprightSymbolUnicode(QChar(0x21BF)).addUprightHtml("↿"); + symbols["upharpoonright"]=UprightSymbolUnicode(QChar(0x21BE)).addUprightHtml("↾"); + symbols["vartriangleleft"]=NarrowMathOperatorSymbolUnicode(QChar(0x22B2)).addMathOperatorHtml("⊲"); + symbols["vdots"]=UprightSymbolUnicode(QChar(0x22EE)).addMathOperatorHtml("⋮"); + symbols["vee"]=MathOperatorSymbolUnicode(QChar(0x2228)).addMathOperatorHtml("∨").addMathOperatorWinSymbol(QChar(0xDA)); + symbols["vdash"]=MathOperatorSymbolUnicode(QChar(0x22A2)).addMathOperatorHtml("⊢"); + symbols["dashv"]=MathOperatorSymbolUnicode(QChar(0x22A3)).addMathOperatorHtml("⊣"); + symbols["vDash"]=MathOperatorSymbolUnicode(QChar(0x22A8)).addMathOperatorHtml("⊨"); + symbols["nvdash"]=MathOperatorSymbolUnicode(QChar(0x22AC)).addMathOperatorHtml("⊬"); + symbols["Vdash"]=MathOperatorSymbolUnicode(QChar(0x22A9)).addMathOperatorHtml("⊩"); + symbols["models"]=MathOperatorSymbolUnicode(QChar(0x22A7)).addMathOperatorHtml("⊧"); + symbols["wedge"]=MathOperatorSymbolUnicode(QChar(0x2227)).addMathOperatorHtml("∧").addMathOperatorWinSymbol(QChar(0xD9)); + + + + /************************************************************************************** + * GREEK letters + **************************************************************************************/ + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "alpha", "a", QChar(0x3B1), "α"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "beta", "b", QChar(0x3B2), "β"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "gamma", "g", QChar(0x3B3), "γ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "delta", "d", QChar(0x3B4), "δ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "epsilon", "e", QChar(0x3F5), "ϵ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "varepsilon", "e", QChar(0x3B5), "ε"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "zeta", "z", QChar(0x3B6),"ζ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "eta", "h", QChar(0x3B7),"η"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "theta", "q", QChar(0x3B8),"θ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "vartheta", "J", QChar(0x3D1),"ϑ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "iota", "i", QChar(0x3B9),"ι"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "kappa", "k", QChar(0x3BA),"κ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "lambda", "l", QChar(0x3BB),"λ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "mu", "m", QChar(0x3BC),"μ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "nu", "n", QChar(0x3BD),"ν"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "xi", "x", QChar(0x3BE),"ξ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "pi", "p", QChar(0x3C0),"π"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "varpi", "v", QChar(0x3D6),"ϖ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "rho", "r", QChar(0x3C1),"ρ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "varrho", "r", QChar(0x3F1),"ϱ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "sigma", "s", QChar(0x3C3),"σ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "varsigma", "V", QChar(0x3C2),"ς"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "tau", "t", QChar(0x3C4),"τ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "upsilon", "u", QChar(0x3C5),"υ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "phi", "f", QChar(0x3C5),"ϕ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "varphi", "j", QChar(0x3D6),"φ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "chi", "c", QChar(0x3C7),"χ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "psi", "y", QChar(0x3C8),"ψ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "omega", "w", QChar(0x3C9),"ω"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Gamma", "G", QChar(0x3A3),"Γ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Delta", "D", QChar(0x394),"Δ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Theta", "Q", QChar(0x398),"Θ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Lambda", "L", QChar(0x39B),"Λ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Omega", "W", QChar(0x3A9),"Ω"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Xi", "X", QChar(0x39E),"Ξ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Pi", "P", QChar(0x3A0),"Π"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Sigma", "S", QChar(0x3A3),"Σ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Upsilon", "U", QChar(0x3C6),"Υ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Phi", "F", QChar(0x3A6),"Φ"); + addGreekLetterVariants_WinSymbol_Unicode_Html(symbols, "Psi", "Y", QChar(0x3A8),"Ψ"); + + + /************************************************************************************** + * SYMBOLS from special fonts + **************************************************************************************/ + #if (QT_VERSION& symbols, const QString &baseInstructionName, const QString &letterWinSymbol, const QString &letterUnicode, const QString &html) { symbols[baseInstructionName]=MathGreekLetter_WinSymbol_Unicode_Html(letterWinSymbol, letterUnicode, html).addGlobalFlags(SubscriptCorrection); symbols["text"+baseInstructionName]=AsOutsiudeGreekLetter_WinSymbol_Unicode_Html(letterWinSymbol, letterUnicode, html); @@ -488,437 +915,7 @@ JKQTMathTextSymbolNode::SymbolFullProps JKQTMathTextSymbolNode::SimpleUprightTex -QHash JKQTMathTextSymbolNode::symbols=QHash(); -void JKQTMathTextSymbolNode::fillSymbolTables() -{ - static std::mutex sMutex; - std::lock_guard lock(sMutex); - if (symbols.size()>0) return; // tables have already been filled! So nothing to do here - - /************************************************************************************** - * STANDARD Symbols available in all standard fonts - **************************************************************************************/ - symbols["#"]=SimpleTextSymbol("#", "#"); - symbols["%"]=SimpleTextSymbol("%", "≫"); - symbols["&"]=SimpleTextSymbol("&", "&"); - symbols["("]=SimpleUprightTextSymbol("("); - symbols[")"]=SimpleUprightTextSymbol(")"); - symbols["["]=SimpleUprightTextSymbol("["); - symbols["]"]=SimpleUprightTextSymbol("]"); - symbols["_"]=SimpleTextSymbol("_"); - symbols["{"]=SimpleUprightTextSymbol("{"); - symbols["|"]=SimpleUprightTextSymbol("||", "‖").addUprightUnicode(QChar(0x2016)); - symbols["}"]=SimpleUprightTextSymbol("}"); - symbols["AC"]=UprightSymbolUnicode(QChar(0x223F)).addUprightHtml("∿").addUprightStd("~"); - symbols["circonflex"]=SimpleTextSymbol("^"); - symbols["aa"]=SimpleTextSymbol(QChar(0xE5)); - symbols["ae"]=SimpleTextSymbol(QChar(0xE6)); - symbols["AE"]=SimpleTextSymbol(QChar(0xC6)); - symbols["AA"]=SimpleTextSymbol(QChar(0xC5)); - symbols["oe"]=UnicodeSymbol(QChar(0x153)).addStd("oe").addHtml("œ"); - symbols["OE"]=UnicodeSymbol(QChar(0x152)).addStd("OE").addHtml("Œ"); - symbols["ss"]=SimpleTextSymbol(QChar(0xDF)).addHtml("ß"); - symbols["l"]=UnicodeSymbol(QChar(0x141)).addHtml("ł"); - symbols["L"]=UnicodeSymbol(QChar(0x142)).addHtml("Ł"); - symbols["o"]=SimpleTextSymbol(QChar(0xF8)).addHtml("ø"); - symbols["O"]=SimpleTextSymbol(QChar(0xD8)).addHtml("Ø"); - { auto s=UprightSymbolUnicode(QChar(0x212B)).addUprightStd(QChar(0xC5)); - symbols["Angstrom"]=s; symbols["angstrom"]=s; } - { auto s=UnicodeSymbol(QChar(0x2136)).addHtml("ℶ"); - symbols["Beth"]=s; symbols["Bet"]=s; symbols["beth"]=s; symbols["bet"]=s; } - symbols["Box"]=UprightSymbolUnicode(QChar(0x25A1)); - symbols["DC"]=UnicodeSymbol(QChar(0x2393)).addWinSymbol(QChar(0xBB)).addStd("="); - symbols["EUR"]=UnicodeSymbol(QChar(0x20AC)); - symbols["Im"]=UprightSymbolUnicode(QChar(0x2111)).addHtml("ℑ").addWinSymbol(QChar(0xC1)); - symbols["No"]=UnicodeSymbol(QChar(0x2116)); - { auto s=UprightSymbolUnicode(QChar(0x2126)).addUprightWinSymbol("W").addUprightHtml("Ω"); - symbols["Ohm"]=s; symbols["ohm"]=s; } - symbols["P"]=SimpleTextSymbol(QChar(0xB6)).addHtml("¶"); - symbols["Re"]=UnicodeSymbol(QChar(0x211C)).addHtml("ℜ").addWinSymbol(QChar(0xC2)); - { auto s=SimpleTextSymbol(QChar(0xA7)).addHtml("§"); - symbols["S"]=s; symbols["§"]=s;} - symbols["accurrent"]=UnicodeSymbol(QChar(0x23E6)); - { auto s=UnicodeSymbol(QChar(0x2135)).addHtml("ℵ").addWinSymbol(QChar(0xC0)); - symbols["alef"]=s; symbols["aleph"]=s; symbols["Aleph"]=s; symbols["Alef"]=s; } - symbols["angle"]=UprightSymbolUnicode(QChar(0x2220)).addHtml("∠").addWinSymbol(QChar(0xD0)); - symbols["backslash"]=SimpleTextSymbol("\\"); - symbols["benzene"]=UprightSymbolUnicode(QChar(0x232C)); - symbols["benzenr"]=UprightSymbolUnicode(QChar(0x23E3)); - symbols["blacksquare"]=UprightSymbolUnicode(QChar(0x220E)).addUprightHtml("□"); - { auto s=UprightSymbolUnicode(QChar(0x231E)); - symbols["blcorner"]=s; symbols["llcorner"]=s; } - { auto s=UprightSymbolUnicode(QChar(0x231F)); - symbols["brcorner"]=s; symbols["lrcorner"]=s; } - { auto s=UprightSymbolUnicode(QChar(0x2022)).addUprightHtml("•").addUprightWinSymbol(QChar(0xB7)); - symbols["bullet"]=s; symbols["textbullet"]=s; } - symbols["cdots"]=UprightSymbolUnicode(QChar(0x22EF)).addUprightHtml("···").addUprightStd(QString(3, QChar(0xB7))); - { auto s=UnicodeSymbol(QChar(0x2103)).addUprightStd("°C").addUprightHtml("°C"); - symbols["celsius"]=s; symbols["degC"]=s; symbols["degreeCelsius"]=s; } - symbols["ell"]=UprightSymbolUnicode(QChar(0x2113), "ℓ"); - symbols["wp"]=UprightSymbolUnicode(QChar(0x2118), "℘").addGlobalFlags(SubscriptCorrection); - symbols["mho"]=UprightSymbolUnicode(QChar(0x2127), "℧"); - symbols["lozenge"]=UprightSymbolUnicode(QChar(0x25CA), "◊"); - symbols["cent"]=SimpleTextSymbol(QChar(0xA2), "¢"); - symbols["checkmark"]=UprightSymbolStd(QChar(0x2713)).addUprightHtml("✓"); - symbols["circ"]=UprightSymbolStd(QChar(0x2218)).addUprightHtml("∘").addStd("o", ItalicOff,0.7, -0.25); - symbols["co"]=UprightSymbolUnicode(QChar(0x2105)); - { auto s=SimpleTextSymbol(QChar(0xA9), "©"); - symbols["copyright"]=s; symbols["textcopyright"]=s; symbols["circledC"]=s; } - { auto s=UprightSymbolUnicode(QChar(0x2020)).addUprightHtml("†"); - symbols["dagger"]=s; symbols["dag"]=s; symbols["textdagger"]=s; } - { auto s=UprightSymbolUnicode(QChar(0x2021)).addUprightHtml("‡"); - symbols["ddagger"]=s; symbols["ddag"]=s; symbols["textdaggerdbl"]=s; } - { auto s=UnicodeSymbol(QChar(0x2138)).addHtml("ℸ"); - symbols["dalet"]=s; symbols["Dalet"]=s; symbols["daleth"]=s; symbols["Daleth"]=s; } - symbols["dd"] = SymbolFullProps(SymbolProps("d", Upright|BoldOff), "d", Upright|BoldOff); - symbols["diamond"]=UprightSymbolUnicode(QChar(0x22C4)).addHtml("⋄").addWinSymbol(QChar(0xE0)); - symbols["dollar"]=UnicodeSymbol(QChar(0x0024)); - { auto s=SimpleTextSymbol(QChar(0x24), "$"); - symbols["dollar"]=s; symbols["$"]=s; } - symbols["dprime"]=UnicodeSymbol(QChar(0x2033)).addHtml("″").addStd("''"); - symbols["complement"] = SymbolFullProps(SymbolProps("C", Upright|BoldOff), "C", Upright|BoldOff).addUnicode(QChar(0x2201), Upright|BoldOff); - symbols["ee"] = SymbolFullProps(SymbolProps("e", Upright|BoldOff), "e", Upright|BoldOff); - { auto s=UnicodeSymbol(QChar(0x2026)).addHtml("…").addWinSymbol(QChar(0xBC)).addStd("..."); - symbols["ellipsis"]=s; symbols["dots"]=s; symbols["ldots"]=s; } - { auto s=SimpleTextSymbol(QChar(0x20AC), "€"); - symbols["euro"]=s; symbols["EUR"]=s; } - { auto s=UnicodeSymbol(QChar(0x2109)); - symbols["fahrenheit"]=s; symbols["degF"]=s; } - symbols["female"]=UnicodeSymbol(QChar(0x2640)).addHtml("♀"); - symbols["flq"]=UnicodeSymbol(QChar(0x2039)).addHtml("‹").addStd("<"); - symbols["flqq"]=UnicodeSymbol(QChar(0x00AB)).addHtml("«").addStd(QChar(0xAB)); - //symbols["frown"]=UnicodeSymbol(QChar(0x2322)).addHtml("⌢"); - symbols["frq"]=UnicodeSymbol(QChar(0x203A)).addHtml("›").addStd(">"); - symbols["frqq"]=UnicodeSymbol(QChar(0x00BB)).addHtml("»").addStd(QChar(0xBB)); - { auto s=UnicodeSymbol(QChar(0x2137)).addHtml("ℷ"); - symbols["gimel"]=s; symbols["Gimel"]=s; } - symbols["glq"]=UnicodeSymbol(QChar(0x2018)).addHtml("‘").addStd("'"); - symbols["glqq"]=UnicodeSymbol(QChar(0x201C)).addHtml("“").addStd("\""); - symbols["grq"]=UnicodeSymbol(QChar(0x2019)).addHtml("’").addStd("'"); - symbols["grqq"]=UnicodeSymbol(QChar(0x201D)).addHtml("”").addStd("\""); - symbols["hbar"]=UprightSymbolUnicode(QChar(0x210F)).addUprightHtml("ℏ").addStd("h", ItalicOn|DrawLeftHBar).addGlobalFlags(SubscriptCorrection); - symbols["hexagon"]=UprightSymbolUnicode(QChar(0x2394)); - symbols["ii"] = SymbolFullProps(SymbolProps("i", Upright|BoldOff), "i", Upright|BoldOff); - symbols["infty"]=UprightSymbolUnicode(QChar(0x221E)).addUprightHtml("∞").addUprightWinSymbol(QChar(0xA5)).addUprightStd("8", RotateSymbol90); - symbols["langle"]=UprightSymbolUnicode(QChar(0x2329)).addWinSymbol(QChar(0xE1)); - symbols["lceil"]=UprightSymbolUnicode(QChar(0x2308)).addUprightHtml("⌈").addUprightWinSymbol(QChar(0xE9)); - symbols["lfloor"]=UprightSymbolUnicode(QChar(0x230A)).addUprightHtml("⌊").addUprightWinSymbol(QChar(0xEB)); - symbols["lightning"]=UnicodeSymbol(QChar(0x21AF)); - symbols["male"]=UnicodeSymbol(QChar(0x2642)).addHtml("♂"); - symbols["measuredangle"]=UprightSymbolUnicode(QChar(0x2221)).addUprightHtml("∡"); - symbols["micro"] = SimpleTextSymbol(QChar(0xB5), "µ"); - symbols["ohm"]=UprightSymbolUnicode(QChar(0x2126)).addUprightHtml("Ω").addUprightWinSymbol(QChar(0x57)); - symbols["partial"]=UprightSymbolUnicode(QChar(0x2202)).addUprightHtml("∂").addUprightWinSymbol(QChar(0xB6)); - { auto s=UnicodeSymbol(QChar(0x2030)).addHtml("‰"); - symbols["perthousand"]=s; symbols["permil"]=s; } - symbols["pound"]=SimpleTextSymbol(QChar(0xA3), "£"); - symbols["pound"]=UnicodeSymbol(QChar(0x00A3)); - symbols["prime"]=UnicodeSymbol(QChar(0x2032)).addHtml("′").addStd("'"); - symbols["arcminute"]=UnicodeSymbol(QChar(0x2032)).addHtml("′").addStd("'"); - symbols["arcsecond"]=UnicodeSymbol(QChar(0x2033)).addHtml("&dprime;").addStd("'"); - symbols["rangle"]=UprightSymbolUnicode(QChar(0x232A)).addUprightWinSymbol(QChar(0xF1)); - symbols["rceil"]=UprightSymbolUnicode(QChar(0x2309)).addUprightHtml("⌉").addUprightWinSymbol(QChar(0xF9)); - { auto s=SimpleTextSymbol(QChar(0xAE), "®"); - symbols["registered"]=s; symbols["textregistered"]=s; symbols["circledR"]=s; } - symbols["rfloor"]=UprightSymbolUnicode(QChar(0x230B)).addUprightHtml("⌋").addUprightWinSymbol(QChar(0xFB)); - symbols["rightangle"]=UprightSymbolUnicode(QChar(0x221F)).addUprightHtml("∟"); - //symbols["smile"]=UprightSymbolUnicode(QChar(0x2323)).addUprightHtml("⌣"); - symbols["sphericalangle"]=UprightSymbolUnicode(QChar(0x2222)).addUprightHtml("∢"); - symbols["star"]=UprightSymbolUnicode(QChar(0x22C6)); - symbols["tcohm"]=UnicodeSymbol(QChar(0x2126)); - { auto s=UnicodeSymbol(QChar(0x2014), "⹀"); - symbols["dblhyphen"]=s; symbols["textdblhyphen"]=s; symbols["textdblhyphenchar"]=s; } - { auto s=UnicodeSymbol(QChar(0x2014), "—"); - symbols["---"]=s; symbols["textemdash"]=s; symbols["emdash"]=s; } - { auto s=UnicodeSymbol(QChar(0x2013), "–"); - symbols["--"]=s; symbols["textendash"]=s; symbols["endash"]=s; } - { auto s=SimpleTextSymbol("-"); - symbols["texthyphen"]=s; symbols["hyphen"]=s; } - symbols["textbar"]=SimpleTextSymbol("|", "|"); - { auto s=SimpleTextSymbol(QChar(0xB0), "°"); - symbols["textdegree"]=s; symbols["degree"] = s; } - symbols["textgreater"]=SimpleTextSymbol(">", ">"); - symbols["textless"]=SimpleTextSymbol("<", "<"); - symbols["textquestiondown"]=SimpleTextSymbol(QChar(0xBF), "¿"); - symbols["textexclamdown"]=SimpleTextSymbol(QChar(0xA1), "¡"); - { auto s=UnicodeSymbol(QChar(0x231C)); - symbols["tlcorner"]=s; symbols["ulcorner"]=s; } - symbols["trademark"]=UnicodeSymbol(QChar(0x2122)).addHtml("™").addWinSymbol(QChar(0xD4)).addStd("(TM)"); - symbols["trapezium"]=UnicodeSymbol(QChar(0x23E2)).addHtml("⏢"); - { auto s=UprightSymbolUnicode(QChar(0x231D)); - symbols["trcorner"]=s; symbols["urcorner"]=s; } - symbols["trprime"]=UnicodeSymbol(QChar(0x2034)).addHtml("‴").addStd("'''"); - symbols["varcarriagereturn"]=UnicodeSymbol(QChar(0x23CE)).addWinSymbol(QChar(0xBF)); - symbols["varhexagonlrbonds"]=UnicodeSymbol(QChar(0x232C)); - symbols["yen"]=SimpleTextSymbol(QChar(0xA5), "¥"); - - - - - - /************************************************************************************** - * STANDARD MathOperator Strings - **************************************************************************************/ - symbols["Pr"] = NarrowMathOperatorText("Pr"); - symbols["acos"] = NarrowMathOperatorText("acos"); - symbols["arccos"] = NarrowMathOperatorText("arccos"); - symbols["arcsin"] = NarrowMathOperatorText("arcsin"); - symbols["arctan"] = NarrowMathOperatorText("arctan"); - symbols["arg"] = NarrowMathOperatorText("arg").addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["argmax"] = NarrowMathOperatorText("arg max", "arg max").addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["argmin"] = NarrowMathOperatorText("arg min", "arg min").addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["asin"] = NarrowMathOperatorText("asin"); - symbols["atan"] = NarrowMathOperatorText("atan"); - symbols["cos"] = NarrowMathOperatorText("cos"); - symbols["cosh"] = NarrowMathOperatorText("cosh"); - symbols["cot"] = NarrowMathOperatorText("cot"); - symbols["coth"] = NarrowMathOperatorText("coth"); - symbols["coth"] = NarrowMathOperatorText("coth"); - symbols["deg"] = NarrowMathOperatorText("deg"); - symbols["det"] = NarrowMathOperatorText("det"); - symbols["dim"] = NarrowMathOperatorText("dim"); - symbols["exp"] = NarrowMathOperatorText("exp"); - symbols["gcd"] = NarrowMathOperatorText("gcd"); - symbols["hom"] = NarrowMathOperatorText("hom"); - symbols["ker"] = NarrowMathOperatorText("ker"); - symbols["lb"] = NarrowMathOperatorText("lb"); - symbols["ld"] = NarrowMathOperatorText("ld"); - symbols["lim"] = NarrowMathOperatorText("lim").addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["liminf"] = NarrowMathOperatorText("lim inf", "lim inf").addGlobalFlags(SubSuperscriptBelowAboveSymbol).addGlobalFlags(SubscriptCorrection); - symbols["limsup"] = NarrowMathOperatorText("lim sup", "lim sup").addGlobalFlags(SubSuperscriptBelowAboveSymbol).addGlobalFlags(SubscriptCorrection); - symbols["ln"] = NarrowMathOperatorText("ln"); - symbols["log"] = NarrowMathOperatorText("log"); - symbols["max"] = NarrowMathOperatorText("max"); - symbols["median"] = NarrowMathOperatorText("median"); - symbols["min"] = NarrowMathOperatorText("min"); - symbols["mod"] = NarrowMathOperatorText("mod"); - symbols["sec"] = NarrowMathOperatorText("sec"); - symbols["sgn"] = NarrowMathOperatorText("sgn"); - symbols["sign"] = NarrowMathOperatorText("sign"); - symbols["sin"] = NarrowMathOperatorText("sin"); - symbols["sinh"] = NarrowMathOperatorText("sinh"); - symbols["tan"] = NarrowMathOperatorText("tan"); - symbols["tanh"] = NarrowMathOperatorText("tanh"); - - /************************************************************************************** - * STANDARD MathOperator Symbols - **************************************************************************************/ - { auto s=MathOperatorSymbolUnicode(QChar(0x2217)).addMathOperatorStd("*").addMathOperatorHtml("*"); - symbols["*"]=s; symbols["ast"]=s; symbols["asterisk"]=s; } - symbols["/"]=NarrowMathOperatorSymbolStd("/"); - symbols["+"]=MathOperatorSymbolUnicode(QChar(0x2B)).addMathOperatorHtml("+").addMathOperatorStd("+"); - symbols["-"]=MathOperatorSymbolUnicode(QChar(0x2212)).addMathOperatorHtml("-").addMathOperatorStd("-"); - symbols["<"]=MathOperatorSymbol("<", "<"); - symbols["="]=MathOperatorSymbol("="); - symbols[">"]=MathOperatorSymbol(">", ">"); - symbols["Downarrow"]=UprightSymbolUnicode(QChar(0x21D3)).addUprightHtml("⇓").addUprightWinSymbol(QChar(0xDF)); - symbols["Leftarrow"]=UprightSymbolUnicode(QChar(0x21D0)).addUprightHtml("⇐").addUprightWinSymbol(QChar(0xDC)); - symbols["Rightarrow"]=UprightSymbolUnicode(QChar(0x21D2)).addUprightHtml("⇒").addUprightWinSymbol(QChar(0xDE)); - symbols["Uparrow"]=UprightSymbolUnicode(QChar(0x21D1)).addUprightHtml("⇑").addUprightWinSymbol(QChar(0xDD)); - symbols["Updownarrow"]=UprightSymbolUnicode(QChar(0x21D5)).addUprightHtml("⇕"); - symbols["approx"]=MathOperatorSymbolUnicode(QChar(0x2248)).addMathOperatorHtml("≈").addMathOperatorWinSymbol(QChar(0xBB)); - symbols["bbC"]=UnicodeSymbol(QChar(0x2102)); - symbols["bbH"]=UnicodeSymbol(QChar(0x210D)); - symbols["bbN"]=UnicodeSymbol(QChar(0x2115)); - symbols["bbP"]=UnicodeSymbol(QChar(0x2119)); - symbols["bbQ"]=UnicodeSymbol(QChar(0x211A)); - symbols["bbR"]=UnicodeSymbol(QChar(0x211D)); - symbols["bbZ"]=UnicodeSymbol(QChar(0x2124)); - symbols["because"]=MathOperatorSymbolUnicode(QChar(0x2235)).addMathOperatorHtml("∵"); - symbols["bigcap"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C2)).addMathOperatorHtml("⋂").addMathOperatorWinSymbol(QChar(0xC7), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["bigcup"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C3)).addMathOperatorHtml("⋃").addMathOperatorWinSymbol(QChar(0xC8), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); - { auto s=NarrowMathOperatorSymbolUnicode(QChar(0x22C0)).addMathOperatorHtml("⋀").addMathOperatorWinSymbol(QChar(0xD9), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["bigwedge"]=s; symbols["bighat"]=s; } - symbols["bigvee"]=NarrowMathOperatorSymbolUnicode(QChar(0x22C1)).addMathOperatorHtml("⋁").addMathOperatorWinSymbol(QChar(0xDA), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["bigotimes"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A02)).addMathOperatorHtml("⨂").addMathOperatorWinSymbol(QChar(0xC4), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["bigoplus"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A01)).addMathOperatorHtml("⨁").addMathOperatorWinSymbol(QChar(0xC5), 1.8).addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["bigodot"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A00)).addMathOperatorHtml("⨀").addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["biguplus"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A04)).addMathOperatorHtml("⨄").addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["bigsqcup"]=NarrowMathOperatorSymbolUnicode(QChar(0x2A06)).addMathOperatorHtml("⨆").addGlobalFlags(SubSuperscriptBelowAboveSymbol); - { auto s=MathOperatorSymbolUnicode(QChar(0x22A5)).addMathOperatorHtml("⊥"); - symbols["bot"]=s; symbols["perp"]=s; } - { auto s=MathOperatorSymbolUnicode(QChar(0x2229)).addMathOperatorHtml("∩").addMathOperatorWinSymbol(QChar(0xC7)); - symbols["cap"]=s; symbols["land"]=s; } - symbols["cdot"]=MathOperatorSymbol(QChar(0xB7)).addMathOperatorHtml("·").addMathOperatorWinSymbol(QChar(0xD7)); - symbols["cong"]=MathOperatorSymbolUnicode(QChar(0x2245)).addMathOperatorHtml("≅"); - symbols["coprod"]=NarrowMathOperatorSymbolUnicode(QChar(0x2210)).addMathOperatorHtml("∐").addWinSymbol(QChar(0xD5), ItalicOff|BoldOff|FlipSymbolUpDown, 1.8, 0.1).addGlobalFlags(SubSuperscriptBelowAboveSymbol); - { auto s=MathOperatorSymbolUnicode(QChar(0x222A)).addMathOperatorHtml("∪").addMathOperatorWinSymbol(QChar(0xC8)); - symbols["cup"]=s; symbols["lor"]=s; } - symbols["ddots"]=UprightSymbolUnicode(QChar(0x22F1)).addMathOperatorHtml("⋱"); - symbols["div"]=MathOperatorSymbolUnicode(QChar(0x00F7)).addMathOperatorHtml("÷").addMathOperatorWinSymbol(QChar(0xB8)); - symbols["downarrow"]=UprightSymbolUnicode(QChar(0x2193)).addUprightHtml("↓").addUprightWinSymbol(QChar(0xAF)); - symbols["downharpoonleft"]=UprightSymbolUnicode(QChar(0x21C3)).addUprightHtml("⇃"); - symbols["downharpoonright"]=UprightSymbolUnicode(QChar(0x21C2)).addUprightHtml("⇂"); - { auto s=MathOperatorSymbolUnicode(QChar(0x2205)).addMathOperatorHtml("∅").addMathOperatorWinSymbol(QChar(0xC6)).addStd("0", BoldOff|ItalicOff|DrawSlash); - symbols["emptyset"]=s; symbols["varnothing"]=s; } - symbols["equiv"]=MathOperatorSymbolUnicode(QChar(0x2261)).addMathOperatorHtml("≡").addMathOperatorWinSymbol(QChar(0xBA)); - symbols["exists"]=NarrowMathOperatorSymbolUnicode(QChar(0x2203)).addMathOperatorHtml("∃").addMathOperatorWinSymbol(QChar(0x24)).addStd("E", ItalicOff|BoldOff|FlipSymbolLeftRight); - symbols["forall"]=NarrowMathOperatorSymbolUnicode(QChar(0x2200)).addMathOperatorHtml("∀").addMathOperatorWinSymbol(QChar(0x22)).addStd("A", ItalicOff|BoldOff|FlipSymbolUpDown).addGlobalFlags(SubscriptCorrection); - { auto s=MathOperatorSymbolUnicode(QChar(0x2265)).addMathOperatorHtml("≥").addMathOperatorWinSymbol(QChar(0xB3)); - symbols["geq"]=s; symbols["ge"]=s; } - symbols["geqq"]=MathOperatorSymbolUnicode(QChar(0x2267)).addMathOperatorHtml("≧"); - symbols["gg"]=MathOperatorSymbolUnicode(QChar(0x226B)).addMathOperatorHtml("≫").addMathOperatorStd(">>"); - symbols["iddots"]=UprightSymbolUnicode(QChar(0x22F0)).addMathOperatorHtml("⋰"); - { auto s=UprightSymbolUnicode(QChar(0x21D4)).addUprightHtml("⇔").addUprightWinSymbol(QChar(0xDB)); - symbols["iff"]=s; symbols["Leftrightarrow"]=s; } - symbols["iiint"]=NarrowMathOperatorSymbolUnicode(QChar(0x222D)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∭").addMathOperatorWinSymbol(QString(3, QChar(0xF2)), 1.8, 0.1); - symbols["iint"]=NarrowMathOperatorSymbolUnicode(QChar(0x222C)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∬").addMathOperatorWinSymbol(QString(2, QChar(0xF2)), 1.8, 0.1); - symbols["in"]=MathOperatorSymbolUnicode(QChar(0x2208)).addMathOperatorHtml("∈").addMathOperatorWinSymbol(QChar(0xCE)); - symbols["int"]=NarrowMathOperatorSymbolUnicode(QChar(0x222B)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∫").addMathOperatorWinSymbol(QChar(0xF2), 1.8, 0.1); - symbols["leftarrow"]=UprightSymbolUnicode(QChar(0x2190)).addUprightHtml("←").addUprightWinSymbol(QChar(0xAC)); - symbols["longleftarrow"]=UprightSymbolUnicode(QChar(0x27F5)).addUprightHtml("⟵"); - symbols["longrightarrow"]=UprightSymbolUnicode(QChar(0x27F6)).addUprightHtml("⟶"); - symbols["longleftrightarrow"]=UprightSymbolUnicode(QChar(0x27F7)).addUprightHtml("⟷"); - symbols["Longleftarrow"]=UprightSymbolUnicode(QChar(0x27F8)).addUprightHtml("⟸"); - symbols["Longrightarrow"]=UprightSymbolUnicode(QChar(0x27F9)).addUprightHtml("⟹"); - symbols["Longleftrightarrow"]=UprightSymbolUnicode(QChar(0x27FA)).addUprightHtml("⟺"); - symbols["leftharpoondown"]=UprightSymbolUnicode(QChar(0x21BD)).addUprightHtml("↽"); - symbols["leftharpoonup"]=UprightSymbolUnicode(QChar(0x21BC)).addUprightHtml("↼"); - symbols["leftrightarrow"]=UprightSymbolUnicode(QChar(0x2194)).addUprightHtml("↔").addUprightWinSymbol(QChar(0xAB)); - symbols["leftrightharpoon"]=UprightSymbolUnicode(QChar(0x21CB)).addUprightHtml("⇋"); - { auto s=MathOperatorSymbolUnicode(QChar(0x2264)).addMathOperatorHtml("≤").addMathOperatorWinSymbol(QChar(0xA3)); - symbols["leq"]=s; symbols["le"]=s; } - symbols["leqq"]=MathOperatorSymbolUnicode(QChar(0x2266)).addMathOperatorHtml("≦"); - symbols["ll"]=MathOperatorSymbolUnicode(QChar(0x226A)).addMathOperatorHtml("≪").addMathOperatorStd("<<"); - symbols["lnot"]=MathOperatorSymbolUnicode(QChar(0xAC)).addMathOperatorWinSymbol(QChar(0xD8)).addMathOperatorHtml("¬"); - symbols["mapimage"]=MathOperatorSymbolUnicode(QChar(0x22B7)).addMathOperatorHtml("⊷"); - symbols["maporiginal"]=MathOperatorSymbolUnicode(QChar(0x22B6)).addMathOperatorHtml("⊶"); - symbols["mapsto"]=MathOperatorSymbolUnicode(QChar(0x21A6)).addMathOperatorHtml("↦"); - symbols["mid"]=MathOperatorSymbolUnicode(QChar(0x2223)).addMathOperatorHtml("∣").addMathOperatorWinSymbol(QChar(0xBD)).addMathOperatorStd("|"); - symbols["mp"]=MathOperatorSymbolUnicode(QChar(0x2213)).addMathOperatorHtml("∓").addWinSymbol(QChar(0xB1),ItalicOff|BoldOff|FlipSymbolUpDown).addStd(QChar(0xB1),ItalicOff|BoldOff|FlipSymbolUpDown); - symbols["multimap"]=MathOperatorSymbolUnicode(QChar(0x22B8)).addMathOperatorHtml("⊸"); - symbols["nabla"]=NarrowMathOperatorSymbolUnicode(QChar(0x2207)).addMathOperatorHtml("∇").addMathOperatorWinSymbol(QChar(0xD1)).addGlobalFlags(IntLikeSymbolCorrection); - symbols["ne"]=NarrowMathOperatorSymbolUnicode(QChar(0x2260)).addMathOperatorHtml("≠").addMathOperatorWinSymbol(QChar(0xB9)); - symbols["nearrow"]=UprightSymbolUnicode(QChar(0x2197)).addUprightHtml("↗"); - { auto s=MathOperatorSymbolUnicode(QChar(0x00AC)).addMathOperatorHtml("¬").addMathOperatorWinSymbol(QChar(0xD8)); - symbols["neg"]=s; symbols["lnot"]=s; } - symbols["neq"]=MathOperatorSymbolUnicode(QChar(0x2260)).addMathOperatorHtml("≠").addMathOperatorWinSymbol(QChar(0xB9)).addStd("=", ItalicOff|BoldOff|DrawSlash); - symbols["nexists"]=NarrowMathOperatorSymbolUnicode(QChar(0x2204)).addMathOperatorHtml("∄").addStd("E", ItalicOff|BoldOff|FlipSymbolLeftRight|DrawSlash).addMathOperatorWinSymbol(QChar(0x24), ItalicOff|BoldOff|DrawSlash); - symbols["ni"]=NarrowMathOperatorSymbolUnicode(QChar(0x220B)).addMathOperatorHtml("∋").addMathOperatorWinSymbol(QChar(0xCE), ItalicOff|BoldOff|FlipSymbolLeftRight); - symbols["nmid"]=NarrowMathOperatorSymbolUnicode(QChar(0x2224)).addMathOperatorHtml("∤"); - symbols["notin"]=NarrowMathOperatorSymbolUnicode(QChar(0x2209)).addMathOperatorHtml("∉").addMathOperatorWinSymbol(QChar(0xCF)); - symbols["notni"]=NarrowMathOperatorSymbolUnicode(QChar(0x220C)).addMathOperatorHtml("∌"); - symbols["nparallel"]=MathOperatorSymbolUnicode(QChar(0x2226)).addMathOperatorHtml("∦"); - symbols["nwarrow"]=UprightSymbolUnicode(QChar(0x2196)).addUprightHtml("↖"); - symbols["odot"]=MathOperatorSymbolUnicode(QChar(0x2299)).addMathOperatorHtml("⊙"); - symbols["oiiint"]=NarrowMathOperatorSymbolUnicode(QChar(0x2230)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∰"); - symbols["oiint"]=NarrowMathOperatorSymbolUnicode(QChar(0x222F)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∯"); - symbols["oint"]=NarrowMathOperatorSymbolUnicode(QChar(0x222E)).addGlobalFlags(IntLikeSymbolCorrection | SubSuperscriptBelowAboveSymbol).addMathOperatorHtml("∮"); - symbols["ominus"]=MathOperatorSymbolUnicode(QChar(0x2296)).addMathOperatorHtml("⊖"); - symbols["oplus"]=MathOperatorSymbolUnicode(QChar(0x2295)).addMathOperatorHtml("⊕").addMathOperatorWinSymbol(QChar(0xC5)); - symbols["oslash"]=MathOperatorSymbolUnicode(QChar(0x2298)).addMathOperatorHtml("⊘"); - symbols["otimes"]=MathOperatorSymbolUnicode(QChar(0x2297)).addMathOperatorHtml("⊗").addMathOperatorWinSymbol(QChar(0xC4)); - symbols["parallel"]=NarrowMathOperatorSymbolUnicode(QChar(0x2225)).addMathOperatorHtml("∥").addMathOperatorStd("||"); - symbols["pm"] = MathOperatorSymbol(QChar(0xB1), "±").addMathOperatorWinSymbol(QChar(0xB1)); - symbols["prec"]=MathOperatorSymbolUnicode(QChar(0x227A)).addMathOperatorHtml("≺"); - symbols["prod"]=NarrowMathOperatorSymbolUnicode(QChar(0x220F)).addMathOperatorWinSymbol(QChar(0xD5), 1.8, 0.1).addMathOperatorHtml("∏").addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["propto"]=MathOperatorSymbolUnicode(QChar(0x221D)).addMathOperatorWinSymbol(QChar(0xB5)).addMathOperatorHtml("∝"); - symbols["rightharpoondown"]=UprightSymbolUnicode(QChar(0x21C1)).addUprightHtml("⇁"); - symbols["rightharpoonup"]=UprightSymbolUnicode(QChar(0x21C0)).addUprightHtml("⇀"); - symbols["rightleftharpoon"]=UprightSymbolUnicode(QChar(0x21CC)).addUprightHtml("⇌"); - symbols["searrow"]=UprightSymbolUnicode(QChar(0x2198)).addUprightHtml("↘"); - symbols["setminus"]=MathOperatorSymbolUnicode(QChar(0x2216)).addMathOperatorHtml("∖"); - { auto s=MathOperatorSymbolUnicode(QChar(0x223C)).addMathOperatorHtml("˜").addMathOperatorStd("~"); - symbols["~"]=s; symbols["sim"]=s; } - symbols["simeq"]=MathOperatorSymbolUnicode(QChar(0x2243)).addMathOperatorHtml("≃"); - symbols["sqcap"]=MathOperatorSymbolUnicode(QChar(0x2293)).addMathOperatorHtml("⊓"); - symbols["sqcup"]=MathOperatorSymbolUnicode(QChar(0x2294)).addMathOperatorHtml("⊔"); - symbols["square"]=MathOperatorSymbolUnicode(QChar(0x25A1)); - symbols["subset"]=MathOperatorSymbolUnicode(QChar(0x2282)).addMathOperatorHtml("⊂").addMathOperatorWinSymbol(QChar(0xCC)); - symbols["subseteq"]=MathOperatorSymbolUnicode(QChar(0x2286)).addMathOperatorHtml("⊆").addMathOperatorWinSymbol(QChar(0xCD)); - symbols["subsetnot"]=MathOperatorSymbolUnicode(QChar(0x2284)).addMathOperatorHtml("⊄").addMathOperatorWinSymbol(QChar(0xCB)); - symbols["succ"]=MathOperatorSymbolUnicode(QChar(0x227B)).addMathOperatorHtml("≻"); - symbols["sum"]=NarrowMathOperatorSymbolUnicode(QChar(0x2211)).addMathOperatorWinSymbol(QChar(0xE5), 1.8, 0.1).addMathOperatorHtml("∑").addGlobalFlags(SubSuperscriptBelowAboveSymbol); - symbols["supset"]=MathOperatorSymbolUnicode(QChar(0x2283)).addMathOperatorHtml("⊃").addMathOperatorWinSymbol(QChar(0xC9)); - symbols["supseteq"]=MathOperatorSymbolUnicode(QChar(0x2287)).addMathOperatorHtml("⊇").addMathOperatorWinSymbol(QChar(0xCA)); - symbols["supsetnot"]=MathOperatorSymbolUnicode(QChar(0x2285)).addMathOperatorHtml("⊅"); - symbols["swarrow"]=UprightSymbolUnicode(QChar(0x2199)).addUprightHtml("↙"); - symbols["therefore"]=MathOperatorSymbolUnicode(QChar(0x2234)).addMathOperatorHtml("∴").addMathOperatorWinSymbol(QChar(0x5C)); - symbols["times"] = MathOperatorSymbol(QChar(0xD7), "×").addMathOperatorWinSymbol(QChar(0xB4)); - { auto s=UprightSymbolUnicode(QChar(0x2192)).addUprightHtml("→").addUprightWinSymbol(QChar(0xAE)); - symbols["to"]=s; symbols["rightarrow"]=s; } - symbols["top"]=MathOperatorSymbolUnicode(QChar(0x22A4)).addMathOperatorHtml("⊤").addMathOperatorWinSymbol(QChar(0x5E)).addUprightStd("T"); - symbols["triangle"]=NarrowMathOperatorSymbolUnicode(QChar(0x2206)); - symbols["uparrow"]=UprightSymbolUnicode(QChar(0x2191)).addUprightHtml("↑").addUprightWinSymbol(QChar(0xAD)); - symbols["updownarrow"]=UprightSymbolUnicode(QChar(0x2195)).addUprightHtml("↕"); - symbols["upharpoonleft"]=UprightSymbolUnicode(QChar(0x21BF)).addUprightHtml("↿"); - symbols["upharpoonright"]=UprightSymbolUnicode(QChar(0x21BE)).addUprightHtml("↾"); - symbols["vartriangleleft"]=NarrowMathOperatorSymbolUnicode(QChar(0x22B2)).addMathOperatorHtml("⊲"); - symbols["vdots"]=UprightSymbolUnicode(QChar(0x22EE)).addMathOperatorHtml("⋮"); - symbols["vee"]=MathOperatorSymbolUnicode(QChar(0x2228)).addMathOperatorHtml("∨").addMathOperatorWinSymbol(QChar(0xDA)); - symbols["vdash"]=MathOperatorSymbolUnicode(QChar(0x22A2)).addMathOperatorHtml("⊢"); - symbols["dashv"]=MathOperatorSymbolUnicode(QChar(0x22A3)).addMathOperatorHtml("⊣"); - symbols["vDash"]=MathOperatorSymbolUnicode(QChar(0x22A8)).addMathOperatorHtml("⊨"); - symbols["nvdash"]=MathOperatorSymbolUnicode(QChar(0x22AC)).addMathOperatorHtml("⊬"); - symbols["Vdash"]=MathOperatorSymbolUnicode(QChar(0x22A9)).addMathOperatorHtml("⊩"); - symbols["models"]=MathOperatorSymbolUnicode(QChar(0x22A7)).addMathOperatorHtml("⊧"); - symbols["wedge"]=MathOperatorSymbolUnicode(QChar(0x2227)).addMathOperatorHtml("∧").addMathOperatorWinSymbol(QChar(0xD9)); - - - - /************************************************************************************** - * GREEK letters - **************************************************************************************/ - addGreekLetterVariants_WinSymbol_Unicode_Html("alpha", "a", QChar(0x3B1), "α"); - addGreekLetterVariants_WinSymbol_Unicode_Html("beta", "b", QChar(0x3B2), "β"); - addGreekLetterVariants_WinSymbol_Unicode_Html("gamma", "g", QChar(0x3B3), "γ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("delta", "d", QChar(0x3B4), "δ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("epsilon", "e", QChar(0x3F5), "ϵ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("varepsilon", "e", QChar(0x3B5), "ε"); - addGreekLetterVariants_WinSymbol_Unicode_Html("zeta", "z", QChar(0x3B6),"ζ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("eta", "h", QChar(0x3B7),"η"); - addGreekLetterVariants_WinSymbol_Unicode_Html("theta", "q", QChar(0x3B8),"θ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("vartheta", "J", QChar(0x3D1),"ϑ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("iota", "i", QChar(0x3B9),"ι"); - addGreekLetterVariants_WinSymbol_Unicode_Html("kappa", "k", QChar(0x3BA),"κ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("lambda", "l", QChar(0x3BB),"λ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("mu", "m", QChar(0x3BC),"μ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("nu", "n", QChar(0x3BD),"ν"); - addGreekLetterVariants_WinSymbol_Unicode_Html("xi", "x", QChar(0x3BE),"ξ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("pi", "p", QChar(0x3C0),"π"); - addGreekLetterVariants_WinSymbol_Unicode_Html("varpi", "v", QChar(0x3D6),"ϖ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("rho", "r", QChar(0x3C1),"ρ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("varrho", "r", QChar(0x3F1),"ϱ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("sigma", "s", QChar(0x3C3),"σ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("varsigma", "V", QChar(0x3C2),"ς"); - addGreekLetterVariants_WinSymbol_Unicode_Html("tau", "t", QChar(0x3C4),"τ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("upsilon", "u", QChar(0x3C5),"υ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("phi", "f", QChar(0x3C5),"ϕ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("varphi", "j", QChar(0x3D6),"φ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("chi", "c", QChar(0x3C7),"χ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("psi", "y", QChar(0x3C8),"ψ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("omega", "w", QChar(0x3C9),"ω"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Gamma", "G", QChar(0x3A3),"Γ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Delta", "D", QChar(0x394),"Δ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Theta", "Q", QChar(0x398),"Θ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Lambda", "L", QChar(0x39B),"Λ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Omega", "W", QChar(0x3A9),"Ω"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Xi", "X", QChar(0x39E),"Ξ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Pi", "P", QChar(0x3A0),"Π"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Sigma", "S", QChar(0x3A3),"Σ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Upsilon", "U", QChar(0x3C6),"Υ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Phi", "F", QChar(0x3A6),"Φ"); - addGreekLetterVariants_WinSymbol_Unicode_Html("Psi", "Y", QChar(0x3A8),"Ψ"); - - - /************************************************************************************** - * SYMBOLS from special fonts - **************************************************************************************/ -#if (QT_VERSION& symbols,const QString& baseInstructionName, const QString& letterWinSymbol, const QString& letterUnicode, const QString& html); /** \brief constructs a SymbolProps for a symbol with encoding in Standard-fonts a */ static SymbolFullProps StdSymbol(const QString& symbol, const QString& html); /** \brief constructs a SymbolProps for a symbol with encoding in UnicodeFull-fonts a */ @@ -306,10 +306,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextSymbolNode: public JKQTMathTextNode { /** \brief symbols that can be generated in any standard-font */ - static QHash symbols; - - /** \brief fill the symbol tables standardTextSymbols, winSymbolSymbol, ... with contents */ - static void fillSymbolTables(); + static const QHash& symbols(); /** \brief retrieve the properties to render the given symbol \a symName in the current environment \a currentEv */ SymbolFullProps getSymbolProp(const QString& symName, const JKQTMathTextEnvironment& currentEv) const; diff --git a/lib/jkqtmathtext/nodes/jkqtmathtexttextnode.cpp b/lib/jkqtmathtext/nodes/jkqtmathtexttextnode.cpp index ba2ed34d25..6a8c3c82bd 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtexttextnode.cpp +++ b/lib/jkqtmathtext/nodes/jkqtmathtexttextnode.cpp @@ -73,37 +73,39 @@ bool JKQTMathTextTextBaseNode::toHtml(QString &html, JKQTMathTextEnvironment cur -QHash JKQTMathTextTextNode::blackboardUnicodeTable=QHash(); +const QHash& JKQTMathTextTextNode::blackboardUnicodeTable(){ + static QHash table=[]() { + QHash blackboardUnicodeTable; -void JKQTMathTextTextNode::fillStaticTables() { - static std::mutex sMutex; - std::lock_guard lock(sMutex); - if (blackboardUnicodeTable.size()>0) return; + const QString ALPHA="ABDEFGIJKLMOSTUVWXYZ"; + for (const QChar ch: ALPHA) { + blackboardUnicodeTable[ch]=0x1D538+(ch.unicode()-QChar('A').unicode()); + } + const QString alpha="abcdefghijklmnopqrstuvwxyz"; + for (const QChar ch: alpha) { + blackboardUnicodeTable[ch]=0x1D552+(ch.unicode()-QChar('a').unicode()); + } + const QString nums="0123456789"; + for (const QChar ch: nums) { + blackboardUnicodeTable[ch]=0x1D7D8+(ch.unicode()-QChar('0').unicode()); + } + blackboardUnicodeTable['C']=0x2102; + blackboardUnicodeTable['H']=0x210D; + blackboardUnicodeTable['N']=0x2115; + blackboardUnicodeTable['P']=0x2119; + blackboardUnicodeTable['Q']=0x211A; + blackboardUnicodeTable['R']=0x211D; + blackboardUnicodeTable['Z']=0x2124; - for (const QChar ch: QString("ABDEFGIJKLMOSTUVWXYZ")) { - blackboardUnicodeTable[ch]=0x1D538+(ch.unicode()-QChar('A').unicode()); - } - for (const QChar ch: QString("abcdefghijklmnopqrstuvwxyz")) { - blackboardUnicodeTable[ch]=0x1D552+(ch.unicode()-QChar('a').unicode()); - } - for (const QChar ch: QString("0123456789")) { - blackboardUnicodeTable[ch]=0x1D7D8+(ch.unicode()-QChar('0').unicode()); - } - - blackboardUnicodeTable['C']=0x2102; - blackboardUnicodeTable['H']=0x210D; - blackboardUnicodeTable['N']=0x2115; - blackboardUnicodeTable['P']=0x2119; - blackboardUnicodeTable['Q']=0x211A; - blackboardUnicodeTable['R']=0x211D; - blackboardUnicodeTable['Z']=0x2124; + return blackboardUnicodeTable; + }(); + return table; } JKQTMathTextTextNode::JKQTMathTextTextNode(JKQTMathText* _parent, const QString& textIn, bool addWhitespace, bool stripInnerWhitepace): JKQTMathTextTextBaseNode(_parent, "") { - fillStaticTables(); QString textTransformed=textIn; if (stripInnerWhitepace) { @@ -240,11 +242,11 @@ void JKQTMathTextTextNode::splitTextForLayout(QPainter &painter, JKQTMathTextEnv } else if (bbMode==MTBBDMsimulate) { CFontMode=FMasDefinedOutline; } else if (bbMode==MTBBDMunicodeCharactersOrSimulate || bbMode==MTBBDMunicodeCharactersOrFontDirectly) { - if (blackboardUnicodeTable.contains(c) && fmRoman.inFontUcs4(blackboardUnicodeTable[c])) { - cs=jkqtp_UnicodeToUTF8Q(blackboardUnicodeTable[c]); + if (blackboardUnicodeTable().contains(c) && fmRoman.inFontUcs4(blackboardUnicodeTable().operator[](c))) { + cs=jkqtp_UnicodeToUTF8Q(blackboardUnicodeTable().operator[](c)); CFontMode=FMroman; - } else if (blackboardUnicodeTable.contains(c) && fmFallbackSym.inFontUcs4(blackboardUnicodeTable[c])) { - cs=jkqtp_UnicodeToUTF8Q(blackboardUnicodeTable[c]); + } else if (blackboardUnicodeTable().contains(c) && fmFallbackSym.inFontUcs4(blackboardUnicodeTable().operator[](c))) { + cs=jkqtp_UnicodeToUTF8Q(blackboardUnicodeTable().operator[](c)); CFontMode=FMfallbackSymbol; } else { if (bbMode==MTBBDMunicodeCharactersOrSimulate) { @@ -291,10 +293,10 @@ double JKQTMathTextTextNode::draw(QPainter& painter, double x, double y, JKQTMat const QFont fUpright=JKQTMathTextGetNonItalic(f); const QFont fFallbackSym=currentEv.exchangedFontFor(MTEFallbackSymbols).getFont(parentMathText); const QFont fRoman=currentEv.exchangedFontForRoman().getFont(parentMathText); - const QFontMetricsF fm(f, painter.device()); - const QFontMetricsF fmUpright(fUpright, painter.device()); - const QFontMetricsF fmFallbackSym(fFallbackSym, painter.device()); - const QFontMetricsF fmRoman(fRoman, painter.device()); + //const QFontMetricsF fm(f, painter.device()); + //const QFontMetricsF fmUpright(fUpright, painter.device()); + //const QFontMetricsF fmFallbackSym(fFallbackSym, painter.device()); + //const QFontMetricsF fmRoman(fRoman, painter.device()); painter.save(); auto __finalpaint=JKQTPFinally([&painter]() {painter.restore();}); painter.setFont(f); diff --git a/lib/jkqtmathtext/nodes/jkqtmathtexttextnode.h b/lib/jkqtmathtext/nodes/jkqtmathtexttextnode.h index c5903ba5a6..a4e56bab2e 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtexttextnode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtexttextnode.h @@ -110,9 +110,7 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextTextNode: public JKQTMathTextTextBaseN */ void splitTextForLayout(QPainter &painter, JKQTMathTextEnvironment currentEv, const QString& txt, QStringList& textpart, QList& fontMode) const; /** \brief translation table for blackboard-font characters from "normal" Latin-1 encoding to unicode-encoding of blackboards */ - static QHash blackboardUnicodeTable; - /** \brief fill static data */ - static void fillStaticTables(); + static const QHash& blackboardUnicodeTable(); /** \copydoc JKQTMathTextTextBaseNode::textTransform() */ virtual QString textTransform(const QString& text, const JKQTMathTextEnvironment& currentEv) const override; }; diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextwhitespacenode.cpp b/lib/jkqtmathtext/nodes/jkqtmathtextwhitespacenode.cpp index b7a5cbd55b..905fa7bb44 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextwhitespacenode.cpp +++ b/lib/jkqtmathtext/nodes/jkqtmathtextwhitespacenode.cpp @@ -51,15 +51,13 @@ JKQTMathTextWhitespaceNode::JKQTMathTextWhitespaceNode(JKQTMathText *_parent): JKQTMathTextWhitespaceNode::JKQTMathTextWhitespaceNode(const QString &_type, JKQTMathText *parent): JKQTMathTextWhitespaceNode(parent) { - fillSupportedInstructions(); - whitespace=supportedInstructions[_type]; + whitespace=supportedInstructions()[_type]; } JKQTMathTextWhitespaceNode::JKQTMathTextWhitespaceNode(const QString &_type, size_t count, JKQTMathText *parent): JKQTMathTextWhitespaceNode(parent) { - fillSupportedInstructions(); - whitespace=supportedInstructions[_type]; + whitespace=supportedInstructions()[_type]; whitespace.count=whitespace.count*count; } @@ -67,7 +65,6 @@ JKQTMathTextWhitespaceNode::JKQTMathTextWhitespaceNode(Types type, size_t count, JKQTMathTextNode(parent), whitespace(type, count) { - fillSupportedInstructions(); } JKQTMathTextWhitespaceNode::~JKQTMathTextWhitespaceNode() { @@ -134,31 +131,30 @@ JKQTMathTextNodeSize JKQTMathTextWhitespaceNode::getSizeInternal(QPainter &paint return s; } -QHash JKQTMathTextWhitespaceNode::supportedInstructions; - -void JKQTMathTextWhitespaceNode::fillSupportedInstructions() -{ - static std::mutex sMutex; - std::lock_guard lock(sMutex); - if (supportedInstructions.size()==0) { - supportedInstructions[" "]=WhitespaceProps(WSTthicker, 1); - supportedInstructions["nbsp"]=WhitespaceProps(WSTNonbreaking, 1); - supportedInstructions["enspace"]=WhitespaceProps(WST1en, 1); - supportedInstructions["enskip"]=WhitespaceProps(WST1en, 1); - supportedInstructions["quad"]=WhitespaceProps(WSTQuad, 1); - supportedInstructions["emspace"]=WhitespaceProps(WSTQuad, 1); - supportedInstructions["qquad"]=WhitespaceProps(WSTQuad, 2); - supportedInstructions[","]=WhitespaceProps(WSTthin, 1); - supportedInstructions["thinspace"]=WhitespaceProps(WSTthin, 1); - supportedInstructions[":"]=WhitespaceProps(WSTmedium, 1); - supportedInstructions["medspace"]=WhitespaceProps(WSTmedium, 1); - supportedInstructions[";"]=WhitespaceProps(WSTthick, 1); - supportedInstructions["thickspace"]=WhitespaceProps(WSTthick, 1); - supportedInstructions["!"]=WhitespaceProps(WSTnegthin, 1); - supportedInstructions["negthinspace"]=WhitespaceProps(WSTnegthin, 1); - supportedInstructions["negmedspace"]=WhitespaceProps(WSTnegmedium, 1); - supportedInstructions["negthickspace"]=WhitespaceProps(WSTnegthick, 1); - } +const QHash& JKQTMathTextWhitespaceNode::supportedInstructions() { + static QHash table=[]() + { + QHash supportedInstructions; + supportedInstructions[" "]=WhitespaceProps(WSTthicker, 1); + supportedInstructions["nbsp"]=WhitespaceProps(WSTNonbreaking, 1); + supportedInstructions["enspace"]=WhitespaceProps(WST1en, 1); + supportedInstructions["enskip"]=WhitespaceProps(WST1en, 1); + supportedInstructions["quad"]=WhitespaceProps(WSTQuad, 1); + supportedInstructions["emspace"]=WhitespaceProps(WSTQuad, 1); + supportedInstructions["qquad"]=WhitespaceProps(WSTQuad, 2); + supportedInstructions[","]=WhitespaceProps(WSTthin, 1); + supportedInstructions["thinspace"]=WhitespaceProps(WSTthin, 1); + supportedInstructions[":"]=WhitespaceProps(WSTmedium, 1); + supportedInstructions["medspace"]=WhitespaceProps(WSTmedium, 1); + supportedInstructions[";"]=WhitespaceProps(WSTthick, 1); + supportedInstructions["thickspace"]=WhitespaceProps(WSTthick, 1); + supportedInstructions["!"]=WhitespaceProps(WSTnegthin, 1); + supportedInstructions["negthinspace"]=WhitespaceProps(WSTnegthin, 1); + supportedInstructions["negmedspace"]=WhitespaceProps(WSTnegmedium, 1); + supportedInstructions["negthickspace"]=WhitespaceProps(WSTnegthick, 1); + return supportedInstructions; + }(); + return table; } @@ -212,8 +208,7 @@ double JKQTMathTextWhitespaceNode::Type2PixelWidth(Types type, JKQTMathTextEnvir bool JKQTMathTextWhitespaceNode::supportsInstructionName(const QString &instruction) { - fillSupportedInstructions(); - return supportedInstructions.contains(instruction); + return supportedInstructions().contains(instruction); } @@ -370,13 +365,11 @@ QString JKQTMathTextPhantomNode::Mode2Instruction(Mode mode) JKQTMathTextPhantomNode::JKQTMathTextPhantomNode(JKQTMathText *parent, const QString &mode, JKQTMathTextNode *child): JKQTMathTextInstruction1Node(parent, mode, child) { - fillInstructions(); } JKQTMathTextPhantomNode::JKQTMathTextPhantomNode(JKQTMathText* _parent, Mode mode, JKQTMathTextNode* child): JKQTMathTextInstruction1Node(_parent, Mode2Instruction(mode), child) { - fillInstructions(); } JKQTMathTextPhantomNode::~JKQTMathTextPhantomNode() { @@ -389,10 +382,9 @@ QString JKQTMathTextPhantomNode::getTypeName() const } JKQTMathTextNodeSize JKQTMathTextPhantomNode::getSizeInternal(QPainter& painter, JKQTMathTextEnvironment currentEv) const { - fillInstructions(); JKQTMathTextNodeSize s=getChild()->getSize(painter, currentEv); - switch(instructions[getInstructionName()]) { + switch(instructions()[getInstructionName()]) { case FMwidth: s.overallHeight=0; s.baselineHeight=0; @@ -415,25 +407,23 @@ double JKQTMathTextPhantomNode::draw(QPainter& painter, double x, double y, JKQT bool JKQTMathTextPhantomNode::toHtml(QString &html, JKQTMathTextEnvironment currentEv, JKQTMathTextEnvironment defaultEv) const { JKQTMathTextEnvironment ev=currentEv; - fillInstructions(); return " "; } bool JKQTMathTextPhantomNode::supportsInstructionName(const QString &instructionName) { - fillInstructions(); - return instructions.contains(instructionName); + return instructions().contains(instructionName); } -QHash JKQTMathTextPhantomNode::instructions; - -void JKQTMathTextPhantomNode::fillInstructions() -{ - static std::mutex sMutex; - std::lock_guard lock(sMutex); - if (instructions.size()>0) return; - instructions["phantom"] = FMwidthAndHeight; - instructions["hphantom"] = FMwidth; - instructions["vphantom"] = FMheight; +const QHash& JKQTMathTextPhantomNode::instructions() { + static QHash table=[]() + { + QHash instructions; + instructions["phantom"] = FMwidthAndHeight; + instructions["hphantom"] = FMwidth; + instructions["vphantom"] = FMheight; + return instructions; + }(); + return table; } diff --git a/lib/jkqtmathtext/nodes/jkqtmathtextwhitespacenode.h b/lib/jkqtmathtext/nodes/jkqtmathtextwhitespacenode.h index 83e6402a75..a5c711ee25 100644 --- a/lib/jkqtmathtext/nodes/jkqtmathtextwhitespacenode.h +++ b/lib/jkqtmathtext/nodes/jkqtmathtextwhitespacenode.h @@ -100,10 +100,11 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextWhitespaceNode: public JKQTMathTextNod WhitespaceProps whitespace; /** \brief converts Types \a type into its HTML representation */ static QString Type2HTML(Types type); - /** \brief translation table between latex instruction and WhitespaceProps */ - static QHash supportedInstructions; - /** \brief initializes supportedInstructions */ - static void fillSupportedInstructions(); + /** \brief translation table between latex instruction and WhitespaceProps + * + * \note This is a customization point for additional whitespace instructions! + */ + static const QHash& supportedInstructions(); }; @@ -187,13 +188,11 @@ class JKQTMATHTEXT_LIB_EXPORT JKQTMathTextPhantomNode: public JKQTMathTextInstru protected: /** \copydoc JKQTMathTextNode::getSizeInternal() */ virtual JKQTMathTextNodeSize getSizeInternal(QPainter& painter, JKQTMathTextEnvironment currentEv) const override; - /** \brief fills instructions + /** \brief defines all implemented instructions in this node * * \note this is the customization point for new instructions! - */ - static void fillInstructions(); - /** \brief defines all implemented instructions in this node */ - static QHash instructions; + */ + static const QHash& instructions(); }; #endif // JKQTMATHTEXTWHITESPACENODE_H diff --git a/lib/jkqtplotter/jkqtpbaseplotter.cpp b/lib/jkqtplotter/jkqtpbaseplotter.cpp index 36372850bc..cd3f71ed85 100644 --- a/lib/jkqtplotter/jkqtpbaseplotter.cpp +++ b/lib/jkqtplotter/jkqtpbaseplotter.cpp @@ -53,6 +53,7 @@ #include "jkqtmathtext/jkqtmathtext.h" #include "jkqtplotter/jkqtpkey.h" #include +#include QString JKQTBasePlotter::globalUserSettigsFilename=""; QString JKQTBasePlotter::globalUserSettigsPrefix=""; @@ -64,10 +65,11 @@ JKQTPSynchronized> JKQTBasePlotter::jkqtpSaveDataAd void initJKQTBasePlotterResources() { - static std::mutex sMutex; - std::lock_guard lock(sMutex); - Q_INIT_RESOURCE(jkqtpbaseplotter); - initJKQTMathTextResources(); + static std::once_flag flag; + std::call_once(flag, []() { + Q_INIT_RESOURCE(jkqtpbaseplotter); + initJKQTMathTextResources(); + }); } @@ -80,20 +82,20 @@ void JKQTBasePlotter::setDefaultJKQTBasePrinterUserSettings(QString userSettigsF void JKQTBasePlotter::registerPaintDeviceAdapter(JKQTPPaintDeviceAdapter *adapter) { - JKQTPSynchronized>::Locker lock(jkqtpPaintDeviceAdapters); + JKQTPSynchronized>::WriteLocker lock(jkqtpPaintDeviceAdapters); jkqtpPaintDeviceAdapters.get().append(adapter); } void JKQTBasePlotter::deregisterPaintDeviceAdapter(JKQTPPaintDeviceAdapter *adapter) { - JKQTPSynchronized>::Locker lock(jkqtpPaintDeviceAdapters); + JKQTPSynchronized>::WriteLocker lock(jkqtpPaintDeviceAdapters); if (jkqtpPaintDeviceAdapters.get().contains(adapter)) jkqtpPaintDeviceAdapters.get().removeAll(adapter); } bool JKQTBasePlotter::registerSaveDataAdapter(JKQTPSaveDataAdapter *adapter) { if (adapter){ - JKQTPSynchronized>::Locker lock(jkqtpSaveDataAdapters); + JKQTPSynchronized>::WriteLocker lock(jkqtpSaveDataAdapters); QString format=adapter->getFilter(); for (int i=0; igetFilter()==format) { @@ -108,7 +110,7 @@ bool JKQTBasePlotter::registerSaveDataAdapter(JKQTPSaveDataAdapter *adapter) bool JKQTBasePlotter::deregisterSaveDataAdapter(JKQTPSaveDataAdapter *adapter) { - JKQTPSynchronized>::Locker lock(jkqtpSaveDataAdapters); + JKQTPSynchronized>::WriteLocker lock(jkqtpSaveDataAdapters); if (jkqtpSaveDataAdapters.get().contains(adapter)) jkqtpSaveDataAdapters.get().removeAll(adapter); return true; } @@ -3285,7 +3287,7 @@ bool JKQTBasePlotter::saveData(const QString& filename, const QString &format) { QMap saveAdapterFileExtensions; { - JKQTPSynchronized>::Locker lock(jkqtpSaveDataAdapters); + JKQTPSynchronized>::ReadLocker lock(jkqtpSaveDataAdapters); for (int i=0; igetFormatID(); fileformats<getFilter(); @@ -3371,7 +3373,7 @@ bool JKQTBasePlotter::saveData(const QString& filename, const QString &format) { QString fidx=fmt; fidx=fidx.remove(0,6); int idx=fidx.toInt(); - JKQTPSynchronized>::Locker lock(jkqtpSaveDataAdapters); + JKQTPSynchronized>::ReadLocker lock(jkqtpSaveDataAdapters); if (idx>=0 && idx > dataset=datastore->getData(&columnNames); @@ -3379,7 +3381,7 @@ bool JKQTBasePlotter::saveData(const QString& filename, const QString &format) { return true; } } else { - JKQTPSynchronized>::Locker lock(jkqtpSaveDataAdapters); + JKQTPSynchronized>::ReadLocker lock(jkqtpSaveDataAdapters); for (int i=0; igetFormatID()) { QStringList columnNames; @@ -3583,7 +3585,7 @@ bool JKQTBasePlotter::saveImage(const QString& filename, bool displayPreview) { // add JKQTPPaintDeviceAdapter exporters const int filtersIndexFirstExporterPLugin=filterstrings.size(); { - JKQTPSynchronized>::Locker lock(jkqtpPaintDeviceAdapters); + JKQTPSynchronized>::ReadLocker lock(jkqtpPaintDeviceAdapters); for (int i=0; igetFilter(); filterextensions<>::Locker lock(jkqtpPaintDeviceAdapters); + JKQTPSynchronized>::ReadLocker lock(jkqtpPaintDeviceAdapters); // now we determine whether we selected a jkqtpPaintDeviceAdapters, if not adapterID will be <0 const int adapterID=[&](){ int idx=filtID-filtersIndexFirstExporterPLugin; diff --git a/screenshots/multithreaded.png b/screenshots/multithreaded.png index ed43bd89b5e8d0eb90ce3416daf4b28db7aab0ce..11654b96b4977211b2cc4dc4838f99868501f332 100644 GIT binary patch literal 153313 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 diff --git a/screenshots/multithreaded_small.png b/screenshots/multithreaded_small.png index d0e8537699e32d1d25ef6e56a04944f2b251cea7..961d15b9ac2acb5f697b79b47eb2c01aebb0e4b9 100644 GIT binary patch literal 37693 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 IM6N<$g5LJcFaQ7m