using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.Drawing
{
///
/// Interface IImageProcessor
///
public interface IImageProcessor
{
///
/// Gets the image enhancers.
///
/// The image enhancers.
IEnumerable ImageEnhancers { get; }
///
/// Gets the size of the image.
///
/// The path.
/// ImageSize.
ImageSize GetImageSize(string path);
///
/// Gets the size of the image.
///
/// The path.
/// The image date modified.
/// ImageSize.
ImageSize GetImageSize(string path, DateTime imageDateModified);
///
/// Adds the parts.
///
/// The enhancers.
void AddParts(IEnumerable enhancers);
///
/// Gets the supported enhancers.
///
/// The item.
/// Type of the image.
/// IEnumerable{IImageEnhancer}.
IEnumerable GetSupportedEnhancers(BaseItem item, ImageType imageType);
///
/// Gets the image cache tag.
///
/// The item.
/// Type of the image.
/// The image path.
/// Guid.
Guid GetImageCacheTag(BaseItem item, ImageType imageType, string imagePath);
///
/// Gets the image cache tag.
///
/// The item.
/// Type of the image.
/// The original image path.
/// The date modified.
/// The image enhancers.
/// Guid.
Guid GetImageCacheTag(BaseItem item, ImageType imageType, string originalImagePath, DateTime dateModified,
IEnumerable imageEnhancers);
///
/// Processes the image.
///
/// The entity.
/// Type of the image.
/// Index of the image.
/// The original image path.
/// if set to true [crop whitespace].
/// The date modified.
/// To stream.
/// The width.
/// The height.
/// Width of the max.
/// Height of the max.
/// The quality.
/// The enhancers.
/// Task.
Task ProcessImage(BaseItem entity, ImageType imageType, int imageIndex, string originalImagePath, bool cropWhitespace,
DateTime dateModified, Stream toStream, int? width, int? height, int? maxWidth, int? maxHeight,
int? quality, List enhancers);
}
}