Vendor things
This commit is contained in:
parent
5deceec006
commit
977e3c17e5
19434 changed files with 10682014 additions and 0 deletions
162
third-party/vendor/ttf-parser/testing-tools/font-view/mainwindow.cpp
vendored
Normal file
162
third-party/vendor/ttf-parser/testing-tools/font-view/mainwindow.cpp
vendored
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
#include <QElapsedTimer>
|
||||
#include <QSlider>
|
||||
#include <QTimer>
|
||||
#include <QMessageBox>
|
||||
#include <QDebug>
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "ui_mainwindow.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QMainWindow(parent)
|
||||
, ui(new Ui::MainWindow)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
#ifndef WITH_FREETYPE
|
||||
ui->chBoxDrawFreeType->hide();
|
||||
#endif
|
||||
|
||||
#ifndef WITH_HARFBUZZ
|
||||
ui->chBoxDrawHarfBuzz->hide();
|
||||
#endif
|
||||
|
||||
if (qApp->arguments().size() == 2) {
|
||||
QTimer::singleShot(1, this, [this](){
|
||||
loadFont(qApp->arguments().at(1));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void MainWindow::loadFont(const QString &path)
|
||||
{
|
||||
try {
|
||||
m_ttfpFont.open(path);
|
||||
|
||||
const auto variations = m_ttfpFont.loadVariations();
|
||||
if (!variations.isEmpty()) {
|
||||
ui->widgetVariations->show();
|
||||
|
||||
// Clear layout.
|
||||
while (ui->layVariations->count()) {
|
||||
delete ui->layVariations->takeAt(0);
|
||||
}
|
||||
|
||||
m_variationSliders.clear();
|
||||
|
||||
QVector<Variation> newVariations;
|
||||
|
||||
for (const auto &var : variations) {
|
||||
auto hlay = new QHBoxLayout();
|
||||
hlay->setContentsMargins(0, 0, 0, 0);
|
||||
hlay->addWidget(new QLabel(var.name));
|
||||
|
||||
auto slider = new QSlider(Qt::Horizontal);
|
||||
slider->setMinimum(var.min);
|
||||
slider->setMaximum(var.max);
|
||||
slider->setValue(var.def);
|
||||
hlay->addWidget(slider);
|
||||
ui->layVariations->addLayout(hlay);
|
||||
|
||||
m_variationSliders.append({ slider, var.tag });
|
||||
|
||||
connect(slider, &QSlider::valueChanged, this, &MainWindow::onVariationChanged);
|
||||
|
||||
newVariations.append({ var.tag, var.def });
|
||||
}
|
||||
|
||||
m_ttfpFont.setVariations(newVariations);
|
||||
} else {
|
||||
ui->widgetVariations->hide();
|
||||
}
|
||||
|
||||
#ifdef WITH_FREETYPE
|
||||
m_ftFont.open(path);
|
||||
#endif
|
||||
|
||||
#ifdef WITH_HARFBUZZ
|
||||
m_hbFont.open(path);
|
||||
#endif
|
||||
|
||||
ui->glyphsView->setFontInfo(m_ttfpFont.fontInfo());
|
||||
reloadGlyphs();
|
||||
} catch (const QString &err) {
|
||||
QMessageBox::warning(this, tr("Error"), err);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::reloadGlyphs()
|
||||
{
|
||||
const auto fi = m_ttfpFont.fontInfo();
|
||||
for (quint16 i = 0; i < fi.numberOfGlyphs; ++i) {
|
||||
try {
|
||||
ui->glyphsView->setGlyph(i, m_ttfpFont.outline(i));
|
||||
} catch (...) {
|
||||
}
|
||||
|
||||
#ifdef WITH_FREETYPE
|
||||
try {
|
||||
ui->glyphsView->setFTGlyph(i, m_ftFont.outline(i));
|
||||
} catch (...) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef WITH_HARFBUZZ
|
||||
try {
|
||||
ui->glyphsView->setHBGlyph(i, m_hbFont.outline(i));
|
||||
} catch (...) {
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
ui->glyphsView->viewport()->update();
|
||||
}
|
||||
|
||||
void MainWindow::onVariationChanged()
|
||||
{
|
||||
try {
|
||||
QVector<Variation> variations;
|
||||
|
||||
for (auto var : m_variationSliders) {
|
||||
variations.append({ var.tag, var.slider->value() });
|
||||
}
|
||||
|
||||
#ifdef WITH_FREETYPE
|
||||
m_ftFont.setVariations(variations);
|
||||
#endif
|
||||
|
||||
#ifdef WITH_HARFBUZZ
|
||||
m_hbFont.setVariations(variations);
|
||||
#endif
|
||||
m_ttfpFont.setVariations(variations);
|
||||
|
||||
reloadGlyphs();
|
||||
} catch (const QString &err) {
|
||||
QMessageBox::warning(this, tr("Error"), err);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_chBoxDrawBboxes_stateChanged(int flag)
|
||||
{
|
||||
ui->glyphsView->setDrawBboxes(flag);
|
||||
}
|
||||
|
||||
void MainWindow::on_chBoxDrawTtfParser_stateChanged(int flag)
|
||||
{
|
||||
ui->glyphsView->setDrawGlyphs(flag);
|
||||
}
|
||||
|
||||
void MainWindow::on_chBoxDrawFreeType_stateChanged(int flag)
|
||||
{
|
||||
ui->glyphsView->setDrawFTGlyphs(flag);
|
||||
}
|
||||
|
||||
void MainWindow::on_chBoxDrawHarfBuzz_stateChanged(int flag)
|
||||
{
|
||||
ui->glyphsView->setDrawHBGlyphs(flag);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue