File indexing completed on 2023-09-24 08:14:13

0001 /*
0002     This file is part of Killbots.
0003 
0004     SPDX-FileCopyrightText: 2007-2010 Parker Coates <coates@kde.org>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "renderer.h"
0010 
0011 #include "settings.h"
0012 
0013 // KDEGames
0014 #include <kdegames_version.h>
0015 #include <KgTheme>
0016 #include <KgThemeProvider>
0017 
0018 #include <QCursor>
0019 
0020 static KgThemeProvider *provider()
0021 {
0022     KgThemeProvider *prov = new KgThemeProvider;
0023     prov->discoverThemes(
0024 #if KDEGAMES_VERSION < QT_VERSION_CHECK(7, 4, 0)
0025         "appdata",
0026 #endif
0027         QStringLiteral("themes"),   // theme file location
0028         QStringLiteral("robotkill") // default theme file name
0029     );
0030     return prov;
0031 }
0032 
0033 static Killbots::Renderer *r = nullptr;
0034 
0035 Killbots::Renderer *Killbots::Renderer::self()
0036 {
0037     if (!r) {
0038         r = new Killbots::Renderer();
0039     }
0040     return r;
0041 }
0042 
0043 void Killbots::Renderer::cleanup()
0044 {
0045     delete r;
0046     r = nullptr;
0047 }
0048 
0049 Killbots::Renderer::Renderer()
0050     : KGameRenderer(provider())
0051 {
0052 }
0053 
0054 QCursor Killbots::Renderer::cursorFromAction(int direction)
0055 {
0056     QString element = QStringLiteral("cursor%1").arg(direction);
0057     QPixmap pixmap = spritePixmap(element, QSize(42, 42));
0058     return QCursor(pixmap);
0059 }
0060 
0061 QColor Killbots::Renderer::textColor()
0062 {
0063     if (m_cachedTheme != theme()->identifier()) {
0064         m_textColor = spritePixmap(QStringLiteral("textcolor"), QSize(3, 3)).toImage().pixel(1, 1);
0065         m_cachedTheme = theme()->identifier();
0066     }
0067     return m_textColor;
0068 }
0069 
0070 qreal Killbots::Renderer::aspectRatio()
0071 {
0072     const QRectF tileRect = boundsOnSprite(QStringLiteral("cell"));
0073     return qBound<qreal>(0.3333, tileRect.width() / tileRect.height(), 3.0);
0074 }