qucs_s/qucs/mnemo.cpp

118 lines
3.3 KiB
C++
Raw Normal View History

2005-06-23 06:06:40 +00:00
/***************************************************************************
mnemo.cpp
-----------
begin : Sat Jun 11 2005
copyright : (C) 2005 by Michael Margraf
email : michael.margraf@alumni.tu-berlin.de
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include "mnemo.h"
#include <QString>
2005-06-23 06:06:40 +00:00
2023-03-19 09:21:55 +03:00
#include <array>
2023-03-13 16:05:15 +03:00
typedef struct {
const char *Mnemonic;
unsigned short Unicode;
} tSpecialChar;
2005-06-23 06:06:40 +00:00
2023-03-13 16:05:15 +03:00
std::array<tSpecialChar, 59> SpecialChars{{
{"alpha", 0x03B1},
{"beta", 0x03B2},
{"gamma", 0x03B3},
{"delta", 0x03B4},
{"epsilon", 0x03B5},
{"zeta", 0x03B6},
{"eta", 0x03B7},
{"theta", 0x03B8},
{"iota", 0x03B9},
{"kappa", 0x03BA},
{"lambda", 0x03BB},
{"mu", 0x03BC},
{"nu", 0x03BD},
{"xi", 0x03BE},
{"pi", 0x03C0},
{"rho", 0x03C1},
{"sigma", 0x03C3},
{"tau", 0x03C4},
{"upsilon", 0x03C5},
{"phi", 0x03C6},
{"chi", 0x03C7},
{"psi", 0x03C8},
{"omega", 0x03C9},
{"varpi", 0x03D6},
{"varrho", 0x03F1},
{"Gamma", 0x0393},
{"Delta", 0x0394},
{"Theta", 0x0398},
{"Lambda", 0x039B},
{"Xi", 0x039E},
{"Pi", 0x03A0},
{"Sigma", 0x03A3},
{"Upsilon", 0x03A5},
{"Phi", 0x03A6},
{"Psi", 0x03A8},
{"Omega", 0x03A9},
{"textmu", 0x00B5},
{"cdot", 0x00B7},
{"times", 0x00D7},
{"pm", 0x00B1},
{"mp", 0x2213},
{"partial", 0x2202},
{"nabla", 0x2207},
{"infty", 0x221E},
{"int", 0x222B},
{"approx", 0x2248},
{"neq", 0x2260},
{"in", 0x220A},
{"leq", 0x2264},
{"geq", 0x2265},
{"sim", 0x223C},
{"propto", 0x221D},
{"onehalf", 0x00BD},
{"onequarter", 0x00BC},
{"twosuperior", 0x00B2},
{"threesuperior", 0x00B3},
{"diameter", 0x00F8},
{"ohm", 0x03A9},
{"", 0} // end mark
}};
2005-06-23 06:06:40 +00:00
2005-07-04 06:07:17 +00:00
// This function replaces the LaTeX tags for special characters
2005-06-23 06:06:40 +00:00
// into its unicode value.
2023-03-13 16:05:15 +03:00
void encode_String(const QString &Input, QString &Output) {
2005-06-23 06:06:40 +00:00
int Begin = 0, End = 0;
Output = "";
2023-03-13 16:05:15 +03:00
while ((Begin = Input.indexOf('\\', Begin)) >= 0) {
2005-06-23 06:06:40 +00:00
Output += Input.mid(End, Begin - End);
End = Begin++;
2023-03-13 16:05:15 +03:00
for (const auto &sc : SpecialChars) { // test all special characters
if (Input.mid(Begin).startsWith(sc.Mnemonic)) {
Output += QChar(sc.Unicode);
End = Begin + strlen(sc.Mnemonic);
2005-06-23 06:06:40 +00:00
break;
}
2023-03-13 16:05:15 +03:00
}
2005-06-23 06:06:40 +00:00
}
Output += Input.mid(End);
}
// This function replaces the unicode of special characters
2005-07-04 06:07:17 +00:00
// by its LaTeX tags.
2023-03-13 16:05:15 +03:00
void decode_String(QString &Output) {
for (const auto &sc : SpecialChars) {
Output.replace(QChar(sc.Unicode), "\\" + QString(sc.Mnemonic));
2005-06-23 06:06:40 +00:00
}
}