mirror of
https://invent.kde.org/frameworks/kimageformats.git
synced 2025-10-01 14:24:19 -04:00
Add plugin for High Efficiency Image File Format (HEIF)
Code partially by Sirius Bakke
This commit is contained in:
55
src/imageformats/heif_p.h
Normal file
55
src/imageformats/heif_p.h
Normal file
@ -0,0 +1,55 @@
|
||||
/*
|
||||
High Efficiency Image File Format (HEIF) support for QImage.
|
||||
|
||||
SPDX-FileCopyrightText: 2020 Sirius Bakke <sirius@bakke.co>
|
||||
SPDX-FileCopyrightText: 2021 Daniel Novomesky <dnovomesky@gmail.com>
|
||||
|
||||
SPDX-License-Identifier: LGPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef KIMG_HEIF_P_H
|
||||
#define KIMG_HEIF_P_H
|
||||
|
||||
#include <QImage>
|
||||
#include <QImageIOPlugin>
|
||||
|
||||
class HEIFHandler : public QImageIOHandler
|
||||
{
|
||||
public:
|
||||
HEIFHandler();
|
||||
|
||||
bool canRead() const override;
|
||||
bool read(QImage *image) override;
|
||||
bool write(const QImage &image) override;
|
||||
|
||||
static bool canRead(QIODevice *device);
|
||||
|
||||
QVariant option(ImageOption option) const override;
|
||||
void setOption(ImageOption option, const QVariant &value) override;
|
||||
bool supportsOption(ImageOption option) const override;
|
||||
private:
|
||||
bool ensureParsed() const;
|
||||
bool ensureDecoder();
|
||||
|
||||
enum ParseHeicState {
|
||||
ParseHeicError = -1,
|
||||
ParseHeicNotParsed = 0,
|
||||
ParseHeicSuccess = 1
|
||||
};
|
||||
|
||||
ParseHeicState m_parseState;
|
||||
int m_quality;
|
||||
QImage m_current_image;
|
||||
};
|
||||
|
||||
class HEIFPlugin : public QImageIOPlugin
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QImageIOHandlerFactoryInterface" FILE "heif.json")
|
||||
|
||||
public:
|
||||
Capabilities capabilities(QIODevice *device, const QByteArray &format) const override;
|
||||
QImageIOHandler *create(QIODevice *device, const QByteArray &format = QByteArray()) const override;
|
||||
};
|
||||
|
||||
#endif // KIMG_HEIF_P_H
|
Reference in New Issue
Block a user