summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleks Kissinger <aleks0@gmail.com>2019-01-31 22:49:58 +0100
committerAleks Kissinger <aleks0@gmail.com>2019-01-31 22:49:58 +0100
commit3bd193256b17e578f5274d4c9acf6339b3936bfe (patch)
tree848581f3bee1c1aac439ce365bce90cad7dfa602
parentc1d67c27dc4e8a04700dfc4bfd5c4262b094f2e3 (diff)
replace tex constants with unicode equivalent
-rw-r--r--src/gui/nodeitem.cpp9
-rw-r--r--src/tikzit.cpp2
-rw-r--r--src/util.cpp120
-rw-r--r--src/util.h4
4 files changed, 130 insertions, 5 deletions
diff --git a/src/gui/nodeitem.cpp b/src/gui/nodeitem.cpp
index 78fe66e..82692f2 100644
--- a/src/gui/nodeitem.cpp
+++ b/src/gui/nodeitem.cpp
@@ -19,6 +19,7 @@
#include "tikzit.h"
#include "nodeitem.h"
#include "tikzscene.h"
+#include "util.h"
#include <cmath>
#include <QPen>
@@ -50,7 +51,7 @@ void NodeItem::writePos()
}
QRectF NodeItem::labelRect() const {
- QString label = _node->label();
+ QString label = replaceTexConstants(_node->label());
QFontMetrics fm(Tikzit::LABEL_FONT);
QRectF rect = fm.boundingRect(label);
rect.moveCenter(QPointF(0,0));
@@ -58,7 +59,7 @@ QRectF NodeItem::labelRect() const {
}
QRectF NodeItem::outerLabelRect() const {
- QString label = _node->data()->property("label");
+ QString label = replaceTexConstants(_node->data()->property("label"));
label.replace(QRegularExpression("^[^:]*:"), "");
QFontMetrics fm(Tikzit::LABEL_FONT);
QRectF rect = fm.boundingRect(label);
@@ -102,11 +103,11 @@ void NodeItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidge
painter->setPen(QPen(Qt::black));
painter->setFont(Tikzit::LABEL_FONT);
- painter->drawText(rect, Qt::AlignCenter, _node->label());
+ painter->drawText(rect, Qt::AlignCenter, replaceTexConstants(_node->label()));
}
if (_node->data()->hasProperty("label")) {
- QString label = _node->data()->property("label");
+ QString label = replaceTexConstants(_node->data()->property("label"));
label.replace(QRegularExpression("^[^:]*:"), "");
QRectF rect = outerLabelRect();
diff --git a/src/tikzit.cpp b/src/tikzit.cpp
index f2ad661..a286630 100644
--- a/src/tikzit.cpp
+++ b/src/tikzit.cpp
@@ -21,6 +21,7 @@
#include "tikzstyles.h"
#include "previewwindow.h"
#include "latexprocess.h"
+#include "util.h"
#include <QFile>
#include <QFileDialog>
@@ -47,6 +48,7 @@ void Tikzit::init()
QSettings settings("tikzit", "tikzit");
initColors();
+ initTexConstants();
_mainMenu = new MainMenu();
QMainWindow *dummy = new QMainWindow();
diff --git a/src/util.cpp b/src/util.cpp
index 304f9e7..b9c87b2 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -21,7 +21,7 @@
qreal bezierInterpolate(qreal dist, qreal c0, qreal c1, qreal c2, qreal c3) {
qreal distp = 1 - dist;
- return (distp*distp*distp) * c0 +
+ return (distp*distp*distp) * c0 +
3 * (distp*distp) * dist * c1 +
3 * (dist*dist) * distp * c2 +
(dist*dist*dist) * c3;
@@ -80,3 +80,121 @@ QString floatToString(qreal f) {
else return QString::number(f);
}
+
+static QList<QString> texConstantNames;
+static QList<QString> texConstantCodes;
+static QList<QString> texModifierNames;
+
+
+void initTexConstants() {
+ texConstantNames
+ << "\\alpha"
+ << "\\beta"
+ << "\\gamma"
+ << "\\delta"
+ << "\\epsilon"
+ << "\\zeta"
+ << "\\eta"
+ << "\\theta"
+ << "\\iota"
+ << "\\kappa"
+ << "\\lambda"
+ << "\\mu"
+ << "\\nu"
+ << "\\xi"
+ << "\\pi"
+ << "\\rho"
+ << "\\sigma"
+ << "\\tau"
+ << "\\upsilon"
+ << "\\phi"
+ << "\\chi"
+ << "\\psi"
+ << "\\omega"
+ << "\\Gamma"
+ << "\\Delta"
+ << "\\Theta"
+ << "\\Lambda"
+ << "\\Xi"
+ << "\\Pi"
+ << "\\Sigma"
+ << "\\Upsilon"
+ << "\\Phi"
+ << "\\Psi"
+ << "\\Omega"
+ << "\\pm"
+ << "\\to"
+ << "\\Rightarrow"
+ << "\\Leftrightarrow"
+ << "\\forall"
+ << "\\partial"
+ << "\\exists"
+ << "\\emptyset"
+ << "\\nabla"
+ << "\\in"
+ << "\\notin"
+ << "\\prod"
+ << "\\sum"
+ << "\\surd"
+ << "\\infty"
+ << "\\wedge"
+ << "\\vee"
+ << "\\cap"
+ << "\\cup"
+ << "\\int"
+ << "\\approx"
+ << "\\neq"
+ << "\\equiv"
+ << "\\leq"
+ << "\\geq"
+ << "\\subset"
+ << "\\supset"
+ << "\\cdot"
+ << "\\ldots";
+
+ texConstantCodes <<
+ "\u03b1" << "\u03b2" << "\u03b3" << "\u03b4" << "\u03b5" << "\u03b6" << "\u03b7" <<
+ "\u03b8" << "\u03b9" << "\u03ba" << "\u03bb" << "\u03bc" << "\u03bd" << "\u03be" <<
+ "\u03c0" << "\u03c1" << "\u03c3" << "\u03c4" << "\u03c5" << "\u03c6" << "\u03c7" <<
+ "\u03c8" << "\u03c9" << "\u0393" << "\u0394" << "\u0398" << "\u039b" << "\u039e" <<
+ "\u03a0" << "\u03a3" << "\u03a5" << "\u03a6" << "\u03a8" << "\u03a9" <<
+
+ "\u00b1" << "\u2192" << "\u21d2" << "\u21d4" << "\u2200" << "\u2202" << "\u2203" <<
+ "\u2205" << "\u2207" << "\u2208" << "\u2209" << "\u220f" << "\u2211" << "\u221a" <<
+ "\u221e" << "\u2227" << "\u2228" << "\u2229" << "\u222a" << "\u222b" << "\u2248" <<
+ "\u2260" << "\u2261" << "\u2264" << "\u2265" << "\u2282" << "\u2283" << "\u22c5" <<
+ "\u2026";
+
+ texModifierNames
+ << "\\tiny"
+ << "\\scriptsize"
+ << "\\footnotesize"
+ << "\\small"
+ << "\\normalsize"
+ << "\\large"
+ << "\\Large"
+ << "\\LARGE"
+ << "\\huge"
+ << "\\Huge";
+}
+
+QString replaceTexConstants(QString s) {
+ QString s1 = s;
+ for (int i = 0; i < texConstantNames.length(); ++i) {
+ s1 = s1.replace(texConstantNames[i], texConstantCodes[i]);
+ }
+
+ for (int i = 0; i < texModifierNames.length(); ++i) {
+ s1 = s1.replace(texModifierNames[i], "");
+ }
+
+ if (s1.startsWith('$') && s1.endsWith('$')) {
+ s1 = s1.mid(1, s1.length()-2);
+ }
+
+ return s1;
+}
+
+
+
+
diff --git a/src/util.h b/src/util.h
index 5d1073a..3ddaf17 100644
--- a/src/util.h
+++ b/src/util.h
@@ -48,4 +48,8 @@ qreal degreesToRadians(qreal degrees);
int normaliseAngleDeg (int degrees);
qreal normaliseAngleRad (qreal rads);
+// strings
+void initTexConstants();
+QString replaceTexConstants(QString s);
+
#endif // UTIL_H