/////////////////////////////////////////////////////////////////////////////
// Name: wx/webpdecoder.h
// Purpose: wxWebPDecoder, WebP Animation decoder
// Author: Maarten Bent
// Created: 2025-02-27
// Copyright: (c) 2025 Maarten Bent
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_WEBPDECODER_H
#define _WX_WEBPDECODER_H
#include "wx/defs.h"
#if wxUSE_STREAMS && wxUSE_LIBWEBP
#include "wx/stream.h"
#include "wx/image.h"
#include "wx/animdecod.h"
#include "wx/imagwebp.h"
class WXDLLIMPEXP_CORE wxWebPDecoder : public wxAnimationDecoder
{
public:
wxWebPDecoder();
~wxWebPDecoder();
virtual wxSize GetFrameSize(unsigned int frame) const override;
virtual wxPoint GetFramePosition(unsigned int frame) const override;
virtual wxAnimationDisposal GetDisposalMethod(unsigned int frame) const override;
virtual long GetDelay(unsigned int frame) const override;
virtual wxColour GetTransparentColour(unsigned int frame) const override;
virtual bool Load(wxInputStream& stream) override;
virtual bool ConvertToImage(unsigned int frame, wxImage* image) const override;
virtual wxAnimationDecoder* Clone() const override
{
return new wxWebPDecoder;
}
virtual wxAnimationType GetType() const override
{
return wxANIMATION_TYPE_WEBP;
}
protected:
virtual bool DoCanRead(wxInputStream& stream) const override;
private:
std::vector<wxWebPAnimationFrame> m_frames;
void InitWebPHandler() const;
wxDECLARE_NO_COPY_CLASS(wxWebPDecoder);
};
#endif // wxUSE_STREAMS && wxUSE_LIBWEBP
#endif // _WX_WEBPDECODER_H