From 9209c9be421f18e20ebf95647ffdf3dedf99120b Mon Sep 17 00:00:00 2001 From: Dariusz Komosinski Date: Mon, 8 Apr 2019 14:49:53 +0200 Subject: [PATCH] Implement platform options for Skia. --- .../SkiaApplicationExtensions.cs | 10 ++++------ src/Skia/Avalonia.Skia/SkiaOptions.cs | 19 +++++++++++++++++++ src/Skia/Avalonia.Skia/SkiaPlatform.cs | 8 +++++++- 3 files changed, 30 insertions(+), 7 deletions(-) create mode 100644 src/Skia/Avalonia.Skia/SkiaOptions.cs diff --git a/src/Skia/Avalonia.Skia/SkiaApplicationExtensions.cs b/src/Skia/Avalonia.Skia/SkiaApplicationExtensions.cs index 0778c64736..102f1f92aa 100644 --- a/src/Skia/Avalonia.Skia/SkiaApplicationExtensions.cs +++ b/src/Skia/Avalonia.Skia/SkiaApplicationExtensions.cs @@ -1,7 +1,6 @@ // Copyright (c) The Avalonia Project. All rights reserved. // Licensed under the MIT license. See licence.md file in the project root for full license information. -using System; using Avalonia.Controls; using Avalonia.Skia; @@ -19,12 +18,11 @@ namespace Avalonia /// Builder type. /// Builder. /// Configure builder. - public static T UseSkia(this T builder, Func gpuFactory = null) where T : AppBuilderBase, new() + public static T UseSkia(this T builder) where T : AppBuilderBase, new() { - var customGpu = gpuFactory?.Invoke(); - - builder.UseRenderingSubsystem(() => SkiaPlatform.Initialize(customGpu), "Skia"); - return builder; + return builder.UseRenderingSubsystem(() => SkiaPlatform.Initialize( + AvaloniaLocator.Current.GetService() ?? new SkiaOptions()), + "Skia"); } } } diff --git a/src/Skia/Avalonia.Skia/SkiaOptions.cs b/src/Skia/Avalonia.Skia/SkiaOptions.cs new file mode 100644 index 0000000000..bac1849be8 --- /dev/null +++ b/src/Skia/Avalonia.Skia/SkiaOptions.cs @@ -0,0 +1,19 @@ +// Copyright (c) The Avalonia Project. All rights reserved. +// Licensed under the MIT license. See licence.md file in the project root for full license information. + +using System; +using Avalonia.Skia; + +namespace Avalonia +{ + /// + /// Options for Skia rendering subsystem. + /// + public class SkiaOptions + { + /// + /// Custom gpu factory to use. Can be used to customize behavior of Skia renderer. + /// + public Func CustomGpuFactory { get; set; } + } +} diff --git a/src/Skia/Avalonia.Skia/SkiaPlatform.cs b/src/Skia/Avalonia.Skia/SkiaPlatform.cs index e4185c43a2..f16e967f42 100644 --- a/src/Skia/Avalonia.Skia/SkiaPlatform.cs +++ b/src/Skia/Avalonia.Skia/SkiaPlatform.cs @@ -13,8 +13,14 @@ namespace Avalonia.Skia /// /// Initialize Skia platform. /// - public static void Initialize(ICustomSkiaGpu customGpu = null) + public static void Initialize() { + Initialize(new SkiaOptions()); + } + + public static void Initialize(SkiaOptions options) + { + var customGpu = options.CustomGpuFactory?.Invoke(); var renderInterface = new PlatformRenderInterface(customGpu); AvaloniaLocator.CurrentMutable