Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update .NET to 8.0 #2927

Merged
merged 27 commits into from
Jul 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 17 additions & 6 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,39 @@
"isRoot": true,
"tools": {
"cake.tool": {
"version": "2.3.0",
"version": "4.0.0",
"commands": [
"dotnet-cake"
]
],
"rollForward": false
},
"nano-api-scan": {
"version": "1.0.1",
"commands": [
"nano-api-scan"
]
],
"rollForward": false
},
"dotnet-reportgenerator-globaltool": {
"version": "5.1.19",
"commands": [
"reportgenerator"
]
],
"rollForward": false
},
"microsoft.dotnet.xharness.cli": {
"version": "8.0.0-prerelease.23407.2",
"version": "9.0.0-prerelease.24317.3",
"commands": [
"xharness"
]
],
"rollForward": false
},
"api-tools": {
"version": "1.4.0",
"commands": [
"api-tools"
],
"rollForward": false
}
}
}
1 change: 1 addition & 0 deletions benchmarks/SkiaSharp.Benchmarks/Benchmarks/TheBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ namespace SkiaSharp.Benchmarks;
[MemoryDiagnoser]
[SimpleJob(RuntimeMoniker.Net472)]
[SimpleJob(RuntimeMoniker.Net70)]
[SimpleJob(RuntimeMoniker.Net80)]
public class TheBenchmark
{
[GlobalSetup]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>$(TFMCurrent)</TargetFramework>
<RootNamespace>SkiaSharp.Benchmarks</RootNamespace>
<AssemblyName>SkiaSharp.Benchmarks</AssemblyName>
<SkipGenerateAssemblyVersionInfo>true</SkipGenerateAssemblyVersionInfo>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
<NativeFileReference Include="$(HarfBuzzSharpStaticLibraryPath)\2.0.23\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '6.0'))" />
<NativeFileReference Include="$(HarfBuzzSharpStaticLibraryPath)\3.1.12\st\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '7.0'))" />
<NativeFileReference Include="$(HarfBuzzSharpStaticLibraryPath)\3.1.34\st\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '8.0'))" />
<NativeFileReference Include="$(HarfBuzzSharpStaticLibraryPath)\3.1.34\st\*.a" Condition="$([MSBuild]::VersionGreaterThan($(TargetFrameworkVersion), '8.0'))" />
</ItemGroup>

</Project>
3 changes: 2 additions & 1 deletion binding/IncludeNativeAssets.HarfBuzzSharp.targets
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<!-- This file is exactly the same as IncludeNativeAssets.SkiaSharp.targets, but with a find-replace 'SkiaSharp' to 'HarfBuzzSharp' -->

<ItemGroup Condition="!$(TargetFramework.Contains('-'))">
<ItemGroup Condition="!$(TargetFramework.Contains('-')) or $(TargetFramework.Contains('-desktop'))">
<Content Include="$(MSBuildThisFileDirectory)..\output\native\windows\x64\libHarfBuzzSharp.*" Condition="'$(Platform)' == '' or '$(Platform)' == 'AnyCPU' or '$(Platform)' == 'Any CPU'" Visible="False" CopyToOutputDirectory="PreserveNewest" />
<Content Include="$(MSBuildThisFileDirectory)..\output\native\windows\$(Platform)\libHarfBuzzSharp.*" Condition="'$(Platform)' != '' and '$(Platform)' != 'AnyCPU' and '$(Platform)' != 'Any CPU'" Visible="False" CopyToOutputDirectory="PreserveNewest" />
<Content Include="$(MSBuildThisFileDirectory)..\output\native\osx\libHarfBuzzSharp.*" Visible="False" CopyToOutputDirectory="PreserveNewest" />
Expand Down Expand Up @@ -69,6 +69,7 @@
<NativeFileReference Include="$(MSBuildThisFileDirectory)..\output\native\wasm\libHarfBuzzSharp.a\2.0.23\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '6.0'))" />
<NativeFileReference Include="$(MSBuildThisFileDirectory)..\output\native\wasm\libHarfBuzzSharp.a\3.1.12\st\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '7.0'))" />
<NativeFileReference Include="$(MSBuildThisFileDirectory)..\output\native\wasm\libHarfBuzzSharp.a\3.1.34\st\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '8.0'))" />
<NativeFileReference Include="$(MSBuildThisFileDirectory)..\output\native\wasm\libHarfBuzzSharp.a\3.1.34\st\*.a" Condition="$([MSBuild]::VersionGreaterThan($(TargetFrameworkVersion), '8.0'))" />
</ItemGroup>

</Project>
2 changes: 1 addition & 1 deletion binding/IncludeNativeAssets.SkiaSharp.WinUI.targets
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<ItemGroup>
<ItemGroup Condition="'$(IsUnoHead)' != 'True'">
<Content Include="$(MSBuildThisFileDirectory)..\output\native\winui\any\*.dll" Visible="False" />
</ItemGroup>

Expand Down
5 changes: 3 additions & 2 deletions binding/IncludeNativeAssets.SkiaSharp.targets
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

<!-- This file is exactly the same as IncludeNativeAssets.HarfBuzzSharp.targets, but with a find-replace 'HarfBuzzSharp' to 'SkiaSharp' -->

<ItemGroup Condition="!$(TargetFramework.Contains('-'))">
<ItemGroup Condition="!$(TargetFramework.Contains('-')) or $(TargetFramework.Contains('-desktop'))">
<Content Include="$(MSBuildThisFileDirectory)..\output\native\windows\x64\libSkiaSharp.*" Condition="'$(Platform)' == '' or '$(Platform)' == 'AnyCPU' or '$(Platform)' == 'Any CPU'" Visible="False" CopyToOutputDirectory="PreserveNewest" />
<Content Include="$(MSBuildThisFileDirectory)..\output\native\windows\$(Platform)\libSkiaSharp.*" Condition="'$(Platform)' != '' and '$(Platform)' != 'AnyCPU' and '$(Platform)' != 'Any CPU'" Visible="False" CopyToOutputDirectory="PreserveNewest" />
<Content Include="$(MSBuildThisFileDirectory)..\output\native\osx\libSkiaSharp.*" Visible="False" CopyToOutputDirectory="PreserveNewest" />
Expand Down Expand Up @@ -62,7 +62,7 @@
<Content Include="$(MSBuildThisFileDirectory)..\output\native\wasm\libSkiaSharp.a\**\*.a" Visible="false" />
</ItemGroup>
<ItemGroup Condition="'$(IsUnoHead)' == 'True' and '$(UnoRuntimeIdentifier)' == 'WebAssembly'">
<WasmShellEmccExportedRuntimeMethod Include="GL" />
<WasmShellExtraEmccFlags Include="-s USE_WEBGL2=1"/>
<WasmShellExtraEmccFlags Condition="'$(WasmShellEnableThreads)'=='True'" Include="-s OFFSCREEN_FRAMEBUFFER=1" />
</ItemGroup>

Expand All @@ -74,6 +74,7 @@
<NativeFileReference Include="$(MSBuildThisFileDirectory)..\output\native\wasm\libSkiaSharp.a\2.0.23\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '6.0'))" />
<NativeFileReference Include="$(MSBuildThisFileDirectory)..\output\native\wasm\libSkiaSharp.a\3.1.12\st\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '7.0'))" />
<NativeFileReference Include="$(MSBuildThisFileDirectory)..\output\native\wasm\libSkiaSharp.a\3.1.34\st\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '8.0'))" />
<NativeFileReference Include="$(MSBuildThisFileDirectory)..\output\native\wasm\libSkiaSharp.a\3.1.34\st\*.a" Condition="$([MSBuild]::VersionGreaterThan($(TargetFrameworkVersion), '8.0'))" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
<ItemGroup Condition="'$(IsUnoHead)' == 'True' and '$(UnoRuntimeIdentifier)' == 'WebAssembly'">
<!-- Include the GL symbol when running under net7 (https://github.com/dotnet/runtime/issues/76077) -->
<WasmShellEmccExportedRuntimeMethod Include="GL" />
<!-- Include the emscripten_gl* symbols in net8 -->
<WasmShellExtraEmccFlags Include="-s USE_WEBGL2=1"/>
<!-- Enable GLCtx when threading is available -->
<WasmShellExtraEmccFlags Condition="'$(WasmShellEnableThreads)'=='True'" Include="-s OFFSCREEN_FRAMEBUFFER=1" />
</ItemGroup>
Expand All @@ -20,6 +22,7 @@
<NativeFileReference Include="$(SkiaSharpStaticLibraryPath)\2.0.23\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '6.0'))" />
<NativeFileReference Include="$(SkiaSharpStaticLibraryPath)\3.1.12\st\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '7.0'))" />
<NativeFileReference Include="$(SkiaSharpStaticLibraryPath)\3.1.34\st\*.a" Condition="$([MSBuild]::VersionEquals($(TargetFrameworkVersion), '8.0'))" />
<NativeFileReference Include="$(SkiaSharpStaticLibraryPath)\3.1.34\st\*.a" Condition="$([MSBuild]::VersionGreaterThan($(TargetFrameworkVersion), '8.0'))" />
</ItemGroup>

</Project>
14 changes: 14 additions & 0 deletions binding/SkiaSharp/SKCanvas.cs
Original file line number Diff line number Diff line change
Expand Up @@ -450,7 +450,9 @@ public void DrawPoint (float x, float y, SKColor color)

public void DrawImage (SKImage image, SKPoint p, SKPaint paint = null)
{
#pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
DrawImage (image, p.X, p.Y, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, paint);
#pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
}

public void DrawImage (SKImage image, SKPoint p, SKSamplingOptions sampling, SKPaint paint = null)
Expand All @@ -460,7 +462,9 @@ public void DrawImage (SKImage image, SKPoint p, SKSamplingOptions sampling, SKP

public void DrawImage (SKImage image, float x, float y, SKPaint paint = null)
{
#pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
DrawImage (image, x, y, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, paint);
#pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
}

public void DrawImage (SKImage image, float x, float y, SKSamplingOptions sampling, SKPaint paint = null)
Expand All @@ -472,7 +476,9 @@ public void DrawImage (SKImage image, float x, float y, SKSamplingOptions sampli

public void DrawImage (SKImage image, SKRect dest, SKPaint paint = null)
{
#pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
DrawImage (image, null, &dest, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, paint);
#pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
}

public void DrawImage (SKImage image, SKRect dest, SKSamplingOptions sampling, SKPaint paint = null)
Expand All @@ -482,7 +488,9 @@ public void DrawImage (SKImage image, SKRect dest, SKSamplingOptions sampling, S

public void DrawImage (SKImage image, SKRect source, SKRect dest, SKPaint paint = null)
{
#pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
DrawImage (image, &source, &dest, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, paint);
#pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
}

public void DrawImage (SKImage image, SKRect source, SKRect dest, SKSamplingOptions sampling, SKPaint paint = null)
Expand Down Expand Up @@ -942,19 +950,25 @@ public void DrawRoundRectDifference (SKRoundRect outer, SKRoundRect inner, SKPai
// DrawAtlas

public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKPaint paint = null) =>
#pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
DrawAtlas (atlas, sprites, transforms, null, SKBlendMode.Dst, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, null, paint);
#pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'

public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKSamplingOptions sampling, SKPaint paint = null) =>
DrawAtlas (atlas, sprites, transforms, null, SKBlendMode.Dst, sampling, null, paint);

public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKColor[] colors, SKBlendMode mode, SKPaint paint = null) =>
#pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
DrawAtlas (atlas, sprites, transforms, colors, mode, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, null, paint);
#pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'

public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKColor[] colors, SKBlendMode mode, SKSamplingOptions sampling, SKPaint paint = null) =>
DrawAtlas (atlas, sprites, transforms, colors, mode, sampling, null, paint);

public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKColor[] colors, SKBlendMode mode, SKRect cullRect, SKPaint paint = null) =>
#pragma warning disable CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'
DrawAtlas (atlas, sprites, transforms, colors, mode, paint?.FilterQuality.ToSamplingOptions() ?? SKSamplingOptions.Default, &cullRect, paint);
#pragma warning restore CS0618 // 'SKPaint.FilterQuality' is obsolete: 'Use SKSamplingOptions instead.'

public void DrawAtlas (SKImage atlas, SKRect[] sprites, SKRotationScaleMatrix[] transforms, SKColor[] colors, SKBlendMode mode, SKSamplingOptions sampling, SKRect cullRect, SKPaint paint = null) =>
DrawAtlas (atlas, sprites, transforms, colors, mode, sampling, &cullRect, paint);
Expand Down
24 changes: 12 additions & 12 deletions build.cake
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,13 @@
#addin nuget:?package=Cake.XCode&version=5.0.0
#addin nuget:?package=Cake.FileHelpers&version=4.0.1
#addin nuget:?package=Cake.Json&version=6.0.1
#addin nuget:?package=NuGet.Packaging.Core&version=5.11.0
#addin nuget:?package=NuGet.Packaging&version=6.9.1
#addin nuget:?package=SharpCompress&version=0.32.2
#addin nuget:?package=Mono.Cecil&version=0.10.0
#addin nuget:?package=Mono.ApiTools&version=5.14.0.2
#addin nuget:?package=Mono.ApiTools.NuGetDiff&version=1.3.5
#addin nuget:?package=Mono.Cecil&version=0.11.5
#addin nuget:?package=Mono.ApiTools.ApiInfo&version=1.4.1
#addin nuget:?package=Mono.ApiTools.ApiDiff&version=1.4.1
#addin nuget:?package=Mono.ApiTools.ApiDiffFormatted&version=1.4.1
#addin nuget:?package=Mono.ApiTools.NuGetDiff&version=1.4.1

#tool nuget:?package=mdoc&version=5.8.9
#tool nuget:?package=xunit.runner.console&version=2.4.2
Expand Down Expand Up @@ -251,7 +253,7 @@ Task ("tests-netcore")

var failedTests = 0;

var tfm = "net7.0";
var tfm = "net8.0";
var testAssemblies = new List<string> { "SkiaSharp.Tests.Console" };
if (SUPPORT_VULKAN)
testAssemblies.Add ("SkiaSharp.Vulkan.Tests.Console");
Expand Down Expand Up @@ -297,7 +299,7 @@ Task ("tests-android")

FilePath csproj = "./tests/SkiaSharp.Tests.Devices/SkiaSharp.Tests.Devices.csproj";
var configuration = "Release";
var tfm = "net7.0-android";
var tfm = "net8.0-android";
var rid = "android-" + RuntimeInformation.ProcessArchitecture.ToString ().ToLower ();
FilePath app = $"./tests/SkiaSharp.Tests.Devices/bin/{configuration}/{tfm}/{rid}/com.companyname.SkiaSharpTests-Signed.apk";

Expand Down Expand Up @@ -329,7 +331,7 @@ Task ("tests-ios")

FilePath csproj = "./tests/SkiaSharp.Tests.Devices/SkiaSharp.Tests.Devices.csproj";
var configuration = "Debug";
var tfm = "net7.0-ios";
var tfm = "net8.0-ios";
var rid = "iossimulator-" + RuntimeInformation.ProcessArchitecture.ToString ().ToLower ();
FilePath app = $"./tests/SkiaSharp.Tests.Devices/bin/{configuration}/{tfm}/{rid}/SkiaSharp.Tests.Devices.app";

Expand Down Expand Up @@ -361,7 +363,7 @@ Task ("tests-maccatalyst")

FilePath csproj = "./tests/SkiaSharp.Tests.Devices/SkiaSharp.Tests.Devices.csproj";
var configuration = "Debug";
var tfm = "net7.0-maccatalyst";
var tfm = "net8.0-maccatalyst";
var rid = "maccatalyst-" + RuntimeInformation.ProcessArchitecture.ToString ().ToLower ();
FilePath app = $"./tests/SkiaSharp.Tests.Devices/bin/{configuration}/{tfm}/{rid}/SkiaSharp.Tests.Devices.app";

Expand Down Expand Up @@ -395,10 +397,8 @@ Task ("tests-wasm")

IProcess serverProc = null;
try {
serverProc = RunAndReturnProcess (PYTHON_EXE, new ProcessSettings {
Arguments = MakeAbsolute (File ("./tests/SkiaSharp.Tests.Wasm/server.py")).FullPath,
WorkingDirectory = "./tests/SkiaSharp.Tests.Wasm/bin/Release/net7.0/dist",
});
var wasmProj = MakeAbsolute (File ("./tests/SkiaSharp.Tests.Wasm/SkiaSharp.Tests.Wasm.csproj")).FullPath;
serverProc = RunAndReturnProcess ("dotnet", $"run --project {wasmProj} --no-build -c {CONFIGURATION}");
DotNetRun ("./utils/WasmTestRunner/WasmTestRunner.csproj",
$"--output=\"./output/logs/testlogs/SkiaSharp.Tests.Wasm/{DATE_TIME_STR}/\" " +
(string.IsNullOrEmpty (CHROMEWEBDRIVER) ? "" : $"--driver=\"{CHROMEWEBDRIVER}\" ") +
Expand Down
46 changes: 46 additions & 0 deletions changelogs/SkiaSharp.Resources/3.0.0/SkiaSharp.Resources.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# API diff: SkiaSharp.Resources.dll

## SkiaSharp.Resources.dll

> Assembly Version Changed: 3.0.0.0 vs 0.0.0.0

### New Namespace SkiaSharp.Resources

#### New Type: SkiaSharp.Resources.CachingResourceProvider

```csharp
public sealed class CachingResourceProvider : SkiaSharp.Resources.ResourceProvider, SkiaSharp.ISKReferenceCounted, SkiaSharp.ISKSkipObjectRegistration {
// constructors
public CachingResourceProvider (ResourceProvider resourceProvider);
}
```

#### New Type: SkiaSharp.Resources.DataUriResourceProvider

```csharp
public sealed class DataUriResourceProvider : SkiaSharp.Resources.ResourceProvider, SkiaSharp.ISKReferenceCounted, SkiaSharp.ISKSkipObjectRegistration {
// constructors
public DataUriResourceProvider (bool preDecode);
public DataUriResourceProvider (ResourceProvider fallbackProvider, bool preDecode);
}
```

#### New Type: SkiaSharp.Resources.FileResourceProvider

```csharp
public sealed class FileResourceProvider : SkiaSharp.Resources.ResourceProvider, SkiaSharp.ISKReferenceCounted, SkiaSharp.ISKSkipObjectRegistration {
// constructors
public FileResourceProvider (string baseDirectory, bool preDecode);
}
```

#### New Type: SkiaSharp.Resources.ResourceProvider

```csharp
public abstract class ResourceProvider : SkiaSharp.SKObject, SkiaSharp.ISKReferenceCounted, SkiaSharp.ISKSkipObjectRegistration {
// methods
public SkiaSharp.SKData Load (string resourceName);
public SkiaSharp.SKData Load (string resourcePath, string resourceName);
}
```

59 changes: 59 additions & 0 deletions changelogs/SkiaSharp.Skottie/3.0.0/SkiaSharp.Skottie.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,62 @@

> Assembly Version Changed: 3.0.0.0 vs 2.88.0.0

### Namespace SkiaSharp.Skottie

#### Type Changed: SkiaSharp.Skottie.Animation

Added method:

```csharp
public static AnimationBuilder CreateBuilder (AnimationBuilderFlags flags);
```


#### New Type: SkiaSharp.Skottie.AnimationBuilder

```csharp
public sealed class AnimationBuilder : SkiaSharp.SKObject, SkiaSharp.ISKSkipObjectRegistration {
// properties
public AnimationBuilderStats Stats { get; }
// methods
public Animation Build (SkiaSharp.SKData data);
public Animation Build (SkiaSharp.SKStream stream);
public Animation Build (System.IO.Stream stream);
public Animation Build (string path);
protected override void DisposeNative ();
public AnimationBuilder SetFontManager (SkiaSharp.SKFontManager fontManager);
public AnimationBuilder SetResourceProvider (SkiaSharp.Resources.ResourceProvider resourceProvider);
}
```

#### New Type: SkiaSharp.Skottie.AnimationBuilderFlags

```csharp
[Serializable]
public enum AnimationBuilderFlags {
DeferImageLoading = 1,
None = 0,
PreferEmbeddedFonts = 2,
}
```

#### New Type: SkiaSharp.Skottie.AnimationBuilderStats

```csharp
public struct AnimationBuilderStats, System.IEquatable<AnimationBuilderStats> {
// properties
public int AnimatorCount { get; }
public System.TimeSpan JsonParseTime { get; }
public int JsonSize { get; }
public System.TimeSpan SceneParseTime { get; }
public System.TimeSpan TotalLoadTime { get; }
// methods
public virtual bool Equals (AnimationBuilderStats obj);
public override bool Equals (object obj);
public override int GetHashCode ();
public static bool op_Equality (AnimationBuilderStats left, AnimationBuilderStats right);
public static bool op_Inequality (AnimationBuilderStats left, AnimationBuilderStats right);
}
```


Loading
Loading