/* * Copyright (c) 2023, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::HTML { class BitmapDecodedImageData final : public DecodedImageData { GC_CELL(BitmapDecodedImageData, DecodedImageData); GC_DECLARE_ALLOCATOR(BitmapDecodedImageData); public: static GC::Ref create(JS::Realm&, Gfx::DecodedImageFrame&& frame); virtual ~BitmapDecodedImageData() override; virtual Optional default_frame(Gfx::IntSize = {}) const override; virtual Optional current_frame(Gfx::IntSize = {}) const override; virtual Optional intrinsic_width() const override; virtual Optional intrinsic_height() const override; virtual Optional intrinsic_aspect_ratio() const override; virtual void paint(DisplayListRecordingContext&, Gfx::IntRect dst_rect, CSS::ImageRendering) const override; private: BitmapDecodedImageData(Gfx::DecodedImageFrame&& frame); virtual size_t external_memory_size() const override; Gfx::DecodedImageFrame m_frame; }; }