2013-09-19 08:12:28 -07:00
|
|
|
|
using MediaBrowser.Controller.Entities;
|
|
|
|
|
using MediaBrowser.Controller.Providers;
|
2013-09-19 12:46:19 -07:00
|
|
|
|
using MediaBrowser.Model.Drawing;
|
2014-11-08 20:18:14 -07:00
|
|
|
|
using System;
|
2013-09-19 08:12:28 -07:00
|
|
|
|
using System.Collections.Generic;
|
2014-07-31 17:37:06 -07:00
|
|
|
|
using System.IO;
|
2015-11-09 11:18:37 -07:00
|
|
|
|
using System.Linq;
|
2013-09-19 08:12:28 -07:00
|
|
|
|
|
|
|
|
|
namespace MediaBrowser.Controller.Drawing
|
|
|
|
|
{
|
|
|
|
|
public class ImageProcessingOptions
|
|
|
|
|
{
|
2017-05-21 00:25:49 -07:00
|
|
|
|
public string ItemId { get; set; }
|
|
|
|
|
public string ItemType { get; set; }
|
2013-12-19 14:51:32 -07:00
|
|
|
|
public IHasImages Item { get; set; }
|
2013-09-19 08:12:28 -07:00
|
|
|
|
|
2014-06-18 08:12:20 -07:00
|
|
|
|
public ItemImageInfo Image { get; set; }
|
2013-09-19 08:12:28 -07:00
|
|
|
|
|
|
|
|
|
public int ImageIndex { get; set; }
|
|
|
|
|
|
|
|
|
|
public bool CropWhiteSpace { get; set; }
|
|
|
|
|
|
|
|
|
|
public int? Width { get; set; }
|
|
|
|
|
|
|
|
|
|
public int? Height { get; set; }
|
|
|
|
|
|
|
|
|
|
public int? MaxWidth { get; set; }
|
|
|
|
|
|
|
|
|
|
public int? MaxHeight { get; set; }
|
|
|
|
|
|
2015-10-27 07:02:30 -07:00
|
|
|
|
public int Quality { get; set; }
|
2013-09-19 08:12:28 -07:00
|
|
|
|
|
|
|
|
|
public List<IImageEnhancer> Enhancers { get; set; }
|
|
|
|
|
|
2015-11-09 11:18:37 -07:00
|
|
|
|
public List<ImageFormat> SupportedOutputFormats { get; set; }
|
2013-09-19 10:45:48 -07:00
|
|
|
|
|
2013-10-02 08:32:11 -07:00
|
|
|
|
public bool AddPlayedIndicator { get; set; }
|
2013-09-21 08:06:00 -07:00
|
|
|
|
|
2014-01-01 11:26:31 -07:00
|
|
|
|
public int? UnplayedCount { get; set; }
|
2016-12-03 00:58:48 -07:00
|
|
|
|
public int? Blur { get; set; }
|
2013-09-21 08:06:00 -07:00
|
|
|
|
|
2014-09-01 13:10:54 -07:00
|
|
|
|
public double PercentPlayed { get; set; }
|
2014-07-31 17:37:06 -07:00
|
|
|
|
|
2013-09-21 08:06:00 -07:00
|
|
|
|
public string BackgroundColor { get; set; }
|
2016-02-23 12:48:58 -07:00
|
|
|
|
public string ForegroundLayer { get; set; }
|
2013-11-06 14:32:26 -07:00
|
|
|
|
|
2014-07-31 17:37:06 -07:00
|
|
|
|
public bool HasDefaultOptions(string originalImagePath)
|
2013-11-06 14:32:26 -07:00
|
|
|
|
{
|
2014-07-31 17:37:06 -07:00
|
|
|
|
return HasDefaultOptionsWithoutSize(originalImagePath) &&
|
|
|
|
|
!Width.HasValue &&
|
|
|
|
|
!Height.HasValue &&
|
|
|
|
|
!MaxWidth.HasValue &&
|
2013-11-06 14:32:26 -07:00
|
|
|
|
!MaxHeight.HasValue;
|
|
|
|
|
}
|
|
|
|
|
|
2015-11-09 11:18:37 -07:00
|
|
|
|
public bool HasDefaultOptions(string originalImagePath, ImageSize size)
|
|
|
|
|
{
|
|
|
|
|
if (!HasDefaultOptionsWithoutSize(originalImagePath))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (Width.HasValue && !size.Width.Equals(Width.Value))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (Height.HasValue && !size.Height.Equals(Height.Value))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (MaxWidth.HasValue && size.Width > MaxWidth.Value)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (MaxHeight.HasValue && size.Height > MaxHeight.Value)
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
2014-07-31 17:37:06 -07:00
|
|
|
|
public bool HasDefaultOptionsWithoutSize(string originalImagePath)
|
2013-11-06 14:32:26 -07:00
|
|
|
|
{
|
2015-11-09 11:18:37 -07:00
|
|
|
|
return (Quality >= 90) &&
|
|
|
|
|
IsFormatSupported(originalImagePath) &&
|
2013-11-06 14:32:26 -07:00
|
|
|
|
!AddPlayedIndicator &&
|
2014-09-01 13:10:54 -07:00
|
|
|
|
PercentPlayed.Equals(0) &&
|
2014-01-01 11:26:31 -07:00
|
|
|
|
!UnplayedCount.HasValue &&
|
2016-12-03 00:58:48 -07:00
|
|
|
|
!Blur.HasValue &&
|
2017-05-09 21:49:11 -07:00
|
|
|
|
!CropWhiteSpace &&
|
2016-02-23 12:48:58 -07:00
|
|
|
|
string.IsNullOrEmpty(BackgroundColor) &&
|
|
|
|
|
string.IsNullOrEmpty(ForegroundLayer);
|
2013-11-06 14:32:26 -07:00
|
|
|
|
}
|
|
|
|
|
|
2015-11-09 11:18:37 -07:00
|
|
|
|
private bool IsFormatSupported(string originalImagePath)
|
2013-11-06 14:32:26 -07:00
|
|
|
|
{
|
2015-11-09 11:18:37 -07:00
|
|
|
|
var ext = Path.GetExtension(originalImagePath);
|
|
|
|
|
return SupportedOutputFormats.Any(outputFormat => string.Equals(ext, "." + outputFormat, StringComparison.OrdinalIgnoreCase));
|
2013-11-06 14:32:26 -07:00
|
|
|
|
}
|
2013-09-19 08:12:28 -07:00
|
|
|
|
}
|
|
|
|
|
}
|