From 806808f4060fecbe58fa4437b3e2a4389eb51c3e Mon Sep 17 00:00:00 2001 From: Lucas CHOLLET Date: Mon, 17 Jul 2023 13:29:12 -0400 Subject: [PATCH] LibGfx: Provide a default implementation for animation-related methods Most image decoders that we have only support non-animated images, providing a default implementation for them allows to remove quite some code. --- .../LibGfx/ImageFormats/BMPLoader.cpp | 20 ------------- .../Libraries/LibGfx/ImageFormats/BMPLoader.h | 4 --- .../LibGfx/ImageFormats/DDSLoader.cpp | 20 ------------- .../Libraries/LibGfx/ImageFormats/DDSLoader.h | 4 --- .../LibGfx/ImageFormats/ICOLoader.cpp | 20 ------------- .../Libraries/LibGfx/ImageFormats/ICOLoader.h | 4 --- .../LibGfx/ImageFormats/ImageDecoder.h | 10 ++++--- .../LibGfx/ImageFormats/JPEGLoader.cpp | 20 ------------- .../LibGfx/ImageFormats/JPEGLoader.h | 4 --- .../ImageFormats/PortableImageMapLoader.h | 28 ------------------- .../Libraries/LibGfx/ImageFormats/QOILoader.h | 4 --- .../LibGfx/ImageFormats/TGALoader.cpp | 20 ------------- .../Libraries/LibGfx/ImageFormats/TGALoader.h | 4 --- .../LibGfx/ImageFormats/TinyVGLoader.h | 4 --- 14 files changed, 6 insertions(+), 160 deletions(-) diff --git a/Userland/Libraries/LibGfx/ImageFormats/BMPLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/BMPLoader.cpp index e81675ad96..a039643956 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/BMPLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/BMPLoader.cpp @@ -1500,26 +1500,6 @@ bool BMPImageDecoderPlugin::sniff_dib() return !decode_bmp_dib(*m_context).is_error(); } -bool BMPImageDecoderPlugin::is_animated() -{ - return false; -} - -size_t BMPImageDecoderPlugin::loop_count() -{ - return 0; -} - -size_t BMPImageDecoderPlugin::frame_count() -{ - return 1; -} - -size_t BMPImageDecoderPlugin::first_animated_frame_index() -{ - return 0; -} - ErrorOr BMPImageDecoderPlugin::frame(size_t index, Optional) { if (index > 0) diff --git a/Userland/Libraries/LibGfx/ImageFormats/BMPLoader.h b/Userland/Libraries/LibGfx/ImageFormats/BMPLoader.h index b6a25ce981..e5b3e3366d 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/BMPLoader.h +++ b/Userland/Libraries/LibGfx/ImageFormats/BMPLoader.h @@ -30,10 +30,6 @@ public: virtual IntSize size() override; bool sniff_dib(); - virtual bool is_animated() override; - virtual size_t loop_count() override; - virtual size_t frame_count() override; - virtual size_t first_animated_frame_index() override; virtual ErrorOr frame(size_t index, Optional ideal_size = {}) override; virtual ErrorOr> icc_data() override; diff --git a/Userland/Libraries/LibGfx/ImageFormats/DDSLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/DDSLoader.cpp index 60fb9def2f..14b02be0f6 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/DDSLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/DDSLoader.cpp @@ -655,26 +655,6 @@ ErrorOr> DDSImageDecoderPlugin::create(Readonl return plugin; } -bool DDSImageDecoderPlugin::is_animated() -{ - return false; -} - -size_t DDSImageDecoderPlugin::loop_count() -{ - return 0; -} - -size_t DDSImageDecoderPlugin::frame_count() -{ - return 1; -} - -size_t DDSImageDecoderPlugin::first_animated_frame_index() -{ - return 0; -} - ErrorOr DDSImageDecoderPlugin::frame(size_t index, Optional) { if (index > 0) diff --git a/Userland/Libraries/LibGfx/ImageFormats/DDSLoader.h b/Userland/Libraries/LibGfx/ImageFormats/DDSLoader.h index 04f6d7578d..c8b0f33b13 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/DDSLoader.h +++ b/Userland/Libraries/LibGfx/ImageFormats/DDSLoader.h @@ -243,10 +243,6 @@ public: virtual IntSize size() override; - virtual bool is_animated() override; - virtual size_t loop_count() override; - virtual size_t frame_count() override; - virtual size_t first_animated_frame_index() override; virtual ErrorOr frame(size_t index, Optional ideal_size = {}) override; virtual ErrorOr> icc_data() override; diff --git a/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.cpp index 0e137f3c4b..bc1ad786e5 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.cpp @@ -203,26 +203,6 @@ IntSize ICOImageDecoderPlugin::size() return { m_context->images[m_context->largest_index].width, m_context->images[m_context->largest_index].height }; } -bool ICOImageDecoderPlugin::is_animated() -{ - return false; -} - -size_t ICOImageDecoderPlugin::loop_count() -{ - return 0; -} - -size_t ICOImageDecoderPlugin::frame_count() -{ - return 1; -} - -size_t ICOImageDecoderPlugin::first_animated_frame_index() -{ - return 0; -} - ErrorOr ICOImageDecoderPlugin::frame(size_t index, Optional) { if (index > 0) diff --git a/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h b/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h index db47415e9c..6580e57086 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h +++ b/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h @@ -21,10 +21,6 @@ public: virtual IntSize size() override; - virtual bool is_animated() override; - virtual size_t loop_count() override; - virtual size_t frame_count() override; - virtual size_t first_animated_frame_index() override; virtual ErrorOr frame(size_t index, Optional ideal_size = {}) override; virtual ErrorOr> icc_data() override; diff --git a/Userland/Libraries/LibGfx/ImageFormats/ImageDecoder.h b/Userland/Libraries/LibGfx/ImageFormats/ImageDecoder.h index a7a69bb841..a0d1758e19 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/ImageDecoder.h +++ b/Userland/Libraries/LibGfx/ImageFormats/ImageDecoder.h @@ -47,10 +47,12 @@ public: // This should always be available as gathered in create() virtual IntSize size() = 0; - virtual bool is_animated() = 0; - virtual size_t loop_count() = 0; - virtual size_t frame_count() = 0; - virtual size_t first_animated_frame_index() = 0; + // Override this if the format supports animated images + virtual bool is_animated() { return false; } + virtual size_t loop_count() { return 0; } + virtual size_t frame_count() { return 1; } + virtual size_t first_animated_frame_index() { return 0; } + virtual ErrorOr frame(size_t index, Optional ideal_size = {}) = 0; virtual ErrorOr> icc_data() = 0; diff --git a/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.cpp index 3d0afc70eb..aff847ee65 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.cpp @@ -1937,26 +1937,6 @@ ErrorOr> JPEGImageDecoderPlugin::create(Readon return plugin; } -bool JPEGImageDecoderPlugin::is_animated() -{ - return false; -} - -size_t JPEGImageDecoderPlugin::loop_count() -{ - return 0; -} - -size_t JPEGImageDecoderPlugin::frame_count() -{ - return 1; -} - -size_t JPEGImageDecoderPlugin::first_animated_frame_index() -{ - return 0; -} - ErrorOr JPEGImageDecoderPlugin::frame(size_t index, Optional) { if (index > 0) diff --git a/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.h b/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.h index 2fb21e6f27..9e2468e117 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.h +++ b/Userland/Libraries/LibGfx/ImageFormats/JPEGLoader.h @@ -24,10 +24,6 @@ public: virtual ~JPEGImageDecoderPlugin() override; virtual IntSize size() override; - virtual bool is_animated() override; - virtual size_t loop_count() override; - virtual size_t frame_count() override; - virtual size_t first_animated_frame_index() override; virtual ErrorOr frame(size_t index, Optional ideal_size = {}) override; virtual ErrorOr> icc_data() override; diff --git a/Userland/Libraries/LibGfx/ImageFormats/PortableImageMapLoader.h b/Userland/Libraries/LibGfx/ImageFormats/PortableImageMapLoader.h index 7c33c564f0..21199a63fd 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/PortableImageMapLoader.h +++ b/Userland/Libraries/LibGfx/ImageFormats/PortableImageMapLoader.h @@ -60,10 +60,6 @@ public: virtual IntSize size() override; - virtual bool is_animated() override; - virtual size_t loop_count() override; - virtual size_t frame_count() override; - virtual size_t first_animated_frame_index() override; virtual ErrorOr frame(size_t index, Optional ideal_size = {}) override; virtual ErrorOr> icc_data() override; @@ -110,30 +106,6 @@ bool PortableImageDecoderPlugin::sniff(ReadonlyBytes data) return false; } -template -bool PortableImageDecoderPlugin::is_animated() -{ - return false; -} - -template -size_t PortableImageDecoderPlugin::loop_count() -{ - return 0; -} - -template -size_t PortableImageDecoderPlugin::frame_count() -{ - return 1; -} - -template -size_t PortableImageDecoderPlugin::first_animated_frame_index() -{ - return 0; -} - template ErrorOr PortableImageDecoderPlugin::frame(size_t index, Optional) { diff --git a/Userland/Libraries/LibGfx/ImageFormats/QOILoader.h b/Userland/Libraries/LibGfx/ImageFormats/QOILoader.h index c9407c1a2f..4afbaf1d14 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/QOILoader.h +++ b/Userland/Libraries/LibGfx/ImageFormats/QOILoader.h @@ -45,10 +45,6 @@ public: virtual IntSize size() override; - virtual bool is_animated() override { return false; } - virtual size_t loop_count() override { return 0; } - virtual size_t frame_count() override { return 1; } - virtual size_t first_animated_frame_index() override { return 0; } virtual ErrorOr frame(size_t index, Optional ideal_size = {}) override; virtual ErrorOr> icc_data() override; diff --git a/Userland/Libraries/LibGfx/ImageFormats/TGALoader.cpp b/Userland/Libraries/LibGfx/ImageFormats/TGALoader.cpp index 9a0ba2e7f8..afd825f62b 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/TGALoader.cpp +++ b/Userland/Libraries/LibGfx/ImageFormats/TGALoader.cpp @@ -225,26 +225,6 @@ ErrorOr> TGAImageDecoderPlugin::create(Readonl return plugin; } -bool TGAImageDecoderPlugin::is_animated() -{ - return false; -} - -size_t TGAImageDecoderPlugin::loop_count() -{ - return 0; -} - -size_t TGAImageDecoderPlugin::frame_count() -{ - return 1; -} - -size_t TGAImageDecoderPlugin::first_animated_frame_index() -{ - return 0; -} - ErrorOr TGAImageDecoderPlugin::frame(size_t index, Optional) { auto bits_per_pixel = m_context->header.bits_per_pixel; diff --git a/Userland/Libraries/LibGfx/ImageFormats/TGALoader.h b/Userland/Libraries/LibGfx/ImageFormats/TGALoader.h index 6deef25762..7995e1dd05 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/TGALoader.h +++ b/Userland/Libraries/LibGfx/ImageFormats/TGALoader.h @@ -22,10 +22,6 @@ public: virtual IntSize size() override; - virtual bool is_animated() override; - virtual size_t loop_count() override; - virtual size_t frame_count() override; - virtual size_t first_animated_frame_index() override; virtual ErrorOr frame(size_t index, Optional ideal_size = {}) override; virtual ErrorOr> icc_data() override; diff --git a/Userland/Libraries/LibGfx/ImageFormats/TinyVGLoader.h b/Userland/Libraries/LibGfx/ImageFormats/TinyVGLoader.h index c2728a16d2..e41d4e89ca 100644 --- a/Userland/Libraries/LibGfx/ImageFormats/TinyVGLoader.h +++ b/Userland/Libraries/LibGfx/ImageFormats/TinyVGLoader.h @@ -81,10 +81,6 @@ public: static ErrorOr> create(ReadonlyBytes); virtual IntSize size() override; - virtual bool is_animated() override { return false; } - virtual size_t loop_count() override { return 0; } - virtual size_t frame_count() override { return 1; } - virtual size_t first_animated_frame_index() override { return 0; } virtual ErrorOr frame(size_t index, Optional ideal_size = {}) override; virtual ErrorOr> icc_data() override { return OptionalNone {}; }