Search for usage in LXR

#include <KGameRenderer>

Inheritance diagram for KGameRenderer:

Public Types

typedef QFlags< StrategyStrategies
enum  Strategy { UseDiskCache = 1 << 0, UseRenderingThreads = 1 << 1 }


const KgTheme theme
KgThemeProvider themeProvider
- Properties inherited from QObject


void readOnlyProperty ()
void themeChanged (const KgTheme *theme)

Public Member Functions

 KGameRenderer (KgTheme *theme, unsigned cacheSize=0)
 KGameRenderer (KgThemeProvider *prov, unsigned cacheSize=0)
 ~KGameRenderer () override
QRectF boundsOnSprite (const QString &key, int frame=-1) const
QGraphicsViewdefaultPrimaryView () const
int frameBaseIndex () const
int frameCount (const QString &key) const
QString frameSuffix () const
void setDefaultPrimaryView (QGraphicsView *view)
void setFrameBaseIndex (int frameBaseIndex)
void setFrameSuffix (const QString &suffix)
void setStrategyEnabled (Strategy strategy, bool enabled=true)
bool spriteExists (const QString &key) const
QPixmap spritePixmap (const QString &key, const QSize &size, int frame=-1, const QHash< QColor, QColor > &customColors=(QHash< QColor, QColor >())) const
Strategies strategies () const
const KgThemetheme () const
KgThemeProviderthemeProvider () const
- Public Member Functions inherited from QObject
 QObject (QObject *parent)
bool blockSignals (bool block)
const QObjectListchildren () const const
QMetaObject::Connection connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const const
void deleteLater ()
void destroyed (QObject *obj)
bool disconnect (const char *signal, const QObject *receiver, const char *method) const const
bool disconnect (const QObject *receiver, const char *method) const const
void dumpObjectInfo ()
void dumpObjectInfo () const const
void dumpObjectTree ()
void dumpObjectTree () const const
QList< QByteArraydynamicPropertyNames () const const
virtual bool event (QEvent *e)
virtual bool eventFilter (QObject *watched, QEvent *event)
findChild (const QString &name, Qt::FindChildOptions options) const const
QList< T > findChildren (const QRegExp &regExp, Qt::FindChildOptions options) const const
QList< T > findChildren (const QRegularExpression &re, Qt::FindChildOptions options) const const
QList< T > findChildren (const QString &name, Qt::FindChildOptions options) const const
bool inherits (const char *className) const const
void installEventFilter (QObject *filterObj)
bool isWidgetType () const const
bool isWindowType () const const
void killTimer (int id)
virtual const QMetaObjectmetaObject () const const
void moveToThread (QThread *targetThread)
QString objectName () const const
void objectNameChanged (const QString &objectName)
QObjectparent () const const
QVariant property (const char *name) const const
 Q_CLASSINFO (Name, Value)
 Q_ENUM (...)
 Q_ENUM_NS (...)
 Q_ENUMS (...)
 Q_FLAG (...)
 Q_FLAG_NS (...)
 Q_FLAGS (...)
qFindChild (const QObject *obj, const QString &name)
QList< T > qFindChildren (const QObject *obj, const QRegExp &regExp)
QList< T > qFindChildren (const QObject *obj, const QString &name)
qobject_cast (const QObject *object)
qobject_cast (QObject *object)
void removeEventFilter (QObject *obj)
void setObjectName (const QString &name)
void setParent (QObject *parent)
bool setProperty (const char *name, const QVariant &value)
bool signalsBlocked () const const
int startTimer (int interval, Qt::TimerType timerType)
int startTimer (std::chrono::milliseconds time, Qt::TimerType timerType)
QThreadthread () const const

Additional Inherited Members

- Static Public Member Functions inherited from QObject
QMetaObject::Connection connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *context, Functor functor, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method, Qt::ConnectionType type)
QMetaObject::Connection connect (const QObject *sender, PointerToMemberFunction signal, Functor functor)
bool disconnect (const QMetaObject::Connection &connection)
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
bool disconnect (const QObject *sender, PointerToMemberFunction signal, const QObject *receiver, PointerToMemberFunction method)
QString tr (const char *sourceText, const char *disambiguation, int n)
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
- Public Attributes inherited from QObject
typedef QObjectList
- Protected Member Functions inherited from QObject
virtual void childEvent (QChildEvent *event)
virtual void connectNotify (const QMetaMethod &signal)
virtual void customEvent (QEvent *event)
virtual void disconnectNotify (const QMetaMethod &signal)
bool isSignalConnected (const QMetaMethod &signal) const const
int receivers (const char *signal) const const
QObjectsender () const const
int senderSignalIndex () const const
virtual void timerEvent (QTimerEvent *event)

