diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-21 11:06:00 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-09-21 11:06:00 -0400 |
| commit | f380d7a092ef474754400647debbc3d90e8451a0 (patch) | |
| tree | eaffee3e8d38a21958f126d22fb26975f3e557fa /MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs | |
| parent | b9bb87100bc1375b0c8b311820e9289323aaefa3 (diff) | |
added percent played overlay
Diffstat (limited to 'MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs')
| -rw-r--r-- | MediaBrowser.Server.Implementations/Drawing/ImageProcessor.cs | 64 |
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)); |
