Add WASM Support for Uno Platform (#1333)

Co-authored-by: Jérôme Laban <jerome.laban@nventive.com>
Co-authored-by: Geoffrey Huntley <ghuntley@ghuntley.com>
Co-authored-by: Martin Zikmund <martin@zikmund.dev>
This commit is contained in:
Matthew Leibowitz 2020-07-21 03:22:38 +02:00 коммит произвёл GitHub
Родитель 99356f9b7e
Коммит b84f667eae
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
39 изменённых файлов: 1001 добавлений и 14 удалений

Просмотреть файл

@ -9,7 +9,7 @@ indent_style = space
# (Please don't specify an indent_size here; that has too many unintended consequences.)
# Code files
[*.{cs,csx,vb,vbx}]
[*.{cs,csx,vb,vbx,ts}]
indent_style = tab
indent_size = 4
insert_final_newline = true

Просмотреть файл

@ -27,6 +27,11 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release
<copyright>© Microsoft Corporation. All rights reserved.</copyright>
<dependencies>
<group targetFramework="netstandard2.0">
<dependency id="Uno.UI" version="2.0.532" />
<dependency id="SkiaSharp" version="1.0.0" />
<dependency id="SkiaSharp.NativeAssets.WebAssembly" version="1.0.0" />
</group>
<group targetFramework="monoandroid1.0">
<dependency id="Uno.UI" version="2.0.532" />
<dependency id="SkiaSharp" version="1.0.0" />
@ -50,15 +55,18 @@ Please visit https://go.microsoft.com/fwlink/?linkid=868517 to view the release
<files>
<!-- SkiaSharp.Views.UWP.dll -->
<file src="lib/netstandard2.0/SkiaSharp.Views.UWP.dll" />
<file src="lib/netstandard2.0/SkiaSharp.Views.UWP.xml" />
<file platform="macos,windows" src="lib/monoandroid1.0/SkiaSharp.Views.UWP.dll" />
<file platform="macos,windows" src="lib/monoandroid1.0/SkiaSharp.Views.UWP.xml" />
<file platform="macos" src="lib/xamarinios1.0/SkiaSharp.Views.UWP.dll" />
<file platform="macos" src="lib/xamarinios1.0/SkiaSharp.Views.UWP.xml" />
<file platform="macos" src="lib/xamarinmac2.0/SkiaSharp.Views.UWP.dll" />
<file platform="macos" src="lib/xamarinmac2.0/SkiaSharp.Views.UWP.xml" />
<file src="_._" target="lib/uap10.0/_._" />
<!-- the build bits -->
<file src="_._" target="lib/uap10.0/_._" />
<file src="build/netstandard2.0/SkiaSharp.Views.Uno.targets" />
<!-- legal -->
<file src="LICENSE.txt" />

Просмотреть файл

@ -5,17 +5,30 @@ VisualStudioVersion = 16.0.30229.9
MinimumVisualStudioVersion = 10.0.40219.1
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SkiaSharpSample.Shared", "SkiaSharpSample.Shared\SkiaSharpSample.Shared.shproj", "{6279C845-92F8-4333-AB99-3D213163593C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample.Wasm", "SkiaSharpSample.Wasm\SkiaSharpSample.Wasm.csproj", "{9726301D-8A93-4A06-88DF-92BA01CF80AD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm", "..\..\..\source\SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj", "{1787D9BF-9815-4E1D-BDEB-9994859FE91E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{409AF271-D8B7-4F79-B293-02F562A51955}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{6279c845-92f8-4333-ab99-3d213163593c}*SharedItemsImports = 13
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{9726301d-8a93-4a06-88df-92ba01cf80ad}*SharedItemsImports = 5
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.Build.0 = Release|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.Build.0 = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Release|Any CPU.ActiveCfg = Release|Any CPU

Двоичные данные
samples/Basic/Uno/SkiaSharpSample.Wasm/Assets/SplashScreen.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 31 KiB

Просмотреть файл

@ -0,0 +1,10 @@
<linker>
<assembly fullname="SkiaSharp" />
<assembly fullname="SkiaSharp.Views.UWP" />
<assembly fullname="SkiaSharpSample.Wasm" />
<assembly fullname="Uno.Foundation" />
<assembly fullname="System.Core">
<!-- This is required by Json.NET and any expression.Compile caller -->
<type fullname="System.Linq.Expressions*" />
</assembly>
</linker>

Просмотреть файл

@ -0,0 +1,78 @@
using Microsoft.Extensions.Logging;
using Uno.Extensions;
using Uno.UI;
using Windows.UI.Xaml;
namespace SkiaSharpSample
{
public class Program
{
private static App _app;
static int Main(string[] args)
{
FeatureConfiguration.UIElement.AssignDOMXamlName = true;
ConfigureFilters(LogExtensionPoint.AmbientLoggerFactory);
Application.Start(_ => _app = new App());
return 0;
}
static void ConfigureFilters(ILoggerFactory factory)
{
factory
.WithFilter(new FilterLoggerSettings
{
{ "Uno", LogLevel.Warning },
{ "Windows", LogLevel.Warning },
{ "nVentive.Umbrella", LogLevel.Warning },
{ "SkiaSharp", LogLevel.Warning },
// View Navigation related messages
// { "nVentive.Umbrella.Views.Navigation", LogLevel.Debug },
// { "nVentive.Umbrella.Presentation.Light.ViewModelRegistry", LogLevel.Debug },
// All presentation related messages
// { "nVentive.Umbrella.Presentation.Light", LogLevel.Debug },
// ViewModel related messages
// { "nVentive.Umbrella.Presentation.Light.ViewModelBase", LogLevel.Debug },
// Dynamic properties related messages
// { "nVentive.Umbrella.Presentation.Light.DynamicProperties", LogLevel.Debug },
// AVVM/AVP Related messages
// { "nVentive.Umbrella.Presentation.Light.Extensions.AsyncValueViewModel", LogLevel.Debug },
// { "nVentive.Umbrella.Views.Controls.AsyncValuePresenter", LogLevel.Debug },
// { "nVentive.Umbrella.Views.Controls.IfDataContext", LogLevel.Debug },
// Layouter specific messages
// { "Windows.UI.Xaml.Controls", LogLevel.Debug },
// { "Windows.UI.Xaml.Controls.Layouter", LogLevel.Debug },
// { "Windows.UI.Xaml.Controls.Panel", LogLevel.Debug },
// Binding related messages
// { "Windows.UI.Xaml.Data", LogLevel.Debug },
// { "Windows.UI.Xaml.Data", LogLevel.Debug },
// Binder memory references tracking
// { "ReferenceHolder", LogLevel.Debug },
// Web Queries related messages
// gManager.SetLoggerLevel("nVentive.Umbrella.Web", LogLevel.Debug },
// Location service messages
// { "nVentive.Umbrella.Services.Location", LogLevel.Debug },
// Map Component messages
// { "nVentive.Umbrella.Components.Maps", LogLevel.Debug },
// ApplicationViewState
// { "nVentive.Umbrella.Views.Services.ApplicationViewState.ApplicationViewStateService", LogLevel.Debug },
})
.AddConsole(LogLevel.Debug);
}
}
}

Просмотреть файл

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:63559/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"SkiaSharpSample.Wasm": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5000"
}
}
}

Просмотреть файл

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk.Web">
<Import Project="..\SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems" Label="Shared" />
<Import Project="..\..\..\..\output\SkiaSharp\nuget\build\wasm\SkiaSharp.props" Condition="Exists('..\..\..\..\output\SkiaSharp\nuget\build\wasm\SkiaSharp.props')" />
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netstandard2.0</TargetFramework>
<WasmHead>true</WasmHead>
<DefineConstants>$(DefineConstants);__WASM__</DefineConstants>
<LangVersion>8.0</LangVersion>
<WasmShellILLinkerEnabled>true</WasmShellILLinkerEnabled>
<WasmShellForceDisableWSL Condition="'$(OS)' != 'Unix' and ('$(CI)' == 'true' or '$(BUILD_BUILDID)' != '')">true</WasmShellForceDisableWSL>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<MonoRuntimeDebuggerEnabled>true</MonoRuntimeDebuggerEnabled>
<DebugType>portable</DebugType>
<DebugSymbols>true</DebugSymbols>
<WasmShellMonoRuntimeExecutionMode>Interpreter</WasmShellMonoRuntimeExecutionMode>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<WasmShellMonoRuntimeExecutionMode>FullAOT</WasmShellMonoRuntimeExecutionMode>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Filter" Version="1.1.1" />
<PackageReference Include="Uno.UI" Version="2.4.4" />
</ItemGroup>
<!-- workaround for https://github.com/unoplatform/Uno.Wasm.Bootstrap/issues/253 -->
<ItemGroup Condition=" '$(WasmShellForceDisableWSL)' != 'true' ">
<PackageReference Include="Uno.Wasm.Bootstrap" Version="1.4.0-dev.9" />
<PackageReference Include="Uno.Wasm.Bootstrap.DevServer" Version="1.4.0-dev.9" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\binding\SkiaSharp\SkiaSharp.csproj" />
<ProjectReference Include="..\..\..\..\source\SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj" />
</ItemGroup>
<ItemGroup>
<Content Include="Assets\**\*" />
<EmbeddedResource Include="WasmCSS\*.css" />
<EmbeddedResource Include="WasmScripts\*.js" />
<LinkerDescriptor Include="LinkerConfig.xml" />
</ItemGroup>
<Import Project="..\..\..\..\output\SkiaSharp.Views.Uno\nuget\build\netstandard2.0\SkiaSharp.Views.Uno.targets" Condition="Exists('..\..\..\..\output\SkiaSharp.Views.Uno\nuget\build\netstandard2.0\SkiaSharp.Views.Uno.targets')" />
</Project>

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -0,0 +1,5 @@
var UnoAppManifest = {
splashScreenImage: "Assets/SplashScreen.png",
splashScreenColor: "#F8F8F8",
displayName: "SkiaSharp for WebAssembly"
}

Просмотреть файл

@ -0,0 +1 @@


Просмотреть файл

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
<system.webServer>
<!-- Disable compression as we're doing it throuh pre-compressed files -->
<urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false" />
<staticContent>
<remove fileExtension=".dll" />
<remove fileExtension=".wasm" />
<remove fileExtension=".woff" />
<remove fileExtension=".woff2" />
<mimeMap fileExtension=".wasm" mimeType="application/wasm" />
<mimeMap fileExtension=".clr" mimeType="application/octet-stream" />
<mimeMap fileExtension=".pdb" mimeType="application/octet-stream" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
<mimeMap fileExtension=".woff2" mimeType="application/font-woff" />
<!-- Required for PWAs -->
<mimeMap fileExtension=".json" mimeType="application/octet-stream" />
</staticContent>
<rewrite>
<rules>
<rule name="Lookup for pre-compressed brotli file" stopProcessing="true">
<match url="(.*)$"/>
<conditions>
<!-- Match brotli requests -->
<add input="{HTTP_ACCEPT_ENCODING}" pattern="br" />
<!-- Match all but pre-compressed files -->
<add input="{REQUEST_URI}" pattern="^(?!/_compressed_br/)(.*)$" />
<!-- Check if the pre-compressed file exists on the disk -->
<add input="{DOCUMENT_ROOT}/_compressed_br/{C:0}" matchType="IsFile" negate="false" />
</conditions>
<action type="Rewrite" url="/_compressed_br{C:0}" />
</rule>
<rule name="Lookup for pre-compressed gzip file" stopProcessing="true">
<match url="(.*)$"/>
<conditions>
<!-- Match gzip requests -->
<add input="{HTTP_ACCEPT_ENCODING}" pattern="gzip" />
<!-- Match all but pre-compressed files -->
<add input="{REQUEST_URI}" pattern="^(?!/_compressed_gz/)(.*)$" />
<!-- Check if the pre-compressed file exists on the disk -->
<add input="{DOCUMENT_ROOT}/_compressed_gz/{C:0}" matchType="IsFile" negate="false" />
</conditions>
<action type="Rewrite" url="/_compressed_gz{C:0}" />
</rule>
</rules>
<outboundRules>
<rule name="Adjust content encoding for gzip pre-compressed files" enabled="true" stopProcessing="true">
<match serverVariable="RESPONSE_CONTENT_ENCODING" pattern="" />
<conditions>
<add input="{REQUEST_URI}" pattern="/_compressed_gz/.*$" />
</conditions>
<action type="Rewrite" value="gzip"/>
</rule>
<rule name="Adjust content encoding for brotli pre-compressed files" enabled="true" stopProcessing="true">
<match serverVariable="RESPONSE_CONTENT_ENCODING" pattern="" />
<conditions>
<add input="{REQUEST_URI}" pattern="/_compressed_br/.*$" />
</conditions>
<action type="Rewrite" value="br"/>
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>

Просмотреть файл

@ -17,12 +17,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.UWP", "..\.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.UWP", "..\..\..\binding\SkiaSharp.UWP\SkiaSharp.UWP.csproj", "{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample.Wasm", "SkiaSharpSample.Wasm\SkiaSharpSample.Wasm.csproj", "{9726301D-8A93-4A06-88DF-92BA01CF80AD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm", "..\..\..\source\SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj", "{1787D9BF-9815-4E1D-BDEB-9994859FE91E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{409AF271-D8B7-4F79-B293-02F562A51955}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{6279c845-92f8-4333-ab99-3d213163593c}*SharedItemsImports = 13
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{8b8db39e-c0ff-4edc-83a6-0b6a4ab763ee}*SharedItemsImports = 4
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{9726301d-8a93-4a06-88df-92ba01cf80ad}*SharedItemsImports = 5
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{ae39aa1d-32c8-482b-9395-ad5493c98f7e}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -178,6 +183,46 @@ Global
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x64.Build.0 = Release|Any CPU
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x86.ActiveCfg = Release|Any CPU
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x86.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM64.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x64.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x64.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x86.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x86.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM64.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM64.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x64.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x64.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x86.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x86.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM64.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x64.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x64.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x86.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x86.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM64.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM64.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x64.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x64.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x86.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x86.Build.0 = Release|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.Build.0 = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|ARM.ActiveCfg = Debug|Any CPU

Просмотреть файл

@ -29,6 +29,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.UWP", "..\.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.UWP", "..\..\..\binding\SkiaSharp.UWP\SkiaSharp.UWP.csproj", "{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample.Wasm", "SkiaSharpSample.Wasm\SkiaSharpSample.Wasm.csproj", "{9726301D-8A93-4A06-88DF-92BA01CF80AD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm", "..\..\..\source\SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj", "{1787D9BF-9815-4E1D-BDEB-9994859FE91E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{409AF271-D8B7-4F79-B293-02F562A51955}"
EndProject
Global
@ -36,6 +40,7 @@ Global
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{2a19c71c-d1ab-4c70-b821-6a7c7c4abe66}*SharedItemsImports = 4
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{6279c845-92f8-4333-ab99-3d213163593c}*SharedItemsImports = 13
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{8b8db39e-c0ff-4edc-83a6-0b6a4ab763ee}*SharedItemsImports = 4
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{9726301d-8a93-4a06-88df-92ba01cf80ad}*SharedItemsImports = 5
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{ae39aa1d-32c8-482b-9395-ad5493c98f7e}*SharedItemsImports = 4
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{b3a30dc3-0e2d-4f46-97c5-fdc6ab8062e6}*SharedItemsImports = 4
EndGlobalSection
@ -429,6 +434,62 @@ Global
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x64.Build.0 = Release|Any CPU
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x86.ActiveCfg = Release|Any CPU
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x86.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM64.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|iPhone.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x64.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x64.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x86.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x86.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM64.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM64.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|iPhone.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|iPhone.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x64.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x64.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x86.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x86.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM64.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|iPhone.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x64.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x64.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x86.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x86.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM64.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM64.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|iPhone.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|iPhone.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x64.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x64.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x86.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x86.Build.0 = Release|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.Build.0 = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|ARM.ActiveCfg = Debug|Any CPU

Просмотреть файл

@ -2,11 +2,20 @@
using System.IO;
using System.Linq;
using Xamarin.Essentials;
#if __WASM__
using System.Runtime.InteropServices;
using Windows.ApplicationModel;
using Windows.Storage;
using Windows.System;
using Uno.Foundation;
#endif
#if WINDOWS_UWP
using Windows.ApplicationModel;
using Windows.Storage;
using Windows.System;
#if !__WASM__
using Launcher = Xamarin.Essentials.Launcher;
#endif
#elif __MACOS__
using AppKit;
using Foundation;
@ -55,6 +64,20 @@ namespace SkiaSharpSample
var path = Path.Combine(root, "Media", fontName);
#elif __TIZEN__
var path = ResourcePath.GetPath(fontName);
#elif __WASM__
// WASM does not have an app package, so just use the embedded font
string path;
using (var stream = SampleMedia.Fonts.EmbeddedFont)
{
var appData = ApplicationData.Current.LocalFolder.Path;
var temp = Path.Combine(appData, "SkiaSharpSample", "Assets", "Media");
if (!Directory.Exists(temp))
Directory.CreateDirectory(temp);
path = Path.Combine(temp, fontName);
using (var writer = File.OpenWrite(path))
stream.CopyTo(writer);
}
#endif
#if WINDOWS_UWP || __IOS__ || __TVOS__ || __ANDROID__ || __TIZEN__
@ -63,6 +86,8 @@ namespace SkiaSharpSample
var localStorage = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
#elif __DESKTOP__
var localStorage = System.Windows.Forms.Application.LocalUserAppDataPath;
#elif __WASM__
var localStorage = ApplicationData.Current.LocalFolder.Path;
#endif
SamplesManager.ContentFontPath = path;
@ -90,6 +115,18 @@ namespace SkiaSharpSample
}
#elif __DESKTOP__
Process.Start(path);
#elif __WASM__
var data = File.ReadAllBytes(path);
var gch = GCHandle.Alloc(data, GCHandleType.Pinned);
var pinnedData = gch.AddrOfPinnedObject();
try
{
WebAssemblyRuntime.InvokeJS($"fileSaveAs('{Path.GetFileName(path)}', {pinnedData}, {data.Length})");
}
finally
{
gch.Free();
}
#endif
}
}

Просмотреть файл

@ -2,7 +2,6 @@
using System.Threading.Tasks;
using SkiaSharp;
using System.Collections.Generic;
using System.Linq;
namespace SkiaSharpSample.Samples
{
@ -25,10 +24,17 @@ namespace SkiaSharpSample.Samples
protected override Task OnInit()
{
methods = Enum.GetValues(typeof(SKBitmapResizeMethod)).Cast<SKBitmapResizeMethod>().ToList();
methods = new List<SKBitmapResizeMethod>
{
SKBitmapResizeMethod.Box,
SKBitmapResizeMethod.Triangle,
SKBitmapResizeMethod.Lanczos3,
SKBitmapResizeMethod.Hamming,
SKBitmapResizeMethod.Mitchell,
};
method = methods[0];
using (var stream = new SKManagedStream(SampleMedia.Images.AdobeDng))
using (var stream = new SKManagedStream(SampleMedia.Images.Baboon))
{
bitmap = SKBitmap.Decode(stream);
}

Просмотреть файл

@ -5,17 +5,30 @@ VisualStudioVersion = 16.0.30229.9
MinimumVisualStudioVersion = 10.0.40219.1
Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "SkiaSharpSample.Shared", "SkiaSharpSample.Shared\SkiaSharpSample.Shared.shproj", "{6279C845-92F8-4333-AB99-3D213163593C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample.Wasm", "SkiaSharpSample.Wasm\SkiaSharpSample.Wasm.csproj", "{9726301D-8A93-4A06-88DF-92BA01CF80AD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm", "..\..\..\source\SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj", "{1787D9BF-9815-4E1D-BDEB-9994859FE91E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{409AF271-D8B7-4F79-B293-02F562A51955}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{6279c845-92f8-4333-ab99-3d213163593c}*SharedItemsImports = 13
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{9726301d-8a93-4a06-88df-92ba01cf80ad}*SharedItemsImports = 5
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.Build.0 = Release|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.Build.0 = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Release|Any CPU.ActiveCfg = Release|Any CPU

Просмотреть файл

@ -146,6 +146,10 @@
</AppxManifest>
</ItemGroup>
<ItemGroup>
<Content Include="..\..\Shared\Media\content-font.ttf">
<Link>Assets\Media\content-font.ttf</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\*.png" />
<Content Include="Properties\Default.rd.xml" />
</ItemGroup>

Двоичные данные
samples/Gallery/Uno/SkiaSharpSample.Wasm/Assets/SplashScreen.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 31 KiB

Просмотреть файл

@ -0,0 +1,10 @@
<linker>
<assembly fullname="SkiaSharp" />
<assembly fullname="SkiaSharp.Views.UWP" />
<assembly fullname="SkiaSharpSample.Wasm" />
<assembly fullname="Uno.Foundation" />
<assembly fullname="System.Core">
<!-- This is required by Json.NET and any expression.Compile caller -->
<type fullname="System.Linq.Expressions*" />
</assembly>
</linker>

Просмотреть файл

@ -0,0 +1,78 @@
using Microsoft.Extensions.Logging;
using Uno.Extensions;
using Uno.UI;
using Windows.UI.Xaml;
namespace SkiaSharpSample
{
public class Program
{
private static App _app;
static int Main(string[] args)
{
FeatureConfiguration.UIElement.AssignDOMXamlName = true;
ConfigureFilters(LogExtensionPoint.AmbientLoggerFactory);
Application.Start(_ => _app = new App());
return 0;
}
static void ConfigureFilters(ILoggerFactory factory)
{
factory
.WithFilter(new FilterLoggerSettings
{
{ "Uno", LogLevel.Warning },
{ "Windows", LogLevel.Warning },
{ "nVentive.Umbrella", LogLevel.Warning },
{ "SkiaSharp", LogLevel.Warning },
// View Navigation related messages
// { "nVentive.Umbrella.Views.Navigation", LogLevel.Debug },
// { "nVentive.Umbrella.Presentation.Light.ViewModelRegistry", LogLevel.Debug },
// All presentation related messages
// { "nVentive.Umbrella.Presentation.Light", LogLevel.Debug },
// ViewModel related messages
// { "nVentive.Umbrella.Presentation.Light.ViewModelBase", LogLevel.Debug },
// Dynamic properties related messages
// { "nVentive.Umbrella.Presentation.Light.DynamicProperties", LogLevel.Debug },
// AVVM/AVP Related messages
// { "nVentive.Umbrella.Presentation.Light.Extensions.AsyncValueViewModel", LogLevel.Debug },
// { "nVentive.Umbrella.Views.Controls.AsyncValuePresenter", LogLevel.Debug },
// { "nVentive.Umbrella.Views.Controls.IfDataContext", LogLevel.Debug },
// Layouter specific messages
// { "Windows.UI.Xaml.Controls", LogLevel.Debug },
// { "Windows.UI.Xaml.Controls.Layouter", LogLevel.Debug },
// { "Windows.UI.Xaml.Controls.Panel", LogLevel.Debug },
// Binding related messages
// { "Windows.UI.Xaml.Data", LogLevel.Debug },
// { "Windows.UI.Xaml.Data", LogLevel.Debug },
// Binder memory references tracking
// { "ReferenceHolder", LogLevel.Debug },
// Web Queries related messages
// gManager.SetLoggerLevel("nVentive.Umbrella.Web", LogLevel.Debug },
// Location service messages
// { "nVentive.Umbrella.Services.Location", LogLevel.Debug },
// Map Component messages
// { "nVentive.Umbrella.Components.Maps", LogLevel.Debug },
// ApplicationViewState
// { "nVentive.Umbrella.Views.Services.ApplicationViewState.ApplicationViewStateService", LogLevel.Debug },
})
.AddConsole(LogLevel.Debug);
}
}
}

Просмотреть файл

@ -0,0 +1,27 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:63559/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"SkiaSharpSample.Wasm": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:5000"
}
}
}

Просмотреть файл

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk.Web">
<Import Project="..\SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems" Label="Shared" />
<Import Project="..\..\..\..\output\SkiaSharp\nuget\build\wasm\SkiaSharp.props" Condition="Exists('..\..\..\..\output\SkiaSharp\nuget\build\wasm\SkiaSharp.props')" />
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netstandard2.0</TargetFramework>
<WasmHead>true</WasmHead>
<DefineConstants>$(DefineConstants);__WASM__</DefineConstants>
<LangVersion>8.0</LangVersion>
<WasmShellILLinkerEnabled>true</WasmShellILLinkerEnabled>
<WasmShellForceDisableWSL Condition="'$(OS)' != 'Unix' and ('$(CI)' == 'true' or '$(BUILD_BUILDID)' != '')">true</WasmShellForceDisableWSL>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<MonoRuntimeDebuggerEnabled>true</MonoRuntimeDebuggerEnabled>
<DebugType>portable</DebugType>
<DebugSymbols>true</DebugSymbols>
<WasmShellMonoRuntimeExecutionMode>Interpreter</WasmShellMonoRuntimeExecutionMode>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<WasmShellMonoRuntimeExecutionMode>FullAOT</WasmShellMonoRuntimeExecutionMode>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="1.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Filter" Version="1.1.1" />
<PackageReference Include="Uno.UI" Version="2.4.4" />
</ItemGroup>
<!-- workaround for https://github.com/unoplatform/Uno.Wasm.Bootstrap/issues/253 -->
<ItemGroup Condition=" '$(WasmShellForceDisableWSL)' != 'true' ">
<PackageReference Include="Uno.Wasm.Bootstrap" Version="1.4.0-dev.9" />
<PackageReference Include="Uno.Wasm.Bootstrap.DevServer" Version="1.4.0-dev.9" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\binding\SkiaSharp\SkiaSharp.csproj" />
<ProjectReference Include="..\..\..\..\source\SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj" />
</ItemGroup>
<ItemGroup>
<Content Include="Assets\**\*" />
<EmbeddedResource Include="WasmCSS\*.css" />
<EmbeddedResource Include="WasmScripts\*.js" />
<LinkerDescriptor Include="LinkerConfig.xml" />
</ItemGroup>
<Import Project="..\..\..\..\output\SkiaSharp.Views.Uno\nuget\build\netstandard2.0\SkiaSharp.Views.Uno.targets" Condition="Exists('..\..\..\..\output\SkiaSharp.Views.Uno\nuget\build\netstandard2.0\SkiaSharp.Views.Uno.targets')" />
</Project>

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -0,0 +1,5 @@
var UnoAppManifest = {
splashScreenImage: "Assets/SplashScreen.png",
splashScreenColor: "#F8F8F8",
displayName: "SkiaSharp for WebAssembly"
}

Просмотреть файл

@ -0,0 +1,23 @@

function fileSaveAs(fileName, dataPtr, size) {
// copy data into buffer
var buffer = new Uint8Array(size);
for (var i = 0; i < size; i++) {
buffer[i] = Module.getValue(dataPtr + i, "i8");
}
// create the download anchor
var a = window.document.createElement('a');
var blob = new Blob([buffer]);
a.href = window.URL.createObjectURL(blob);
a.download = fileName;
// append anchor to body
document.body.appendChild(a);
// "click" download
a.click();
// remove anchor from body
document.body.removeChild(a);
}

Просмотреть файл

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
<system.webServer>
<!-- Disable compression as we're doing it throuh pre-compressed files -->
<urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false" />
<staticContent>
<remove fileExtension=".dll" />
<remove fileExtension=".wasm" />
<remove fileExtension=".woff" />
<remove fileExtension=".woff2" />
<mimeMap fileExtension=".wasm" mimeType="application/wasm" />
<mimeMap fileExtension=".clr" mimeType="application/octet-stream" />
<mimeMap fileExtension=".pdb" mimeType="application/octet-stream" />
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
<mimeMap fileExtension=".woff2" mimeType="application/font-woff" />
<!-- Required for PWAs -->
<mimeMap fileExtension=".json" mimeType="application/octet-stream" />
</staticContent>
<rewrite>
<rules>
<rule name="Lookup for pre-compressed brotli file" stopProcessing="true">
<match url="(.*)$"/>
<conditions>
<!-- Match brotli requests -->
<add input="{HTTP_ACCEPT_ENCODING}" pattern="br" />
<!-- Match all but pre-compressed files -->
<add input="{REQUEST_URI}" pattern="^(?!/_compressed_br/)(.*)$" />
<!-- Check if the pre-compressed file exists on the disk -->
<add input="{DOCUMENT_ROOT}/_compressed_br/{C:0}" matchType="IsFile" negate="false" />
</conditions>
<action type="Rewrite" url="/_compressed_br{C:0}" />
</rule>
<rule name="Lookup for pre-compressed gzip file" stopProcessing="true">
<match url="(.*)$"/>
<conditions>
<!-- Match gzip requests -->
<add input="{HTTP_ACCEPT_ENCODING}" pattern="gzip" />
<!-- Match all but pre-compressed files -->
<add input="{REQUEST_URI}" pattern="^(?!/_compressed_gz/)(.*)$" />
<!-- Check if the pre-compressed file exists on the disk -->
<add input="{DOCUMENT_ROOT}/_compressed_gz/{C:0}" matchType="IsFile" negate="false" />
</conditions>
<action type="Rewrite" url="/_compressed_gz{C:0}" />
</rule>
</rules>
<outboundRules>
<rule name="Adjust content encoding for gzip pre-compressed files" enabled="true" stopProcessing="true">
<match serverVariable="RESPONSE_CONTENT_ENCODING" pattern="" />
<conditions>
<add input="{REQUEST_URI}" pattern="/_compressed_gz/.*$" />
</conditions>
<action type="Rewrite" value="gzip"/>
</rule>
<rule name="Adjust content encoding for brotli pre-compressed files" enabled="true" stopProcessing="true">
<match serverVariable="RESPONSE_CONTENT_ENCODING" pattern="" />
<conditions>
<add input="{REQUEST_URI}" pattern="/_compressed_br/.*$" />
</conditions>
<action type="Rewrite" value="br"/>
</rule>
</outboundRules>
</rewrite>
</system.webServer>
</configuration>

Просмотреть файл

@ -17,12 +17,17 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.UWP", "..\.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.UWP", "..\..\..\binding\SkiaSharp.UWP\SkiaSharp.UWP.csproj", "{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample.Wasm", "SkiaSharpSample.Wasm\SkiaSharpSample.Wasm.csproj", "{9726301D-8A93-4A06-88DF-92BA01CF80AD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm", "..\..\..\source\SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj", "{1787D9BF-9815-4E1D-BDEB-9994859FE91E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{409AF271-D8B7-4F79-B293-02F562A51955}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{6279c845-92f8-4333-ab99-3d213163593c}*SharedItemsImports = 13
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{8b8db39e-c0ff-4edc-83a6-0b6a4ab763ee}*SharedItemsImports = 4
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{9726301d-8a93-4a06-88df-92ba01cf80ad}*SharedItemsImports = 5
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{ae39aa1d-32c8-482b-9395-ad5493c98f7e}*SharedItemsImports = 4
EndGlobalSection
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -178,6 +183,46 @@ Global
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x64.Build.0 = Release|Any CPU
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x86.ActiveCfg = Release|Any CPU
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x86.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM64.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x64.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x64.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x86.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x86.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM64.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM64.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x64.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x64.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x86.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x86.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM64.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x64.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x64.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x86.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x86.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM64.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM64.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x64.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x64.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x86.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x86.Build.0 = Release|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.Build.0 = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|ARM.ActiveCfg = Debug|Any CPU

Просмотреть файл

@ -29,6 +29,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.UWP", "..\.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.UWP", "..\..\..\binding\SkiaSharp.UWP\SkiaSharp.UWP.csproj", "{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharpSample.Wasm", "SkiaSharpSample.Wasm\SkiaSharpSample.Wasm.csproj", "{9726301D-8A93-4A06-88DF-92BA01CF80AD}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm", "..\..\..\source\SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj", "{1787D9BF-9815-4E1D-BDEB-9994859FE91E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp", "..\..\..\binding\SkiaSharp\SkiaSharp.csproj", "{409AF271-D8B7-4F79-B293-02F562A51955}"
EndProject
Global
@ -36,6 +40,7 @@ Global
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{2a19c71c-d1ab-4c70-b821-6a7c7c4abe66}*SharedItemsImports = 4
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{6279c845-92f8-4333-ab99-3d213163593c}*SharedItemsImports = 13
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{8b8db39e-c0ff-4edc-83a6-0b6a4ab763ee}*SharedItemsImports = 4
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{9726301d-8a93-4a06-88df-92ba01cf80ad}*SharedItemsImports = 5
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{ae39aa1d-32c8-482b-9395-ad5493c98f7e}*SharedItemsImports = 4
SkiaSharpSample.Shared\SkiaSharpSample.Shared.projitems*{b3a30dc3-0e2d-4f46-97c5-fdc6ab8062e6}*SharedItemsImports = 4
EndGlobalSection
@ -429,6 +434,62 @@ Global
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x64.Build.0 = Release|Any CPU
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x86.ActiveCfg = Release|Any CPU
{6FF6B08F-0A69-41A4-8F53-8FE9B7FB4A67}.Release|x86.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|ARM64.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|iPhone.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x64.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x64.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x86.ActiveCfg = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Debug|x86.Build.0 = Debug|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|Any CPU.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM64.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|ARM64.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|iPhone.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|iPhone.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x64.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x64.Build.0 = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x86.ActiveCfg = Release|Any CPU
{9726301D-8A93-4A06-88DF-92BA01CF80AD}.Release|x86.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|ARM64.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|iPhone.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|iPhone.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x64.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x64.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x86.ActiveCfg = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Debug|x86.Build.0 = Debug|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|Any CPU.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM64.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|ARM64.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|iPhone.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|iPhone.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|iPhoneSimulator.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x64.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x64.Build.0 = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x86.ActiveCfg = Release|Any CPU
{1787D9BF-9815-4E1D-BDEB-9994859FE91E}.Release|x86.Build.0 = Release|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|Any CPU.Build.0 = Debug|Any CPU
{409AF271-D8B7-4F79-B293-02F562A51955}.Debug|ARM.ActiveCfg = Debug|Any CPU

Просмотреть файл

@ -174,12 +174,9 @@
<ItemGroup>
<Content Include="..\..\Shared\Media\content-font.ttf">
<Link>Assets\Media\content-font.ttf</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Assets\configure.png" />
<Content Include="Assets\more.png" />
<Content Include="Assets\slideshow.png" />
<Content Include="Assets\*" />
<Content Include="Assets\*.png" />
<Content Include="Package.StoreAssociation.xml" />
<Content Include="Properties\Default.rd.xml" />
</ItemGroup>

Просмотреть файл

@ -0,0 +1,106 @@
using System;
using System.Runtime.InteropServices;
using Uno.Foundation;
using Windows.UI.Xaml;
namespace SkiaSharp.Views.UWP
{
public partial class SKXamlCanvas : FrameworkElement
{
private IntPtr pixels;
private int pixelWidth;
private int pixelHeight;
static SKXamlCanvas()
{
const string js = @"
(window || global).SkiaSharp_Views_UWP_SKXamlCanvas = class SKXamlCanvas {
static invalidateCanvas(pData, canvasId, width, height) {
var htmlCanvas = document.getElementById(canvasId);
htmlCanvas.width = width;
htmlCanvas.height = height;
var ctx = htmlCanvas.getContext('2d');
if (!ctx)
return false;
var buffer = new Uint8ClampedArray(Module.HEAPU8.buffer, pData, width * height * 4);
var imageData = new ImageData(buffer, width, height);
ctx.putImageData(imageData, 0, 0);
return true;
}
};";
WebAssemblyRuntime.InvokeJS(js);
}
public SKXamlCanvas()
: base("canvas")
{
Initialize();
}
partial void DoUnloaded() =>
FreeBitmap();
private SKSize GetCanvasSize() =>
new SKSize(pixelWidth, pixelHeight);
private void DoInvalidate()
{
if (designMode)
return;
if (!isVisible)
return;
if (ActualWidth <= 0 || ActualHeight <= 0)
return;
int width, height;
if (IgnorePixelScaling)
{
width = (int)ActualWidth;
height = (int)ActualHeight;
}
else
{
width = (int)(ActualWidth * Dpi);
height = (int)(ActualHeight * Dpi);
}
var info = new SKImageInfo(width, height, SKImageInfo.PlatformColorType, SKAlphaType.Opaque);
CreateBitmap(info);
using (var surface = SKSurface.Create(info, pixels, info.RowBytes))
{
OnPaintSurface(new SKPaintSurfaceEventArgs(surface, info));
}
WebAssemblyRuntime.InvokeJS($"SkiaSharp_Views_UWP_SKXamlCanvas.invalidateCanvas({pixels}, \"{HtmlId}\", {info.Width}, {pixelHeight});");
}
private unsafe void CreateBitmap(SKImageInfo info)
{
if (pixels == IntPtr.Zero || pixelWidth != info.Width || pixelHeight != info.Height)
{
FreeBitmap();
var ptr = Marshal.AllocHGlobal(info.BytesSize);
pixels = ptr;
pixelWidth = info.Width;
pixelHeight = info.Height;
}
}
private void FreeBitmap()
{
if (pixels != IntPtr.Zero)
{
Marshal.FreeHGlobal(pixels);
pixels = IntPtr.Zero;
}
}
}
}

Просмотреть файл

@ -0,0 +1,27 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<RootNamespace>SkiaSharp.Views.UWP</RootNamespace>
<AssemblyName>SkiaSharp.Views.UWP</AssemblyName>
<SignAssembly>false</SignAssembly>
<PackagingGroup>SkiaSharp.Views.Uno</PackagingGroup>
<DefineConstants>$(DefineConstants);__WASM__</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Uno.UI" Version="2.0.532" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\binding\SkiaSharp\SkiaSharp.csproj" />
</ItemGroup>
<ItemGroup>
<None Include="nuget\build\netstandard2.0\SkiaSharp.Views.Uno.targets" Link="nuget\build\$(PackagingPlatform)\SkiaSharp.Views.Uno.targets" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\..\SkiaSharp.Views\SkiaSharp.Views.Shared\**\*.cs" Link="%(RecursiveDir)%(Filename)%(Extension)" />
<Compile Include="..\..\SkiaSharp.Views\SkiaSharp.Views.UWP\UWPExtensions.cs" />
<Compile Include="..\SkiaSharp.Views.Uno\**\*.cs" Link="%(RecursiveDir)%(Filename)%(Extension)" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="WasmScripts\*.js" />
</ItemGroup>
</Project>

Просмотреть файл

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8" ?>
<Project>
<ItemGroup>
<Content Include="$(SkiaSharpStaticLibraryPath)" Visible="false" />
</ItemGroup>
</Project>

Просмотреть файл

@ -47,6 +47,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Vulkan.SharpVk",
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SkiaSharp.Views.Uno", "SkiaSharp.Views.Uno", "{00C9099A-BE4F-40D0-9401-295618368370}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm", "SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj", "{08599A28-FADE-43B5-95A0-BDCB22B97D3A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -109,6 +111,10 @@ Global
{4606F63B-F0B1-418E-8B45-844361E17EB1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4606F63B-F0B1-418E-8B45-844361E17EB1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4606F63B-F0B1-418E-8B45-844361E17EB1}.Release|Any CPU.Build.0 = Release|Any CPU
{08599A28-FADE-43B5-95A0-BDCB22B97D3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08599A28-FADE-43B5-95A0-BDCB22B97D3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{08599A28-FADE-43B5-95A0-BDCB22B97D3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08599A28-FADE-43B5-95A0-BDCB22B97D3A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -128,6 +134,7 @@ Global
{6FB08346-1A02-4793-B5E1-4F739C6342D5} = {4F5EBFFB-DD81-43B9-8531-156ED3639C91}
{857CB6E9-BA27-4E94-A2D7-68BFF1EE193B} = {B3C4E4EC-68C7-4AFB-A6D4-1B2B0EB8C421}
{4606F63B-F0B1-418E-8B45-844361E17EB1} = {66A0800A-CA70-4AC2-88B7-8E7C4CA7C914}
{08599A28-FADE-43B5-95A0-BDCB22B97D3A} = {00C9099A-BE4F-40D0-9401-295618368370}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {B4229170-607D-4886-9990-8FD5D86220B9}

Просмотреть файл

@ -85,6 +85,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.iOS", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Mac", "SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Mac\SkiaSharp.Views.Uno.Mac.csproj", "{E0FF9BFF-2253-4486-A8E2-94312D09D056}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm", "SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj", "{242213FA-1F0E-40BB-A9B2-6FEE82B5D216}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -223,6 +225,10 @@ Global
{E0FF9BFF-2253-4486-A8E2-94312D09D056}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E0FF9BFF-2253-4486-A8E2-94312D09D056}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E0FF9BFF-2253-4486-A8E2-94312D09D056}.Release|Any CPU.Build.0 = Release|Any CPU
{242213FA-1F0E-40BB-A9B2-6FEE82B5D216}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{242213FA-1F0E-40BB-A9B2-6FEE82B5D216}.Debug|Any CPU.Build.0 = Debug|Any CPU
{242213FA-1F0E-40BB-A9B2-6FEE82B5D216}.Release|Any CPU.ActiveCfg = Release|Any CPU
{242213FA-1F0E-40BB-A9B2-6FEE82B5D216}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -261,6 +267,7 @@ Global
{D35B20BC-838A-4C1E-B427-4269F6387CAB} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{6F92F6C5-6249-4A42-A028-DE1118D3CF78} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{E0FF9BFF-2253-4486-A8E2-94312D09D056} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{242213FA-1F0E-40BB-A9B2-6FEE82B5D216} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {4B8BED07-EA83-4BC1-B3BB-6B8EBC54C25F}

Просмотреть файл

@ -69,6 +69,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SkiaSharp.Views.Uno", "Skia
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Android", "SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Android\SkiaSharp.Views.Uno.Android.csproj", "{D35B20BC-838A-4C1E-B427-4269F6387CAB}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm", "SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj", "{F675A841-ECDB-4571-8AA3-7D4642FD57DB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -175,6 +177,10 @@ Global
{D35B20BC-838A-4C1E-B427-4269F6387CAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D35B20BC-838A-4C1E-B427-4269F6387CAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D35B20BC-838A-4C1E-B427-4269F6387CAB}.Release|Any CPU.Build.0 = Release|Any CPU
{F675A841-ECDB-4571-8AA3-7D4642FD57DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F675A841-ECDB-4571-8AA3-7D4642FD57DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F675A841-ECDB-4571-8AA3-7D4642FD57DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F675A841-ECDB-4571-8AA3-7D4642FD57DB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -205,6 +211,7 @@ Global
{F55B16B3-4427-45EA-A93C-E12A7409E37D} = {D40675E1-610D-4BBB-AA2A-BEF020717431}
{4606F63B-F0B1-418E-8B45-844361E17EB1} = {66A0800A-CA70-4AC2-88B7-8E7C4CA7C914}
{D35B20BC-838A-4C1E-B427-4269F6387CAB} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{F675A841-ECDB-4571-8AA3-7D4642FD57DB} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {63A8C36E-4917-46DB-9AAD-522B8EC00C23}

Просмотреть файл

@ -105,6 +105,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.iOS", "
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Mac", "SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Mac\SkiaSharp.Views.Uno.Mac.csproj", "{E0FF9BFF-2253-4486-A8E2-94312D09D056}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SkiaSharp.Views.Uno.Wasm", "SkiaSharp.Views.Uno\SkiaSharp.Views.Uno.Wasm\SkiaSharp.Views.Uno.Wasm.csproj", "{047C460D-7470-418C-AF2C-30620A1AF61C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -283,6 +285,10 @@ Global
{E0FF9BFF-2253-4486-A8E2-94312D09D056}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E0FF9BFF-2253-4486-A8E2-94312D09D056}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E0FF9BFF-2253-4486-A8E2-94312D09D056}.Release|Any CPU.Build.0 = Release|Any CPU
{047C460D-7470-418C-AF2C-30620A1AF61C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{047C460D-7470-418C-AF2C-30620A1AF61C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{047C460D-7470-418C-AF2C-30620A1AF61C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{047C460D-7470-418C-AF2C-30620A1AF61C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -331,6 +337,7 @@ Global
{D35B20BC-838A-4C1E-B427-4269F6387CAB} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{6F92F6C5-6249-4A42-A028-DE1118D3CF78} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{E0FF9BFF-2253-4486-A8E2-94312D09D056} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
{047C460D-7470-418C-AF2C-30620A1AF61C} = {E53351EA-FE40-47D2-B388-4A75DA6CCD71}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {67EACD19-0CEA-4127-9842-549AA6FB84C9}

Просмотреть файл

@ -16,8 +16,8 @@
<LinkerDescriptor Include="LinkerConfig.xml" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Uno.Wasm.Bootstrap" Version="1.4.0-dev.7" />
<PackageReference Include="Uno.Wasm.Bootstrap.DevServer" Version="1.4.0-dev.7" />
<PackageReference Include="Uno.Wasm.Bootstrap" Version="1.4.0-dev.9" />
<PackageReference Include="Uno.Wasm.Bootstrap.DevServer" Version="1.4.0-dev.9" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.extensibility.core" Version="2.4.1" />
<PackageReference Include="xunit.runner.utility" Version="2.4.1" />

Просмотреть файл

@ -10,8 +10,8 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Uno.Wasm.Bootstrap" Version="1.4.0-dev.7" />
<PackageReference Include="Uno.Wasm.Bootstrap.DevServer" Version="1.4.0-dev.7" />
<PackageReference Include="Uno.Wasm.Bootstrap" Version="1.4.0-dev.9" />
<PackageReference Include="Uno.Wasm.Bootstrap.DevServer" Version="1.4.0-dev.9" />
</ItemGroup>
<ItemGroup>