Table of Contents

API diff: SkiaSharp.dll

SkiaSharp.dll

Assembly Version Changed: 1.60.0.0 vs 1.59.0.0

Namespace SkiaSharp

Type Changed: SkiaSharp.GRContext

Removed method:

[Obsolete ("Use Flush() instead.")]
public void Flush (GRContextFlushBits flagsBitfield);

Type Changed: SkiaSharp.GRContextOptions

Removed properties:

public int MaxOpCombineLookahead { get; set; }
public int MaxOpCombineLookback { get; set; }

Added properties:

public float GlyphCacheTextureMaximumBytes { get; set; }
public bool WireframeMode { get; set; }

Type Changed: SkiaSharp.GRContextOptionsGpuPathRenderers

Removed values:

DistanceField = 128,
Pls = 64,

Modified fields:

-All = 1023
+All = 511
-Default = 512
+Default = 256
-Tessellating = 256
+Tessellating = 128

Added value:

Small = 64,

Type Changed: SkiaSharp.GRGlInterface

Removed method:

[Obsolete ("Use CreateNativeGlInterface() or CreateDefaultInterface() instead.")]
public static GRGlInterface CreateNativeInterface ();

Type Changed: SkiaSharp.GRPixelConfig

Removed value:

Etc1 = 9,

Added value:

Rgba8888SInt = 9,

Type Changed: SkiaSharp.GRSurfaceOrigin

Modified fields:

-BottomLeft = 1
+BottomLeft = 2
-TopLeft = 0
+TopLeft = 1

Type Changed: SkiaSharp.SKBitmap

Removed methods:

[Obsolete ("Use SKPixmap.ReadPixels instead.")]
public bool CopyPixelsTo (IntPtr dst, int dstSize, int dstRowBytes, bool preserveDstPad);
public void LockPixels ();
public void UnlockPixels ();

Type Changed: SkiaSharp.SKCanvas

Removed properties:

[Obsolete ("Use LocalClipBounds instead.")]
public SKRect ClipBounds { get; }

[Obsolete ("Use DeviceClipBounds instead.")]
public SKRectI ClipDeviceBounds { get; }

Removed methods:

[Obsolete ("Use ClipPath(SKPath, SKClipOperation, bool) instead.")]
public void ClipPath (SKPath path, SKRegionOperation operation, bool antialias);

[Obsolete ("Use ClipRect(SKRect, SKClipOperation, bool) instead.")]
public void ClipRect (SKRect rect, SKRegionOperation operation, bool antialias);

[Obsolete ("Use DrawColor(SKColor, SKBlendMode) instead.")]
public void DrawColor (SKColor color, SKXferMode mode);

[Obsolete ("Use DrawPositionedText instead.")]
public void DrawText (string text, SKPoint[] points, SKPaint paint);

[Obsolete ("Use DrawPositionedText instead.")]
public void DrawText (IntPtr buffer, int length, SKPoint[] points, SKPaint paint);

[Obsolete ("Use DrawTextOnPath instead.")]
public void DrawText (byte[] text, SKPath path, float hOffset, float vOffset, SKPaint paint);

[Obsolete ("Use DrawTextOnPath instead.")]
public void DrawText (string text, SKPath path, float hOffset, float vOffset, SKPaint paint);

[Obsolete ("Use DrawTextOnPath instead.")]
public void DrawText (IntPtr buffer, int length, SKPath path, float hOffset, float vOffset, SKPaint paint);

[Obsolete ("Use GetLocalClipBounds instead.")]
public bool GetClipBounds (ref SKRect bounds);

[Obsolete ("Use GetDeviceClipBounds instead.")]
public bool GetClipDeviceBounds (ref SKRectI bounds);

Added methods:

public void DrawBitmap (SKBitmap bitmap, SKPoint p, SKPaint paint);
public void DrawCircle (SKPoint c, float radius, SKPaint paint);
public void DrawImage (SKImage image, SKPoint p, SKPaint paint);
public void DrawLine (SKPoint p0, SKPoint p1, SKPaint paint);
public void DrawOval (SKPoint c, SKSize r, SKPaint paint);
public void DrawPicture (SKPicture picture, SKPoint p, SKPaint paint);
public void DrawPicture (SKPicture picture, float x, float y, SKPaint paint);
public void DrawPoint (SKPoint p, SKColor color);
public void DrawPoint (SKPoint p, SKPaint paint);
public void DrawRect (float x, float y, float w, float h, SKPaint paint);
public void DrawRoundRect (SKRect rect, SKSize r, SKPaint paint);
public void DrawRoundRect (float x, float y, float w, float h, float rx, float ry, SKPaint paint);
public void DrawSurface (SKSurface surface, SKPoint p, SKPaint paint);
public void DrawText (byte[] text, SKPoint p, SKPaint paint);
public void DrawText (string text, SKPoint p, SKPaint paint);
public void DrawText (IntPtr buffer, int length, SKPoint p, SKPaint paint);
public void DrawTextOnPath (byte[] text, SKPath path, SKPoint offset, SKPaint paint);
public void DrawTextOnPath (string text, SKPath path, SKPoint offset, SKPaint paint);
public void DrawTextOnPath (IntPtr buffer, int length, SKPath path, SKPoint offset, SKPaint paint);

