소스 검색

updated fonts

Luke Pulverenti 10 년 전
부모
커밋
7e8e899bc2

+ 0 - 1
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">

+ 8 - 3
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)
                 {

+ 38 - 4
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;

+ 5 - 5
MediaBrowser.Server.Startup.Common/ApplicationHost.cs

@@ -447,7 +447,7 @@ namespace MediaBrowser.Server.Startup.Common
             TVSeriesManager = new TVSeriesManager(UserManager, UserDataManager, LibraryManager);
             RegisterSingleInstance(TVSeriesManager);
 
-			SyncManager = new SyncManager(LibraryManager, SyncRepository, ImageProcessor, LogManager.GetLogger("SyncManager"), UserManager, () => DtoService, this, TVSeriesManager, () => MediaEncoder, FileSystemManager, () => SubtitleEncoder, ServerConfigurationManager, UserDataManager, () => MediaSourceManager, JsonSerializer, TaskManager);
+            SyncManager = new SyncManager(LibraryManager, SyncRepository, ImageProcessor, LogManager.GetLogger("SyncManager"), UserManager, () => DtoService, this, TVSeriesManager, () => MediaEncoder, FileSystemManager, () => SubtitleEncoder, ServerConfigurationManager, UserDataManager, () => MediaSourceManager, JsonSerializer, TaskManager);
             RegisterSingleInstance(SyncManager);
 
             DtoService = new DtoService(LogManager.GetLogger("DtoService"), LibraryManager, UserDataManager, ItemRepository, ImageProcessor, ServerConfigurationManager, FileSystemManager, ProviderManager, () => ChannelManager, SyncManager, this, () => DeviceManager, () => MediaSourceManager, () => LiveTvManager);
@@ -554,8 +554,8 @@ namespace MediaBrowser.Server.Startup.Common
             if (_startupOptions.ContainsOption("-imagethreads"))
             {
                 int.TryParse(_startupOptions.GetOption("-imagethreads"), NumberStyles.Any, CultureInfo.InvariantCulture, out maxConcurrentImageProcesses);
-            } 
-            
+            }
+
             return new ImageProcessor(LogManager.GetLogger("ImageProcessor"), ServerConfigurationManager.ApplicationPaths, FileSystemManager, JsonSerializer, GetImageEncoder(), maxConcurrentImageProcesses);
         }
 
@@ -565,14 +565,14 @@ namespace MediaBrowser.Server.Startup.Common
             {
                 try
                 {
-                    return new ImageMagickEncoder(LogManager.GetLogger("ImageMagick"), ApplicationPaths);
+                    return new ImageMagickEncoder(LogManager.GetLogger("ImageMagick"), ApplicationPaths, HttpClient);
                 }
                 catch (Exception ex)
                 {
                     Logger.ErrorException("Error loading ImageMagick. Will revert to GDI.", ex);
                 }
             }
-            
+
             return new GDIImageEncoder(FileSystemManager, LogManager.GetLogger("GDI"));
         }