diff options
Diffstat (limited to 'Emby.Drawing')
| -rw-r--r-- | Emby.Drawing/Emby.Drawing.csproj | 1 | ||||
| -rw-r--r-- | Emby.Drawing/ImageMagick/ImageMagickEncoder.cs | 11 | ||||
| -rw-r--r-- | Emby.Drawing/ImageMagick/PlayedIndicatorDrawer.cs | 42 |
3 files changed, 46 insertions, 8 deletions
diff --git a/Emby.Drawing/Emby.Drawing.csproj b/Emby.Drawing/Emby.Drawing.csproj index 8aba4263c..ab53f7550 100644 --- a/Emby.Drawing/Emby.Drawing.csproj +++ b/Emby.Drawing/Emby.Drawing.csproj @@ -69,7 +69,6 @@ <ItemGroup> <EmbeddedResource Include="ImageMagick\fonts\MontserratLight.otf" /> <EmbeddedResource Include="ImageMagick\fonts\robotoregular.ttf" /> - <EmbeddedResource Include="ImageMagick\fonts\webdings.ttf" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\MediaBrowser.Common\MediaBrowser.Common.csproj"> diff --git a/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs b/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs index 78633472b..6ff40d1cf 100644 --- a/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs +++ b/Emby.Drawing/ImageMagick/ImageMagickEncoder.cs @@ -1,11 +1,13 @@ -using System.Linq; +using System.Threading.Tasks; using ImageMagickSharp; using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Net; using MediaBrowser.Controller.Drawing; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Logging; using System; using System.IO; +using System.Linq; namespace Emby.Drawing.ImageMagick { @@ -13,11 +15,13 @@ namespace Emby.Drawing.ImageMagick { private readonly ILogger _logger; private readonly IApplicationPaths _appPaths; + private readonly IHttpClient _httpClient; - public ImageMagickEncoder(ILogger logger, IApplicationPaths appPaths) + public ImageMagickEncoder(ILogger logger, IApplicationPaths appPaths, IHttpClient httpClient) { _logger = logger; _appPaths = appPaths; + _httpClient = httpClient; LogImageMagickVersion(); } @@ -177,7 +181,8 @@ namespace Emby.Drawing.ImageMagick { var currentImageSize = new ImageSize(imageWidth, imageHeight); - new PlayedIndicatorDrawer(_appPaths).DrawPlayedIndicator(wand, currentImageSize); + var task = new PlayedIndicatorDrawer(_appPaths, _httpClient).DrawPlayedIndicator(wand, currentImageSize); + Task.WaitAll(task); } else if (options.UnplayedCount.HasValue) { diff --git a/Emby.Drawing/ImageMagick/PlayedIndicatorDrawer.cs b/Emby.Drawing/ImageMagick/PlayedIndicatorDrawer.cs index 5eeb15771..1c751de1f 100644 --- a/Emby.Drawing/ImageMagick/PlayedIndicatorDrawer.cs +++ b/Emby.Drawing/ImageMagick/PlayedIndicatorDrawer.cs @@ -1,8 +1,10 @@ using ImageMagickSharp; using MediaBrowser.Common.Configuration; +using MediaBrowser.Common.Net; using MediaBrowser.Model.Drawing; using System; using System.IO; +using System.Threading.Tasks; namespace Emby.Drawing.ImageMagick { @@ -12,13 +14,15 @@ namespace Emby.Drawing.ImageMagick private const int OffsetFromTopRightCorner = 38; private readonly IApplicationPaths _appPaths; + private readonly IHttpClient _iHttpClient; - public PlayedIndicatorDrawer(IApplicationPaths appPaths) + public PlayedIndicatorDrawer(IApplicationPaths appPaths, IHttpClient iHttpClient) { _appPaths = appPaths; + _iHttpClient = iHttpClient; } - public void DrawPlayedIndicator(MagickWand wand, ImageSize imageSize) + public async Task DrawPlayedIndicator(MagickWand wand, ImageSize imageSize) { var x = imageSize.Width - OffsetFromTopRightCorner; @@ -34,7 +38,7 @@ namespace Emby.Drawing.ImageMagick pixel.Opacity = 0; pixel.Color = "white"; draw.FillColor = pixel; - draw.Font = ExtractFont("webdings.ttf", _appPaths); + draw.Font = await DownloadFont("webdings.ttf", "https://github.com/MediaBrowser/Emby.Resources/raw/master/fonts/webdings.ttf", _appPaths, _iHttpClient).ConfigureAwait(false); draw.FontSize = FontSize; draw.FontStyle = FontStyleType.NormalStyle; draw.TextAlignment = TextAlignType.CenterAlign; @@ -77,7 +81,37 @@ namespace Emby.Drawing.ImageMagick } catch (IOException) { - + + } + + return tempPath; + } + + internal static async Task<string> DownloadFont(string name, string url, IApplicationPaths paths, IHttpClient httpClient) + { + var filePath = Path.Combine(paths.ProgramDataPath, "fonts", name); + + if (File.Exists(filePath)) + { + return filePath; + } + + var tempPath = await httpClient.GetTempFile(new HttpRequestOptions + { + Url = url, + Progress = new Progress<double>() + + }).ConfigureAwait(false); + + Directory.CreateDirectory(Path.GetDirectoryName(filePath)); + + try + { + File.Copy(tempPath, filePath, false); + } + catch (IOException) + { + } return tempPath; |
