Commit 3bd19325 authored by Aleks Kissinger's avatar Aleks Kissinger

replace tex constants with unicode equivalent

parent c1d67c27
......@@ -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();
......
......@@ -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();
......
......@@ -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;
}
......@@ -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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment