QPixmap Utils::Gui::scaledPixmapSvg(const QString &path, const QWidget *widget, const int baseHeight) { const int scaledHeight = baseHeight * Utils::Gui::screenScalingFactor(widget); const QString normalizedKey = path + '@' + QString::number(scaledHeight); QPixmap pm; QPixmapCache cache; if (!cache.find(normalizedKey, &pm)) { pm = QIcon(path).pixmap(scaledHeight); cache.insert(normalizedKey, pm); } return pm; }
Drawer::Drawer(GameData& data,QWidget *parent) : QGLWidget(parent), world(NULL), panning(false), fullscreen(false), panningPosition(0,0), panningPositionStart(0,0), panningPositionCurrent(0,0), scale(0.), debugdraw(false), cursorMovedTime(0), data(data), ballImage(":/images/ball.png"), leftPlayerImage(":/images/left_blob.png"), rightPlayerImage(":/images/right_blob.png"), arrowImage(":/images/arrow.png"), trajectoryImage(200,150), birdImage(":/images/bird.png"), //win00(":/images/win00.png"),win01(":/images/win01.png"), //lose00(":/images/lose00.png"),lose01(":/images/lose01.png"), frame(":/images/tv_frame.png") { resize(800,600); setCursor(QCursor(Qt::BlankCursor)); setMouseTracking(true); { // load settings QSettings settings; scale = settings.value("drawer/scale",40.).toFloat(); panningPosition = settings.value("drawer/panningPosition",0.).toPointF(); debugdraw = settings.value("drawer/debugdraw",false).toBool(); fullscreen = settings.value("drawer/fullscreen",false).toBool(); if (fullscreen) setWindowState(windowState()|Qt::WindowFullScreen); } { // background noise noise_current = 0; QPixmapCache cache; for (int kk=0; kk<GameManager::numberOfNoiseBackground(); kk++) { QString name = QString("noise%1").arg(kk); bool ok = cache.find(name,&noises[kk]); Q_ASSERT(ok); } } { // setup graphic stuff drawingPen.setColor("white"); drawingPen.setWidthF(.25); drawingPen.setCapStyle(Qt::RoundCap); //drawingFont.setFamily("04b03"); drawingFont.setFamily("PixelSplitter"); drawingFont.setPixelSize(22); debugPen.setColor("red"); debugFont.setBold(true); debugFont.setPixelSize(20); } time.start(); }