This commit is contained in:
Matthew Leibowitz 2021-10-14 07:13:23 +02:00 коммит произвёл GitHub
Родитель 105f902818
Коммит 95c296bd9e
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
12 изменённых файлов: 410 добавлений и 139 удалений

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

@ -3,7 +3,7 @@ using System.ComponentModel;
namespace SkiaSharp
{
public unsafe class GRContext : SKObject, ISKReferenceCounted, ISKSkipObjectRegistration
public unsafe class GRContext : GRRecordingContext
{
internal GRContext (IntPtr h, bool owns)
: base (h, owns)
@ -126,7 +126,7 @@ namespace SkiaSharp
//
public GRBackend Backend => SkiaApi.gr_direct_context_get_backend (Handle).FromNative ();
public new GRBackend Backend => base.Backend;
public bool IsAbandoned => SkiaApi.gr_direct_context_is_abandoned (Handle);
@ -175,11 +175,21 @@ namespace SkiaSharp
public void ResetContext (uint state) =>
SkiaApi.gr_direct_context_reset_context (Handle, state);
public void Flush () =>
SkiaApi.gr_direct_context_flush (Handle);
public void Flush () => Flush (true);
public int GetMaxSurfaceSampleCount (SKColorType colorType) =>
SkiaApi.gr_direct_context_get_max_surface_sample_count_for_color_type (Handle, colorType.ToNative ());
public void Flush (bool submit, bool synchronous = false)
{
if (submit)
SkiaApi.gr_direct_context_flush_and_submit (Handle, synchronous);
else
SkiaApi.gr_direct_context_flush (Handle);
}
public void Submit (bool synchronous = false) =>
SkiaApi.gr_direct_context_submit (Handle, synchronous);
public new int GetMaxSurfaceSampleCount (SKColorType colorType) =>
base.GetMaxSurfaceSampleCount (colorType);
[EditorBrowsable (EditorBrowsableState.Never)]
[Obsolete]
@ -200,7 +210,7 @@ namespace SkiaSharp
public void PurgeUnlockedResources (long bytesToPurge, bool preferScratchResources) =>
SkiaApi.gr_direct_context_purge_unlocked_resources_bytes (Handle, (IntPtr)bytesToPurge, preferScratchResources);
internal static GRContext GetObject (IntPtr handle) =>
handle == IntPtr.Zero ? null : new GRContext (handle, true);
internal static new GRContext GetObject (IntPtr handle, bool owns = true) =>
GetOrAddObject (handle, owns, (h, o) => new GRContext (h, o));
}
}

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

@ -0,0 +1,20 @@
using System;
namespace SkiaSharp
{
public unsafe class GRRecordingContext : SKObject, ISKReferenceCounted
{
internal GRRecordingContext (IntPtr h, bool owns)
: base (h, owns)
{
}
public GRBackend Backend => SkiaApi.gr_recording_context_get_backend (Handle).FromNative ();
public int GetMaxSurfaceSampleCount (SKColorType colorType) =>
SkiaApi.gr_recording_context_get_max_surface_sample_count_for_color_type (Handle, colorType.ToNative ());
internal static GRRecordingContext GetObject (IntPtr handle, bool owns = true, bool unrefExisting = true) =>
GetOrAddObject (handle, owns, unrefExisting, (h, o) => new GRRecordingContext (h, o));
}
}

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

@ -72,10 +72,11 @@ namespace SkiaSharp
// DrawColor
public void DrawColor (SKColor color, SKBlendMode mode = SKBlendMode.Src)
{
public void DrawColor (SKColor color, SKBlendMode mode = SKBlendMode.Src) =>
SkiaApi.sk_canvas_draw_color (Handle, (uint)color, mode);
}
public void DrawColor (SKColorF color, SKBlendMode mode = SKBlendMode.Src) =>
SkiaApi.sk_canvas_draw_color4f (Handle, color, mode);
// DrawLine
@ -93,15 +94,14 @@ namespace SkiaSharp
// Clear
public void Clear ()
{
DrawColor (SKColors.Empty, SKBlendMode.Src);
}
public void Clear () =>
Clear (SKColors.Empty);
public void Clear (SKColor color)
{
DrawColor (color, SKBlendMode.Src);
}
public void Clear (SKColor color) =>
SkiaApi.sk_canvas_clear (Handle, (uint)color);
public void Clear (SKColorF color) =>
SkiaApi.sk_canvas_clear_color4f (Handle, color);
// Restore*

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

@ -453,7 +453,7 @@ namespace SkiaSharp
: this (SkiaApi.sk_colorspace_icc_profile_new (), true)
{
if (Handle == IntPtr.Zero)
throw new InvalidOperationException ("Unable to create a new SK3dView instance.");
throw new InvalidOperationException ("Unable to create a new SKColorSpaceIccProfile instance.");
}
protected override void DisposeNative () =>

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

