From 8af935cb0ae9e0dbd3f9b1915faf0b4362755a75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20=C5=A0olt=C3=A9s?= Date: Mon, 1 Aug 2016 20:01:57 +0200 Subject: [PATCH] Implemented DashStyle support for Skia --- src/Skia/Avalonia.Skia/DrawingContextImpl.cs | 26 ++++++-------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs index c6672ce6c9..7744e15104 100644 --- a/src/Skia/Avalonia.Skia/DrawingContextImpl.cs +++ b/src/Skia/Avalonia.Skia/DrawingContextImpl.cs @@ -234,24 +234,14 @@ namespace Avalonia.Skia paint.StrokeMiter = (float)pen.MiterLimit; - // TODO: Implement Dash Style support - // - //if (pen.DashStyle?.Dashes != null) - //{ - // var dashes = pen.DashStyle.Dashes; - // if (dashes.Count > NativeBrush.MaxDashCount) - // throw new NotSupportedException("Maximum supported dash count is " + NativeBrush.MaxDashCount); - // brush.Brush->StrokeDashCount = dashes.Count; - // for (int c = 0; c < dashes.Count; c++) - // brush.Brush->StrokeDashes[c] = (float)dashes[c]; - // brush.Brush->StrokeDashOffset = (float)pen.DashStyle.Offset; - - //} - - //if (brush->StrokeDashCount != 0) - //{ - // paint.setPathEffect(SkDashPathEffect::Create(brush->StrokeDashes, brush->StrokeDashCount, brush->StrokeDashOffset))->unref(); - //} + if (pen.DashStyle?.Dashes != null && pen.DashStyle.Dashes.Count > 0) + { + var pe = SKPathEffect.CreateDash( + pen.DashStyle?.Dashes.Select(x => (float)x).ToArray(), + (float)pen.DashStyle.Offset); + paint.PathEffect = pe; + rv.AddDisposable(pe); + } return rv; }