wabbajack/Wabbajack.ImageHashing/DDSImage.cs

40 lines
1.0 KiB
C#
Raw Normal View History

2021-06-15 03:39:17 +00:00
using System;
using DirectXTexNet;
using Wabbajack.Common;
namespace Wabbajack.ImageHashing
{
public class DDSImage : IImage
{
private DDSImage()
{
}
private static Extension DDSExtension = new(".dds");
private ScratchImage _image;
private TexMetadata _metaData;
public static DDSImage FromFile(AbsolutePath file)
{
if (file.Extension != DDSExtension)
throw new Exception("File does not end in DDS");
var img = TexHelper.Instance.LoadFromDDSFile(file.ToString(), DDS_FLAGS.NONE);
return new DDSImage() {_image = img, _metaData = img.GetMetadata()};
}
public void Dispose()
{
if (!_image.IsDisposed)
_image.Dispose();
}
public int Width => _metaData.Width;
public int Height => _metaData.Height;
public GPUCompressionLevel CompressionLevel => GPUCompressionLevel.Uncompressed;
public IImageState State { get; }
}
}