ctai/3rdparty/MicroTeX/example/latex2png.cpp
2025-03-07 22:11:10 +08:00

76 lines
1.7 KiB
C++

//
// Created by pikachu on 2021/5/11.
//
#include "latex.h"
#include "platform/qt/graphic_qt.h"
#include <QGuiApplication>
#include <QFile>
#include <QCommandLineParser>
#include <QDebug>
#include <QPainter>
#include <QPixmap>
#include <QTimer>
class TexGuard {
public:
TexGuard() {
tex::LaTeX::init();
}
~TexGuard() {
tex::LaTeX::release();
}
};
int main(int argc, char **argv) {
QGuiApplication app(argc, argv);
TexGuard texGuard;
#ifdef BUILD_SKIA
initGL();
#endif
if (argc != 3) {
qDebug() << "Usage: latex2png tex_name png_name";
return 1;
}
for (int i = 0; i < argc; i++) {
qDebug() << i << argv[i];
}
QString texName = argv[1];
QString pngName = argv[2];
if (!pngName.endsWith(".png")) {
pngName += ".png";
}
QFile file(texName);
if (!file.exists()) {
qDebug() << "file not exist." << texName;
return 2;
}
auto ok = file.open(QIODevice::ReadOnly);
if (!ok) {
qDebug() << "file open fail." << texName;
return 3;
}
QString latex = file.readAll();
qDebug() << latex;
auto render = tex::LaTeX::parse(
latex.toStdWString(),
600 - 0 * 2,
20,
20 / 3.f,
0xff424242);
qDebug() << render->getWidth() << render->getHeight();
QPixmap img(render->getWidth(), render->getHeight());
img.fill(Qt::white);
QPainter painter(&img);
painter.setRenderHint(QPainter::Antialiasing, true);
tex::Graphics2D_qt g2(&painter);
render->draw(g2, 0, 0);
ok = img.save(pngName);
if (!ok) {
qDebug() << "save image fail." << pngName;
return 4;
}
return 0;
}