Browse Source
Merge pull request #11193 from AvaloniaUI/CaptureRenderedFrame-writeable-bitmap
Return WriteableBitmap from the GetLastRenderedFrame API
pull/11194/head
Nikita Tsukanov
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
5 additions and
5 deletions
-
src/Headless/Avalonia.Headless/HeadlessWindowExtensions.cs
-
src/Headless/Avalonia.Headless/HeadlessWindowImpl.cs
-
src/Headless/Avalonia.Headless/IHeadlessWindow.cs
|
|
|
@ -17,7 +17,7 @@ public static class HeadlessWindowExtensions |
|
|
|
/// Triggers a renderer timer tick and captures last rendered frame.
|
|
|
|
/// </summary>
|
|
|
|
/// <returns>Bitmap with last rendered frame. Null, if nothing was rendered.</returns>
|
|
|
|
public static Bitmap? CaptureRenderedFrame(this TopLevel topLevel) |
|
|
|
public static WriteableBitmap? CaptureRenderedFrame(this TopLevel topLevel) |
|
|
|
{ |
|
|
|
Dispatcher.UIThread.RunJobs(); |
|
|
|
AvaloniaHeadlessPlatform.ForceRenderTimerTick(); |
|
|
|
@ -29,7 +29,7 @@ public static class HeadlessWindowExtensions |
|
|
|
/// Note, in order to trigger rendering timer, call <see cref="AvaloniaHeadlessPlatform.ForceRenderTimerTick"/> method.
|
|
|
|
/// </summary>
|
|
|
|
/// <returns>Bitmap with last rendered frame. Null, if nothing was rendered.</returns>
|
|
|
|
public static Bitmap? GetLastRenderedFrame(this TopLevel topLevel) |
|
|
|
public static WriteableBitmap? GetLastRenderedFrame(this TopLevel topLevel) |
|
|
|
{ |
|
|
|
if (AvaloniaLocator.Current.GetService<IPlatformRenderInterface>() is HeadlessPlatformRenderInterface) |
|
|
|
{ |
|
|
|
|
|
|
|
@ -214,7 +214,7 @@ namespace Avalonia.Headless |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
public Bitmap? GetLastRenderedFrame() |
|
|
|
public WriteableBitmap? GetLastRenderedFrame() |
|
|
|
{ |
|
|
|
lock (_sync) |
|
|
|
{ |
|
|
|
@ -224,7 +224,7 @@ namespace Avalonia.Headless |
|
|
|
} |
|
|
|
|
|
|
|
using var lockedFramebuffer = _lastRenderedFrame.Lock(); |
|
|
|
return new Bitmap(lockedFramebuffer.Format, AlphaFormat.Opaque, lockedFramebuffer.Address, |
|
|
|
return new WriteableBitmap(lockedFramebuffer.Format, AlphaFormat.Opaque, lockedFramebuffer.Address, |
|
|
|
lockedFramebuffer.Size, lockedFramebuffer.Dpi, lockedFramebuffer.RowBytes); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@ -8,7 +8,7 @@ namespace Avalonia.Headless |
|
|
|
{ |
|
|
|
internal interface IHeadlessWindow |
|
|
|
{ |
|
|
|
Bitmap? GetLastRenderedFrame(); |
|
|
|
WriteableBitmap? GetLastRenderedFrame(); |
|
|
|
void KeyPress(Key key, RawInputModifiers modifiers); |
|
|
|
void KeyRelease(Key key, RawInputModifiers modifiers); |
|
|
|
void MouseDown(Point point, MouseButton button, RawInputModifiers modifiers = RawInputModifiers.None); |
|
|
|
|