/* * Copyright (c) 2022, Dex♪ * Copyright (c) 2022, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #include "ImageCodecPluginSerenity.h" #include namespace WebContent { ImageCodecPluginSerenity::ImageCodecPluginSerenity() = default; ImageCodecPluginSerenity::~ImageCodecPluginSerenity() = default; Optional ImageCodecPluginSerenity::decode_image(ReadonlyBytes bytes) { if (!m_client) { m_client = ImageDecoderClient::Client::try_create().release_value_but_fixme_should_propagate_errors(); m_client->on_death = [&] { m_client = nullptr; }; } auto result_or_empty = m_client->decode_image(bytes); if (!result_or_empty.has_value()) return {}; auto result = result_or_empty.release_value(); Web::Platform::DecodedImage decoded_image; decoded_image.is_animated = result.is_animated; decoded_image.loop_count = result.loop_count; for (auto const& frame : result.frames) { decoded_image.frames.empend(move(frame.bitmap), frame.duration); } return decoded_image; } }