Esempio n. 1
0
        protected SKAbstractManagedWStream(bool owns)
            : base(IntPtr.Zero, owns)
        {
            var ctx = DelegateProxies.CreateUserData(this, true);

            Handle = SkiaApi.sk_managedwstream_new(ctx);
        }
Esempio n. 2
0
        private static void GetBoundsInternal(IntPtr d, void *context, SKRect *rect)
        {
            var drawable = DelegateProxies.GetUserData <SKDrawable> ((IntPtr)context, out _);
            var bounds   = drawable.OnGetBounds();

            *rect = bounds;
        }
Esempio n. 3
0
        protected override void DisposeNative()
        {
            DelegateProxies.GetUserData <SKTraceMemoryDump> (userData, out var gch);

            SkiaApi.sk_managedtracememorydump_delete(Handle);

            gch.Free();
        }
Esempio n. 4
0
        private static void DumpStringValueInternal(IntPtr d, void *context, void *dumpName, void *valueName, void *value)
        {
            var dump = DelegateProxies.GetUserData <SKTraceMemoryDump> ((IntPtr)context, out _);

            dump.OnDumpStringValue(
                Marshal.PtrToStringAnsi((IntPtr)dumpName),
                Marshal.PtrToStringAnsi((IntPtr)valueName),
                Marshal.PtrToStringAnsi((IntPtr)value));
        }
Esempio n. 5
0
		public bool InstallPixels (SKImageInfo info, IntPtr pixels, int rowBytes, SKBitmapReleaseDelegate releaseProc, object context)
		{
			var cinfo = SKImageInfoNative.FromManaged (ref info);
			var del = releaseProc != null && context != null
				? new SKBitmapReleaseDelegate ((addr, _) => releaseProc (addr, context))
				: releaseProc;
			var proxy = DelegateProxies.Create (del, DelegateProxies.SKBitmapReleaseDelegateProxy, out _, out var ctx);
			return SkiaApi.sk_bitmap_install_pixels (Handle, &cinfo, (void*)pixels, (IntPtr)rowBytes, proxy, (void*)ctx);
		}
Esempio n. 6
0
        public static SKData Create(IntPtr address, int length, SKDataReleaseDelegate releaseProc, object context)
        {
            var del = releaseProc != null && context != null
                                ? new SKDataReleaseDelegate((addr, _) => releaseProc(addr, context))
                                : releaseProc;
            var proxy = DelegateProxies.Create(del, DelegateProxies.SKDataReleaseDelegateProxy, out _, out var ctx);

            return(GetObject(SkiaApi.sk_data_new_with_proc((void *)address, (IntPtr)length, proxy, (void *)ctx)));
        }
Esempio n. 7
0
        public static GRGlInterface CreateWebGl(GRGlGetProcedureAddressDelegate get)
        {
            var proxy = DelegateProxies.Create(get, DelegateProxies.GRGlGetProcDelegateProxy, out var gch, out var ctx);

            try {
                return(GetObject(SkiaApi.gr_glinterface_assemble_webgl_interface((void *)ctx, proxy)));
            } finally {
                gch.Free();
            }
        }
        public static SKSurface Create(SKImageInfo info, IntPtr pixels, int rowBytes, SKSurfaceReleaseDelegate releaseProc, object context, SKSurfaceProperties props)
        {
            var cinfo = SKImageInfoNative.FromManaged(ref info);
            var del   = releaseProc != null && context != null
                                ? new SKSurfaceReleaseDelegate((addr, _) => releaseProc(addr, context))
                                : releaseProc;
            var proxy = DelegateProxies.Create(del, DelegateProxies.SKSurfaceReleaseDelegateProxy, out _, out var ctx);

            return(GetObject <SKSurface> (SkiaApi.sk_surface_new_raster_direct(ref cinfo, pixels, (IntPtr)rowBytes, proxy, ctx, props?.Handle ?? IntPtr.Zero)));
        }
Esempio n. 9
0
        private static void DestroyInternal(IntPtr s, IntPtr context)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedWStream> (context, out var gch);

            if (stream != null)
            {
                Interlocked.Exchange(ref stream.fromNative, 1);
                stream.Dispose();
            }
            gch.Free();
        }
