summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h
diff options
context:
space:
mode:
authorLucas CHOLLET <lucas.chollet@free.fr>2023-03-21 14:58:06 -0400
committerAndreas Kling <kling@serenityos.org>2023-03-21 22:39:25 +0100
commit496b7ffb2b58043a80d90b8b8f44cab1eaa874e8 (patch)
tree1fca47aa8123c9d3e110d45c8af637f95241dcd5 /Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h
parent752f06f228119a70c59e844dcd2b9560e757b0ff (diff)
downloadserenity-496b7ffb2b58043a80d90b8b8f44cab1eaa874e8.zip
LibGfx: Move all image loaders and writers to a subdirectory
Diffstat (limited to 'Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h')
-rw-r--r--Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h39
1 files changed, 39 insertions, 0 deletions
diff --git a/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h b/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h
new file mode 100644
index 0000000000..bef1c4cf87
--- /dev/null
+++ b/Userland/Libraries/LibGfx/ImageFormats/ICOLoader.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2020, Paul Roukema <roukemap@gmail.com>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+#pragma once
+
+#include <LibGfx/ImageFormats/ImageDecoder.h>
+
+namespace Gfx {
+
+struct ICOLoadingContext;
+
+class ICOImageDecoderPlugin final : public ImageDecoderPlugin {
+public:
+ static bool sniff(ReadonlyBytes);
+ static ErrorOr<NonnullOwnPtr<ImageDecoderPlugin>> create(ReadonlyBytes);
+
+ virtual ~ICOImageDecoderPlugin() override;
+
+ virtual IntSize size() override;
+ virtual void set_volatile() override;
+ [[nodiscard]] virtual bool set_nonvolatile(bool& was_purged) override;
+ virtual bool initialize() override;
+ virtual bool is_animated() override;
+ virtual size_t loop_count() override;
+ virtual size_t frame_count() override;
+ virtual ErrorOr<ImageFrameDescriptor> frame(size_t index) override;
+ virtual ErrorOr<Optional<ReadonlyBytes>> icc_data() override;
+
+private:
+ ICOImageDecoderPlugin(u8 const*, size_t);
+ static ErrorOr<void> load_ico_bitmap(ICOLoadingContext& context, Optional<size_t> index);
+
+ OwnPtr<ICOLoadingContext> m_context;
+};
+
+}