Browse Source

Merge branch 'master' into feature/sweepgradientbrush

pull/4745/head
olliholliday 6 years ago
committed by GitHub
parent
commit
cda51c19a6
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      src/Skia/Avalonia.Skia/DrawingContextImpl.cs
  2. 31
      src/Skia/Avalonia.Skia/Helpers/DrawingContextHelper.cs

7
src/Skia/Avalonia.Skia/DrawingContextImpl.cs

@ -42,6 +42,11 @@ namespace Avalonia.Skia
/// </summary>
public struct CreateInfo
{
/// <summary>
/// Canvas to draw to.
/// </summary>
public SKCanvas Canvas;
/// <summary>
/// Surface to draw to.
/// </summary>
@ -89,7 +94,7 @@ namespace Avalonia.Skia
if (_grContext != null)
Monitor.Enter(_grContext);
Surface = createInfo.Surface;
Canvas = createInfo.Surface.Canvas;
Canvas = createInfo.Canvas ?? createInfo.Surface?.Canvas;
if (Canvas == null)
{

31
src/Skia/Avalonia.Skia/Helpers/DrawingContextHelper.cs

@ -0,0 +1,31 @@
using Avalonia.Platform;
using Avalonia.Rendering;
using SkiaSharp;
namespace Avalonia.Skia.Helpers
{
public class DrawingContextHelper
{
/// <summary>
/// Wrap Skia canvas in drawing context so we can use Avalonia api to render to external skia canvas
/// this is useful in scenarios where canvas is not controlled by application, but received from another non avalonia api
/// like: SKCanvas canvas = SKDocument.BeginPage(...);
/// </summary>
/// <param name="canvas"></param>
/// <param name="dpi"></param>
/// <param name="visualBrushRenderer"></param>
/// <returns>DrawingContext</returns>
public static IDrawingContextImpl WrapSkiaCanvas(SKCanvas canvas, Vector dpi, IVisualBrushRenderer visualBrushRenderer = null)
{
var createInfo = new DrawingContextImpl.CreateInfo
{
Canvas = canvas,
Dpi = dpi,
VisualBrushRenderer = visualBrushRenderer,
DisableTextLcdRendering = true,
};
return new DrawingContextImpl(createInfo);
}
}
}
Loading…
Cancel
Save