aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-21 11:06:00 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-09-21 11:06:00 -0400
commitf380d7a092ef474754400647debbc3d90e8451a0 (patch)
treeeaffee3e8d38a21958f126d22fb26975f3e557fa /MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
parentb9bb87100bc1375b0c8b311820e9289323aaefa3 (diff)
added percent played overlay
Diffstat (limited to 'MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs64
1 files changed, 54 insertions, 10 deletions
diff --git a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
index 6458435ba..1f7361d2f 100644
--- a/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
+++ b/MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs
@@ -109,7 +109,7 @@ namespace MediaBrowser.Server.Implementations.Drawing
var quality = options.Quality ?? 90;
- var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, options.OutputFormat, options.Indicator);
+ var cacheFilePath = GetCacheFilePath(originalImagePath, newSize, quality, dateModified, options.OutputFormat, options.Indicator, options.PercentPlayed, options.BackgroundColor);
try
{
@@ -173,9 +173,11 @@ namespace MediaBrowser.Server.Implementations.Drawing
thumbnailGraph.PixelOffsetMode = PixelOffsetMode.HighQuality;
thumbnailGraph.CompositingMode = CompositingMode.SourceOver;
+ SetBackgroundColor(thumbnailGraph, options);
+
thumbnailGraph.DrawImage(originalImage, 0, 0, newWidth, newHeight);
- DrawIndicator(thumbnailGraph, newWidth, newHeight, options.Indicator);
+ DrawIndicator(thumbnailGraph, newWidth, newHeight, options.Indicator, options.PercentPlayed);
var outputFormat = GetOutputFormat(originalImage, options.OutputFormat);
@@ -206,9 +208,41 @@ namespace MediaBrowser.Server.Implementations.Drawing
}
}
- private WatchedIndicatorDrawer _watchedDrawer;
+ /// <summary>
+ /// Sets the color of the background.
+ /// </summary>
+ /// <param name="graphics">The graphics.</param>
+ /// <param name="options">The options.</param>
+ private void SetBackgroundColor(Graphics graphics, ImageProcessingOptions options)
+ {
+ var color = options.BackgroundColor;
+
+ if (!string.IsNullOrEmpty(color))
+ {
+ Color drawingColor;
+
+ try
+ {
+ drawingColor = ColorTranslator.FromHtml(color);
+ }
+ catch
+ {
+ drawingColor = ColorTranslator.FromHtml("#" + color);
+ }
- private void DrawIndicator(Graphics graphics, int imageWidth, int imageHeight, ImageOverlay? indicator)
+ graphics.Clear(drawingColor);
+ }
+ }
+
+ /// <summary>
+ /// Draws the indicator.
+ /// </summary>
+ /// <param name="graphics">The graphics.</param>
+ /// <param name="imageWidth">Width of the image.</param>
+ /// <param name="imageHeight">Height of the image.</param>
+ /// <param name="indicator">The indicator.</param>
+ /// <param name="percentPlayed">The percent played.</param>
+ private void DrawIndicator(Graphics graphics, int imageWidth, int imageHeight, ImageOverlay? indicator, int percentPlayed)
{
if (!indicator.HasValue)
{
@@ -217,13 +251,17 @@ namespace MediaBrowser.Server.Implementations.Drawing
try
{
- if (indicator.Value == ImageOverlay.Watched)
+ if (indicator.Value == ImageOverlay.Played)
{
- _watchedDrawer = _watchedDrawer ?? (_watchedDrawer = new WatchedIndicatorDrawer());
+ var currentImageSize = new Size(imageWidth, imageHeight);
+ new WatchedIndicatorDrawer().Process(graphics, currentImageSize);
+ }
+ if (indicator.Value == ImageOverlay.PercentPlayed)
+ {
var currentImageSize = new Size(imageWidth, imageHeight);
- _watchedDrawer.Process(graphics, currentImageSize);
+ new PercentPlayedDrawer().Process(graphics, currentImageSize, percentPlayed);
}
}
catch (Exception ex)
@@ -350,7 +388,7 @@ namespace MediaBrowser.Server.Implementations.Drawing
/// <summary>
/// Gets the cache file path based on a set of parameters
/// </summary>
- private string GetCacheFilePath(string originalPath, ImageSize outputSize, int quality, DateTime dateModified, ImageOutputFormat format, ImageOverlay? overlay)
+ private string GetCacheFilePath(string originalPath, ImageSize outputSize, int quality, DateTime dateModified, ImageOutputFormat format, ImageOverlay? overlay, int percentPlayed, string backgroundColor)
{
var filename = originalPath;
@@ -364,12 +402,18 @@ namespace MediaBrowser.Server.Implementations.Drawing
if (format != ImageOutputFormat.Original)
{
- filename += "format=" + format;
+ filename += "f=" + format;
}
if (overlay.HasValue)
{
- filename += "overlay=" + overlay.Value;
+ filename += "o=" + overlay.Value;
+ filename += "p=" + percentPlayed;
+ }
+
+ if (!string.IsNullOrEmpty(backgroundColor))
+ {
+ filename += "b=" + backgroundColor;
}
return GetCachePath(_resizedImageCachePath, filename, Path.GetExtension(originalPath));