Type Changed: SkiaSharp.SKColorFilter

Removed methods:

[Obsolete ("Use CreateBlendMode(SKColor, SKBlendMode) instead.")]
public static SKColorFilter CreateBlendMode (SKColor c, SKXferMode mode);

[Obsolete ("Use CreateBlendMode(SKColor, SKBlendMode) instead.")]
public static SKColorFilter CreateXferMode (SKColor c, SKXferMode mode);

Type Changed: SkiaSharp.SKColorSpace

Removed methods:

[Obsolete ("Use SKColorSpacePrimaries.ToXyzD50 instead.")]
public static SKMatrix44 ConvertPrimariesToXyzD50 (SKColorSpacePrimaries primaries);

[Obsolete ("Use SKColorSpacePrimaries.ToXyzD50(SKMatrix44) instead.")]
public static bool ConvertPrimariesToXyzD50 (SKColorSpacePrimaries primaries, SKMatrix44 toXyzD50);

Type Changed: SkiaSharp.SKData

Removed constructors:

[Obsolete ("Use SKData.Empty instead.")]
public SKData ();

[Obsolete ("Use SKData.CreateCopy(byte[]) instead.")]
public SKData (byte[] bytes);

[Obsolete ("Use SKData.CreateCopy(byte[], ulong) instead.")]
public SKData (byte[] bytes, ulong length);

[Obsolete ("Use SKData.CreateCopy(IntPtr, ulong) instead.")]
public SKData (IntPtr bytes, ulong length);

Removed method:

[Obsolete ("Not supported.")]
public static SKData FromMallocMemory (IntPtr bytes, ulong length);

Type Changed: SkiaSharp.SKDocument

Obsoleted methods:

 [Obsolete ("Use CreatePdf(SKWStream, float) instead.")]
 public static SKDocument CreatePdf (string path, float dpi);
 [Obsolete ("Use CreateXps(SKWStream, float) instead.")]
 public static SKDocument CreateXps (string path, float dpi);

Type Changed: SkiaSharp.SKDynamicMemoryWStream

Removed method:

public void CopyTo (SKWStream dst);

Added method:

public bool CopyTo (SKWStream dst);

Type Changed: SkiaSharp.SKFileStream

Added methods:

public static bool IsPathSupported (string path);
public static SKStreamAsset OpenStream (string path);

Type Changed: SkiaSharp.SKFileWStream

Added methods:

public static bool IsPathSupported (string path);
public static SKWStream OpenStream (string path);

Type Changed: SkiaSharp.SKFontStyleWidth

Removed value:

[Obsolete ("Use UltraExpanded instead.")]
UltaExpanded = 9,

Type Changed: SkiaSharp.SKImage

Added property:

public bool IsLazyGenerated { get; }

Removed methods:

[Obsolete ("Use Encode(SKEncodedImageFormat, int) instead.")]
public SKData Encode (SKImageEncodeFormat format, int quality);

[Obsolete ("Use FromEncodedData instead.")]
public static SKImage FromData (SKData data);

[Obsolete ("Use FromEncodedData instead.")]
public static SKImage FromData (SKData data, SKRectI subset);

Added methods:

public SKData Encode (SKPixelSerializer serializer);
public static SKImage FromAdoptedTexture (GRContext context, GRGlBackendTextureDesc desc);
public static SKImage FromAdoptedTexture (GRContext context, GRGlBackendTextureDesc desc, SKAlphaType alpha);
public static SKImage FromTexture (GRContext context, GRGlBackendTextureDesc desc);
public static SKImage FromTexture (GRContext context, GRGlBackendTextureDesc desc, SKAlphaType alpha);
public static SKImage FromTexture (GRContext context, GRGlBackendTextureDesc desc, SKAlphaType alpha, SKImageTextureReleaseDelegate releaseProc);
public static SKImage FromTexture (GRContext context, GRGlBackendTextureDesc desc, SKAlphaType alpha, SKImageTextureReleaseDelegate releaseProc, object releaseContext);

Type Changed: SkiaSharp.SKImageFilter

Removed method:

[Obsolete ("Use CreateDisplacementMapEffect instead.")]
public static SKImageFilter CreateCompose (SKDisplacementMapEffectChannelSelectorType xChannelSelector, SKDisplacementMapEffectChannelSelectorType yChannelSelector, float scale, SKImageFilter displacement, SKImageFilter input, SKImageFilter.CropRect cropRect);

