From eb5d8d2fc30bb9588320eaada0abf1e69bddf980 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Fri, 1 Mar 2013 12:41:43 +0100 Subject: [PATCH] Update the high-dpi manual test. - Organize the test images into different sizes. - Add a button and icon drawing test. - Don't show all tests by default. Change-Id: I95eff846b8c5159085f53b413dea7212c1ea5071 Reviewed-by: Gabriel de Dietrich --- tests/manual/highdpi/highdpi.qrc | 8 +- tests/manual/highdpi/main.cpp | 201 ++++++++++++++---- tests/manual/highdpi/qticon16.png | Bin 0 -> 1884 bytes tests/manual/highdpi/qticon16@2x.png | Bin 0 -> 3187 bytes tests/manual/highdpi/qticon32.png | Bin 0 -> 3187 bytes .../highdpi/{qticon.png => qticon32@2x.png} | Bin tests/manual/highdpi/qticon64.png | Bin 0 -> 6474 bytes tests/manual/highdpi/qticon@2x.png | Bin 17168 -> 0 bytes tests/manual/highdpi/qticon_large.png | Bin 17168 -> 0 bytes 9 files changed, 169 insertions(+), 40 deletions(-) create mode 100644 tests/manual/highdpi/qticon16.png create mode 100644 tests/manual/highdpi/qticon16@2x.png create mode 100644 tests/manual/highdpi/qticon32.png rename tests/manual/highdpi/{qticon.png => qticon32@2x.png} (100%) create mode 100644 tests/manual/highdpi/qticon64.png delete mode 100644 tests/manual/highdpi/qticon@2x.png delete mode 100644 tests/manual/highdpi/qticon_large.png diff --git a/tests/manual/highdpi/highdpi.qrc b/tests/manual/highdpi/highdpi.qrc index b43c2c07ad..10efac44fa 100644 --- a/tests/manual/highdpi/highdpi.qrc +++ b/tests/manual/highdpi/highdpi.qrc @@ -1,7 +1,9 @@ - qticon.png - qticon@2x.png - qticon_large.png + qticon16.png + qticon16@2x.png + qticon32.png + qticon32@2x.png + qticon64.png diff --git a/tests/manual/highdpi/main.cpp b/tests/manual/highdpi/main.cpp index fb1e06f0f1..d093569ea8 100644 --- a/tests/manual/highdpi/main.cpp +++ b/tests/manual/highdpi/main.cpp @@ -62,16 +62,16 @@ public: PixmapPainter::PixmapPainter() { - pixmap1X = QPixmap(":/qticon.png"); - pixmap2X = QPixmap(":/qticon@2x.png"); - pixmapLarge = QPixmap(":/qticon_large.png"); + pixmap1X = QPixmap(":/qticon32.png"); + pixmap2X = QPixmap(":/qticon32@2x.png"); + pixmapLarge = QPixmap(":/qticon64.png"); - image1X = QImage(":/qticon.png"); - image2X = QImage(":/qticon@2x.png"); - imageLarge = QImage(":/qticon_large.png"); + image1X = QImage(":/qticon32.png"); + image2X = QImage(":/qticon32@2x.png"); + imageLarge = QImage(":/qticon64.png"); - qtIcon.addFile(":/qticon.png"); - qtIcon.addFile(":/qticon@2x.png"); + qtIcon.addFile(":/qticon32.png"); + qtIcon.addFile(":/qticon32@2x.png"); } void PixmapPainter::paintEvent(QPaintEvent *event) @@ -79,12 +79,12 @@ void PixmapPainter::paintEvent(QPaintEvent *event) QPainter p(this); p.fillRect(QRect(QPoint(0, 0), size()), QBrush(Qt::gray)); - int pixmapPointSize = 64; + int pixmapPointSize = 32; int y = 30; - int dy = 150; + int dy = 90; int x = 10; - int dx = 80; + int dx = 40; // draw at point // qDebug() << "paint pixmap" << pixmap1X.devicePixelRatio(); p.drawPixmap(x, y, pixmap1X); @@ -95,7 +95,7 @@ void PixmapPainter::paintEvent(QPaintEvent *event) x+=dx;p.drawImage(x, y, image2X); x+=dx;p.drawImage(x, y, imageLarge); - // draw at 64x64 rect + // draw at 32x32 rect y+=dy; x = 10; p.drawPixmap(QRect(x, y, pixmapPointSize, pixmapPointSize), pixmap1X); @@ -107,7 +107,7 @@ void PixmapPainter::paintEvent(QPaintEvent *event) x+=dx;p.drawImage(QRect(x, y, pixmapPointSize, pixmapPointSize), imageLarge); - // draw at 128x128 rect + // draw at 64x64 rect y+=dy - 50; x = 10; p.drawPixmap(QRect(x, y, pixmapPointSize * 2, pixmapPointSize * 2), pixmap1X); @@ -132,12 +132,12 @@ public: Labels::Labels() { - pixmap1X = QPixmap(":/qticon.png"); - pixmap2X = QPixmap(":/qticon@2x.png"); - pixmapLarge = QPixmap(":/qticon_large.png"); + pixmap1X = QPixmap(":/qticon32.png"); + pixmap2X = QPixmap(":/qticon32@2x.png"); + pixmapLarge = QPixmap(":/qticon64.png"); - qtIcon.addFile(":/qticon.png"); - qtIcon.addFile(":/qticon@2x.png"); + qtIcon.addFile(":/qticon32.png"); + qtIcon.addFile(":/qticon32@2x.png"); setWindowIcon(qtIcon); setWindowTitle("Labels"); @@ -146,15 +146,15 @@ Labels::Labels() QLabel *label2x = new QLabel(); label2x->setPixmap(pixmap2X); QLabel *labelIcon = new QLabel(); - labelIcon->setPixmap(qtIcon.pixmap(QSize(64,64))); + labelIcon->setPixmap(qtIcon.pixmap(QSize(32,32))); QLabel *labelLarge = new QLabel(); labelLarge->setPixmap(pixmapLarge); QHBoxLayout *layout = new QHBoxLayout(this); -// layout->addWidget(label1x); //expected low-res on high-dpi displays - layout->addWidget(label2x); -// layout->addWidget(labelIcon); -// layout->addWidget(labelLarge); // expected large size and low-res + layout->addWidget(label1x); //expected low-res on high-dpi displays + layout->addWidget(label2x); //expected high-res on high-dpi displays + layout->addWidget(labelIcon); //expected high-res on high-dpi displays + layout->addWidget(labelLarge); // expected large size and low-res setLayout(layout); } @@ -172,16 +172,14 @@ public: MainWindow::MainWindow() { - qtIcon.addFile(":/qticon.png"); - qtIcon.addFile(":/qticon@2x.png"); - qtIcon1x.addFile(":/qticon.png"); - qtIcon2x.addFile(":/qticon@2x.png"); + // beware that QIcon auto-loads the @2x versions. + qtIcon1x.addFile(":/qticon16.png"); + qtIcon2x.addFile(":/qticon32.png"); setWindowIcon(qtIcon); setWindowTitle("MainWindow"); fileToolBar = addToolBar(tr("File")); // fileToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); - fileToolBar->addAction(new QAction(qtIcon, QString("1x and 2x"), this)); fileToolBar->addAction(new QAction(qtIcon1x, QString("1x"), this)); fileToolBar->addAction(new QAction(qtIcon2x, QString("2x"), this)); } @@ -331,36 +329,165 @@ void apiTest() apiTestdevicePixelRatioSetter(); } +// Request and draw an icon at different sizes +class IconDrawing : public QWidget +{ +public: + QIcon *iconHighDPI; + QIcon *iconNormalDpi; + + IconDrawing() + { + QFile::copy(":/qticon32.png", "/tmp/qticon32-2.png"); + + QFile::copy(":/qticon32.png", "/tmp/qticon32.png"); + QFile::copy(":/qticon32@2x.png", "/tmp/qticon32@2x.png"); + + iconHighDPI = new QIcon("/tmp/qticon32.png"); // will auto-load @2x version. + iconNormalDpi = new QIcon("/tmp/qticon32-2.png"); // does not have a 2x version. + } + + ~IconDrawing() + { + delete iconHighDPI; + delete iconNormalDpi; +// Qile:: + } + + void paintEvent(QPaintEvent *event) + { + int x = 10; + int y = 10; + int dx = 50; + int dy = 50; + int maxX = 600; + int minSize = 5; + int maxSize = 64; + int sizeIncrement = 5; + + // Disable high-dpi icons + qApp->setAttribute(Qt::AA_UseHighDpiPixmaps, false); + + // normal icon + for (int size = minSize; size < maxSize; size += sizeIncrement) { + QPainter p(this); + p.drawPixmap(x, y, iconNormalDpi->pixmap(size, size)); + if (x + dx > maxX) + y+=dy; + x = ((x + dx) % maxX); + } + x = 10; + y+=dy; + + // high-dpi icon + for (int size = minSize; size < maxSize; size += sizeIncrement) { + QPainter p(this); + p.drawPixmap(x, y, iconHighDPI->pixmap(size, size)); + if (x + dx > maxX) + y+=dy; + x = ((x + dx) % maxX); + } + + x = 10; + y+=dy; + + // Enable high-dpi icons + qApp->setAttribute(Qt::AA_UseHighDpiPixmaps, true); + + // normal icon + for (int size = minSize; size < maxSize; size += sizeIncrement) { + QPainter p(this); + p.drawPixmap(x, y, iconNormalDpi->pixmap(size, size)); + if (x + dx > maxX) + y+=dy; + x = ((x + dx) % maxX); + } + x = 10; + y+=dy; + + // high-dpi icon (draw point) + for (int size = minSize; size < maxSize; size += sizeIncrement) { + QPainter p(this); + p.drawPixmap(x, y, iconHighDPI->pixmap(size, size)); + if (x + dx > maxX) + y+=dy; + x = ((x + dx) % maxX); + } + + x = 10; + y+=dy; + + }; +}; + +// Icons on buttons +class Buttons : public QWidget +{ +public: + Buttons() + { + QIcon icon; + icon.addFile(":/qticon16@2x.png"); + + QPushButton *button = new QPushButton(this); + button->setIcon(icon); + button->setText("16@2x"); + + QTabBar *tab = new QTabBar(this); + tab->addTab(QIcon(":/qticon16.png"), "16@1x"); + tab->addTab(QIcon(":/qticon16@2x.png"), "16@2x"); + tab->addTab(QIcon(":/qticon16.png"), ""); + tab->addTab(QIcon(":/qticon16@2x.png"), ""); + tab->move(10, 100); + tab->show(); + + QToolBar *toolBar = new QToolBar(this); + toolBar->addAction(QIcon(":/qticon16.png"), "16"); + toolBar->addAction(QIcon(":/qticon16@2x.png"), "16@2x"); + toolBar->addAction(QIcon(":/qticon32.png"), "32"); + toolBar->addAction(QIcon(":/qticon32@2x.png"), "32@2x"); + + toolBar->move(10, 200); + toolBar->show(); + } +}; + + int main(int argc, char **argv) { - qputenv("QT_HIGHDPI_AWARE", "1"); QApplication app(argc, argv); + qApp->setAttribute(Qt::AA_UseHighDpiPixmaps); PixmapPainter pixmapPainter; - -// Enable for lots of pixmap drawing pixmapPainter.show(); Labels label; label.resize(200, 200); - label.show(); +// label.show(); MainWindow mainWindow; - mainWindow.show(); +// mainWindow.show(); StandardIcons icons; icons.resize(510, 510); - icons.show(); +// icons.show(); Caching caching; caching.resize(300, 300); - caching.show(); +// caching.show(); Style style; - style.show(); +// style.show(); Fonts fonts; - fonts.show(); +// fonts.show(); + + IconDrawing iconDrawing; +// iconDrawing.show(); + + Buttons buttons; +// buttons.show(); + return app.exec(); } diff --git a/tests/manual/highdpi/qticon16.png b/tests/manual/highdpi/qticon16.png new file mode 100644 index 0000000000000000000000000000000000000000..b6b01a4d64819e588acf4e1472cb5fba56aca290 GIT binary patch literal 1884 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 Z{{`LiGof@cPh9{2002ovPDHLkV1fpr|L_0+ literal 0 HcmV?d00001 diff --git a/tests/manual/highdpi/qticon32.png b/tests/manual/highdpi/qticon32.png new file mode 100644 index 0000000000000000000000000000000000000000..205461daf03e2b84fa2401203460af7e9f9e1ff3 GIT binary patch literal 3187 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 Z{{`LiGof@cPh9{2002ovPDHLkV1fpr|L_0+ literal 0 HcmV?d00001 diff --git a/tests/manual/highdpi/qticon.png b/tests/manual/highdpi/qticon32@2x.png similarity index 100% rename from tests/manual/highdpi/qticon.png rename to tests/manual/highdpi/qticon32@2x.png diff --git a/tests/manual/highdpi/qticon64.png b/tests/manual/highdpi/qticon64.png new file mode 100644 index 0000000000000000000000000000000000000000..76f02c6c96dd41917c1307ecfa4e5d2140d27740 GIT binary patch literal 6474 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 literal 0 HcmV?d00001 diff --git a/tests/manual/highdpi/qticon@2x.png b/tests/manual/highdpi/qticon@2x.png deleted file mode 100644 index 0b00c00c96f423c8145a5692c97169436ff509ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17168 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