SkiaSharp for WebAssembly is a SkiaSharp port that runs on top of the Uno Platform, using modified CanvasKit for WebAssembly.
It is currently in experimental state and uses a temporary interfacing mechanism between the main mono module and CanvasKit, until Mono can support Emscripten's dynamic linking.
To experiment with it, open the SkiaSharpSource.sln
and build the SkiaSharpSample.Wasm
project.
SkiaSharp is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library (https://skia.org/). It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.
SkiaSharp provides cross-platform bindings for:
- .NET Standard 1.3
- .NET Core
- Tizen
- Xamarin.Android
- Xamarin.iOS
- Xamarin.tvOS
- Xamarin.watchOS
- Xamarin.Mac
- Windows Classic Desktop (Windows.Forms / WPF)
- Windows UWP (Desktop / Mobile / Xbox / HoloLens)
The API Documentation is available on the web to browse.
SkiaSharp is available as a convenient NuGet package, to use install the package like this:
nuget install SkiaSharp
Because there are multiple distros of Linux, and we cannot possibly support them all, we have a separate NuGet package that will contain the supported binaries for a few distros: SkiaSharp.NativeAssets.Linux. (distros) (more info)
Before building SkiaSharp:
- Python 2.7 is available in the
PATH
environment variable on Windows - Android NDK r15 is available in the
ANDROID_NDK_HOME
environment variable on macOS - .NET Core is installed on all platforms
- C/C++ Compiler (MSVC / "Desktop development" package on Windows)
First, clone the repository:
$ git clone https://github.com/mono/SkiaSharp.git
Next, set up the submodules:
$ cd SkiaSharp
$ git submodule update --init --recursive
Finally, build everything:
Mac/Linux:
$ ./bootstrapper.sh -t everything
Windows:
> .\bootstrapper.ps1 -t everything
Here are some links to show the differences in our code as compared to Google's code.
What version are we on? m68
Are we up-to-date with Google? Compare
What have we added? Compare