1 // Copyright 2015 Citra Emulator Project
2 // Licensed under GPLv2 or any later version
3 // Refer to the license.txt file included.
4 
5 #include <array>
6 #include <cmath>
7 #include <QPainter>
8 #include "citra_qt/util/util.h"
9 
GetMonospaceFont()10 QFont GetMonospaceFont() {
11     QFont font(QStringLiteral("monospace"));
12     // Automatic fallback to a monospace font on on platforms without a font called "monospace"
13     font.setStyleHint(QFont::Monospace);
14     font.setFixedPitch(true);
15     return font;
16 }
17 
ReadableByteSize(qulonglong size)18 QString ReadableByteSize(qulonglong size) {
19     static const std::array<const char*, 6> units = {"B", "KiB", "MiB", "GiB", "TiB", "PiB"};
20     if (size == 0)
21         return QStringLiteral("0");
22     int digit_groups = std::min<int>(static_cast<int>(std::log10(size) / std::log10(1024)),
23                                      static_cast<int>(units.size()));
24     return QStringLiteral("%L1 %2")
25         .arg(size / std::pow(1024, digit_groups), 0, 'f', 1)
26         .arg(QString::fromUtf8(units[digit_groups]));
27 }
28 
CreateCirclePixmapFromColor(const QColor & color)29 QPixmap CreateCirclePixmapFromColor(const QColor& color) {
30     QPixmap circle_pixmap(16, 16);
31     circle_pixmap.fill(Qt::transparent);
32     QPainter painter(&circle_pixmap);
33     painter.setRenderHint(QPainter::Antialiasing);
34     painter.setPen(color);
35     painter.setBrush(color);
36     painter.drawEllipse({circle_pixmap.width() / 2.0, circle_pixmap.height() / 2.0}, 7.0, 7.0);
37     return circle_pixmap;
38 }
39