using Quik.Media;
namespace Quik
{
    /// <summary>
    /// Interface for QUIK texture managers.
    /// </summary>
    public interface IQuikTextureManager
    {
        /// <summary>
        /// The context that owns the texture manager.
        /// </summary>
        // QuikContext Context { get; set; }
        
        /// <summary>
        /// Create a texture.
        /// </summary>
        /// <param name="size">Size of the texture.</param>
        /// <param name="mipmaps">True in order to allow mipmaps.</param>
        /// <param name="format">The color format of the internal texture.</param>
        /// <returns>Handle to a texture object.</returns>
        /// <remarks>
        /// All parameters are hints. If there is a situation where the texture does not
        /// have mip levels, or format cannot be specified, ignore these parameters.
        /// </remarks>
        QuikTexture CreateTexture(QVec2 size, bool mipmaps, QImageFormat format);
        
        /// <summary>
        /// A function called on context clear. (useful for discarding old textures)
        /// </summary>
        void Clear();
    }
}