Chris@954: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@954: Chris@954: /* Chris@954: Sonic Visualiser Chris@954: An audio file viewer and annotation editor. Chris@954: Centre for Digital Music, Queen Mary, University of London. Chris@954: Chris@954: This program is free software; you can redistribute it and/or Chris@954: modify it under the terms of the GNU General Public License as Chris@954: published by the Free Software Foundation; either version 2 of the Chris@954: License, or (at your option) any later version. See the file Chris@954: COPYING included with this distribution for more information. Chris@954: */ Chris@954: Chris@954: #include "SVSplash.h" Chris@954: Chris@954: #include "../version.h" Chris@954: Chris@954: #include Chris@954: #include Chris@954: #include Chris@954: #include Chris@954: Chris@955: #include Chris@955: Chris@954: #include Chris@954: using namespace std; Chris@954: Chris@954: SVSplash::SVSplash() Chris@954: { Chris@954: setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint); Chris@954: Chris@954: QPixmap *p1 = new QPixmap(":icons/scalable/sv-splash.png"); Chris@954: Chris@954: int w = p1->width(), h = p1->height(); Chris@954: QRect desk = QApplication::desktop()->availableGeometry(); Chris@954: Chris@954: double dpratio = devicePixelRatio(); Chris@954: double widthMultiple = double(desk.width()) / double(w); Chris@954: Chris@954: int sw = w, sh = h; Chris@954: Chris@954: if (widthMultiple > 2.5 || dpratio > 1.0) { Chris@954: Chris@954: // Hi-dpi either via pixel doubling or simply via lots of Chris@954: // pixels Chris@954: Chris@954: double factor = widthMultiple / 2.5; Chris@954: if (factor < 1.0) factor = 1.0; Chris@954: sw = int(floor(w * factor)); Chris@954: sh = int(floor(h * factor)); Chris@954: Chris@954: delete p1; Chris@954: m_pixmap = new QPixmap(int(floor(sw * dpratio)), Chris@954: int(floor(sh * dpratio))); Chris@954: Chris@1288: // cerr << "pixmap size = " << m_pixmap->width() << " * " Chris@1288: // << m_pixmap->height() << endl; Chris@954: Chris@954: m_pixmap->fill(Qt::red); Chris@954: QSvgRenderer renderer(QString(":icons/scalable/sv-splash.svg")); Chris@954: QPainter painter(m_pixmap); Chris@954: renderer.render(&painter); Chris@954: painter.end(); Chris@954: Chris@954: } else { Chris@954: // The "low dpi" case Chris@954: m_pixmap = p1; Chris@954: } Chris@954: Chris@954: setFixedWidth(sw); Chris@954: setFixedHeight(sh); Chris@954: setGeometry(desk.x() + desk.width()/2 - sw/2, Chris@954: desk.y() + desk.height()/2 - sh/2, Chris@954: sw, sh); Chris@954: } Chris@954: Chris@954: SVSplash::~SVSplash() Chris@954: { Chris@954: delete m_pixmap; Chris@954: } Chris@954: Chris@954: void Chris@954: SVSplash::finishSplash(QWidget *w) Chris@954: { Chris@954: finish(w); Chris@954: } Chris@954: Chris@954: void Chris@954: SVSplash::drawContents(QPainter *painter) Chris@954: { Chris@954: painter->drawPixmap(rect(), *m_pixmap, m_pixmap->rect()); Chris@954: QString text = QString("v%1").arg(SV_VERSION); Chris@954: painter->drawText Chris@954: (width() - painter->fontMetrics().width(text) - (width()/50), Chris@956: (width()/70) + painter->fontMetrics().ascent(), Chris@954: text); Chris@954: } Chris@954: Chris@954: