From fcca47458f2d44a12bab483785476f3b5cb48d4c Mon Sep 17 00:00:00 2001 From: juju2143 Date: Mon, 2 Oct 2023 19:17:30 -0400 Subject: [PATCH] Use ImageMagick to support even more image formats --- Media/ImageMediaHandler.cs | 8 ++++++-- Media/MagickMediaHandler.cs | 29 +++++++++++++++++++++++++++++ shoko.csproj | 1 + 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 Media/MagickMediaHandler.cs diff --git a/Media/ImageMediaHandler.cs b/Media/ImageMediaHandler.cs index 9de0d5c..5b90e5e 100644 --- a/Media/ImageMediaHandler.cs +++ b/Media/ImageMediaHandler.cs @@ -16,8 +16,12 @@ class ImageMediaHandler : MediaHandler ["image/qoi"] = ".qoi", ["image/x-qoi"] = ".qoi", }; - Texture2D Texture; - float Zoom = 1; + protected Texture2D Texture; + protected float Zoom = 1; + + public ImageMediaHandler() + { + } public ImageMediaHandler(ProtoHandler content) { Content = content; diff --git a/Media/MagickMediaHandler.cs b/Media/MagickMediaHandler.cs new file mode 100644 index 0000000..9635cae --- /dev/null +++ b/Media/MagickMediaHandler.cs @@ -0,0 +1,29 @@ +using Raylib_cs; +using ImageMagick; + +namespace Shoko; + +[MediaType("image/*")] +class MagickMediaHandler : ImageMediaHandler +{ + public MagickMediaHandler(ProtoHandler content) + { + Content = content; + } + + public override void Load() + { + using(var magic = new MagickImage(Content.Content)) + { + magic.Format = MagickFormat.Png; + var image = Raylib.LoadImageFromMemory(".png", magic.ToByteArray()); + Texture = Raylib.LoadTextureFromImage(image); + Raylib.UnloadImage(image); + } + } + + ~MagickMediaHandler() + { + Raylib.UnloadTexture(Texture); + } +} \ No newline at end of file diff --git a/shoko.csproj b/shoko.csproj index 76478f7..2123e1e 100644 --- a/shoko.csproj +++ b/shoko.csproj @@ -18,6 +18,7 @@ +