-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.cpp
57 lines (42 loc) · 1.89 KB
/
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <QApplication>
#include <QIcon>
#include <QPrinter>
#include <QTextDocument>
#include <QDir>
#include <QPalette>
void printQIcons()
{
qInfo() << "Preparing QIcons...";
QString html = QString("<html><body><h1>QIcons for Qt %1 on %2</h1><br/><table>").arg(qVersion(), QSysInfo().prettyProductName());
int errors = 0;
int columnCount = 7;
for (int i = 0; QIcon::ThemeIcon(i) != QIcon::ThemeIcon::NThemeIcons; i++)
{
QString filename = QDir().tempPath() + "/QIconToPdf-" + QString::number(i) + ".png";
QImage image = QIcon::fromTheme(QIcon::ThemeIcon(i)).pixmap(32).toImage();
image.invertPixels();
if (!image.save(filename)) errors++;
html += QString("<td style='vertical-align: middle; margin-right: 15px;'><img src='%3' width='32'> %1 | %2</td>").arg(QString::number(i), QIcon::fromTheme(QIcon::ThemeIcon(i)).name(), filename);
if (!((i + 1) % columnCount)) html += "</tr><tr>";
}
html += QString("</tr></table></body><br/><p><i>%1 Icons failed.</i></p></html>").arg(errors);
QString filename = QCoreApplication::applicationDirPath() + QString("/QIcons_%1_%2_%3.pdf").arg(QString(qVersion()).replace(".", "-"), QSysInfo().productType(), QSysInfo().productVersion());
if (QFile(filename).exists()) QFile(filename).remove();
qInfo() << "Start printing...";
QTextDocument document;
document.setHtml(html);
QPrinter printer(QPrinter::PrinterResolution);
printer.setOutputFormat(QPrinter::PdfFormat);
printer.setPageSize(QPageSize::A3);
printer.setPageOrientation(QPageLayout::Landscape);
printer.setOutputFileName(filename);
document.print(&printer);
qInfo().noquote() << "Printing finished. Output:" << filename;
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
qApp->setPalette(QPalette(QPalette::Light));
printQIcons();
return a.exec();
}