1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QGIFHANDLER_P_H
5#define QGIFHANDLER_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtGui/qimageiohandler.h>
19#include <QtGui/qimage.h>
20#include <QtCore/qbytearray.h>
21
22QT_BEGIN_NAMESPACE
23
24class QGIFFormat;
25class QGifHandler : public QImageIOHandler
26{
27public:
28 QGifHandler();
29 ~QGifHandler();
30
31 bool canRead() const override;
32 bool read(QImage *image) override;
33 bool write(const QImage &image) override;
34
35 static bool canRead(QIODevice *device);
36
37 QVariant option(ImageOption option) const override;
38 void setOption(ImageOption option, const QVariant &value) override;
39 bool supportsOption(ImageOption option) const override;
40
41 int imageCount() const override;
42 int loopCount() const override;
43 int nextImageDelay() const override;
44 int currentImageNumber() const override;
45
46private:
47 bool imageIsComing() const;
48 QGIFFormat *gifFormat;
49 QString fileName;
50 mutable QByteArray buffer;
51 mutable QImage lastImage;
52
53 mutable int nextDelay;
54 mutable int loopCnt;
55 int frameNumber;
56 mutable QList<QSize> imageSizes;
57 mutable bool scanIsCached;
58};
59
60QT_END_NAMESPACE
61
62#endif // QGIFHANDLER_P_H
63

source code of qtbase/src/plugins/imageformats/gif/qgifhandler_p.h