using System.Drawing; namespace Dashboard.Pal { public interface ITextureExtension : IDeviceContextExtension { ITexture CreateTexture(TextureType type); } public enum TextureType { Texture1D, Texture2D, Texture2DArray, Texture2DCube, Texture3D, } public enum TextureFilter { Nearest, Linear, NearestMipmapNearest, LinearMipmapNearest, NearestMipmapLinear, LinearMipmapLinear, Anisotropic, } public enum TextureRepeat { Repeat, MirroredRepeat, ClampToEdge, ClampToBorder, MirrorClampToEdge, } public enum CubeMapFace { PositiveX, PositiveY, PositiveZ, NegativeX, NegativeY, NegativeZ, } public interface ITexture : IDisposable { public TextureType Type { get; } public PixelFormat Format { get; } public int Width { get; } public int Height { get; } public int Depth { get; } public int Levels { get; } public bool Premultiplied { get; set; } public ColorSwizzle Swizzle { get; set; } public TextureFilter MinifyFilter { get; set; } public TextureFilter MagnifyFilter { get; set; } public Color BorderColor { get; set; } public TextureRepeat RepeatS { get; set; } public TextureRepeat RepeatT { get; set; } public TextureRepeat RepeatR { get; set; } public int Anisotropy { get; set; } void SetStorage(PixelFormat format, int width, int height, int depth, int levels); void Read(Span buffer, int level = 0, int align = 0) where T : unmanaged; void Write(PixelFormat format, ReadOnlySpan buffer, int level = 0, int align = 4) where T : unmanaged; void Premultiply(); void Unmultiply(); void GenerateMipmaps(); } }