Browse Source

iOS compat

xy-focus-skiasharp-3
Max Katz 2 years ago
parent
commit
82f1f1b11d
  1. 12
      src/Skia/Avalonia.Skia/Compatibility/SkiaCompat.SKCanvas.cs
  2. 9
      src/Skia/Avalonia.Skia/Compatibility/SkiaCompat.SKPath.cs

12
src/Skia/Avalonia.Skia/Compatibility/SkiaCompat.SKCanvas.cs

@ -1,5 +1,6 @@
using System;
using System.Runtime.InteropServices;
using Avalonia.Compatibility;
using SkiaSharp;
namespace Avalonia.Skia;
@ -20,14 +21,19 @@ internal static unsafe partial class SkiaCompat
static void NewCall(SKCanvas canvas, SKMatrix matrix)
{
var m44 = ToSkMatrix44(matrix);
sk_canvas_set_matrix(canvas.Handle, &m44);
if (OperatingSystemEx.IsIOS() || OperatingSystemEx.IsTvOS())
sk_canvas_set_matrix_ios(canvas.Handle, &m44);
else
sk_canvas_set_matrix(canvas.Handle, &m44);
}
static void LegacyCall(SKCanvas canvas, SKMatrix matrix) =>
canvas.SetMatrix(matrix);
}
[DllImport("libSkiaSharp", CallingConvention = CallingConvention.Cdecl)]
internal static extern unsafe void sk_canvas_set_matrix(IntPtr ccanvas, sk_matrix44_t* cmatrix);
internal static extern void sk_canvas_set_matrix(IntPtr ccanvas, sk_matrix44_t* cmatrix);
[DllImport("@rpath/libSkiaSharp.framework/libSkiaSharp", CallingConvention = CallingConvention.Cdecl)]
internal static extern void sk_canvas_set_matrix_ios(IntPtr ccanvas, sk_matrix44_t* cmatrix);
}

9
src/Skia/Avalonia.Skia/Compatibility/SkiaCompat.SKPath.cs

@ -1,5 +1,6 @@
using System;
using System.Runtime.InteropServices;
using Avalonia.Compatibility;
using SkiaSharp;
namespace Avalonia.Skia;
@ -9,9 +10,15 @@ internal static unsafe partial class SkiaCompat
public static void CTransform(this SKPath path, ref SKMatrix matrix)
{
fixed (SKMatrix* m = &matrix)
sk_path_transform(path.Handle, m);
if (OperatingSystemEx.IsIOS() || OperatingSystemEx.IsTvOS())
sk_path_transform_ios(path.Handle, m);
else
sk_path_transform(path.Handle, m);
}
[DllImport("libSkiaSharp", CallingConvention = CallingConvention.Cdecl)]
private static extern void sk_path_transform(IntPtr cpath, SKMatrix* cmatrix);
[DllImport("@rpath/libSkiaSharp.framework/libSkiaSharp", CallingConvention = CallingConvention.Cdecl)]
private static extern void sk_path_transform_ios(IntPtr cpath, SKMatrix* cmatrix);
}

Loading…
Cancel
Save