using System; using Robust.Shared.Maths; using Robust.Shared.Utility; using SixLabors.ImageSharp; using SixLabors.ImageSharp.PixelFormats; using Color = Robust.Shared.Maths.Color; namespace Robust.Client.Utility { public static class ImageSharpExt { public static Color ConvertImgSharp(this Rgba32 color) { return new(color.R, color.G, color.B, color.A); } public static Rgba32 ConvertImgSharp(this Color color) { return new(color.R, color.G, color.B, color.A); } /// /// Blit an image into another, with the specified offset. /// /// The image to copy data from. /// The sub section of that will be copied. /// /// The offset into that data will be copied into. /// /// The image to copy to. /// The type of pixel stored in the images. public static void Blit(this Image source, UIBox2i sourceRect, Image destination, Vector2i destinationOffset) where T : unmanaged, IPixel { ImageOps.Blit(source, sourceRect, destination, destinationOffset); } public static void Blit(this ReadOnlySpan source, int sourceWidth, UIBox2i sourceRect, Image destination, Vector2i destinationOffset) where T : unmanaged, IPixel { ImageOps.Blit(source, sourceWidth, sourceRect, destination, destinationOffset); } /// /// Gets a to the backing data if the backing group consists of a single contiguous memory buffer. /// /// The referencing the memory area. /// Thrown if the image is not a single contiguous buffer. public static Span GetPixelSpan(this Image image) where T : unmanaged, IPixel { return ImageOps.GetPixelSpan(image); } } }