Type Changed: SkiaSharp.SKImageInfo

Added methods:

public SKImageInfo WithAlphaType (SKAlphaType newAlphaType);
public SKImageInfo WithColorSpace (SKColorSpace newColorSpace);
public SKImageInfo WithColorType (SKColorType newColorType);

Type Changed: SkiaSharp.SKManagedStream

Modified base type:

-SkiaSharp.SKStreamAsset
+SkiaSharp.SKAbstractManagedStream

Added methods:

protected override IntPtr OnCreateNew ();
protected override IntPtr OnGetLength ();
protected override IntPtr OnGetPosition ();
protected override bool OnHasLength ();
protected override bool OnHasPosition ();
protected override bool OnIsAtEnd ();
protected override bool OnMove (int offset);
protected override IntPtr OnPeek (IntPtr buffer, IntPtr size);
protected override IntPtr OnRead (IntPtr buffer, IntPtr size);
protected override bool OnRewind ();
protected override bool OnSeek (IntPtr position);

Type Changed: SkiaSharp.SKManagedWStream

Modified base type:

-SkiaSharp.SKWStream
+SkiaSharp.SKAbstractManagedWStream

Added methods:

protected override IntPtr OnBytesWritten ();
protected override void OnFlush ();
protected override bool OnWrite (IntPtr buffer, IntPtr size);

Type Changed: SkiaSharp.SKMatrix

Removed method:

[Obsolete ("Use MapPoint instead.")]
public SKPoint MapXY (float x, float y);

Type Changed: SkiaSharp.SKPaint

Removed property:

[Obsolete ("Use BlendMode instead.")]
public SKXferMode XferMode { get; set; }

Added methods:

public long BreakText (byte[] text, float maxWidth);
public long BreakText (IntPtr buffer, IntPtr length, float maxWidth);
public long BreakText (string text, float maxWidth, out float measuredWidth, out string measuredText);

Type Changed: SkiaSharp.SKPath

Removed methods:

[Obsolete ("Use AddPath(SKPath, SKPathAddMode) instead.")]
public void AddPath (SKPath other, SKPath.AddMode mode);

[Obsolete ("Use AddPath(SKPath, ref SKMatrix, SKPathAddMode) instead.")]
public void AddPath (SKPath other, ref SKMatrix matrix, SKPath.AddMode mode);

[Obsolete ("Use AddPath(SKPath, float, float, SKPathAddMode) instead.")]
public void AddPath (SKPath other, float dx, float dy, SKPath.AddMode mode);

Type Changed: SkiaSharp.SKPathEffect

Removed method:

[Obsolete ("Use Create1DPath(SKPath, float, float, SKPath1DPathEffectStyle) instead.")]
public static SKPathEffect Create1DPath (SKPath path, float advance, float phase, SkPath1DPathEffectStyle style);

Type Changed: SkiaSharp.SKPathMeasure

Removed method:

[Obsolete ("Use GetMatrix(float, out SKMatrix, SKPathMeasureMatrixFlags) instead.")]
public bool GetMatrix (float distance, out SKMatrix matrix, SKPathMeasure.MatrixFlags flags);

Type Changed: SkiaSharp.SKPicture

Removed property:

[Obsolete ("Use CullRect instead.")]
public SKRect Bounds { get; }

Type Changed: SkiaSharp.SKPixmap

Added methods:

public SKPixmap WithAlphaType (SKAlphaType newAlphaType);
public SKPixmap WithColorSpace (SKColorSpace newColorSpace);
public SKPixmap WithColorType (SKColorType newColorType);

Type Changed: SkiaSharp.SKShader

Removed method:

[Obsolete ("Use CreateCompose(SKShader, SKShader, SKBlendMode) instead.")]
public static SKShader CreateCompose (SKShader shaderA, SKShader shaderB, SKXferMode mode);

Type Changed: SkiaSharp.SKStream

Added method:

public int Peek (IntPtr buffer, int size);

Type Changed: SkiaSharp.SKStrokeJoin

Removed value:

[Obsolete ("Use SKStrokeJoin.Miter instead.")]
Mitter = 0,

Type Changed: SkiaSharp.SKSurface

Added methods:

public static SKSurface Create (GRContext context, GRGlBackendTextureDesc desc);
public static SKSurface Create (GRContext context, GRGlBackendTextureDesc desc, SKSurfaceProps props);
public static SKSurface CreateAsRenderTarget (GRContext context, GRGlBackendTextureDesc desc);
public static SKSurface CreateAsRenderTarget (GRContext context, GRGlBackendTextureDesc desc, SKSurfaceProps props);

Type Changed: SkiaSharp.StringUtilities

