|
@@ -19,41 +19,40 @@ namespace PixiEditor.DrawingApi.Skia.Implementations
|
|
|
private readonly SkObjectImplementation<SKBitmap> _bitmapImpl;
|
|
|
private readonly SkObjectImplementation<SKPath> _pathImpl;
|
|
|
|
|
|
- public SkiaCanvasImplementation(SkObjectImplementation<SKPaint> paintImpl, SkObjectImplementation<SKImage> imageImpl, SkObjectImplementation<SKBitmap> bitmapImpl, SkObjectImplementation<SKPath> pathImpl)
|
|
|
+ public SkiaCanvasImplementation(SkObjectImplementation<SKPaint> paintImpl,
|
|
|
+ SkObjectImplementation<SKImage> imageImpl, SkObjectImplementation<SKBitmap> bitmapImpl,
|
|
|
+ SkObjectImplementation<SKPath> pathImpl)
|
|
|
{
|
|
|
_paintImpl = paintImpl;
|
|
|
_imageImpl = imageImpl;
|
|
|
_bitmapImpl = bitmapImpl;
|
|
|
_pathImpl = pathImpl;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public void SetSurfaceImplementation(SkiaSurfaceImplementation surfaceImpl)
|
|
|
{
|
|
|
_surfaceImpl = surfaceImpl;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
public void DrawPixel(IntPtr objectPointer, int posX, int posY, Paint drawingPaint)
|
|
|
{
|
|
|
- ManagedInstances[objectPointer].DrawPoint(
|
|
|
- posX,
|
|
|
- posY,
|
|
|
- _paintImpl.ManagedInstances[drawingPaint.ObjectPointer]);
|
|
|
+ var canvas = ManagedInstances[objectPointer];
|
|
|
+ canvas.DrawPoint(posX, posY, _paintImpl.ManagedInstances[drawingPaint.ObjectPointer]);
|
|
|
}
|
|
|
|
|
|
public void DrawSurface(IntPtr objPtr, DrawingSurface drawingSurface, int x, int y, Paint? paint)
|
|
|
{
|
|
|
- ManagedInstances[objPtr]
|
|
|
- .DrawSurface(
|
|
|
- _surfaceImpl.ManagedInstances[drawingSurface.ObjectPointer],
|
|
|
- x, y,
|
|
|
- paint != null ? _paintImpl.ManagedInstances[paint.ObjectPointer] : null);
|
|
|
+ var canvas = ManagedInstances[objPtr];
|
|
|
+ canvas.DrawSurface(
|
|
|
+ _surfaceImpl.ManagedInstances[drawingSurface.ObjectPointer],
|
|
|
+ x, y,
|
|
|
+ paint != null ? _paintImpl.ManagedInstances[paint.ObjectPointer] : null);
|
|
|
}
|
|
|
|
|
|
public void DrawImage(IntPtr objPtr, Image image, int x, int y)
|
|
|
{
|
|
|
- ManagedInstances[objPtr]
|
|
|
- .DrawImage(
|
|
|
- _imageImpl.ManagedInstances[image.ObjectPointer], x, y);
|
|
|
+ var canvas = ManagedInstances[objPtr];
|
|
|
+ canvas.DrawImage(_imageImpl.ManagedInstances[image.ObjectPointer], x, y);
|
|
|
}
|
|
|
|
|
|
public int Save(IntPtr objPtr)
|
|
@@ -79,15 +78,15 @@ namespace PixiEditor.DrawingApi.Skia.Implementations
|
|
|
public void DrawPath(IntPtr objPtr, VectorPath path, Paint paint)
|
|
|
{
|
|
|
ManagedInstances[objPtr].DrawPath(
|
|
|
- _pathImpl[path.ObjectPointer],
|
|
|
+ _pathImpl[path.ObjectPointer],
|
|
|
_paintImpl[paint.ObjectPointer]);
|
|
|
}
|
|
|
|
|
|
public void DrawPoint(IntPtr objPtr, VecI pos, Paint paint)
|
|
|
{
|
|
|
ManagedInstances[objPtr].DrawPoint(
|
|
|
- pos.X,
|
|
|
- pos.Y,
|
|
|
+ pos.X,
|
|
|
+ pos.Y,
|
|
|
_paintImpl[paint.ObjectPointer]);
|
|
|
}
|
|
|
|
|
@@ -101,12 +100,16 @@ namespace PixiEditor.DrawingApi.Skia.Implementations
|
|
|
|
|
|
public void DrawRect(IntPtr objPtr, int x, int y, int width, int height, Paint paint)
|
|
|
{
|
|
|
- ManagedInstances[objPtr].DrawRect(x, y, width, height, _paintImpl[paint.ObjectPointer]);
|
|
|
+ SKPaint skPaint = _paintImpl[paint.ObjectPointer];
|
|
|
+
|
|
|
+ var canvas = ManagedInstances[objPtr];
|
|
|
+ canvas.DrawRect(x, y, width, height, skPaint);
|
|
|
}
|
|
|
|
|
|
public void DrawCircle(IntPtr objPtr, int x, int y, int radius, Paint paint)
|
|
|
{
|
|
|
- ManagedInstances[objPtr].DrawCircle(x, y, radius, _paintImpl[paint.ObjectPointer]);
|
|
|
+ var canvas = ManagedInstances[objPtr];
|
|
|
+ canvas.DrawCircle(x, y, radius, _paintImpl[paint.ObjectPointer]);
|
|
|
}
|
|
|
|
|
|
public void ClipPath(IntPtr objPtr, VectorPath clipPath, ClipOperation clipOperation, bool antialias)
|
|
@@ -133,7 +136,14 @@ namespace PixiEditor.DrawingApi.Skia.Implementations
|
|
|
|
|
|
public void DrawLine(IntPtr objPtr, VecI from, VecI to, Paint paint)
|
|
|
{
|
|
|
- ManagedInstances[objPtr].DrawLine(from.X, from.Y, to.X, to.Y, _paintImpl[paint.ObjectPointer]);
|
|
|
+ var canvas = ManagedInstances[objPtr];
|
|
|
+ canvas.DrawLine(from.X, from.Y, to.X, to.Y, _paintImpl[paint.ObjectPointer]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void DrawPaint(IntPtr objectPointer, Paint paint)
|
|
|
+ {
|
|
|
+ var canvas = ManagedInstances[objectPointer];
|
|
|
+ canvas.DrawPaint(_paintImpl[paint.ObjectPointer]);
|
|
|
}
|
|
|
|
|
|
public void Flush(IntPtr objPtr)
|
|
@@ -171,7 +181,7 @@ namespace PixiEditor.DrawingApi.Skia.Implementations
|
|
|
{
|
|
|
ManagedInstances[objPtr].DrawImage(
|
|
|
_imageImpl[image.ObjectPointer],
|
|
|
- rect.ToSKRect(),
|
|
|
+ rect.ToSKRect(),
|
|
|
_paintImpl[paint.ObjectPointer]);
|
|
|
}
|
|
|
|
|
@@ -183,7 +193,7 @@ namespace PixiEditor.DrawingApi.Skia.Implementations
|
|
|
public void Dispose(IntPtr objectPointer)
|
|
|
{
|
|
|
ManagedInstances[objectPointer].Dispose();
|
|
|
-
|
|
|
+
|
|
|
ManagedInstances.TryRemove(objectPointer, out _);
|
|
|
}
|
|
|
|