Detailed Description

Cache-enabled rendering of SVG themes.

KGameRenderer is a light-weight rendering framework for the rendering of SVG themes (as represented by KgTheme) into pixmap caches.


  • Themes in the context of KGameRenderer are KgTheme instances. The theme selection by a KgRenderer can be managed by a KgThemeProvider.
  • A sprite is either a single pixmap ("non-animated sprites") or a sequence of pixmaps which are shown consecutively to produce an animation ("animated sprites"). Non-animated sprites correspond to a single element with the same key in the SVG theme file. The element keys for the pixmaps of an animated sprite are produced by appending the frameSuffix() to the sprite key.

Access to the pixmaps

Sprite pixmaps can be retrieved from KGameRenderer in the main thread using the synchronous KGameRenderer::spritePixmap() method. However, it is highly recommended to use the asynchronous interface provided by the interface class KGameRendererClient. A client corresponds to one pixmap and registers itself with the corresponding KGameRenderer instance to get notified when a new pixmap is available.

For QGraphicsView-based applications, the KGameRenderedItem class provides a QGraphicsPixmapItem which is a KGameRendererClient and displays the pixmap for a given sprite.

Rendering strategy

For each theme, KGameRenderer keeps two caches around: an in-process cache of QPixmaps, and a disk cache containing QImages (powered by KImageCache). You therefore will not need to implement any caching for the pixmaps provided by KGameRenderer.

When requests from a KGameRendererClient cannot be served immediately because the requested sprite is not in the caches, a rendering request is sent to a worker thread.

Support for legacy themes

When porting applications to KGameRenderer, you probably have to support the format of existing themes. KGameRenderer provides the frameBaseIndex() and frameSuffix() properties for this purpose. It is recommended not to change these properties in new applications.


Definition at line 85 of file kgamerenderer.h.

Member Typedef Documentation

◆ Strategies

Stores a combination of Strategy values.

Definition at line 109 of file kgamerenderer.h.

Member Enumeration Documentation

◆ Strategy

Describes the various strategies which KGameRenderer can use to speed up rendering.

See also

If set, pixmaps will be cached in a shared disk cache (using KSharedDataCache).

This is especially useful for complex SVG themes because KGameRenderer will not load the SVG if all needed pixmaps are available from the disk cache.


If set, pixmap requests from KGameRendererClients will be handled asynchronously if possible.

This is especially useful when many clients are requesting complex pixmaps at one time.

Definition at line 95 of file kgamerenderer.h.

Constructor & Destructor Documentation

◆ KGameRenderer() [1/2]

