/* * Copyright (c) 2020-2021, Andreas Kling * Copyright (c) 2022, Dex♪ * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::ImageDecoding { struct Frame { RefPtr bitmap; size_t duration { 0 }; }; struct DecodedImage { bool is_animated { false }; u32 loop_count { 0 }; Vector frames; }; class Decoder : public RefCounted { public: virtual ~Decoder(); static void initialize(RefPtr&&); static Decoder& the(); virtual Optional decode_image(ReadonlyBytes) = 0; protected: explicit Decoder(); }; }