source: trunk/src/gui/image/qiconengine.cpp@ 100

Last change on this file since 100 was 2, checked in by Dmitry A. Kuminov, 16 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 9.3 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: Qt Software Information ([email protected])
5**
6** This file is part of the QtGui module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial Usage
10** Licensees holding valid Qt Commercial licenses may use this file in
11** accordance with the Qt Commercial License Agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and Nokia.
14**
15** GNU Lesser General Public License Usage
16** Alternatively, this file may be used under the terms of the GNU Lesser
17** General Public License version 2.1 as published by the Free Software
18** Foundation and appearing in the file LICENSE.LGPL included in the
19** packaging of this file. Please review the following information to
20** ensure the GNU Lesser General Public License version 2.1 requirements
21** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22**
23** In addition, as a special exception, Nokia gives you certain
24** additional rights. These rights are described in the Nokia Qt LGPL
25** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26** package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you are unsure which license is appropriate for your use, please
37** contact the sales department at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42#include "qiconengine.h"
43#include "qpainter.h"
44
45QT_BEGIN_NAMESPACE
46
47/*!
48 \class QIconEngine
49
50 \brief The QIconEngine class provides an abstract base class for QIcon renderers.
51
52 \ingroup multimedia
53
54 \bold {Use QIconEngineV2 instead.}
55
56 An icon engine provides the rendering functions for a QIcon. Each icon has a
57 corresponding icon engine that is responsible for drawing the icon with a
58 requested size, mode and state.
59
60 The icon is rendered by the paint() function, and the icon can additionally be
61 obtained as a pixmap with the pixmap() function (the default implementation
62 simply uses paint() to achieve this). The addPixmap() function can be used to
63 add new pixmaps to the icon engine, and is used by QIcon to add specialized
64 custom pixmaps.
65
66 The paint(), pixmap(), and addPixmap() functions are all virtual, and can
67 therefore be reimplemented in subclasses of QIconEngine.
68
69 \sa QIconEngineV2, QIconEnginePlugin
70
71*/
72
73/*!
74 \fn virtual void QIconEngine::paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) = 0;
75
76 Uses the given \a painter to paint the icon with the required \a mode and
77 \a state into the rectangle \a rect.
78*/
79
80/*! Returns the actual size of the icon the engine provides for the
81 requested \a size, \a mode and \a state. The default implementation
82 returns the given \a size.
83 */
84QSize QIconEngine::actualSize(const QSize &size, QIcon::Mode /*mode*/, QIcon::State /*state*/)
85{
86 return size;
87}
88
89
90/*!
91 Destroys the icon engine.
92 */
93QIconEngine::~QIconEngine()
94{
95}
96
97
98/*!
99 Returns the icon as a pixmap with the required \a size, \a mode,
100 and \a state. The default implementation creates a new pixmap and
101 calls paint() to fill it.
102*/
103QPixmap QIconEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state)
104{
105 QPixmap pm(size);
106 {
107 QPainter p(&pm);
108 paint(&p, QRect(QPoint(0,0),size), mode, state);
109 }
110 return pm;
111}
112
113/*!
114 Called by QIcon::addPixmap(). Adds a specialized \a pixmap for the given
115 \a mode and \a state. The default pixmap-based engine stores any supplied
116 pixmaps, and it uses them instead of scaled pixmaps if the size of a pixmap
117 matches the size of icon requested. Custom icon engines that implement
118 scalable vector formats are free to ignores any extra pixmaps.
119 */
120void QIconEngine::addPixmap(const QPixmap &/*pixmap*/, QIcon::Mode /*mode*/, QIcon::State /*state*/)
121{
122}
123
124
125/*! Called by QIcon::addFile(). Adds a specialized pixmap from the
126 file with the given \a fileName, \a size, \a mode and \a state. The
127 default pixmap-based engine stores any supplied file names, and it
128 loads the pixmaps on demand instead of using scaled pixmaps if the
129 size of a pixmap matches the size of icon requested. Custom icon
130 engines that implement scalable vector formats are free to ignores
131 any extra files.
132 */
133void QIconEngine::addFile(const QString &/*fileName*/, const QSize &/*size*/, QIcon::Mode /*mode*/, QIcon::State /*state*/)
134{
135}
136
137
138
139// version 2 functions
140
141
142/*!
143 \class QIconEngineV2
144
145 \brief The QIconEngineV2 class provides an abstract base class for QIcon renderers.
146
147 \ingroup multimedia
148 \since 4.3
149
150 An icon engine renders \l{QIcon}s. With icon engines, you can
151 customize icons. Qt provides a default engine that makes icons
152 adhere to the current style by scaling the icons and providing a
153 disabled appearance.
154
155 An engine is installed on an icon either through a QIcon
156 constructor or through a QIconEnginePluginV2. The plugins are used
157 by Qt if a specific engine is not given when the icon is created.
158 See the QIconEngineV2 class description to learn how to create
159 icon engine plugins.
160
161 An icon engine provides the rendering functions for a QIcon. Each
162 icon has a corresponding icon engine that is responsible for drawing
163 the icon with a requested size, mode and state.