Esempio n. 10
0
        protected SKTraceMemoryDump(bool detailedDump, bool dumpWrappedObjects)
            : base(IntPtr.Zero, true)
        {
            userData = DelegateProxies.CreateUserData(this, true);
            Handle   = SkiaApi.sk_managedtracememorydump_new(detailedDump, dumpWrappedObjects, (void *)userData);

            if (Handle == IntPtr.Zero)
            {
                throw new InvalidOperationException("Unable to create a new SKTraceMemoryDump instance.");
            }
        }
Esempio n. 11
0
        private static void DestroyInternal(IntPtr d, void *context)
        {
            var drawable = DelegateProxies.GetUserData <SKDrawable> ((IntPtr)context, out var gch);

            if (drawable != null)
            {
                Interlocked.Exchange(ref drawable.fromNative, 1);
                drawable.Dispose();
            }
            gch.Free();
        }
Esempio n. 12
0
        protected SKDrawable(bool owns)
            : base(IntPtr.Zero, owns)
        {
            var ctx = DelegateProxies.CreateUserData(this, true);

            Handle = SkiaApi.sk_manageddrawable_new((void *)ctx);

            if (Handle == IntPtr.Zero)
            {
                throw new InvalidOperationException("Unable to create a new SKDrawable instance.");
            }
        }
Esempio n. 13
0
        public void Initialize(GRVkGetProcedureAddressDelegate getProc, IntPtr vkInstance, IntPtr vkPhysicalDevice, string[] instanceExtensions, string[] deviceExtensions)
        {
            var proxy = DelegateProxies.Create(getProc, DelegateProxies.GRVkGetProcDelegateProxy, out var gch, out var ctx);

            try {
                var ie = instanceExtensions;
                var de = deviceExtensions;
                SkiaApi.gr_vk_extensions_init(Handle, proxy, (void *)ctx, vkInstance, vkPhysicalDevice, (uint)(ie?.Length ?? 0), ie, (uint)(de?.Length ?? 0), de);
            } finally {
                gch.Free();
            }
        }
Esempio n. 14
0
        public static GRGlInterface AssembleGlInterface(object context, GRGlGetProcDelegate get)
        {
            var del = get != null && context != null
                                ? new GRGlGetProcDelegate((_, name) => get(context, name))
                                : get;
            var proxy = DelegateProxies.Create(del, DelegateProxies.GRGlGetProcDelegateProxy, out var gch, out var ctx);

            try {
                return(GetObject <GRGlInterface> (SkiaApi.gr_glinterface_assemble_gl_interface(ctx, proxy)));
            } finally {
                gch.Free();
            }
        }
Esempio n. 15
0
        public static SKImage FromPixels(SKPixmap pixmap, SKImageRasterReleaseDelegate releaseProc, object releaseContext)
        {
            if (pixmap == null)
            {
                throw new ArgumentNullException(nameof(pixmap));
            }

            var del = releaseProc != null && releaseContext != null
                                ? new SKImageRasterReleaseDelegate((addr, _) => releaseProc(addr, releaseContext))
                                : releaseProc;
            var proxy = DelegateProxies.Create(del, DelegateProxies.SKImageRasterReleaseDelegateProxy, out _, out var ctx);

            return(GetObject <SKImage> (SkiaApi.sk_image_new_raster(pixmap.Handle, proxy, (void *)ctx)));
        }
Esempio n. 16
0
        public static SKImage FromTexture(GRContext context, GRBackendTexture texture, GRSurfaceOrigin origin, SKColorType colorType, SKAlphaType alpha, SKColorSpace colorspace, SKImageTextureReleaseDelegate releaseProc, object releaseContext)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }
            if (texture == null)
            {
                throw new ArgumentNullException(nameof(texture));
            }

            var cs  = colorspace == null ? IntPtr.Zero : colorspace.Handle;
            var del = releaseProc != null && releaseContext != null
                                ? new SKImageTextureReleaseDelegate((_) => releaseProc(releaseContext))
                                : releaseProc;
            var proxy = DelegateProxies.Create(del, DelegateProxies.SKImageTextureReleaseDelegateProxy, out _, out var ctx);

            return(GetObject <SKImage> (SkiaApi.sk_image_new_from_texture(context.Handle, texture.Handle, origin, colorType, alpha, cs, proxy, (void *)ctx)));
        }
