diff options
Diffstat (limited to 'tests/manual/textrendering/fontenginecomparison/mainwindow.cpp')
| -rw-r--r-- | tests/manual/textrendering/fontenginecomparison/mainwindow.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/tests/manual/textrendering/fontenginecomparison/mainwindow.cpp b/tests/manual/textrendering/fontenginecomparison/mainwindow.cpp new file mode 100644 index 00000000000..24123316851 --- /dev/null +++ b/tests/manual/textrendering/fontenginecomparison/mainwindow.cpp @@ -0,0 +1,86 @@ +// Copyright (C) 2025 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#include "mainwindow.h" +#include "ui_mainwindow.h" + +#include <QProcess> + +MainWindow::MainWindow(QWidget *parent) + : QMainWindow(parent) + , ui(new Ui::MainWindow) +{ + ui->setupUi(this); + + + ui->cbWeight->addItem(QStringLiteral("Thin"), QFont::Thin); + ui->cbWeight->addItem(QStringLiteral("ExtraLight"), QFont::ExtraLight); + ui->cbWeight->addItem(QStringLiteral("Light"), QFont::Light); + ui->cbWeight->addItem(QStringLiteral("Normal"), QFont::Normal); + ui->cbWeight->addItem(QStringLiteral("Medium"), QFont::Medium); + ui->cbWeight->addItem(QStringLiteral("DemiBold"), QFont::DemiBold); + ui->cbWeight->addItem(QStringLiteral("Bold"), QFont::Bold); + ui->cbWeight->addItem(QStringLiteral("ExtraBold"), QFont::ExtraBold); + ui->cbWeight->addItem(QStringLiteral("Black"), QFont::Black); + ui->cbWeight->setCurrentIndex(3); + + updateFont(); + + connect(ui->sbPixelSize, &QSpinBox::valueChanged, this, &MainWindow::updateFont); + connect(ui->fontComboBox, &QFontComboBox::currentFontChanged, this, &MainWindow::updateFont); + connect(ui->rbDefault, &QRadioButton::toggled, this, &MainWindow::updateFont); + connect(ui->rbGdi, &QRadioButton::toggled, this, &MainWindow::updateFont); + connect(ui->rbFreetype, &QRadioButton::toggled, this, &MainWindow::updateFont); + connect(ui->leText, &QLineEdit::textChanged, this, &MainWindow::updateFont); + connect(ui->cbWeight, &QComboBox::currentIndexChanged, this, &MainWindow::updateFont); + connect(ui->cbItalic, &QCheckBox::toggled, this, &MainWindow::updateFont); +} + +MainWindow::~MainWindow() +{ + delete ui; +} + +void MainWindow::updateImage() +{ + if (m_process == nullptr) + return; + + QImage img(QStringLiteral("output.png")); + if (!img.isNull()) + ui->lImage->setPixmap(QPixmap::fromImage(img)); +} + +void MainWindow::updateFont() +{ + if (m_process == nullptr) { + m_process = new QProcess; + connect(m_process, &QProcess::finished, this, &MainWindow::updateImage); + } + + if (m_process->isOpen()) + m_process->close(); + + QString fontEngineName = QStringLiteral("directwrite"); + if (ui->rbGdi->isChecked()) + fontEngineName = QStringLiteral("gdi"); + else if (ui->rbFreetype->isChecked()) + fontEngineName = QStringLiteral("freetype"); + + QProcessEnvironment env; + env.insert(QStringLiteral("QT_QPA_PLATFORM"), QStringLiteral("windows:fontengine=%1").arg(fontEngineName)); + env.insert(QStringLiteral("windir"), qgetenv("windir")); + m_process->setProcessEnvironment(env); + + QStringList args; + args.append(ui->fontComboBox->currentFont().family()); + args.append(QString::number(ui->sbPixelSize->value())); + args.append(ui->leText->text().isEmpty() + ? QStringLiteral("The quick brown fox jumps over the lazy dog") + : ui->leText->text()); + args.append(QString::number(ui->cbWeight->currentData().toInt())); + args.append(QString::number(int(ui->cbItalic->isChecked()))); + + m_process->start(qApp->arguments().first(), args); + m_process->waitForFinished(); +} |
