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

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

trunk: Merged in qt 4.6.1 sources.

File size: 9.3 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 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