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 }