| 25 | #include <QRadialGradient> |
| 26 | |
| 27 | SplashScreen::SplashScreen(interfaces::Node& node, Qt::WindowFlags f, const NetworkStyle *networkStyle) : |
| 28 | QWidget(0, f), curAlignment(0), m_node(node) |
| 29 | { |
| 30 | // set reference point, paddings |
| 31 | int paddingRight = 50; |
| 32 | int paddingTop = 50; |
| 33 | int titleVersionVSpace = 17; |
| 34 | int titleCopyrightVSpace = 40; |
| 35 | |
| 36 | float fontFactor = 1.0; |
| 37 | float devicePixelRatio = 1.0; |
| 38 | #if QT_VERSION > 0x050100 |
| 39 | devicePixelRatio = static_cast<QGuiApplication*>(QCoreApplication::instance())->devicePixelRatio(); |
| 40 | #endif |
| 41 | |
| 42 | // define text to place |
| 43 | QString titleText = tr(PACKAGE_NAME); |
| 44 | QString versionText = QString("Version %1").arg(QString::fromStdString(FormatFullVersion())); |
| 45 | QString copyrightText = QString::fromUtf8(CopyrightHolders(strprintf("\xc2\xA9 %u-%u ", 2009, COPYRIGHT_YEAR)).c_str()); |
| 46 | QString titleAddText = networkStyle->getTitleAddText(); |
| 47 | |
| 48 | QString font = QApplication::font().toString(); |
| 49 | |
| 50 | // create a bitmap according to device pixelratio |
| 51 | QSize splashSize(480*devicePixelRatio,320*devicePixelRatio); |
| 52 | pixmap = QPixmap(splashSize); |
| 53 | |
| 54 | #if QT_VERSION > 0x050100 |
| 55 | // change to HiDPI if it makes sense |
| 56 | pixmap.setDevicePixelRatio(devicePixelRatio); |
| 57 | #endif |
| 58 | |
| 59 | QPainter pixPaint(&pixmap); |
| 60 | pixPaint.setPen(QColor(100,100,100)); |
| 61 | |
| 62 | // draw a slightly radial gradient |
| 63 | QRadialGradient gradient(QPoint(0,0), splashSize.width()/devicePixelRatio); |
| 64 | gradient.setColorAt(0, Qt::white); |
| 65 | gradient.setColorAt(1, QColor(247,247,247)); |
| 66 | QRect rGradient(QPoint(0,0), splashSize); |
| 67 | pixPaint.fillRect(rGradient, gradient); |
| 68 | |
| 69 | // draw the bitcoin icon, expected size of PNG: 1024x1024 |
| 70 | QRect rectIcon(QPoint(-150,-122), QSize(430,430)); |
| 71 | |
| 72 | const QSize requiredSize(1024,1024); |
| 73 | QPixmap icon(networkStyle->getAppIcon().pixmap(requiredSize)); |
| 74 | |
| 75 | pixPaint.drawPixmap(rectIcon, icon); |
| 76 | |
| 77 | // check font size and drawing with |
| 78 | pixPaint.setFont(QFont(font, 33*fontFactor)); |
| 79 | QFontMetrics fm = pixPaint.fontMetrics(); |
| 80 | int titleTextWidth = fm.width(titleText); |
| 81 | if (titleTextWidth > 176) { |
| 82 | fontFactor = fontFactor * 176 / titleTextWidth; |
| 83 | } |
| 84 |
nothing calls this directly
no test coverage detected