thief-mission-viewer/project/code/TMV/TextureLoader.Gif.cs

29 lines
877 B
C#

using Godot;
using SixLabors.ImageSharp.PixelFormats;
namespace KeepersCompound.TMV;
public partial class TextureLoader
{
// TODO: Replace this with my own implementation lol
// References:
// - https://www.w3.org/Graphics/GIF/spec-gif89a.txt
private static ImageTexture LoadGif(string path)
{
using var gifImage = SixLabors.ImageSharp.Image.Load<Rgba32>(path);
var width = gifImage.Width;
var height = gifImage.Height;
var image = Image.Create(width, height, false, Image.Format.Rgba8);
for (var y = 0; y < height; y++)
{
for (var x = 0; x < width; x++)
{
var pixel = gifImage[x, y].ToVector4();
image.SetPixel(x, y, new Color(pixel.X, pixel.Y, pixel.Z, pixel.W));
}
}
return ImageTexture.CreateFromImage(image);
}
}