@ -319,32 +319,40 @@ namespace SkiaSharp
return FromTexture (context, texture, desc.Origin, desc.Config.ToColorType (), alpha, null, releaseProc, releaseContext);
}
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, SKColorType colorType)
{
return FromTexture (context, texture, GRSurfaceOrigin.BottomLeft, colorType, SKAlphaType.Premul, null, null, null);
}
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, SKColorType colorType) =>
FromTexture ((GRRecordingContext)context, texture, colorType);
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType)
{
return FromTexture (context, texture, origin, colorType, SKAlphaType.Premul, null, null, null);
}
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType) =>
FromTexture ((GRRecordingContext)context, texture, origin, colorType);
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha)
{
return FromTexture (context, texture, origin, colorType, alpha, null, null, null);
}
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha) =>
FromTexture ((GRRecordingContext)context, texture, origin, colorType, alpha);
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace)
{
return FromTexture (context, texture, origin, colorType, alpha, colorspace, null, null);
}
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace) =>
FromTexture ((GRRecordingContext)context, texture, origin, colorType, alpha, colorspace);
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace, SKImageTextureReleaseDelegate releaseProc)
{
return FromTexture (context, texture, origin, colorType, alpha, colorspace, releaseProc, null);
}
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace, SKImageTextureReleaseDelegate releaseProc) =>
FromTexture ((GRRecordingContext)context, texture, origin, colorType, alpha, colorspace, releaseProc);
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace, SKImageTextureReleaseDelegate releaseProc, object releaseContext)
public static SKImage FromTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace, SKImageTextureReleaseDelegate releaseProc, object releaseContext) =>
FromTexture ((GRRecordingContext)context, texture, origin, colorType, alpha, colorspace, releaseProc, releaseContext);
public static SKImage FromTexture (GRRecordingContext context, GRBackendTexture texture, SKColorType colorType) =>
FromTexture (context, texture, GRSurfaceOrigin.BottomLeft, colorType, SKAlphaType.Premul, null, null, null);
public static SKImage FromTexture (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType) =>
FromTexture (context, texture, origin, colorType, SKAlphaType.Premul, null, null, null);
public static SKImage FromTexture (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha) =>
FromTexture (context, texture, origin, colorType, alpha, null, null, null);
public static SKImage FromTexture (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace) =>
FromTexture (context, texture, origin, colorType, alpha, colorspace, null, null);
public static SKImage FromTexture (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace, SKImageTextureReleaseDelegate releaseProc) =>
FromTexture (context, texture, origin, colorType, alpha, colorspace, releaseProc, null);
public static SKImage FromTexture (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace, SKImageTextureReleaseDelegate releaseProc, object releaseContext)
{
if (context == null)
throw new ArgumentNullException (nameof (context));
@ -389,22 +397,28 @@ namespace SkiaSharp
return FromAdoptedTexture (context, texture, desc.Origin, desc.Config.ToColorType (), alpha, null);
}
public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, SKColorType colorType)
{
return FromAdoptedTexture (context, texture, GRSurfaceOrigin.BottomLeft, colorType, SKAlphaType.Premul, null);
}
public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, SKColorType colorType) =>
FromAdoptedTexture ((GRRecordingContext)context, texture, colorType);
public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType)
{
return FromAdoptedTexture (context, texture, origin, colorType, SKAlphaType.Premul, null);
}
public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType) =>
FromAdoptedTexture ((GRRecordingContext)context, texture, origin, colorType);
public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha)
{
return FromAdoptedTexture (context, texture, origin, colorType, alpha, null);
}
public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha) =>
FromAdoptedTexture ((GRRecordingContext)context, texture, origin, colorType, alpha);
public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace)
public static SKImage FromAdoptedTexture (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace) =>
FromAdoptedTexture ((GRRecordingContext)context, texture, origin, colorType, alpha, colorspace);
public static SKImage FromAdoptedTexture (GRRecordingContext context, GRBackendTexture texture, SKColorType colorType) =>
FromAdoptedTexture (context, texture, GRSurfaceOrigin.BottomLeft, colorType, SKAlphaType.Premul, null);
public static SKImage FromAdoptedTexture (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType) =>
FromAdoptedTexture (context, texture, origin, colorType, SKAlphaType.Premul, null);
public static SKImage FromAdoptedTexture (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha) =>
FromAdoptedTexture (context, texture, origin, colorType, alpha, null);
public static SKImage FromAdoptedTexture (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace)
{
if (context == null)
throw new ArgumentNullException (nameof (context));
@ -555,6 +569,9 @@ namespace SkiaSharp
SkiaApi.sk_image_is_lazy_generated (Handle);
public bool IsValid (GRContext context) =>
IsValid ((GRRecordingContext)context);
public bool IsValid (GRRecordingContext context) =>
SkiaApi.sk_image_is_valid (Handle, context?.Handle ?? IntPtr.Zero);
// ReadPixels
@ -661,7 +678,10 @@ namespace SkiaSharp
}
}
public SKImage ApplyImageFilter (GRContext context, SKImageFilter filter, SKRectI subset, SKRectI clipBounds, out SKRectI outSubset, out SKPointI outOffset)
public SKImage ApplyImageFilter (GRContext context, SKImageFilter filter, SKRectI subset, SKRectI clipBounds, out SKRectI outSubset, out SKPointI outOffset) =>
ApplyImageFilter ((GRRecordingContext)context, filter, subset, clipBounds, out outSubset, out outOffset);
public SKImage ApplyImageFilter (GRRecordingContext context, SKImageFilter filter, SKRectI subset, SKRectI clipBounds, out SKRectI outSubset, out SKPointI outOffset)
{
if (filter == null)
throw new ArgumentNullException (nameof (filter));

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

@ -249,14 +249,20 @@ namespace SkiaSharp
// CreateDilate
public static SKImageFilter CreateDilate(int radiusX, int radiusY, SKImageFilter input = null, SKImageFilter.CropRect cropRect = null)
public static SKImageFilter CreateDilate(int radiusX, int radiusY, SKImageFilter input = null, SKImageFilter.CropRect cropRect = null) =>
CreateDilate ((float)radiusX, (float)radiusY, input, cropRect);
public static SKImageFilter CreateDilate(float radiusX, float radiusY, SKImageFilter input = null, SKImageFilter.CropRect cropRect = null)
{
return GetObject(SkiaApi.sk_imagefilter_new_dilate(radiusX, radiusY, input == null ? IntPtr.Zero : input.Handle, cropRect == null ? IntPtr.Zero : cropRect.Handle));
}
// CreateErode
public static SKImageFilter CreateErode(int radiusX, int radiusY, SKImageFilter input = null, SKImageFilter.CropRect cropRect = null)
public static SKImageFilter CreateErode(int radiusX, int radiusY, SKImageFilter input = null, SKImageFilter.CropRect cropRect = null) =>
CreateErode ((float)radiusX, (float)radiusY, input, cropRect);
public static SKImageFilter CreateErode(float radiusX, float radiusY, SKImageFilter input = null, SKImageFilter.CropRect cropRect = null)
{
return GetObject(SkiaApi.sk_imagefilter_new_erode(radiusX, radiusY, input == null ? IntPtr.Zero : input.Handle, cropRect == null ? IntPtr.Zero : cropRect.Handle));
}

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

@ -393,21 +393,20 @@ namespace SkiaSharp
// Erase
public bool Erase (SKColor color)
{
return Erase (color, Rect);
}
public bool Erase (SKColor color, SKRectI subset)
{
return SkiaApi.sk_pixmap_erase_color (Handle, (uint)color, &subset);
}
public bool Erase (SKColorF color) =>
public bool Erase (SKColor color) =>
Erase (color, Rect);
public bool Erase (SKColor color, SKRectI subset) =>
SkiaApi.sk_pixmap_erase_color (Handle, (uint)color, &subset);
public bool Erase (SKColorF color) =>
Erase (color, null, Rect);
public bool Erase (SKColorF color, SKRectI subset) =>
SkiaApi.sk_pixmap_erase_color4f (Handle, &color, &subset);
Erase (color, null, subset);
public bool Erase (SKColorF color, SKColorSpace colorspace, SKRectI subset) =>
SkiaApi.sk_pixmap_erase_color4f (Handle, &color, colorspace?.Handle ?? IntPtr.Zero, &subset);
// With*

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

@ -123,21 +123,39 @@ namespace SkiaSharp
}
public static SKSurface Create (GRContext context, GRBackendRenderTarget renderTarget, SKColorType colorType) =>
Create (context, renderTarget, GRSurfaceOrigin.BottomLeft, colorType, null, null);
Create ((GRRecordingContext)context, renderTarget, colorType);
public static SKSurface Create (GRContext context, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType) =>
Create (context, renderTarget, origin, colorType, null, null);
Create ((GRRecordingContext)context, renderTarget, origin, colorType);
public static SKSurface Create (GRContext context, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType, SKColorSpace colorspace) =>
Create (context, renderTarget, origin, colorType, colorspace, null);
Create ((GRRecordingContext)context, renderTarget, origin, colorType, colorspace);
public static SKSurface Create (GRContext context, GRBackendRenderTarget renderTarget, SKColorType colorType, SKSurfaceProperties props) =>
Create (context, renderTarget, GRSurfaceOrigin.BottomLeft, colorType, null, props);
Create ((GRRecordingContext)context, renderTarget, colorType, props);
public static SKSurface Create (GRContext context, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType, SKSurfaceProperties props) =>
Create ((GRRecordingContext)context, renderTarget, origin, colorType, props);
public static SKSurface Create (GRContext context, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props) =>
Create ((GRRecordingContext)context, renderTarget, origin, colorType, colorspace, props);
public static SKSurface Create (GRRecordingContext context, GRBackendRenderTarget renderTarget, SKColorType colorType) =>
Create (context, renderTarget, GRSurfaceOrigin.BottomLeft, colorType, null, null);
public static SKSurface Create (GRRecordingContext context, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType) =>
Create (context, renderTarget, origin, colorType, null, null);
public static SKSurface Create (GRRecordingContext context, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType, SKColorSpace colorspace) =>
Create (context, renderTarget, origin, colorType, colorspace, null);
public static SKSurface Create (GRRecordingContext context, GRBackendRenderTarget renderTarget, SKColorType colorType, SKSurfaceProperties props) =>
Create (context, renderTarget, GRSurfaceOrigin.BottomLeft, colorType, null, props);
public static SKSurface Create (GRRecordingContext context, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType, SKSurfaceProperties props) =>
Create (context, renderTarget, origin, colorType, null, props);
public static SKSurface Create (GRContext context, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props)
public static SKSurface Create (GRRecordingContext context, GRBackendRenderTarget renderTarget, GRSurfaceOrigin origin, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props)
{
if (context == null)
throw new ArgumentNullException (nameof (context));
@ -170,27 +188,51 @@ namespace SkiaSharp
Create (context, new GRBackendTexture (desc), desc.Origin, desc.SampleCount, desc.Config.ToColorType (), null, new SKSurfaceProperties (props));
public static SKSurface Create (GRContext context, GRBackendTexture texture, SKColorType colorType) =>
Create (context, texture, GRSurfaceOrigin.BottomLeft, 0, colorType, null, null);
Create ((GRRecordingContext)context, texture, colorType);
public static SKSurface Create (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType) =>
Create (context, texture, origin, 0, colorType, null, null);
Create ((GRRecordingContext)context, texture, origin, colorType);
public static SKSurface Create (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType) =>
Create (context, texture, origin, sampleCount, colorType, null, null);
Create ((GRRecordingContext)context, texture, origin, sampleCount, colorType);
public static SKSurface Create (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace) =>
Create (context, texture, origin, sampleCount, colorType, colorspace, null);
Create ((GRRecordingContext)context, texture, origin, sampleCount, colorType, colorspace);
public static SKSurface Create (GRContext context, GRBackendTexture texture, SKColorType colorType, SKSurfaceProperties props) =>
Create (context, texture, GRSurfaceOrigin.BottomLeft, 0, colorType, null, props);
Create ((GRRecordingContext)context, texture, colorType, props);
public static SKSurface Create (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKSurfaceProperties props) =>
Create (context, texture, origin, 0, colorType, null, props);
Create ((GRRecordingContext)context, texture, origin, colorType, props);
public static SKSurface Create (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKSurfaceProperties props) =>
Create ((GRRecordingContext)context, texture, origin, sampleCount, colorType, props);
public static SKSurface Create (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props) =>
Create ((GRRecordingContext)context, texture, origin, sampleCount, colorType, colorspace, props);
public static SKSurface Create (GRRecordingContext context, GRBackendTexture texture, SKColorType colorType) =>
Create (context, texture, GRSurfaceOrigin.BottomLeft, 0, colorType, null, null);
public static SKSurface Create (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType) =>
Create (context, texture, origin, 0, colorType, null, null);
public static SKSurface Create (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType) =>
Create (context, texture, origin, sampleCount, colorType, null, null);
public static SKSurface Create (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace) =>
Create (context, texture, origin, sampleCount, colorType, colorspace, null);
public static SKSurface Create (GRRecordingContext context, GRBackendTexture texture, SKColorType colorType, SKSurfaceProperties props) =>
Create (context, texture, GRSurfaceOrigin.BottomLeft, 0, colorType, null, props);
public static SKSurface Create (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKSurfaceProperties props) =>
Create (context, texture, origin, 0, colorType, null, props);
public static SKSurface Create (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKSurfaceProperties props) =>
Create (context, texture, origin, sampleCount, colorType, null, props);
public static SKSurface Create (GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props)
public static SKSurface Create (GRRecordingContext context, GRBackendTexture texture, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props)
{
if (context == null)
throw new ArgumentNullException (nameof (context));
@ -270,21 +312,39 @@ namespace SkiaSharp
Create (context, budgeted, info, sampleCount, GRSurfaceOrigin.BottomLeft, new SKSurfaceProperties (props), false);
public static SKSurface Create (GRContext context, bool budgeted, SKImageInfo info) =>
Create (context, budgeted, info, 0, GRSurfaceOrigin.BottomLeft, null, false);
Create ((GRRecordingContext)context, budgeted, info);
public static SKSurface Create (GRContext context, bool budgeted, SKImageInfo info, int sampleCount) =>
Create (context, budgeted, info, sampleCount, GRSurfaceOrigin.BottomLeft, null, false);
Create ((GRRecordingContext)context, budgeted, info, sampleCount);
public static SKSurface Create (GRContext context, bool budgeted, SKImageInfo info, int sampleCount, GRSurfaceOrigin origin) =>
Create (context, budgeted, info, sampleCount, origin, null, false);
Create ((GRRecordingContext)context, budgeted, info, sampleCount, origin);
public static SKSurface Create (GRContext context, bool budgeted, SKImageInfo info, SKSurfaceProperties props) =>
Create (context, budgeted, info, 0, GRSurfaceOrigin.BottomLeft, props, false);
Create ((GRRecordingContext)context, budgeted, info, props);
public static SKSurface Create (GRContext context, bool budgeted, SKImageInfo info, int sampleCount, SKSurfaceProperties props) =>
Create ((GRRecordingContext)context, budgeted, info, sampleCount, props);
public static SKSurface Create (GRContext context, bool budgeted, SKImageInfo info, int sampleCount, GRSurfaceOrigin origin, SKSurfaceProperties props, bool shouldCreateWithMips) =>
Create ((GRRecordingContext)context, budgeted, info, sampleCount, origin, props, false);
public static SKSurface Create (GRRecordingContext context, bool budgeted, SKImageInfo info) =>
Create (context, budgeted, info, 0, GRSurfaceOrigin.BottomLeft, null, false);
public static SKSurface Create (GRRecordingContext context, bool budgeted, SKImageInfo info, int sampleCount) =>
Create (context, budgeted, info, sampleCount, GRSurfaceOrigin.BottomLeft, null, false);
public static SKSurface Create (GRRecordingContext context, bool budgeted, SKImageInfo info, int sampleCount, GRSurfaceOrigin origin) =>
Create (context, budgeted, info, sampleCount, origin, null, false);
public static SKSurface Create (GRRecordingContext context, bool budgeted, SKImageInfo info, SKSurfaceProperties props) =>
Create (context, budgeted, info, 0, GRSurfaceOrigin.BottomLeft, props, false);
public static SKSurface Create (GRRecordingContext context, bool budgeted, SKImageInfo info, int sampleCount, SKSurfaceProperties props) =>
Create (context, budgeted, info, sampleCount, GRSurfaceOrigin.BottomLeft, props, false);
public static SKSurface Create (GRContext context, bool budgeted, SKImageInfo info, int sampleCount, GRSurfaceOrigin origin, SKSurfaceProperties props, bool shouldCreateWithMips)
public static SKSurface Create (GRRecordingContext context, bool budgeted, SKImageInfo info, int sampleCount, GRSurfaceOrigin origin, SKSurfaceProperties props, bool shouldCreateWithMips)
{
if (context == null)
throw new ArgumentNullException (nameof (context));
@ -296,12 +356,21 @@ namespace SkiaSharp
#if __MACOS__ || __IOS__
public static SKSurface Create (GRContext context, CoreAnimation.CAMetalLayer layer, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, out CoreAnimation.ICAMetalDrawable drawable) =>
Create (context, layer, origin, sampleCount, colorType, null, null, out drawable);
Create ((GRRecordingContext)context, layer, origin, sampleCount, colorType, out drawable);
public static SKSurface Create (GRContext context, CoreAnimation.CAMetalLayer layer, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace, out CoreAnimation.ICAMetalDrawable drawable) =>
Create ((GRRecordingContext)context, layer, origin, sampleCount, colorType, colorspace, out drawable);
public static SKSurface Create (GRContext context, CoreAnimation.CAMetalLayer layer, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props, out CoreAnimation.ICAMetalDrawable drawable) =>
Create ((GRRecordingContext)context, layer, origin, sampleCount, colorType, colorspace, props, out drawable);
public static SKSurface Create (GRRecordingContext context, CoreAnimation.CAMetalLayer layer, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, out CoreAnimation.ICAMetalDrawable drawable) =>
Create (context, layer, origin, sampleCount, colorType, null, null, out drawable);
public static SKSurface Create (GRRecordingContext context, CoreAnimation.CAMetalLayer layer, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace, out CoreAnimation.ICAMetalDrawable drawable) =>
Create (context, layer, origin, sampleCount, colorType, colorspace, null, out drawable);
public static SKSurface Create (GRContext context, CoreAnimation.CAMetalLayer layer, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props, out CoreAnimation.ICAMetalDrawable drawable)
public static SKSurface Create (GRRecordingContext context, CoreAnimation.CAMetalLayer layer, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props, out CoreAnimation.ICAMetalDrawable drawable)
{
void* drawablePtr;
var surface = GetObject (SkiaApi.sk_surface_new_metal_layer (context.Handle, (void*)layer.Handle, origin, sampleCount, colorType.ToNative (), colorspace?.Handle ?? IntPtr.Zero, props?.Handle ?? IntPtr.Zero, &drawablePtr));
@ -309,6 +378,15 @@ namespace SkiaSharp
return surface;
}
public static SKSurface Create (GRRecordingContext context, MetalKit.MTKView view, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType) =>
Create (context, view, origin, sampleCount, colorType, null, null);
public static SKSurface Create (GRRecordingContext context, MetalKit.MTKView view, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace) =>
Create (context, view, origin, sampleCount, colorType, colorspace, null);
public static SKSurface Create (GRRecordingContext context, MetalKit.MTKView view, GRSurfaceOrigin origin, int sampleCount, SKColorType colorType, SKColorSpace colorspace, SKSurfaceProperties props) =>
GetObject (SkiaApi.sk_surface_new_metal_view (context.Handle, (void*)view.Handle, origin, sampleCount, colorType.ToNative (), colorspace?.Handle ?? IntPtr.Zero, props?.Handle ?? IntPtr.Zero));
#endif
// NULL surface
@ -336,6 +414,9 @@ namespace SkiaSharp
public SKSurfaceProperties SurfaceProperties =>
OwnedBy (SKSurfaceProperties.GetObject (SkiaApi.sk_surface_get_props (Handle), false), this);
public GRRecordingContext Context =>
GRRecordingContext.GetObject (SkiaApi.sk_surface_get_recording_context (Handle), false, unrefExisting: false);
public SKImage Snapshot () =>
SKImage.GetObject (SkiaApi.sk_surface_new_image_snapshot (Handle));
@ -381,8 +462,15 @@ namespace SkiaSharp
return result;
}
public void Flush () =>
public void Flush () => Flush (true);
public void Flush (bool submit, bool synchronous = false)
{
if (submit)
SkiaApi.sk_surface_flush_and_submit (Handle, synchronous);
else
SkiaApi.sk_surface_flush (Handle);
}
internal static SKSurface GetObject (IntPtr handle) =>
handle == IntPtr.Zero ? null : new SKSurface (handle, true);

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

@ -440,6 +440,20 @@ namespace SkiaSharp
(gr_direct_context_flush_delegate ??= GetSymbol<Delegates.gr_direct_context_flush> ("gr_direct_context_flush")).Invoke (context);
#endif
// void gr_direct_context_flush_and_submit(gr_direct_context_t* context, bool syncCpu)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern void gr_direct_context_flush_and_submit (gr_direct_context_t context, [MarshalAs (UnmanagedType.I1)] bool syncCpu);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate void gr_direct_context_flush_and_submit (gr_direct_context_t context, [MarshalAs (UnmanagedType.I1)] bool syncCpu);
}
private static Delegates.gr_direct_context_flush_and_submit gr_direct_context_flush_and_submit_delegate;
internal static void gr_direct_context_flush_and_submit (gr_direct_context_t context, [MarshalAs (UnmanagedType.I1)] bool syncCpu) =>
(gr_direct_context_flush_and_submit_delegate ??= GetSymbol<Delegates.gr_direct_context_flush_and_submit> ("gr_direct_context_flush_and_submit")).Invoke (context, syncCpu);
#endif
// void gr_direct_context_free_gpu_resources(gr_direct_context_t* context)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
@ -454,34 +468,6 @@ namespace SkiaSharp
(gr_direct_context_free_gpu_resources_delegate ??= GetSymbol<Delegates.gr_direct_context_free_gpu_resources> ("gr_direct_context_free_gpu_resources")).Invoke (context);
#endif
// gr_backend_t gr_direct_context_get_backend(gr_direct_context_t* context)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern GRBackendNative gr_direct_context_get_backend (gr_direct_context_t context);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate GRBackendNative gr_direct_context_get_backend (gr_direct_context_t context);
}
private static Delegates.gr_direct_context_get_backend gr_direct_context_get_backend_delegate;
internal static GRBackendNative gr_direct_context_get_backend (gr_direct_context_t context) =>
(gr_direct_context_get_backend_delegate ??= GetSymbol<Delegates.gr_direct_context_get_backend> ("gr_direct_context_get_backend")).Invoke (context);
#endif
// int gr_direct_context_get_max_surface_sample_count_for_color_type(gr_direct_context_t* context, sk_colortype_t colorType)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern Int32 gr_direct_context_get_max_surface_sample_count_for_color_type (gr_direct_context_t context, SKColorTypeNative colorType);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate Int32 gr_direct_context_get_max_surface_sample_count_for_color_type (gr_direct_context_t context, SKColorTypeNative colorType);
}
private static Delegates.gr_direct_context_get_max_surface_sample_count_for_color_type gr_direct_context_get_max_surface_sample_count_for_color_type_delegate;
internal static Int32 gr_direct_context_get_max_surface_sample_count_for_color_type (gr_direct_context_t context, SKColorTypeNative colorType) =>
(gr_direct_context_get_max_surface_sample_count_for_color_type_delegate ??= GetSymbol<Delegates.gr_direct_context_get_max_surface_sample_count_for_color_type> ("gr_direct_context_get_max_surface_sample_count_for_color_type")).Invoke (context, colorType);
#endif
// size_t gr_direct_context_get_resource_cache_limit(gr_direct_context_t* context)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
@ -694,18 +680,20 @@ namespace SkiaSharp
(gr_direct_context_set_resource_cache_limit_delegate ??= GetSymbol<Delegates.gr_direct_context_set_resource_cache_limit> ("gr_direct_context_set_resource_cache_limit")).Invoke (context, maxResourceBytes);
#endif
// void gr_direct_context_unref(gr_direct_context_t* context)
// bool gr_direct_context_submit(gr_direct_context_t* context, bool syncCpu)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern void gr_direct_context_unref (gr_direct_context_t context);
[return: MarshalAs (UnmanagedType.I1)]
internal static extern bool gr_direct_context_submit (gr_direct_context_t context, [MarshalAs (UnmanagedType.I1)] bool syncCpu);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate void gr_direct_context_unref (gr_direct_context_t context);
[return: MarshalAs (UnmanagedType.I1)]
internal delegate bool gr_direct_context_submit (gr_direct_context_t context, [MarshalAs (UnmanagedType.I1)] bool syncCpu);
}
private static Delegates.gr_direct_context_unref gr_direct_context_unref_delegate;
internal static void gr_direct_context_unref (gr_direct_context_t context) =>
(gr_direct_context_unref_delegate ??= GetSymbol<Delegates.gr_direct_context_unref> ("gr_direct_context_unref")).Invoke (context);
private static Delegates.gr_direct_context_submit gr_direct_context_submit_delegate;
internal static bool gr_direct_context_submit (gr_direct_context_t context, [MarshalAs (UnmanagedType.I1)] bool syncCpu) =>
(gr_direct_context_submit_delegate ??= GetSymbol<Delegates.gr_direct_context_submit> ("gr_direct_context_submit")).Invoke (context, syncCpu);
#endif
// const gr_glinterface_t* gr_glinterface_assemble_gl_interface(void* ctx, gr_gl_get_proc get)
@ -824,6 +812,48 @@ namespace SkiaSharp
(gr_glinterface_validate_delegate ??= GetSymbol<Delegates.gr_glinterface_validate> ("gr_glinterface_validate")).Invoke (glInterface);
#endif
// gr_backend_t gr_recording_context_get_backend(gr_recording_context_t* context)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern GRBackendNative gr_recording_context_get_backend (gr_recording_context_t context);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate GRBackendNative gr_recording_context_get_backend (gr_recording_context_t context);
}
private static Delegates.gr_recording_context_get_backend gr_recording_context_get_backend_delegate;
internal static GRBackendNative gr_recording_context_get_backend (gr_recording_context_t context) =>
(gr_recording_context_get_backend_delegate ??= GetSymbol<Delegates.gr_recording_context_get_backend> ("gr_recording_context_get_backend")).Invoke (context);
#endif
// int gr_recording_context_get_max_surface_sample_count_for_color_type(gr_recording_context_t* context, sk_colortype_t colorType)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern Int32 gr_recording_context_get_max_surface_sample_count_for_color_type (gr_recording_context_t context, SKColorTypeNative colorType);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate Int32 gr_recording_context_get_max_surface_sample_count_for_color_type (gr_recording_context_t context, SKColorTypeNative colorType);
}
private static Delegates.gr_recording_context_get_max_surface_sample_count_for_color_type gr_recording_context_get_max_surface_sample_count_for_color_type_delegate;
internal static Int32 gr_recording_context_get_max_surface_sample_count_for_color_type (gr_recording_context_t context, SKColorTypeNative colorType) =>
(gr_recording_context_get_max_surface_sample_count_for_color_type_delegate ??= GetSymbol<Delegates.gr_recording_context_get_max_surface_sample_count_for_color_type> ("gr_recording_context_get_max_surface_sample_count_for_color_type")).Invoke (context, colorType);
#endif
// void gr_recording_context_unref(gr_recording_context_t* context)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern void gr_recording_context_unref (gr_recording_context_t context);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate void gr_recording_context_unref (gr_recording_context_t context);
}
private static Delegates.gr_recording_context_unref gr_recording_context_unref_delegate;
internal static void gr_recording_context_unref (gr_recording_context_t context) =>
(gr_recording_context_unref_delegate ??= GetSymbol<Delegates.gr_recording_context_unref> ("gr_recording_context_unref")).Invoke (context);
#endif
// void gr_vk_extensions_delete(gr_vk_extensions_t* extensions)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
@ -1360,6 +1390,20 @@ namespace SkiaSharp
(sk_canvas_clear_delegate ??= GetSymbol<Delegates.sk_canvas_clear> ("sk_canvas_clear")).Invoke (param0, param1);
#endif
// void sk_canvas_clear_color4f(sk_canvas_t*, sk_color4f_t)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern void sk_canvas_clear_color4f (sk_canvas_t param0, SKColorF param1);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate void sk_canvas_clear_color4f (sk_canvas_t param0, SKColorF param1);
}
private static Delegates.sk_canvas_clear_color4f sk_canvas_clear_color4f_delegate;
internal static void sk_canvas_clear_color4f (sk_canvas_t param0, SKColorF param1) =>
(sk_canvas_clear_color4f_delegate ??= GetSymbol<Delegates.sk_canvas_clear_color4f> ("sk_canvas_clear_color4f")).Invoke (param0, param1);
#endif
// void sk_canvas_clip_path_with_operation(sk_canvas_t* t, const sk_path_t* crect, sk_clipop_t op, bool doAA)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
@ -1528,6 +1572,20 @@ namespace SkiaSharp
(sk_canvas_draw_color_delegate ??= GetSymbol<Delegates.sk_canvas_draw_color> ("sk_canvas_draw_color")).Invoke (ccanvas, color, mode);
#endif
// void sk_canvas_draw_color4f(sk_canvas_t* ccanvas, sk_color4f_t color, sk_blendmode_t mode)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern void sk_canvas_draw_color4f (sk_canvas_t ccanvas, SKColorF color, SKBlendMode mode);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate void sk_canvas_draw_color4f (sk_canvas_t ccanvas, SKColorF color, SKBlendMode mode);
}
private static Delegates.sk_canvas_draw_color4f sk_canvas_draw_color4f_delegate;
internal static void sk_canvas_draw_color4f (sk_canvas_t ccanvas, SKColorF color, SKBlendMode mode) =>
(sk_canvas_draw_color4f_delegate ??= GetSymbol<Delegates.sk_canvas_draw_color4f> ("sk_canvas_draw_color4f")).Invoke (ccanvas, color, mode);
#endif
// void sk_canvas_draw_drawable(sk_canvas_t*, sk_drawable_t*, const sk_matrix_t*)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
@ -5400,17 +5458,17 @@ namespace SkiaSharp
(sk_imagefilter_new_compose_delegate ??= GetSymbol<Delegates.sk_imagefilter_new_compose> ("sk_imagefilter_new_compose")).Invoke (outer, inner);
#endif
// sk_imagefilter_t* sk_imagefilter_new_dilate(int radiusX, int radiusY, sk_imagefilter_t* input, const sk_imagefilter_croprect_t* cropRect)
// sk_imagefilter_t* sk_imagefilter_new_dilate(float radiusX, float radiusY, sk_imagefilter_t* input, const sk_imagefilter_croprect_t* cropRect)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern sk_imagefilter_t sk_imagefilter_new_dilate (Int32 radiusX, Int32 radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect);
internal static extern sk_imagefilter_t sk_imagefilter_new_dilate (Single radiusX, Single radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate sk_imagefilter_t sk_imagefilter_new_dilate (Int32 radiusX, Int32 radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect);
internal delegate sk_imagefilter_t sk_imagefilter_new_dilate (Single radiusX, Single radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect);
}
private static Delegates.sk_imagefilter_new_dilate sk_imagefilter_new_dilate_delegate;
internal static sk_imagefilter_t sk_imagefilter_new_dilate (Int32 radiusX, Int32 radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect) =>
internal static sk_imagefilter_t sk_imagefilter_new_dilate (Single radiusX, Single radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect) =>
(sk_imagefilter_new_dilate_delegate ??= GetSymbol<Delegates.sk_imagefilter_new_dilate> ("sk_imagefilter_new_dilate")).Invoke (radiusX, radiusY, input, cropRect);
#endif
@ -5484,17 +5542,17 @@ namespace SkiaSharp
(sk_imagefilter_new_drop_shadow_only_delegate ??= GetSymbol<Delegates.sk_imagefilter_new_drop_shadow_only> ("sk_imagefilter_new_drop_shadow_only")).Invoke (dx, dy, sigmaX, sigmaY, color, input, cropRect);
#endif
// sk_imagefilter_t* sk_imagefilter_new_erode(int radiusX, int radiusY, sk_imagefilter_t* input, const sk_imagefilter_croprect_t* cropRect)
// sk_imagefilter_t* sk_imagefilter_new_erode(float radiusX, float radiusY, sk_imagefilter_t* input, const sk_imagefilter_croprect_t* cropRect)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern sk_imagefilter_t sk_imagefilter_new_erode (Int32 radiusX, Int32 radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect);
internal static extern sk_imagefilter_t sk_imagefilter_new_erode (Single radiusX, Single radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate sk_imagefilter_t sk_imagefilter_new_erode (Int32 radiusX, Int32 radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect);
internal delegate sk_imagefilter_t sk_imagefilter_new_erode (Single radiusX, Single radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect);
}
private static Delegates.sk_imagefilter_new_erode sk_imagefilter_new_erode_delegate;
internal static sk_imagefilter_t sk_imagefilter_new_erode (Int32 radiusX, Int32 radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect) =>
internal static sk_imagefilter_t sk_imagefilter_new_erode (Single radiusX, Single radiusY, sk_imagefilter_t input, sk_imagefilter_croprect_t cropRect) =>
(sk_imagefilter_new_erode_delegate ??= GetSymbol<Delegates.sk_imagefilter_new_erode> ("sk_imagefilter_new_erode")).Invoke (radiusX, radiusY, input, cropRect);
#endif
@ -9074,20 +9132,20 @@ namespace SkiaSharp
(sk_pixmap_erase_color_delegate ??= GetSymbol<Delegates.sk_pixmap_erase_color> ("sk_pixmap_erase_color")).Invoke (cpixmap, color, subset);
#endif
// bool sk_pixmap_erase_color4f(const sk_pixmap_t* cpixmap, const sk_color4f_t* color, const sk_irect_t* subset)
// bool sk_pixmap_erase_color4f(const sk_pixmap_t* cpixmap, const sk_color4f_t* color, sk_colorspace_t* colorspace, const sk_irect_t* subset)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs (UnmanagedType.I1)]
internal static extern bool sk_pixmap_erase_color4f (sk_pixmap_t cpixmap, SKColorF* color, SKRectI* subset);
internal static extern bool sk_pixmap_erase_color4f (sk_pixmap_t cpixmap, SKColorF* color, sk_colorspace_t colorspace, SKRectI* subset);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
[return: MarshalAs (UnmanagedType.I1)]
internal delegate bool sk_pixmap_erase_color4f (sk_pixmap_t cpixmap, SKColorF* color, SKRectI* subset);
internal delegate bool sk_pixmap_erase_color4f (sk_pixmap_t cpixmap, SKColorF* color, sk_colorspace_t colorspace, SKRectI* subset);
}
private static Delegates.sk_pixmap_erase_color4f sk_pixmap_erase_color4f_delegate;
internal static bool sk_pixmap_erase_color4f (sk_pixmap_t cpixmap, SKColorF* color, SKRectI* subset) =>
(sk_pixmap_erase_color4f_delegate ??= GetSymbol<Delegates.sk_pixmap_erase_color4f> ("sk_pixmap_erase_color4f")).Invoke (cpixmap, color, subset);
internal static bool sk_pixmap_erase_color4f (sk_pixmap_t cpixmap, SKColorF* color, sk_colorspace_t colorspace, SKRectI* subset) =>
(sk_pixmap_erase_color4f_delegate ??= GetSymbol<Delegates.sk_pixmap_erase_color4f> ("sk_pixmap_erase_color4f")).Invoke (cpixmap, color, colorspace, subset);
#endif
// bool sk_pixmap_extract_subset(const sk_pixmap_t* cpixmap, sk_pixmap_t* result, const sk_irect_t* subset)
@ -11634,6 +11692,20 @@ namespace SkiaSharp
(sk_surface_flush_delegate ??= GetSymbol<Delegates.sk_surface_flush> ("sk_surface_flush")).Invoke (surface);
#endif
// void sk_surface_flush_and_submit(sk_surface_t* surface, bool syncCpu)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern void sk_surface_flush_and_submit (sk_surface_t surface, [MarshalAs (UnmanagedType.I1)] bool syncCpu);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate void sk_surface_flush_and_submit (sk_surface_t surface, [MarshalAs (UnmanagedType.I1)] bool syncCpu);
}
private static Delegates.sk_surface_flush_and_submit sk_surface_flush_and_submit_delegate;
internal static void sk_surface_flush_and_submit (sk_surface_t surface, [MarshalAs (UnmanagedType.I1)] bool syncCpu) =>
(sk_surface_flush_and_submit_delegate ??= GetSymbol<Delegates.sk_surface_flush_and_submit> ("sk_surface_flush_and_submit")).Invoke (surface, syncCpu);
#endif
// sk_canvas_t* sk_surface_get_canvas(sk_surface_t*)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
@ -11662,6 +11734,20 @@ namespace SkiaSharp
(sk_surface_get_props_delegate ??= GetSymbol<Delegates.sk_surface_get_props> ("sk_surface_get_props")).Invoke (surface);
#endif
// gr_recording_context_t* sk_surface_get_recording_context(sk_surface_t* surface)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]
internal static extern gr_recording_context_t sk_surface_get_recording_context (sk_surface_t surface);
#else
private partial class Delegates {
[UnmanagedFunctionPointer (CallingConvention.Cdecl)]
internal delegate gr_recording_context_t sk_surface_get_recording_context (sk_surface_t surface);
}
private static Delegates.sk_surface_get_recording_context sk_surface_get_recording_context_delegate;
internal static gr_recording_context_t sk_surface_get_recording_context (sk_surface_t surface) =>
(sk_surface_get_recording_context_delegate ??= GetSymbol<Delegates.sk_surface_get_recording_context> ("sk_surface_get_recording_context")).Invoke (surface);
#endif
// sk_surface_t* sk_surface_new_backend_render_target(gr_recording_context_t* context, const gr_backendrendertarget_t* target, gr_surfaceorigin_t origin, sk_colortype_t colorType, sk_colorspace_t* colorspace, const sk_surfaceprops_t* props)
#if !USE_DELEGATES
[DllImport (SKIA, CallingConvention = CallingConvention.Cdecl)]

