new splash screen
why: - the current splash-screen has no referring to official images on - https://en.bitcoin.it/wiki/Promotional_graphics - the current splash screen only exists in a low res jpg - current splash screen looks dark and "hackish" - new splash screen should generate positive, "trust-emotions". - new splash screen gives the user infos about the running client. - new splash screen can handle long messages (in a lot of - languages the text is cropped in current release) - new size (x2) 400x312 - contains textual information about the client - textinfos are dynamicly written to the pixmap when -testnet is switch on, the splashscreen will show the bitcoin logo in testnet-color (as well as a text [testnet]) example: https://dl.dropbox.com/u/7383846/new_bitcoin_splash.png
This commit is contained in:
committed by
Jonas Schnelli
parent
ac89a1ebe7
commit
f9124587cc
82
src/qt/splashscreen.cpp
Normal file
82
src/qt/splashscreen.cpp
Normal file
@@ -0,0 +1,82 @@
|
||||
#include "splashscreen.h"
|
||||
#include "clientversion.h"
|
||||
#include "util.h"
|
||||
|
||||
#include <QPainter>
|
||||
#include <QApplication>
|
||||
|
||||
SplashScreen::SplashScreen(const QPixmap &pixmap, Qt::WindowFlags f) :
|
||||
QSplashScreen(pixmap, f)
|
||||
{
|
||||
// set reference point, paddings
|
||||
int paddingRight = 50;
|
||||
int paddingTop = 50;
|
||||
int titleVersionVSpace = 17;
|
||||
int titleCopyrightVSpace = 40;
|
||||
|
||||
float fontFactor = 1.0;
|
||||
|
||||
// define text to place
|
||||
QString titleText = QString(QApplication::applicationName()).replace(QString("-testnet"), QString(""), Qt::CaseSensitive); // cut of testnet, place it as single object further down
|
||||
QString versionText = QString("Version %1").arg(QString::fromStdString(FormatFullVersion()));
|
||||
QString copyrightText = QChar(0xA9)+QString(" 2009-%1 ").arg(COPYRIGHT_YEAR) + QString(tr("The Bitcoin developers"));
|
||||
QString testnetAddText = QString(tr("[testnet]")); // define text to place as single text object
|
||||
|
||||
QString font = "Arial";
|
||||
|
||||
// load the bitmap for writing some text over it
|
||||
QPixmap newPixmap;
|
||||
if(GetBoolArg("-testnet")) {
|
||||
newPixmap = QPixmap(":/images/splash_testnet");
|
||||
}
|
||||
else {
|
||||
newPixmap = QPixmap(":/images/splash");
|
||||
}
|
||||
|
||||
QPainter pixPaint(&newPixmap);
|
||||
pixPaint.setPen(QColor(100,100,100));
|
||||
|
||||
// check font size and drawing with
|
||||
pixPaint.setFont(QFont(font, 33*fontFactor));
|
||||
QFontMetrics fm = pixPaint.fontMetrics();
|
||||
int titleTextWidth = fm.width(titleText);
|
||||
if(titleTextWidth > 160) {
|
||||
// strange font rendering, Arial probably not found
|
||||
fontFactor = 0.75;
|
||||
}
|
||||
|
||||
pixPaint.setFont(QFont(font, 33*fontFactor));
|
||||
fm = pixPaint.fontMetrics();
|
||||
titleTextWidth = fm.width(titleText);
|
||||
pixPaint.drawText(newPixmap.width()-titleTextWidth-paddingRight,paddingTop,titleText);
|
||||
|
||||
pixPaint.setFont(QFont(font, 15*fontFactor));
|
||||
|
||||
// if the version string is to long, reduce size
|
||||
fm = pixPaint.fontMetrics();
|
||||
int versionTextWidth = fm.width(versionText);
|
||||
if(versionTextWidth > titleTextWidth+paddingRight-10) {
|
||||
pixPaint.setFont(QFont(font, 10*fontFactor));
|
||||
titleVersionVSpace -= 5;
|
||||
}
|
||||
pixPaint.drawText(newPixmap.width()-titleTextWidth-paddingRight+2,paddingTop+titleVersionVSpace,versionText);
|
||||
|
||||
// draw copyright stuff
|
||||
pixPaint.setFont(QFont(font, 10*fontFactor));
|
||||
pixPaint.drawText(newPixmap.width()-titleTextWidth-paddingRight,paddingTop+titleCopyrightVSpace,copyrightText);
|
||||
|
||||
// draw testnet string if -testnet is on
|
||||
if(QApplication::applicationName().contains(QString("-testnet"))) {
|
||||
// draw copyright stuff
|
||||
QFont boldFont = QFont(font, 10*fontFactor);
|
||||
boldFont.setWeight(QFont::Bold);
|
||||
pixPaint.setFont(boldFont);
|
||||
fm = pixPaint.fontMetrics();
|
||||
int testnetAddTextWidth = fm.width(testnetAddText);
|
||||
pixPaint.drawText(newPixmap.width()-testnetAddTextWidth-10,15,testnetAddText);
|
||||
}
|
||||
|
||||
pixPaint.end();
|
||||
|
||||
this->setPixmap(newPixmap);
|
||||
}
|
||||
Reference in New Issue
Block a user