| 28 | |
| 29 | |
| 30 | SplashScreen::SplashScreen(const NetworkStyle* networkStyle) |
| 31 | : QWidget(), curAlignment(0) |
| 32 | { |
| 33 | // set reference point, paddings |
| 34 | int paddingRight = 50; |
| 35 | int paddingTop = 50; |
| 36 | int titleVersionVSpace = 17; |
| 37 | int titleCopyrightVSpace = 40; |
| 38 | |
| 39 | float fontFactor = 1.0; |
| 40 | float devicePixelRatio = 1.0; |
| 41 | devicePixelRatio = static_cast<QGuiApplication*>(QCoreApplication::instance())->devicePixelRatio(); |
| 42 | |
| 43 | // define text to place |
| 44 | QString titleText = PACKAGE_NAME; |
| 45 | QString versionText = QString("Version %1").arg(QString::fromStdString(FormatFullVersion())); |
| 46 | QString copyrightText = QString::fromUtf8(CopyrightHolders(strprintf("\xc2\xA9 %u-%u ", 2009, COPYRIGHT_YEAR)).c_str()); |
| 47 | QString titleAddText = networkStyle->getTitleAddText(); |
| 48 | |
| 49 | QString font = QApplication::font().toString(); |
| 50 | |
| 51 | // create a bitmap according to device pixelratio |
| 52 | QSize splashSize(480*devicePixelRatio,320*devicePixelRatio); |
| 53 | pixmap = QPixmap(splashSize); |
| 54 | |
| 55 | // change to HiDPI if it makes sense |
| 56 | pixmap.setDevicePixelRatio(devicePixelRatio); |
| 57 | |
| 58 | QPainter pixPaint(&pixmap); |
| 59 | pixPaint.setPen(QColor(100,100,100)); |
| 60 | |
| 61 | // draw a slightly radial gradient |
| 62 | QRadialGradient gradient(QPoint(0,0), splashSize.width()/devicePixelRatio); |
| 63 | gradient.setColorAt(0, Qt::white); |
| 64 | gradient.setColorAt(1, QColor(247,247,247)); |
| 65 | QRect rGradient(QPoint(0,0), splashSize); |
| 66 | pixPaint.fillRect(rGradient, gradient); |
| 67 | |
| 68 | // draw the bitcoin icon, expected size of PNG: 1024x1024 |
| 69 | int _32 = 32 / devicePixelRatio; |
| 70 | QRect rectIcon(QPoint(0, 0), QSize(pixmap.size().height()/(2*devicePixelRatio)+_32*2, pixmap.size().height()/(2 * devicePixelRatio)+_32*2)); |
| 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 = GUIUtil::TextWidth(fm, titleText); |
| 81 | if (titleTextWidth > 176) { |
| 82 | fontFactor = fontFactor * 176 / titleTextWidth; |
| 83 | } |
| 84 | |
| 85 | pixPaint.setFont(QFont(font, 33*fontFactor)); |
| 86 | fm = pixPaint.fontMetrics(); |
| 87 | titleTextWidth = GUIUtil::TextWidth(fm, titleText); |
nothing calls this directly
no test coverage detected