SkiaSharp

SkiaSharp is a cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.

MIT License

Stars
4.1K
Committers
91

Bot releases are hidden (Show)

SkiaSharp - Version 2.80.1

Published by mattleibow over 4 years ago

SkiaSharp

A cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.

Changes

Known Issues

  • Not quite an issue, but still something to be aware of: microsoft/microsoft-ui-xaml#1446

    API __CxxFrameHandler4 in vcruntime140_1_app.dll is not supported for this application type. libGLESv2.dll calls this API.
    API __CxxFrameHandler4 in vcruntime140_1_app.dll is not supported for this application type. libSkiaSharp.dll calls this API.

Links

NuGet | Code Diff | Project | Milestone | Changelog | CI | Release CI

SkiaSharp.Views.Uno

A set of pre-prepared views for Uno Platform, for fully cross-platform drawing code. Current support is just a CPU surface for Android, iOS and macOS, with WASM support under way in a PR (#1333). GPU surfaces are also coming soon.

Changes

Links

NuGet | Changelog

Samples

There are a large set of samples that show many different features of SkiaSharp. They are broken up into two main groups:

  • Basic - these are minimal samples that show just what is needed to use SkiaSharp
  • Gallery - these are comprehensive samples that show off new, or exciting features of SkiaSharp

All the samples that have been built and tested for this version of SkiaSharp can be downloaded in the "Assets" links.

SkiaSharp - Version 2.80.0

Published by mattleibow over 4 years ago

SkiaSharp

A cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.

Major Changes

  • Brand new skia version: milestone 80
    • All native changelogs here
  • ARM64 support for Windows
    • This includes both UWP and Win32 platforms
  • ARM / ARM64 support for Linux
    • This means Raspberry Pi!
  • Alpine / musl support for Linux
    • This includes both the standard and no-dependency builds
  • WASM static library (experimental)
    • This is just the native .a file for now that has to be manually (or using a framework tooling such as Uno) linked.
    • There is a helper package SkiaSharp.NativeAssets.WebAssembly that will provide a path to the actual static library (#1389)
  • Support for Vulkan backends [@tuccio] [@MarchingCube]
    • Supported on Android, Windows and Linux
    • New GRVkBackendContext, GRVkImageInfo and more types
  • SKColorSpace and related types have been reworked
    • New type for accessing transfer functions and ICC profiles
    • Removing usage of SKMatrix44 since it is going to be obsolete soon
  • Text processing has been entirely re-written to use the new SKFont type under the hood
    • SKFont is a text-related subset of SKPaint
    • APIs based on Span<T> for almost zero-allocation processing
    • SKTextBlob and SKTextBlobBuilder now focus on glyphs and only expose convenience members for text
  • Native libSkiaSharp for all platforms are no longer embedded in the dlls
    • Improves build performance
    • Allows for better control when excluding native assets

Changes

  • Unifying some APIs
    • Moving from SKEncoding to SKTextEncoding
    • Moving away from GRPixelConfig to SKColorType
  • Improved the way GPU types are created and used
    • GRContext and GRGlInterface have been streamlined
  • Several color space related types have been deprecated in favor of improved types
  • SKCanvas.DrawTextOnPath now has support for not warping characters [@Ziriax]
    • Native support was dropped in skia, but we now also have a better implementation
  • SKPaint now supports getting and setting SKColorF (with or without a color space)
  • SKPath.ToWinding() can be used to convert the current path to a path that has a winding fill type
  • .NET Framework apps now properly load the 32/64 bit libraries, as well as support ARM
  • Several SKImageFilter factory methods now have additional overloads
  • Managed library now knows what version of the native library it supports, and will throw if an invalid library is used (#1252)

Maintainence

  • Brand new images! Sharper than skia, if I say so myself...
  • Minimum version of Windows for UWP is now 10.0.16299
  • Minimum version of .NET Framework for is now 4.6.2
  • Native artifacts for libSkiaSharp are no longer embedded into the managed .dlls
    • Build performance improvement
    • Easier to control
  • Samples updated to more modern libraries and code
  • Added code coverage to the build system

Known Issues

  • Not quite an issue, but still something to be aware of: microsoft/microsoft-ui-xaml#1446

    API __CxxFrameHandler4 in vcruntime140_1_app.dll is not supported for this application type. libGLESv2.dll calls this API.
    API __CxxFrameHandler4 in vcruntime140_1_app.dll is not supported for this application type. libSkiaSharp.dll calls this API.

Links

NuGet | Code Diff | Project | Milestone | Changelog | CI | Release CI

SkiaSharp.Views

A set of pre-prepared UI views, panels and surfaces for drawing. One of these views can be added to the view hierarchy, and then be used for drawing without the need for complex setup. There is also a set of extension methods for converting to/from SkiaSharp and native types.

Changes

  • None yet

Links

NuGet | Changelog

SkiaSharp.Views.Forms

A set of pre-prepared views for Xamarin.Forms, for fully cross-platform drawing code. There are views for both CPU and GPU backends, along with extension methods for converting to/from SkiaSharp and Xamarin.Forms types. Currently available for iOS, Android, UWP, macOS (preview) and Tizen (preview).

Changes

  • Minimum version of Xamarin.Forms is now 4.5+

Links

NuGet | Changelog

HarfBuzzSharp

A library for text shaping, which is the process of converting Unicode text to glyph indices and positions.

Changes

  • None

Links

NuGet | Changelog

SkiaSharp.HarfBuzz (preview)

Support for text shaping using the HarfBuzz text shaping library. This package adds the SKShaper type that can shape a string, returning the codepoints and their positions.

This package also adds some extension methods to SKCanvas to make drawing shaped text easier. These methods include DrawShapedText and it's overloads.

Changes

  • New overloads for SKCanvas.DrawShapedText to make simple cases easier

Links

NuGet | Changelog

SkiaSharp.Vulkan.SharpVk (preview)

Because working with pointers is not nice, especially when you have an already perfectly good Vulkan API from SharpVk, we have a package that provides a way to use that library with our library.

Changes

  • Added GRSharpVkBackendContext to directly use SharpVk objects to construct the GRVkBackendContext
  • Added extensions methods for GRVkExtensions to make initialization easier when using SharpVk objects

Links

NuGet | Changelog

Additional Platforms

Linux

Because we love everyone in the Linux world just as well as the Microsoft and the Xamarin worlds, we have also included some pre-built Linux native binaries in a new, separate package (see #312):

SkiaSharp.NativeAssets.Linux

If you happen to be on an environment that does not have the ability to install any of the required dependencies, such as FontConfig, you can also try out the build that does not have any dependencies other that the core system libraries:

SkiaSharp.NativeAssets.Linux.NoDependencies

At the current time, these packages support several platforms/architectures/distributions.

The base platforms are:

  • Debian x64, ARM and ARM64
  • Alpine x64

However, these binaries are known to work on many other platforms:

  • Red Hat Enterprise Linux
  • CentOS
  • Raspberry Pi
  • Many Musl distributions
  • Most Debian-based distros

More builds can be requested by leaving a comment on #453, but you can easily build your own binaries by following this guide.

NuGet

Windows Nano Server

We know the .NET Core containers are very cool to use, so we now have support for using the default Windows .NET Core Docker images (see #676):

SkiaSharp.NativeAssets.NanoServer

It is not quite perfect just yet, so the app project needs a little help (see NuGet/Home#8894):

<PackageReference Include="SkiaSharp" ExcludeAssets="native" />
<PackageReference Include="SkiaSharp.NativeAssets.NanoServer" />

NuGet

Web Assembly (WASM)

Because the .NET platform and tooling for web assembly is still evolving, we can't yet commit to a final packaging format. However, this does not mean that we cannot at least help get you started.

To do this, we have pre-built a native static library for WASM that can be manually linked, or linked using a framework tooling such as Uno. This library can be found in a new package that provides a path to the actual static library (#1389):

SkiaSharp.NativeAssets.WebAssembly

NuGet

Samples

There are a large set of samples that show many different features of SkiaSharp. They are broken up into two main groups:

  • Basic - these are minimal samples that show just what is needed to use SkiaSharp
  • Gallery - these are comprehensive samples that show off new, or exciting features of SkiaSharp

All the samples that have been built and tested for this version of SkiaSharp can be downloaded in the "Assets" links.

SkiaSharp - Version 2.80.0 (Preview Build 33)

Published by mattleibow over 4 years ago

SkiaSharp - Version 2.80.0 (Preview Build 24)

Published by mattleibow over 4 years ago

SkiaSharp - Version 2.80.0 (Preview Build 14)

Published by mattleibow over 4 years ago

SkiaSharp - Version 2.80.0 (Preview Build 12)

Published by mattleibow over 4 years ago

SkiaSharp - Version 2.80.0 (Preview Build 3)

Published by mattleibow over 4 years ago

SkiaSharp - Version 1.68.3

Published by mattleibow over 4 years ago

SkiaSharp

A cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.

Changes

  • Performance improvements for most frequently-used objects

Maintainence

  • Updated Tized SDK to v3.7

Known Issues

  • Not quite an issue, but still something to be aware of: https://github.com/microsoft/microsoft-ui-xaml/issues/1446
    This is not actually an issue, but rather a bug in the WACK test. This has been fixed in the Insider SDK and apps can still be submitted to the store.

    API __CxxFrameHandler4 in vcruntime140_1_app.dll is not supported for this application type. libGLESv2.dll calls this API.
    API __CxxFrameHandler4 in vcruntime140_1_app.dll is not supported for this application type. libSkiaSharp.dll calls this API.

Links

NuGet | Code Diff | Project | Milestone | Changelog | CI | Release CI

SkiaSharp.Views

A set of pre-prepared UI views, panels and surfaces for drawing. One of these views can be added to the view hierarchy, and then be used for drawing without the need for complex setup. There is also a set of extension methods for converting to/from SkiaSharp and native types.

Changes

  • None

Links

NuGet | Changelog

SkiaSharp.Views.Forms

A set of pre-prepared views for Xamarin.Forms, for fully cross-platform drawing code. There are views for both CPU and GPU backends, along with extension methods for converting to/from SkiaSharp and Xamarin.Forms types. Currently available for iOS, Android, UWP, macOS (preview) and Tizen (preview).

Changes

  • None

Links

NuGet | Changelog

HarfBuzzSharp

A library for text shaping, which is the process of converting Unicode text to glyph indices and positions.

Changes

  • None

Links

NuGet | Changelog

SkiaSharp.HarfBuzz (preview)

Support for text shaping using the HarfBuzz text shaping library. This package adds the SKShaper type that can shape a string, returning the codepoints and their positions.

This package also adds some extension methods to SKCanvas to make drawing shaped text easier. These methods include DrawShapedText and it's overloads.

Changes

  • None

Links

NuGet | Changelog

Additional Platforms

Linux

Because we love everyone in the Linux world just as well as the Microsoft and the Xamarin worlds, we have also included some pre-built Linux native binaries in a new, separate package (see #312):

SkiaSharp.NativeAssets.Linux

If you happen to be on an environment that does not have the ability to install any of the required dependencies, such as FontConfig, you can also try out the build that does not have any dependencies other that the core system libraries:

SkiaSharp.NativeAssets.Linux.NoDependencies

At the current time, it just contains a Ubuntu 16.04 amd64 build that should work on most Debian-based Linux distributions. More builds can be requested by leaving a comment on #453.

If a specific platform is required, you can easily build your own binaries by following this guide.

Windows Nano Server

We know the .NET Core containers are very cool to use, so we now have support for using the default Windows .NET Core Docker images (see #676):

SkiaSharp.NativeAssets.NanoServer

It is not quite perfect just yet, so the app project needs a little help (see NuGet/Home#8894):

<PackageReference Include="SkiaSharp" ExcludeAssets="native" />
<PackageReference Include="SkiaSharp.NativeAssets.NanoServer" />

Samples

There are a large set of samples that show many different features of SkiaSharp. They are broken up into two main groups:

  • Basic - these are minimal samples that show just what is needed to use SkiaSharp
  • Gallery - these are comprehensive samples that show off new, or exciting features of SkiaSharp

All the samples that have been built and tested for this version of SkiaSharp can be downloaded in the "Assets" links.

SkiaSharp - Version 1.68.2.1

Published by mattleibow over 4 years ago

A patch release to fix a packaging issue.

Changes

Known Issues

  • Not quite an issue, but still something to be aware of: https://github.com/microsoft/microsoft-ui-xaml/issues/1446
    This is not actually an issue, but rather a bug in the WACK test. This has been fixed in the Insider SDK and apps can still be submitted to the store.

    API __CxxFrameHandler4 in vcruntime140_1_app.dll is not supported for this application type. libGLESv2.dll calls this API.
    API __CxxFrameHandler4 in vcruntime140_1_app.dll is not supported for this application type. libSkiaSharp.dll calls this API.

Links

NuGet | Code Diff | Project | Milestone | CI | Release CI

SkiaSharp - Version 1.68.2

Published by mattleibow over 4 years ago

SkiaSharp

A cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.

Changes

  • Added SKColorF for floating-point colors, and the various overloads for members
  • Added members to SKCanvas for more drawing options: DrawAtlas, DrawPatch, DrawArc and DrawRoundRectDifference
  • Added support for the improved Perlin noise shader
  • Added an overload for SKImage.ToRasterImage() to request that the pixel data be actually loaded
  • Added ToTextureImage to SKImage to copy a CPU-based raster image to the GPU
  • Added ToShader() to SKBitmap, SKImage and SKPicture to convert each to a SKShader
  • Added useful versions of the SKMatrix members: Concat, PreConcat, PostConcat
  • Added a whole bunch of members to SKRegion for the "quick" reject/contains
  • Added the various iterators to SKRegion
  • Fixed the issue where passing null for image filters threw an exception [@Ziriax]
  • Fixed the issue where passing null to SKPathMeasure threw an exception [@Ziriax]
  • Removed all use of reflection for a big performance boost [@Gillibald]
  • Added IEquatable<T> to all structs
  • Made all getters on structs readonly
  • Implemented equality operators on all structs
  • Added a few extra members and overloads to existing types
  • Added [EditorBrowsable (EditorBrowsableState.Never)] to all obsolete members to improve IntelliSense
  • Made use of array pools where possible
  • Multiple memory management improvements
  • Fixed several bugs relating to object lifetime and disposal

Maintainence

  • Updating the projects to use Visual Studio 2019 and .NET Core 3.0
  • Improving some multi-targeting in projects [@bender2k14]
  • Updated the minimum supported Android to v4.1 (API level 16)
  • Updated the Android NDK to r19c
  • Updated the MSVC compiler to v14.2
  • Updated Clang compiler to v9.0

Known Issues

  • Not quite an issue, but still something to be aware of: https://github.com/microsoft/microsoft-ui-xaml/issues/1446
    This is not actually an issue, but rather a bug in the WACK test. This has been fixed in the Insider SDK and apps can still be submitted to the store.

    API __CxxFrameHandler4 in vcruntime140_1_app.dll is not supported for this application type. libGLESv2.dll calls this API.
    API __CxxFrameHandler4 in vcruntime140_1_app.dll is not supported for this application type. libSkiaSharp.dll calls this API.

Links

NuGet | Code Diff | Project | Milestone | Changelog | CI | Release CI

SkiaSharp.Views

A set of pre-prepared UI views, panels and surfaces for drawing. One of these views can be added to the view hierarchy, and then be used for drawing without the need for complex setup. There is also a set of extension methods for converting to/from SkiaSharp and native types.

Changes

  • Added some extension methods for converting between SkiaSharp and GTK math types (SKRect, SKPoint and SKSize)
  • Added some extension methods for converting between SkiaSharp image types (SKImage, SKBitmap, and SKPixmap) and GTK Pixbuf
  • Fixed sampling issues with GPU-based views [@validvoid]
  • Updated to the latest commit of ANGLE

Links

NuGet | Changelog

SkiaSharp.Views.Forms

A set of pre-prepared views for Xamarin.Forms, for fully cross-platform drawing code. There are views for both CPU and GPU backends, along with extension methods for converting to/from SkiaSharp and Xamarin.Forms types. Currently available for iOS, Android, UWP, macOS (preview) and Tizen (preview).

Changes

  • A new package (SkiaSharp.Views.Forms.GTK) now adds support for GTK
  • Added support for mouse wheel scrolling [@alexandrvslv]
  • Added support for SKTouchDeviceType and touch pressure for touch events on Android [@mscherotter]
  • Fixed a memory leak (and subsequent crash) in the views [@zbyszekpy]
  • Updated Xamarin.Forms to v4.4+

Links

NuGet | Changelog

HarfBuzzSharp

A library for text shaping, which is the process of converting Unicode text to glyph indices and positions.

Changes

  • None

Links

NuGet | Changelog

SkiaSharp.HarfBuzz (preview)

Support for text shaping using the HarfBuzz text shaping library. This package adds the SKShaper type that can shape a string, returning the codepoints and their positions.

This package also adds some extension methods to SKCanvas to make drawing shaped text easier. These methods include DrawShapedText and it's overloads.

Changes

  • None

Links

NuGet | Changelog

Additional Platforms

Linux

Because we love everyone in the Linux world just as well as the Microsoft and the Xamarin worlds, we have also included some pre-built Linux native binaries in a new, separate package (see #312):

SkiaSharp.NativeAssets.Linux

If you happen to be on an environment that does not have the ability to install any of the required dependencies, such as FontConfig, you can also try out the build that does not have any dependencies other that the core system libraries:

SkiaSharp.NativeAssets.Linux.NoDependencies

At the current time, it just contains a Ubuntu 16.04 amd64 build that should work on most Debian-based Linux distributions. More builds can be requested by leaving a comment on #453.

If a specific platform is required, you can easily build your own binaries by following this guide.

Windows Nano Server

We know the .NET Core containers are very cool to use, so we now have support for using the default Windows .NET Core Docker images (see #676):

SkiaSharp.NativeAssets.NanoServer

It is not quite perfect just yet, so the app project needs a little help (see NuGet/Home#8894):

<PackageReference Include="SkiaSharp" ExcludeAssets="native" />
<PackageReference Include="SkiaSharp.NativeAssets.NanoServer" />

Samples

There are a large set of samples that show many different features of SkiaSharp. They are broken up into two main groups:

  • Basic - these are minimal samples that show just what is needed to use SkiaSharp
  • Gallery - these are comprehensive samples that show off new, or exciting features of SkiaSharp

All the samples that have been built and tested for this version of SkiaSharp can be downloaded in the "Assets" links.

SkiaSharp - Version 1.68.2 (Preview Build 60)

Published by mattleibow over 4 years ago

SkiaSharp - Version 1.68.2 (Preview Build 50)

Published by mattleibow over 4 years ago

SkiaSharp - Version 1.68.2 (Preview Build 45)

Published by mattleibow over 4 years ago

SkiaSharp - Version 1.68.2 (Preview Build 43)

Published by mattleibow over 4 years ago

SkiaSharp - Version 1.68.2 (Preview Build 39)

Published by mattleibow over 4 years ago

SkiaSharp - Version 1.68.2 (Preview Build 29)

Published by mattleibow over 4 years ago

SkiaSharp - Version 1.68.2 (Preview Build 21)

Published by mattleibow over 4 years ago

SkiaSharp - Version 1.68.2 (Preview Build 17)

Published by mattleibow almost 5 years ago

SkiaSharp - Version 1.68.1.1

Published by mattleibow almost 5 years ago

SkiaSharp

A cross-platform 2D graphics API for .NET platforms based on Google's Skia Graphics Library. It provides a comprehensive 2D API that can be used across mobile, server and desktop models to render images.

Major Changes

This version adds several new members and types, but the core focus was on resolving some larger memory-related issues. This release hopes to fix several cases where incorrect memory usage resulted in a crash or undefined behavior.

  • Windows Nano Server support! Standard .NET Core containers here we come!

Changes

  • Fixed some memory buffer overflow bugs when decoding some image files
  • Fix memory leak with allocations [@daltonks]
  • Matrix improvements [@bender2k14]
  • Improvements to image decoding with SKImage

Maintainence

  • New logos!
  • Making the native build steps to be separate cake files so they can be run multiple times with different arguments. This is useful when building Win32 as both Win32 and Nano server, or Linux as default Linux and no-dependency Linux.
  • Using Ubuntu 16 and Clang 4.0 in a Docker container when building linux. As a result, we aren't building under the restricted Docker builds of DevOps.
  • Added some code checks, such as PoliCheck to make sure we are not using bad words, CredScan to make sure we haven't got saved passwords and Component Governance to make sure we are registered with the Big List™.

Links

NuGet | Code Diff | Project | Milestone | Changelog | CI | Release CI

SkiaSharp.Views

A set of pre-prepared UI views, panels and surfaces for drawing. One of these views can be added to the view hierarchy, and then be used for drawing without the need for complex setup. There is also a set of extension methods for converting to/from SkiaSharp and native types.

Changes

  • None

Links

NuGet | Changelog

SkiaSharp.Views.Forms

A set of pre-prepared views for Xamarin.Forms, for fully cross-platform drawing code. There are views for both CPU and GPU backends, along with extension methods for converting to/from SkiaSharp and Xamarin.Forms types. Currently available for iOS, Android, UWP, macOS (preview) and Tizen (preview).

Changes

  • Fixed an issue where .NET Standard assemblies were being referenced instead of the platform specific assemblies

Links

NuGet | Changelog

HarfBuzzSharp

A library for text shaping, which is the process of converting Unicode text to glyph indices and positions.

Changes

  • Fixed an issue when marshaling strings

Links

NuGet | Changelog

SkiaSharp.HarfBuzz (preview)

Support for text shaping using the HarfBuzz text shaping library. This package adds the SKShaper type that can shape a string, returning the codepoints and their positions.

This package also adds some extension methods to SKCanvas to make drawing shaped text easier. These methods include DrawShapedText and it's overloads.

Changes

  • None

Links

NuGet | Changelog

Additional Platforms

Linux

Because we love everyone in the Linux world just as well as the Microsoft and the Xamarin worlds, we have also included some pre-built Linux native binaries in a new, separate package (see #312):

SkiaSharp.NativeAssets.Linux

If you happen to be on an environment that does not have the ability to install any of the required dependencies, such as FontConfig, you can also try out the build that does not have any dependencies other that the core system libraries:

SkiaSharp.NativeAssets.Linux.NoDependencies

At the current time, it just contains a Ubuntu 16.04 amd64 build that should work on most Debian-based Linux distributions. More builds can be requested by leaving a comment on #453.

If a specific platform is required, you can easily build your own binaries by following this guide.

Windows Nano Server

We know the .NET Core containers are very cool to use, so we now have support for using the default Windows .NET Core Docker images (see #676):

SkiaSharp.NativeAssets.NanoServer

It is not quite perfect just yet, so the app project needs a little help (see https://github.com/NuGet/Home/issues/8894):

<PackageReference Include="SkiaSharp" ExcludeAssets="native" />
<PackageReference Include="SkiaSharp.NativeAssets.NanoServer" />

Samples

There are a large set of samples that show many different features of SkiaSharp. They are broken up into two main groups:

  • Basic - these are minimal samples that show just what is needed to use SkiaSharp
  • Gallery - these are comprehensive samples that show off new, or exciting features of SkiaSharp

All the samples that have been built and tested for this version of SkiaSharp can be downloaded in the "Assets" links.

SkiaSharp - Version 1.68.1.1 (Preview Build 9)

Published by mattleibow almost 5 years ago