/* * Copyright (c) 2023, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::Layout { class ImageProvider { public: virtual ~ImageProvider() { } virtual bool is_image_available() const = 0; virtual Optional intrinsic_width() const = 0; virtual Optional intrinsic_height() const = 0; virtual Optional intrinsic_aspect_ratio() const = 0; virtual RefPtr current_image_bitmap(Gfx::IntSize) const = 0; virtual void set_visible_in_viewport(bool) = 0; virtual void image_provider_visit_edges(GC::Cell::Visitor& visitor) const { visitor.visit(to_html_element()); } protected: virtual GC::Ptr to_html_element() const = 0; static void did_update_alt_text(ImageBox&); }; }