• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdegames API Reference
  • KDE Home
  • Contact Us
 

libkdegames

  • sources
  • kde-4.14
  • kdegames
  • libkdegames
kgamerendererclient.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright 2010 Stefan Majewsky <majewsky@gmx.net> *
3  * *
4  * This program is free software; you can redistribute it and/or modify *
5  * it under the terms of the GNU Library General Public License *
6  * version 2 as published by the Free Software Foundation *
7  * *
8  * This program is distributed in the hope that it will be useful, *
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
11  * GNU Library General Public License for more details. *
12  * *
13  * You should have received a copy of the GNU Library General Public *
14  * License along with this program; if not, write to the *
15  * Free Software Foundation, Inc., *
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
17  ***************************************************************************/
18 
19 #include "kgamerendererclient.h"
20 #include "kgamerenderer.h"
21 #include "kgamerenderer_p.h"
22 
23 #include <QtCore/QTimer>
24 
25 KGameRendererClientPrivate::KGameRendererClientPrivate(KGameRenderer* renderer, const QString& spriteKey, KGameRendererClient* parent)
26  : m_parent(parent)
27  , m_renderer(renderer)
28  , m_spec(spriteKey, -1, QSize())
29 {
30 }
31 
32 KGameRendererClient::KGameRendererClient(KGameRenderer* renderer, const QString& spriteKey)
33  : d(new KGameRendererClientPrivate(renderer, spriteKey, this))
34 {
35  renderer->d->m_clients.insert(this, QString());
36  //The following may not be triggered directly because it may call receivePixmap() which is a pure virtual method at this point.
37  QTimer::singleShot(0, d, SLOT(fetchPixmap()));
38 }
39 
40 KGameRendererClient::~KGameRendererClient()
41 {
42  d->m_renderer->d->m_clients.remove(this);
43  delete d;
44 }
45 
46 KGameRenderer* KGameRendererClient::renderer() const
47 {
48  return d->m_renderer;
49 }
50 
51 QString KGameRendererClient::spriteKey() const
52 {
53  return d->m_spec.spriteKey;
54 }
55 
56 void KGameRendererClient::setSpriteKey(const QString& spriteKey)
57 {
58  if (d->m_spec.spriteKey != spriteKey)
59  {
60  d->m_spec.spriteKey = spriteKey;
61  d->fetchPixmap();
62  }
63 }
64 
65 int KGameRendererClient::frameCount() const
66 {
67  return d->m_renderer->frameCount(d->m_spec.spriteKey);
68 }
69 
70 int KGameRendererClient::frame() const
71 {
72  return d->m_spec.frame;
73 }
74 
75 void KGameRendererClient::setFrame(int frame)
76 {
77  if (d->m_spec.frame != frame)
78  {
79  //do some normalization ourselves
80  const int frameCount = this->frameCount();
81  if (frameCount <= 0 || frame < 0)
82  {
83  frame = -1;
84  }
85  else
86  {
87  const int frameBaseIndex = d->m_renderer->frameBaseIndex();
88  frame = (frame - frameBaseIndex) % frameCount + frameBaseIndex;
89  }
90  if (d->m_spec.frame != frame)
91  {
92  d->m_spec.frame = frame;
93  d->fetchPixmap();
94  }
95  }
96 }
97 
98 QSize KGameRendererClient::renderSize() const
99 {
100  return d->m_spec.size;
101 }
102 
103 void KGameRendererClient::setRenderSize(const QSize& renderSize)
104 {
105  if (d->m_spec.size != renderSize)
106  {
107  d->m_spec.size = renderSize;
108  d->fetchPixmap();
109  }
110 }
111 
112 QHash<QColor, QColor> KGameRendererClient::customColors() const
113 {
114  return d->m_spec.customColors;
115 }
116 
117 void KGameRendererClient::setCustomColors(const QHash<QColor, QColor>& customColors)
118 {
119  if (d->m_spec.customColors != customColors)
120  {
121  d->m_spec.customColors = customColors;
122  d->fetchPixmap();
123  }
124 }
125 
126 void KGameRendererClientPrivate::fetchPixmap()
127 {
128  m_renderer->d->requestPixmap(m_spec, m_parent);
129 }
QHash::insert
iterator insert(const Key &key, const T &value)
KGameRenderer::frameCount
int frameCount(const QString &key) const
Definition: kgamerenderer.cpp:301
kgamerendererclient.h
KGameRendererClient::setCustomColors
void setCustomColors(const QHash< QColor, QColor > &customColors)
Defines the custom color replacements for this client.
Definition: kgamerendererclient.cpp:117
QHash< QColor, QColor >
KGameRendererClientPrivate::m_renderer
KGameRenderer * m_renderer
Definition: kgamerenderer_p.h:172
KGameRenderer
Cache-enabled rendering of SVG themes.
Definition: kgamerenderer.h:94
KGameRendererClientPrivate::fetchPixmap
void fetchPixmap()
Definition: kgamerendererclient.cpp:126
KGameRendererClient::frame
int frame() const
Definition: kgamerendererclient.cpp:70
kgamerenderer_p.h
KGameRendererPrivate::m_clients
QHash< KGameRendererClient *, QString > m_clients
Definition: kgamerenderer_p.h:134
QString
QHash::remove
int remove(const Key &key)
KGameRendererClient::spriteKey
QString spriteKey() const
Definition: kgamerendererclient.cpp:51
KGameRendererClient::KGameRendererClient
KGameRendererClient(KGameRenderer *renderer, const QString &spriteKey)
Creates a new client which receives pixmaps for the sprite with the given spriteKey as provided by th...
Definition: kgamerendererclient.cpp:32
KGameRendererClient::customColors
QHash< QColor, QColor > customColors() const
Definition: kgamerendererclient.cpp:112
KGameRendererPrivate::requestPixmap
void requestPixmap(const KGRInternal::ClientSpec &spec, KGameRendererClient *client, QPixmap *synchronousResult=0)
Definition: kgamerenderer.cpp:431
KGameRendererClient::frameCount
int frameCount() const
Definition: kgamerendererclient.cpp:65
kgamerenderer.h
KGameRendererClient::setRenderSize
void setRenderSize(const QSize &renderSize)
Defines the size of the pixmap that will be requested from KGameRenderer.
Definition: kgamerendererclient.cpp:103
QSize
KGameRendererClient::~KGameRendererClient
virtual ~KGameRendererClient()
Definition: kgamerendererclient.cpp:40
KGameRendererClient
An object that receives pixmaps from a KGameRenderer.
Definition: kgamerendererclient.h:50
KGameRendererClientPrivate::m_parent
KGameRendererClient * m_parent
Definition: kgamerenderer_p.h:171
KGameRendererClient::renderer
KGameRenderer * renderer() const
Definition: kgamerendererclient.cpp:46
KGRInternal::ClientSpec::frame
int frame
Definition: kgamerenderer_p.h:39
KGameRendererClient::renderSize
QSize renderSize() const
Definition: kgamerendererclient.cpp:98
KGRInternal::ClientSpec::spriteKey
QString spriteKey
Definition: kgamerenderer_p.h:38
KGameRendererClientPrivate
Definition: kgamerenderer_p.h:163
KGRInternal::ClientSpec::size
QSize size
Definition: kgamerenderer_p.h:40
KGameRendererClientPrivate::KGameRendererClientPrivate
KGameRendererClientPrivate(KGameRenderer *renderer, const QString &spriteKey, KGameRendererClient *parent)
Definition: kgamerendererclient.cpp:25
KGameRendererClientPrivate::m_spec
KGRInternal::ClientSpec m_spec
Definition: kgamerenderer_p.h:174
KGRInternal::ClientSpec::customColors
QHash< QColor, QColor > customColors
Definition: kgamerenderer_p.h:41
KGameRendererClient::setSpriteKey
void setSpriteKey(const QString &spriteKey)
Defines the key of the sprite which is rendered by this client.
Definition: kgamerendererclient.cpp:56
KGameRendererClient::setFrame
void setFrame(int frame)
For animated sprites, render another frame.
Definition: kgamerendererclient.cpp:75
KGameRenderer::frameBaseIndex
int frameBaseIndex() const
Definition: kgamerenderer.cpp:111
QTimer::singleShot
singleShot
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:18:42 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

libkdegames

Skip menu "libkdegames"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdegames API Reference

Skip menu "kdegames API Reference"
  • granatier
  • kapman
  • kblackbox
  • kgoldrunner
  • kigo
  • kmahjongg
  • KShisen
  • ksquares
  • libkdegames
  •   highscore
  •   libkdegamesprivate
  •     kgame
  • libkmahjongg
  • palapeli
  •   libpala

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal