Browse Source

Implement platform options for Skia.

pull/2364/head
Dariusz Komosinski 7 years ago
parent
commit
9209c9be42
  1. 10
      src/Skia/Avalonia.Skia/SkiaApplicationExtensions.cs
  2. 19
      src/Skia/Avalonia.Skia/SkiaOptions.cs
  3. 8
      src/Skia/Avalonia.Skia/SkiaPlatform.cs

10
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
/// <typeparam name="T">Builder type.</typeparam>
/// <param name="builder">Builder.</param>
/// <returns>Configure builder.</returns>
public static T UseSkia<T>(this T builder, Func<ICustomSkiaGpu> gpuFactory = null) where T : AppBuilderBase<T>, new()
public static T UseSkia<T>(this T builder) where T : AppBuilderBase<T>, new()
{
var customGpu = gpuFactory?.Invoke();
builder.UseRenderingSubsystem(() => SkiaPlatform.Initialize(customGpu), "Skia");
return builder;
return builder.UseRenderingSubsystem(() => SkiaPlatform.Initialize(
AvaloniaLocator.Current.GetService<SkiaOptions>() ?? new SkiaOptions()),
"Skia");
}
}
}

19
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
{
/// <summary>
/// Options for Skia rendering subsystem.
/// </summary>
public class SkiaOptions
{
/// <summary>
/// Custom gpu factory to use. Can be used to customize behavior of Skia renderer.
/// </summary>
public Func<ICustomSkiaGpu> CustomGpuFactory { get; set; }
}
}

8
src/Skia/Avalonia.Skia/SkiaPlatform.cs

@ -13,8 +13,14 @@ namespace Avalonia.Skia
/// <summary>
/// Initialize Skia platform.
/// </summary>
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

Loading…
Cancel
Save