]>
cloud.milkyroute.net Git - dolphin.git/blob - src/panels/information/pixmapviewer.h
1 /***************************************************************************
2 * Copyright (C) 2006 by Peter Penz <peter.penz19@gmail.com> *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
20 #ifndef PIXMAPVIEWER_H
21 #define PIXMAPVIEWER_H
32 * @brief Widget which shows a pixmap centered inside the boundaries.
34 * When the pixmap is changed, a smooth transition is done from the old pixmap
37 class PixmapViewer
: public QWidget
44 /** No transition is done when the pixmap is changed. */
48 * The old pixmap is replaced by the new pixmap and the size is
49 * adjusted smoothly to the size of the new pixmap.
54 * If the old pixmap and the new pixmap have the same content, but
55 * a different size it is recommended to use Transition::SizeTransition
56 * instead of Transition::DefaultTransition. In this case it is assured
57 * that the larger pixmap is used for downscaling, which leads
58 * to an improved scaling output.
63 explicit PixmapViewer(QWidget
* parent
,
64 Transition transition
= DefaultTransition
);
66 ~PixmapViewer() override
;
67 void setPixmap(const QPixmap
& pixmap
);
68 QPixmap
pixmap() const;
71 * Sets the size hint to \a size and triggers a relayout
72 * of the parent widget. Per default no size hint is given.
74 void setSizeHint(const QSize
& size
);
75 QSize
sizeHint() const override
;
77 void setAnimatedImageFileName(const QString
& fileName
);
78 QString
animatedImageFileName() const;
80 void stopAnimatedImage();
83 * Checks if \a mimeType has a format supported by QMovie.
85 static bool isAnimatedMimeType(const QString
&mimeType
);
88 void paintEvent(QPaintEvent
* event
) override
;
91 void checkPendingPixmaps();
92 void updateAnimatedImageFrame();
97 QMovie
* m_animatedImage
;
98 QQueue
<QPixmap
> m_pendingPixmaps
;
99 QTimeLine m_animation
;
100 Transition m_transition
;
103 bool m_hasAnimatedImage
;
106 inline QPixmap
PixmapViewer::pixmap() const