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. // 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. // Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Skia; using Avalonia.Skia;
@ -19,12 +18,11 @@ namespace Avalonia
/// <typeparam name="T">Builder type.</typeparam> /// <typeparam name="T">Builder type.</typeparam>
/// <param name="builder">Builder.</param> /// <param name="builder">Builder.</param>
/// <returns>Configure builder.</returns> /// <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(); return builder.UseRenderingSubsystem(() => SkiaPlatform.Initialize(
AvaloniaLocator.Current.GetService<SkiaOptions>() ?? new SkiaOptions()),
builder.UseRenderingSubsystem(() => SkiaPlatform.Initialize(customGpu), "Skia"); "Skia");
return builder;
} }
} }
} }

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> /// <summary>
/// Initialize Skia platform. /// Initialize Skia platform.
/// </summary> /// </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); var renderInterface = new PlatformRenderInterface(customGpu);
AvaloniaLocator.CurrentMutable AvaloniaLocator.CurrentMutable

Loading…
Cancel
Save