using System;
namespace Quik
{
///
/// Interface for texture instances.
///
public interface IQuikTexture : IEquatable, IDisposable
{
///
/// Width of the texture.
///
int Width { get; }
///
/// Height of the texture.
///
int Height { get; }
///
/// True if the texture can have mipmaps.
///
bool Mipmaps { get; }
///
/// Upload texture data.
///
/// Pointer to data.
/// Color format of the data.
/// Size of the texture data.
/// Mip level.
/// Pixel alignment. Expected to be 1, 2, 4, or 8.
void Image(IntPtr data, QuikImageFormat format, QuikVec2 size, int level, int alignment = 4);
///
/// Upload texture data.
///
/// Pointer to data.
/// Color format for the data.
/// Location of the data in the texture.
/// Mip level.
/// Pixel alignment. Expected to be 1, 2, 4, or 8.
void SubImage(IntPtr data, QuikImageFormat format, QuikRectangle location, int level, int alignment = 4);
///
/// Generate the mip maps for the texture.
///
void GenerateMipMaps();
}
}