using System.Threading.Tasks; using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Entities; namespace MediaBrowser.Controller.Providers { public interface IImageEnhancer { /// /// Return true only if the given image for the given item will be enhanced by this enhancer. /// /// The item. /// Type of the image. /// true if this enhancer will enhance the supplied image for the supplied item, false otherwise bool Supports(BaseItem item, ImageType imageType); /// /// Gets the priority or order in which this enhancer should be run. /// /// The priority. MetadataProviderPriority Priority { get; } /// /// Return a key incorporating all configuration information related to this item /// /// The item. /// Type of the image. /// Cache key relating to the current state of this item and configuration string GetConfigurationCacheKey(BaseItem item, ImageType imageType); /// /// Gets the size of the enhanced image. /// /// The item. /// Type of the image. /// Index of the image. /// Size of the original image. /// ImageSize. ImageDimensions GetEnhancedImageSize(BaseItem item, ImageType imageType, int imageIndex, ImageDimensions originalImageSize); EnhancedImageInfo GetEnhancedImageInfo(BaseItem item, string inputFile, ImageType imageType, int imageIndex); /// /// Enhances the image async. /// /// The item. /// The input file. /// The output file. /// Type of the image. /// Index of the image. /// Task{Image}. /// Task EnhanceImageAsync(BaseItem item, string inputFile, string outputFile, ImageType imageType, int imageIndex); } public class EnhancedImageInfo { public bool RequiresTransparency { get; set; } } }