not quite so much needs to be delayed to the init() function
[personal-kdebase.git] / workspace / kdm / kfrontend / themer / kdmpixmap.h
blob19589a01d2ecadf4cf40ec37c42ac183588dd8d6
1 /*
2 * Copyright (C) 2003 by Unai Garro <ugarro@users.sourceforge.net>
3 * Copyright (C) 2004 by Enrico Ros <rosenric@dei.unipd.it>
4 * Copyright (C) 2004 by Stephan Kulow <coolo@kde.org>
5 * Copyright (C) 2004 by Oswald Buddenhagen <ossi@kde.org>
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.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 #ifndef KDMPIXMAP_H
23 #define KDMPIXMAP_H
25 #include "kdmitem.h"
27 #include <QImage>
28 #include <QPixmap>
30 class QSignalMapper;
31 class KSvgRenderer;
34 * KdmPixmap. A pixmap element
37 class KdmPixmap : public KdmItem {
38 Q_OBJECT
40 public:
41 KdmPixmap( QObject *parent, const QDomNode &node );
43 protected:
44 // reimplemented; returns the size of loaded pixmap
45 virtual QSize sizeHint();
47 // draw the pixmap
48 virtual void drawContents( QPainter *p, const QRect &r );
50 // handle switching between normal / active / prelight configurations
51 virtual void statusChanged( bool descend );
53 virtual void setGeometry( QStack<QSize> &parentSizes, const QRect &newGeometry, bool force );
55 struct PixmapStruct {
56 struct PixmapClass {
57 PixmapClass()
58 : svgRenderer(0), present(false), svgImage(false) {}
59 QString fullpath;
60 QImage image;
61 KSvgRenderer *svgRenderer;
62 QPixmap readyPixmap;
63 QColor tint;
64 bool present;
65 bool svgImage;
66 QString svgElement;
67 QSize svgSizeHint;
68 } normal, active, prelight;
69 } pixmap;
71 QSignalMapper *qsm;
73 private:
74 // Method to load the image given by the theme
75 void definePixmap( const QDomElement &el, PixmapStruct::PixmapClass &pc );
76 bool loadPixmap( PixmapStruct::PixmapClass &pc );
77 bool loadSvg( PixmapStruct::PixmapClass &pc );
78 void applyTint( PixmapStruct::PixmapClass &pClass, QImage &img );
79 void updateSize( PixmapStruct::PixmapClass &pClass );
80 PixmapStruct::PixmapClass &getClass( ItemState sts );
81 PixmapStruct::PixmapClass &getCurClass() { return getClass( state ); }
83 private Q_SLOTS:
84 void slotAnimate( int sts );
87 #endif