# include "splashscreen.h"
# include "clientversion.h"
# include "util.h"
# include <QApplication>
# include <QPainter>
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 " , false ) ) {
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 ) ;
}