1 // vim: set tabstop=4 shiftwidth=4 noexpandtab:
3 Gwenview: an image viewer
4 Copyright 2008 Aurélien Gâteau <aurelien.gateau@free.fr>
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either version 2
9 of the License, or (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA.
22 #include "imagesequence.moc"
36 struct ImageSequencePrivate
{
37 QVector
<QPixmap
> mFrames
;
41 ImageSequence::ImageSequence(QObject
* parent
)
43 , d(new ImageSequencePrivate
) {
47 ImageSequence::~ImageSequence() {
52 bool ImageSequence::load(const QString
& path
) {
54 if (!bigPixmap
.load(path
)) {
55 kWarning() << "Could not load animation image from" << path
;
59 d
->mFrames
.resize(bigPixmap
.height() / bigPixmap
.width());
60 const int size
= bigPixmap
.width();
62 for(int pos
=0; pos
< d
->mFrames
.size(); ++pos
) {
63 QPixmap pix
= QPixmap(size
, size
);
64 pix
.fill(Qt::transparent
);
65 QPainter
painter(&pix
);
66 painter
.drawPixmap(QPoint(0, 0), bigPixmap
, QRect(0, pos
* size
, size
, size
));
67 d
->mFrames
[pos
] = pix
;
73 QSize
ImageSequence::frameSize() const {
74 if (d
->mFrames
.size() == 0) {
75 kWarning() << "No frame loaded";
78 return d
->mFrames
[0].size();
82 int ImageSequence::frameCount() const {
83 return d
->mFrames
.size();
87 QPixmap
ImageSequence::frameAt(int index
) const {
88 if (index
>= d
->mFrames
.size()) {
89 kWarning() << "index is too high" << index
;
92 return d
->mFrames
.at(index
);