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

Last change on this file since 1047 was 846, checked in by Dmitry A. Kuminov, 15 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

File size: 9.8 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtGui module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this 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 have questions regarding the use of this file, please contact
37** Nokia 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 painting
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