Added method:

public static string GetString (byte[] data, int index, int count, SKTextEncoding encoding);

Removed Type SkiaSharp.SKAutoLockPixels

New Type: SkiaSharp.GRGlBackendTextureDesc

public struct GRGlBackendTextureDesc {
	// properties
	public GRPixelConfig Config { get; set; }
	public GRBackendTextureDescFlags Flags { get; set; }
	public int Height { get; set; }
	public GRSurfaceOrigin Origin { get; set; }
	public int SampleCount { get; set; }
	public GRGlTextureInfo TextureHandle { get; set; }
	public int Width { get; set; }
}

New Type: SkiaSharp.GRGlTextureInfo

public struct GRGlTextureInfo {
	// properties
	public uint Id { get; set; }
	public uint Target { get; set; }
}

New Type: SkiaSharp.SKAbstractManagedStream

public abstract class SKAbstractManagedStream : SkiaSharp.SKStreamAsset, System.IDisposable {
	// constructors
	protected SKAbstractManagedStream ();
	protected SKAbstractManagedStream (bool owns);
	// methods
	protected override void Dispose (bool disposing);
	protected virtual IntPtr OnCreateNew ();
	protected virtual IntPtr OnGetLength ();
	protected virtual IntPtr OnGetPosition ();
	protected virtual bool OnHasLength ();
	protected virtual bool OnHasPosition ();
	protected virtual bool OnIsAtEnd ();
	protected virtual bool OnMove (int offset);
	protected virtual IntPtr OnPeek (IntPtr buffer, IntPtr size);
	protected virtual IntPtr OnRead (IntPtr buffer, IntPtr size);
	protected virtual bool OnRewind ();
	protected virtual bool OnSeek (IntPtr position);
}

New Type: SkiaSharp.SKAbstractManagedWStream

public abstract class SKAbstractManagedWStream : SkiaSharp.SKWStream, System.IDisposable {
	// constructors
	protected SKAbstractManagedWStream ();
	protected SKAbstractManagedWStream (bool owns);
	// methods
	protected override void Dispose (bool disposing);
	protected virtual IntPtr OnBytesWritten ();
	protected virtual void OnFlush ();
	protected virtual bool OnWrite (IntPtr buffer, IntPtr size);
}

New Type: SkiaSharp.SKFrontBufferedManagedStream

public class SKFrontBufferedManagedStream : SkiaSharp.SKAbstractManagedStream, System.IDisposable {
	// constructors
	public SKFrontBufferedManagedStream (SKStream nativeStream, int bufferSize);
	public SKFrontBufferedManagedStream (System.IO.Stream managedStream, int bufferSize);
	public SKFrontBufferedManagedStream (SKStream nativeStream, int bufferSize, bool disposeUnderlyingStream);
	public SKFrontBufferedManagedStream (System.IO.Stream managedStream, int bufferSize, bool disposeUnderlyingStream);
	// methods
	protected override void Dispose (bool disposing);
	protected override IntPtr OnCreateNew ();
	protected override IntPtr OnGetLength ();
	protected override IntPtr OnGetPosition ();
	protected override bool OnHasLength ();
	protected override bool OnHasPosition ();
	protected override bool OnIsAtEnd ();
	protected override bool OnMove (int offset);
	protected override IntPtr OnPeek (IntPtr buffer, IntPtr size);
	protected override IntPtr OnRead (IntPtr buffer, IntPtr size);
	protected override bool OnRewind ();
	protected override bool OnSeek (IntPtr position);
}

New Type: SkiaSharp.SKManagedPixelSerializer

public abstract class SKManagedPixelSerializer : SkiaSharp.SKPixelSerializer, System.IDisposable {
	// constructors
	public SKManagedPixelSerializer ();
	// methods
	protected virtual SKData OnEncode (SKPixmap pixmap);
	protected virtual bool OnUseEncodedData (IntPtr data, IntPtr length);
}

New Type: SkiaSharp.SKPixelSerializer

public class SKPixelSerializer : SkiaSharp.SKObject, System.IDisposable {
	// methods
	public static SKPixelSerializer Create (System.Func<SKPixmap,SkiaSharp.SKData> onEncode);
	public static SKPixelSerializer Create (System.Func<System.IntPtr,System.IntPtr,System.Boolean> onUseEncodedData, System.Func<SKPixmap,SkiaSharp.SKData> onEncode);
	protected override void Dispose (bool disposing);
	public SKData Encode (SKPixmap pixmap);
	public bool UseEncodedData (IntPtr data, ulong length);
}

New Type: SkiaSharp.SKSwizzle

public static class SKSwizzle {
	// methods
	public static void SwapRedBlue (IntPtr pixels, int count);
	public static void SwapRedBlue (IntPtr dest, IntPtr src, int count);
}