2
externals/skia поставляемый

@ -1 +1 @@
Subproject commit be5de14f94d5c3d36df37e085d65165c62aebe22
Subproject commit 916a1e9721de74a05c75391f52393972ed7f736c

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

@ -0,0 +1,8 @@
{
"profiles": {
"SkiaSharp.NetCore.Tests": {
"commandName": "Project",
"nativeDebugging": true
}
}
}

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

@ -116,5 +116,39 @@ namespace SkiaSharp.Tests
}
}
}
[Trait(CategoryKey, GpuCategory)]
[SkippableFact]
public void GpuSurfaceReferencesSameContext()
{
using var ctx = CreateGlContext();
ctx.MakeCurrent();
using var grContext = GRContext.CreateGl();
using var surface = SKSurface.Create(grContext, true, new SKImageInfo(100, 100));
Assert.NotNull(surface);
Assert.Equal(grContext, surface.Context);
}
[Trait(CategoryKey, GpuCategory)]
[SkippableFact]
public void GpuSurfaceCanMakeAnotherSurface()
{
using var ctx = CreateGlContext();
ctx.MakeCurrent();
using var grContext = GRContext.CreateGl();
using var surface1 = SKSurface.Create(grContext, true, new SKImageInfo(100, 100));
Assert.NotNull(surface1);
using var surface2 = SKSurface.Create(surface1.Context, true, new SKImageInfo(100, 100));
Assert.NotNull(surface2);
Assert.NotEqual(surface1, surface2);
Assert.Equal(grContext, surface1.Context);
Assert.Equal(grContext, surface2.Context);
}
}
}