From 82069d7acc4bdb9459d215779dd36de74177bacc Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 30 Nov 2017 12:23:27 +0000 Subject: [PATCH] add a proposed GetPixels method to IBitmapImpl with skia implementation. --- src/Avalonia.Visuals/Platform/IBitmapImpl.cs | 7 +++++++ src/Skia/Avalonia.Skia/BitmapImpl.cs | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/src/Avalonia.Visuals/Platform/IBitmapImpl.cs b/src/Avalonia.Visuals/Platform/IBitmapImpl.cs index 12ac28e880..8b7327d00d 100644 --- a/src/Avalonia.Visuals/Platform/IBitmapImpl.cs +++ b/src/Avalonia.Visuals/Platform/IBitmapImpl.cs @@ -1,6 +1,7 @@ // Copyright (c) The Avalonia Project. All rights reserved. // Licensed under the MIT license. See licence.md file in the project root for full license information. +using System; using System.IO; namespace Avalonia.Platform @@ -31,5 +32,11 @@ namespace Avalonia.Platform /// /// The stream. void Save(Stream stream); + + /// + /// Gets a pointer to the pixel data. + /// + /// IntPtr to the pixel data. + IntPtr GetPixels(); } } diff --git a/src/Skia/Avalonia.Skia/BitmapImpl.cs b/src/Skia/Avalonia.Skia/BitmapImpl.cs index 00ab770e01..1888bd9273 100644 --- a/src/Skia/Avalonia.Skia/BitmapImpl.cs +++ b/src/Skia/Avalonia.Skia/BitmapImpl.cs @@ -23,6 +23,7 @@ namespace Avalonia.Skia static void ReleaseProc(IntPtr address, object ctx) { ((IUnmanagedBlob) ctx).Dispose(); + } private static readonly SKBitmapReleaseDelegate ReleaseDelegate = ReleaseProc; @@ -60,6 +61,11 @@ namespace Avalonia.Skia public int PixelWidth { get; private set; } public int PixelHeight { get; private set; } + public IntPtr GetPixels() + { + return Bitmap.GetPixels(); + } + class BitmapDrawingContext : DrawingContextImpl { private readonly SKSurface _surface;