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

parley

  • sources
  • kde-4.14
  • kdeedu
  • parley
  • src
  • practice
themedbackgroundrenderer.h
Go to the documentation of this file.
1 /***************************************************************************
2  Copyright 2010 Daniel Laidig <laidig@kde.org>
3  ***************************************************************************/
4 
5 /***************************************************************************
6  * *
7  * This program is free software; you can redistribute it and/or modify *
8  * it under the terms of the GNU General Public License as published by *
9  * the Free Software Foundation; either version 2 of the License, or *
10  * (at your option) any later version. *
11  * *
12  ***************************************************************************/
13 
14 #ifndef PRACTICE_THEMEDBACKGROUNDRENDERER_H
15 #define PRACTICE_THEMEDBACKGROUNDRENDERER_H
16 
17 #include <QObject>
18 
19 #include "imagecache.h"
20 #include <QFuture>
21 #include <QFutureWatcher>
22 #include <QTimer>
23 #include <ksvgrenderer.h>
24 
25 class QMargins;
26 class KGameTheme;
27 
28 namespace Practice
29 {
30 
31 class ThemedBackgroundRenderer : public QObject
32 {
33  Q_OBJECT
34 
35 public:
36  enum ScaleBase {
37  NoScale,
38  Horizontal,
39  Vertical,
40  Rect
41  };
42 
43  enum Edge {
44  Top,
45  Bottom,
46  Left,
47  Right,
48  Center
49  };
50 
51  enum Align {
52  Corner,
53  LeftTop, // left or top (depending on orientation of the edge)
54  Centered,
55  Repeated,
56  RightBottom // right or bottom (depending on orientation of the edge)
57  };
58 
59  ThemedBackgroundRenderer(QObject* parent, const QString& cacheFilename);
60  ~ThemedBackgroundRenderer();
61 
62  void setTheme(const QString& theme);
63 
64  QSizeF getSizeForId(const QString& id);
65  QRectF getRectForId(const QString& id);
66  QPixmap getPixmapForId(const QString& id, QSize size = QSize());
67  QMargins contentMargins();
68 
69  QPixmap getScaledBackground();
70 
71  QColor fontColor(const QString& context, const QColor& fallback);
72 
73 public Q_SLOTS:
74  void clearRects();
75  void addRect(const QString& name, const QRect& rect);
76  void updateBackground();
77 
78  void updateBackgroundTimeout();
79 
80  void renderingFinished();
81 
82 signals:
83  void backgroundChanged(QPixmap pixmap);
84 
85 private:
86  QImage renderBackground(bool fastScale);
87  void renderRect(const QString& name, const QRect& rect, QPainter *p, bool fastScale);
88  void renderItem(const QString& idBase, const QString& idSuffix, const QRect& rect, QPainter *p, bool fastScale, ScaleBase scaleBase, Qt::AspectRatioMode aspectRatio, Edge edge, Align align, bool inside);
89  QRect scaleRect(QRectF itemRect, const QRect& baseRect, ScaleBase scaleBase, Qt::AspectRatioMode aspectRatio);
90  QRect alignRect(QRect itemRect, const QRect& baseRect, Edge edge, Align align, bool inside);
91 
92  ImageCache m_cache;
93  QFuture<QImage> m_future;
94  QFutureWatcher<QImage> m_watcher;
95  KGameTheme *m_theme;
96  QHash<QString, QString> m_rectMappings;
97  KSvgRenderer m_renderer;
98  QList<QPair<QString, QRect> > m_rects;
99  QList<QPair<QString, QRect> > m_lastScaledRenderRects; // the rects used for the last scaled render
100  QList<QPair<QString, QRect> > m_lastFullRenderRects; // the rects used for the last full render
101  bool m_haveCache;
102  bool m_queuedRequest;
103  bool m_isFastScaledRender;
104  QTimer m_timer;
105 };
106 
107 }
108 
109 #endif // PRACTICE_THEMEDBACKGROUNDRENDERER_H
Practice::ThemedBackgroundRenderer::NoScale
Definition: themedbackgroundrenderer.h:37
Practice::ThemedBackgroundRenderer::LeftTop
Definition: themedbackgroundrenderer.h:53
Practice::ThemedBackgroundRenderer::updateBackgroundTimeout
void updateBackgroundTimeout()
Definition: themedbackgroundrenderer.cpp:128
Practice::ThemedBackgroundRenderer::getScaledBackground
QPixmap getScaledBackground()
Definition: themedbackgroundrenderer.cpp:78
Practice::ThemedBackgroundRenderer::Edge
Edge
Definition: themedbackgroundrenderer.h:43
KGameTheme
Class for loading theme files.
Definition: kgametheme.h:42
Practice::ThemedBackgroundRenderer::Top
Definition: themedbackgroundrenderer.h:44
Practice::ThemedBackgroundRenderer::contentMargins
QMargins contentMargins()
Definition: themedbackgroundrenderer.cpp:190
Practice::ThemedBackgroundRenderer::Left
Definition: themedbackgroundrenderer.h:46
Practice::ThemedBackgroundRenderer::fontColor
QColor fontColor(const QString &context, const QColor &fallback)
Definition: themedbackgroundrenderer.cpp:106
QObject::name
const char * name() const
QRect
imagecache.h
QTimer
QHash< QString, QString >
QObject
QPainter
Practice::ThemedBackgroundRenderer::Corner
Definition: themedbackgroundrenderer.h:52
Practice::ThemedBackgroundRenderer::addRect
void addRect(const QString &name, const QRect &rect)
Definition: themedbackgroundrenderer.cpp:69
Practice::ImageCache
Definition: imagecache.h:28
Practice::ThemedBackgroundRenderer::getSizeForId
QSizeF getSizeForId(const QString &id)
Definition: themedbackgroundrenderer.cpp:154
QString
QList
QColor
QPixmap
Practice::ThemedBackgroundRenderer::getRectForId
QRectF getRectForId(const QString &id)
Definition: themedbackgroundrenderer.cpp:161
QSize
Practice::ThemedBackgroundRenderer::setTheme
void setTheme(const QString &theme)
Definition: themedbackgroundrenderer.cpp:50
Practice::ThemedBackgroundRenderer::Repeated
Definition: themedbackgroundrenderer.h:55
Practice::ThemedBackgroundRenderer::ThemedBackgroundRenderer
ThemedBackgroundRenderer(QObject *parent, const QString &cacheFilename)
Definition: themedbackgroundrenderer.cpp:29
QImage
Practice::ThemedBackgroundRenderer::Rect
Definition: themedbackgroundrenderer.h:40
Practice::ThemedBackgroundRenderer
Definition: themedbackgroundrenderer.h:31
Practice::ThemedBackgroundRenderer::backgroundChanged
void backgroundChanged(QPixmap pixmap)
Practice::ThemedBackgroundRenderer::RightBottom
Definition: themedbackgroundrenderer.h:56
Practice::ThemedBackgroundRenderer::ScaleBase
ScaleBase
Definition: themedbackgroundrenderer.h:36
Practice::ThemedBackgroundRenderer::updateBackground
void updateBackground()
Definition: themedbackgroundrenderer.cpp:119
QSizeF
Practice::ThemedBackgroundRenderer::getPixmapForId
QPixmap getPixmapForId(const QString &id, QSize size=QSize())
Definition: themedbackgroundrenderer.cpp:168
QRectF
Practice::ThemedBackgroundRenderer::Center
Definition: themedbackgroundrenderer.h:48
QMargins
QFutureWatcher< QImage >
Practice::ThemedBackgroundRenderer::Horizontal
Definition: themedbackgroundrenderer.h:38
Practice::ThemedBackgroundRenderer::~ThemedBackgroundRenderer
~ThemedBackgroundRenderer()
Definition: themedbackgroundrenderer.cpp:40
Practice::ThemedBackgroundRenderer::Centered
Definition: themedbackgroundrenderer.h:54
Practice::ThemedBackgroundRenderer::clearRects
void clearRects()
Definition: themedbackgroundrenderer.cpp:63
QFuture< QImage >
QObject::parent
QObject * parent() const
Practice::ThemedBackgroundRenderer::Bottom
Definition: themedbackgroundrenderer.h:45
Practice::ThemedBackgroundRenderer::Right
Definition: themedbackgroundrenderer.h:47
Practice::ThemedBackgroundRenderer::renderingFinished
void renderingFinished()
Definition: themedbackgroundrenderer.cpp:144
Practice::ThemedBackgroundRenderer::Vertical
Definition: themedbackgroundrenderer.h:39
Practice::ThemedBackgroundRenderer::Align
Align
Definition: themedbackgroundrenderer.h:51
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:15:56 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

parley

Skip menu "parley"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

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