KGameRenderer::KGameRenderer ( KgThemeProvider prov,
unsigned  cacheSize = 0 

Constructs a new KGameRenderer that renders prov->currentTheme().

provthe theme provider
cacheSizethe cache size in megabytes (if not given, a sane default is used)
This constructor may only be called from the main thread.

Definition at line 54 of file kgamerenderer.cpp.

◆ KGameRenderer() [2/2]

KGameRenderer::KGameRenderer ( KgTheme theme,
unsigned  cacheSize = 0 

overload that allows to use KGameRenderer without a theme provider (useful when there is only one theme)

Takes ownership of theme.

Definition at line 72 of file kgamerenderer.cpp.

◆ ~KGameRenderer()

KGameRenderer::~KGameRenderer ( )

Deletes this KGameRenderer instance, as well as all clients using it.

Definition at line 77 of file kgamerenderer.cpp.

Member Function Documentation

◆ boundsOnSprite()

QRectF KGameRenderer::boundsOnSprite ( const QString key,
int  frame = -1 
) const
the bounding rectangle of the sprite with this key This is equal to QSvgRenderer::boundsOnElement() of the corresponding SVG element.

Definition at line 309 of file kgamerenderer.cpp.

◆ defaultPrimaryView()

QGraphicsView * KGameRenderer::defaultPrimaryView ( ) const
the primary view which is used by newly created KGameRenderedItem instances associated with this renderer
See also

Definition at line 88 of file kgamerenderer.cpp.

◆ frameBaseIndex()

int KGameRenderer::frameBaseIndex ( ) const
the frame base index.
See also

Definition at line 98 of file kgamerenderer.cpp.

◆ frameCount()

int KGameRenderer::frameCount ( const QString key) const
the count of frames available for the sprite with this key If this sprite is not animated (i.e. there are no SVG elements for any frames), this method returns 0. If the sprite does not exist at all, -1 is returned.

If the sprite is animated, the method counts frames starting at zero (unless you change the frameBaseIndex()), and returns the number of frames for which corresponding elements exist in the SVG file.

For example, if the SVG contains the elements "foo_0", "foo_1" and "foo_3", frameCount("foo") returns 2 for the default frame suffix. (The element "foo_3" is ignored because "foo_2" is missing.)

Definition at line 262 of file kgamerenderer.cpp.

◆ frameSuffix()

QString KGameRenderer::frameSuffix ( ) const
the frame suffix.
See also

Definition at line 108 of file kgamerenderer.cpp.

◆ readOnlyProperty

void KGameRenderer::readOnlyProperty ( )

This signal is never emitted.

It is provided because QML likes to complain about properties without NOTIFY signals, even readonly ones.

◆ setDefaultPrimaryView()

void KGameRenderer::setDefaultPrimaryView ( QGraphicsView view)

Set the primary view which will be used by newly created KGameRenderedItem instances associated with this renderer.

Calls to this method will have no effect on existing instances.

See also

Definition at line 93 of file kgamerenderer.cpp.

◆ setFrameBaseIndex()

void KGameRenderer::setFrameBaseIndex ( int  frameBaseIndex)

Sets the frame base index, i.e.

the lowest frame index. Usually, frame numbering starts at zero, so the frame base index is zero.

For example, if you set the frame base index to 42, and use the default frame suffix, the 3 frames of an animated sprite "foo" are provided by the SVG elements "foo_42", "foo_43" and "foo_44".

It is recommended not to alter the frame base index unless you need to support legacy themes.

Definition at line 103 of file kgamerenderer.cpp.

◆ setFrameSuffix()

void KGameRenderer::setFrameSuffix ( const QString suffix)

Sets the frame suffix.

This suffix will be added to a sprite key to create the corresponding SVG element key, after any occurrence of "%1" in the suffix has been replaced by the frame number.

Giving a suffix which does not include "%1" will reset to the default suffix "_%1".

For example, if the frame suffix is set to "_%1" (the default), the SVG element key for the frame no. 23 of the sprite "foo" is "foo_23".

Frame numbering starts at zero unless you setFrameBaseIndex().

Definition at line 113 of file kgamerenderer.cpp.

◆ setStrategyEnabled()

void KGameRenderer::setStrategyEnabled ( KGameRenderer::Strategy  strategy,
bool  enabled = true 

Enables/disables an optimization strategy for this renderer.

By default, both the UseDiskCache and the UseRenderingThreads strategies are enabled. This is a sane default for 99% of all games. You might only want to disable optimizations if the graphics are so simple that the optimizations create an overhead in your special case.

If you disable UseDiskCache, you should do so before setTheme(), because changes to UseDiskCache cause a full theme reload.

Definition at line 123 of file kgamerenderer.cpp.

◆ spriteExists()

bool KGameRenderer::spriteExists ( const QString key) const
if the sprite with the given key exists This is the same as
renderer.frameCount(key) >= 0

Definition at line 352 of file kgamerenderer.cpp.

◆ spritePixmap()

QPixmap KGameRenderer::spritePixmap ( const QString key,
const QSize size,
int  frame = -1,
const QHash< QColor, QColor > &  customColors = (QHash<QColorQColor>()) 
) const
a rendered pixmap
keythe key of the sprite
sizethe size of the resulting pixmap
framethe number of the frame which you want
customColorsthe custom color replacements for this client. That is, for each entry in this has, the key color will be replaced by its value if it is encountered in the sprite.
For non-animated frames, set frame to -1 or omit it.
Custom colors increase the rendering time considerably, so use this feature only if you really need its flexibility.

Definition at line 357 of file kgamerenderer.cpp.

◆ strategies()

KGameRenderer::Strategies KGameRenderer::strategies ( ) const
the optimization strategies used by this renderer
See also

Definition at line 118 of file kgamerenderer.cpp.

◆ theme()

const KgTheme* KGameRenderer::theme ( ) const
the KgTheme instance used by this renderer

◆ themeProvider()

KgThemeProvider* KGameRenderer::themeProvider ( ) const
the KgThemeProvider instance used by this renderer, or 0 if the renderer was created with a single static theme

The documentation for this class was generated from the following files:
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Sun Dec 4 2022 03:50:22 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.