diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 4d7d69c06b..0fefdb1a33 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -500,6 +500,7 @@ set(SOURCES SVG/SVGAnimatedLength.cpp SVG/SVGAnimatedNumber.cpp SVG/SVGClipPathElement.cpp + SVG/SVGDecodedImageData.cpp SVG/SVGDefsElement.cpp SVG/SVGElement.cpp SVG/SVGGElement.cpp diff --git a/Userland/Libraries/LibWeb/SVG/SVGDecodedImageData.cpp b/Userland/Libraries/LibWeb/SVG/SVGDecodedImageData.cpp new file mode 100644 index 0000000000..d6192cb9ef --- /dev/null +++ b/Userland/Libraries/LibWeb/SVG/SVGDecodedImageData.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2023, Andreas Kling + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include +#include + +namespace Web::SVG { + +ErrorOr> SVGDecodedImageData::create(ByteBuffer) +{ + return adopt_nonnull_ref_or_enomem(new (nothrow) SVGDecodedImageData()); +} + +SVGDecodedImageData::SVGDecodedImageData() +{ +} + +SVGDecodedImageData::~SVGDecodedImageData() = default; + +RefPtr SVGDecodedImageData::bitmap(size_t) const +{ + return nullptr; +} + +Optional SVGDecodedImageData::intrinsic_width() const +{ + return 0; +} + +Optional SVGDecodedImageData::intrinsic_height() const +{ + return 0; +} + +Optional SVGDecodedImageData::intrinsic_aspect_ratio() const +{ + return 1; +} + +} diff --git a/Userland/Libraries/LibWeb/SVG/SVGDecodedImageData.h b/Userland/Libraries/LibWeb/SVG/SVGDecodedImageData.h new file mode 100644 index 0000000000..f8a5b05809 --- /dev/null +++ b/Userland/Libraries/LibWeb/SVG/SVGDecodedImageData.h @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2023, Andreas Kling + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Web::SVG { + +class SVGDecodedImageData final : public HTML::DecodedImageData { +public: + static ErrorOr> create(ByteBuffer encoded_svg); + virtual ~SVGDecodedImageData() override; + + virtual RefPtr bitmap(size_t frame_index) const override; + + virtual Optional intrinsic_width() const override; + virtual Optional intrinsic_height() const override; + virtual Optional intrinsic_aspect_ratio() const override; + + // FIXME: Support SVG animations. :^) + virtual int frame_duration(size_t) const override { return 0; } + virtual size_t frame_count() const override { return 1; } + virtual size_t loop_count() const override { return 0; } + virtual bool is_animated() const override { return false; } + +private: + SVGDecodedImageData(); +}; + +}