MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / SplashScreen

Method SplashScreen

src/qt/splashscreen.cpp:29–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27
28
29SplashScreen::SplashScreen(const NetworkStyle* networkStyle)
30 : QWidget()
31{
32 // set reference point, paddings
33 int paddingRight = 50;
34 int paddingTop = 50;
35 int titleVersionVSpace = 17;
36 int titleCopyrightVSpace = 40;
37
38 float fontFactor = 1.0;
39 float devicePixelRatio = 1.0;
40 devicePixelRatio = static_cast<QGuiApplication*>(QCoreApplication::instance())->devicePixelRatio();
41
42 // define text to place
43 QString titleText = CLIENT_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 const 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 // change to HiDPI if it makes sense
55 pixmap.setDevicePixelRatio(devicePixelRatio);
56
57 QPainter pixPaint(&pixmap);
58 pixPaint.setPen(QColor(100,100,100));
59
60 // draw a slightly radial gradient
61 QRadialGradient gradient(QPoint(0,0), splashSize.width()/devicePixelRatio);
62 gradient.setColorAt(0, Qt::white);
63 gradient.setColorAt(1, QColor(247,247,247));
64 QRect rGradient(QPoint(0,0), splashSize);
65 pixPaint.fillRect(rGradient, gradient);
66
67 // draw the bitcoin icon, expected size of PNG: 1024x1024
68 QRect rectIcon(QPoint(-150,-122), QSize(430,430));
69
70 const QSize requiredSize(1024,1024);
71 QPixmap icon(networkStyle->getAppIcon().pixmap(requiredSize));
72
73 pixPaint.drawPixmap(rectIcon, icon);
74
75 // check font size and drawing with
76 pixPaint.setFont(QFont(font, 33*fontFactor));
77 QFontMetrics fm = pixPaint.fontMetrics();
78 int titleTextWidth = GUIUtil::TextWidth(fm, titleText);
79 if (titleTextWidth > 176) {
80 fontFactor = fontFactor * 176 / titleTextWidth;
81 }
82
83 pixPaint.setFont(QFont(font, 33*fontFactor));
84 fm = pixPaint.fontMetrics();
85 titleTextWidth = GUIUtil::TextWidth(fm, titleText);
86 pixPaint.drawText(pixmap.width()/devicePixelRatio-titleTextWidth-paddingRight,paddingTop,titleText);

Callers

nothing calls this directly

Calls 10

FormatFullVersionFunction · 0.85
CopyrightHoldersFunction · 0.85
QPointClass · 0.85
QFontClass · 0.85
TextWidthFunction · 0.85
heightMethod · 0.80
toStringMethod · 0.45
endMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected