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

parley

  • sources
  • kde-4.12
  • 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 class ThemedBackgroundRenderer : public QObject
31 {
32  Q_OBJECT
33 
34 public:
35  enum ScaleBase {
36  NoScale,
37  Horizontal,
38  Vertical,
39  Rect
40  };
41 
42  enum Edge {
43  Top,
44  Bottom,
45  Left,
46  Right,
47  Center
48  };
49 
50  enum Align {
51  Corner,
52  LeftTop, // left or top (depending on orientation of the edge)
53  Centered,
54  Repeated,
55  RightBottom // right or bottom (depending on orientation of the edge)
56  };
57 
58  ThemedBackgroundRenderer(QObject* parent, const QString& cacheFilename);
59  ~ThemedBackgroundRenderer();
60 
61  void setTheme(const QString& theme);
62 
63  QSizeF getSizeForId(const QString& id);
64  QRectF getRectForId(const QString& id);
65  QPixmap getPixmapForId(const QString& id, QSize size = QSize());
66  QMargins contentMargins();
67 
68  QPixmap getScaledBackground();
69 
70  QColor fontColor(const QString& context, const QColor& fallback);
71 
72 public Q_SLOTS:
73  void clearRects();
74  void addRect(const QString& name, const QRect& rect);
75  void updateBackground();
76 
77  void updateBackgroundTimeout();
78 
79  void renderingFinished();
80 
81 signals:
82  void backgroundChanged(QPixmap pixmap);
83 
84 private:
85  QImage renderBackground(bool fastScale);
86  void renderRect(const QString& name, const QRect& rect, QPainter *p, bool fastScale);
87  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);
88  QRect scaleRect(QRectF itemRect, const QRect& baseRect, ScaleBase scaleBase, Qt::AspectRatioMode aspectRatio);
89  QRect alignRect(QRect itemRect, const QRect& baseRect, Edge edge, Align align, bool inside);
90 
91  ImageCache m_cache;
92  QFuture<QImage> m_future;
93  QFutureWatcher<QImage> m_watcher;
94  KGameTheme *m_theme;
95  QHash<QString, QString> m_rectMappings;
96  KSvgRenderer m_renderer;
97  QList<QPair<QString, QRect> > m_rects;
98  QList<QPair<QString, QRect> > m_lastScaledRenderRects; // the rects used for the last scaled render
99  QList<QPair<QString, QRect> > m_lastFullRenderRects; // the rects used for the last full render
100  bool m_haveCache;
101  bool m_queuedRequest;
102  bool m_isFastScaledRender;
103  QTimer m_timer;
104 };
105 
106 }
107 
108 #endif // PRACTICE_THEMEDBACKGROUNDRENDERER_H
Practice::ThemedBackgroundRenderer::NoScale
Definition: themedbackgroundrenderer.h:36
Practice::ThemedBackgroundRenderer::LeftTop
Definition: themedbackgroundrenderer.h:52
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:42
KGameTheme
Class for loading theme files.
Definition: kgametheme.h:42
Practice::ThemedBackgroundRenderer::Top
Definition: themedbackgroundrenderer.h:43
Practice::ThemedBackgroundRenderer::contentMargins
QMargins contentMargins()
Definition: themedbackgroundrenderer.cpp:190
QObject
Practice::ThemedBackgroundRenderer::Left
Definition: themedbackgroundrenderer.h:45
Practice::ThemedBackgroundRenderer::fontColor
QColor fontColor(const QString &context, const QColor &fallback)
Definition: themedbackgroundrenderer.cpp:106
imagecache.h
Practice::ThemedBackgroundRenderer::Corner
Definition: themedbackgroundrenderer.h:51
Practice::ThemedBackgroundRenderer::addRect
void addRect(const QString &name, const QRect &rect)
Definition: themedbackgroundrenderer.cpp:69
Practice::ImageCache
Definition: imagecache.h:27
Practice::ThemedBackgroundRenderer::getSizeForId
QSizeF getSizeForId(const QString &id)
Definition: themedbackgroundrenderer.cpp:154
Practice::ThemedBackgroundRenderer::getRectForId
QRectF getRectForId(const QString &id)
Definition: themedbackgroundrenderer.cpp:161
Practice::ThemedBackgroundRenderer::setTheme
void setTheme(const QString &theme)
Definition: themedbackgroundrenderer.cpp:50
Practice::ThemedBackgroundRenderer::Repeated
Definition: themedbackgroundrenderer.h:54
Practice::ThemedBackgroundRenderer::ThemedBackgroundRenderer
ThemedBackgroundRenderer(QObject *parent, const QString &cacheFilename)
Definition: themedbackgroundrenderer.cpp:29
Practice::ThemedBackgroundRenderer::Rect
Definition: themedbackgroundrenderer.h:39
Practice::ThemedBackgroundRenderer
Definition: themedbackgroundrenderer.h:30
Practice::ThemedBackgroundRenderer::backgroundChanged
void backgroundChanged(QPixmap pixmap)
Practice::ThemedBackgroundRenderer::RightBottom
Definition: themedbackgroundrenderer.h:55
Practice::ThemedBackgroundRenderer::ScaleBase
ScaleBase
Definition: themedbackgroundrenderer.h:35
Practice::ThemedBackgroundRenderer::updateBackground
void updateBackground()
Definition: themedbackgroundrenderer.cpp:119
Practice::ThemedBackgroundRenderer::getPixmapForId
QPixmap getPixmapForId(const QString &id, QSize size=QSize())
Definition: themedbackgroundrenderer.cpp:168
Practice::ThemedBackgroundRenderer::Center
Definition: themedbackgroundrenderer.h:47
Practice::ThemedBackgroundRenderer::Horizontal
Definition: themedbackgroundrenderer.h:37
Practice::ThemedBackgroundRenderer::~ThemedBackgroundRenderer
~ThemedBackgroundRenderer()
Definition: themedbackgroundrenderer.cpp:40
Practice::ThemedBackgroundRenderer::Centered
Definition: themedbackgroundrenderer.h:53
Practice::ThemedBackgroundRenderer::clearRects
void clearRects()
Definition: themedbackgroundrenderer.cpp:63
Practice::ThemedBackgroundRenderer::Bottom
Definition: themedbackgroundrenderer.h:44
Practice::ThemedBackgroundRenderer::Right
Definition: themedbackgroundrenderer.h:46
Practice::ThemedBackgroundRenderer::renderingFinished
void renderingFinished()
Definition: themedbackgroundrenderer.cpp:144
Practice::ThemedBackgroundRenderer::Vertical
Definition: themedbackgroundrenderer.h:38
Practice::ThemedBackgroundRenderer::Align
Align
Definition: themedbackgroundrenderer.h:50
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:42:06 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
  • kstars
  • libkdeedu
  •   keduvocdocument
  • 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