Esempio n. 17
0
        public static GRGlInterface AssembleInterface(object context, GRGlGetProcDelegate get)
        {
            // if on Windows, try ANGLE
            if (PlatformConfiguration.IsWindows)
            {
                var angle = AssembleAngleInterface(context, get);
                if (angle != null)
                {
                    return(angle);
                }
            }

            // try the native default
            var del = get != null && context != null
                                ? new GRGlGetProcDelegate((_, name) => get(context, name))
                                : get;
            var proxy = DelegateProxies.Create(del, DelegateProxies.GRGlGetProcDelegateProxy, out var gch, out var ctx);

            try {
                return(GetObject <GRGlInterface> (SkiaApi.gr_glinterface_assemble_interface(ctx, proxy)));
            } finally {
                gch.Free();
            }
        }
Esempio n. 18
0
        private static void FlushInternal(IntPtr s, IntPtr context)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedWStream> (context, out _);

            stream.OnFlush();
        }
Esempio n. 19
0
        private static IntPtr DuplicateInternal(IntPtr s, void *context)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedStream> ((IntPtr)context, out _);

            return(stream.OnDuplicate());
        }
Esempio n. 20
0
        private static bool HasLengthInternal(IntPtr s, IntPtr context)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedStream> (context, out _);

            return(stream.OnHasLength());
        }
Esempio n. 21
0
        private static IntPtr PeekInternal(IntPtr s, void *context, void *buffer, IntPtr size)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedStream> ((IntPtr)context, out _);

            return(stream.OnPeek((IntPtr)buffer, size));
        }
Esempio n. 22
0
        private static bool SeekInternal(IntPtr s, IntPtr context, IntPtr position)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedStream> (context, out _);

            return(stream.OnSeek(position));
        }
Esempio n. 23
0
        private static IntPtr NewPictureSnapshotInternal(IntPtr d, void *context)
        {
            var drawable = DelegateProxies.GetUserData <SKDrawable> ((IntPtr)context, out _);

            return(drawable.OnSnapshot()?.Handle ?? IntPtr.Zero);
        }
Esempio n. 24
0
        private static void GetBoundsInternal(IntPtr d, IntPtr context, out SKRect rect)
        {
            var drawable = DelegateProxies.GetUserData <SKDrawable> (context, out _);

            rect = drawable.OnGetBounds();
        }
Esempio n. 25
0
        private static void DrawInternal(IntPtr d, void *context, IntPtr canvas)
        {
            var drawable = DelegateProxies.GetUserData <SKDrawable> ((IntPtr)context, out _);

            drawable.OnDraw(SKCanvas.GetObject(canvas, false));
        }
Esempio n. 26
0
        private static bool MoveInternal(IntPtr s, IntPtr context, int offset)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedStream> (context, out _);

            return(stream.OnMove(offset));
        }
Esempio n. 27
0
        private static IntPtr ForkInternal(IntPtr s, IntPtr context)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedStream> (context, out _);

            return(stream.OnFork());
        }
Esempio n. 28
0
        private static IntPtr BytesWrittenInternal(IntPtr s, IntPtr context)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedWStream> (context, out _);

            return(stream.OnBytesWritten());
        }
Esempio n. 29
0
        private static bool RewindInternal(IntPtr s, void *context)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedStream> ((IntPtr)context, out _);

            return(stream.OnRewind());
        }
Esempio n. 30
0
        private static bool WriteInternal(IntPtr s, IntPtr context, IntPtr buffer, IntPtr size)
        {
            var stream = DelegateProxies.GetUserData <SKAbstractManagedWStream> (context, out _);

            return(stream.OnWrite(buffer, size));
        }