public static void CreateMarker(this SvgMarker svgMarker, SvgVisualElement pOwner, SKPoint pRefPoint, SKPoint pMarkerPoint1, SKPoint pMarkerPoint2, SKPoint pMarkerPoint3, SKRect skOwnerBounds, ref List <Drawable>?markerDrawables, CompositeDisposable disposable) { float xDiff = pMarkerPoint2.X - pMarkerPoint1.X; float yDiff = pMarkerPoint2.Y - pMarkerPoint1.Y; float fAngle1 = (float)(Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI); xDiff = pMarkerPoint3.X - pMarkerPoint2.X; yDiff = pMarkerPoint3.Y - pMarkerPoint2.Y; float fAngle2 = (float)(Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI); var markerDrawable = new MarkerDrawable(svgMarker, pOwner, pRefPoint, (fAngle1 + fAngle2) / 2, skOwnerBounds, null, null); if (markerDrawables == null) { markerDrawables = new List <Drawable>(); } markerDrawables.Add(markerDrawable); disposable.Add(markerDrawable); }
public static void CreateMarker(this SvgMarker svgMarker, SvgVisualElement pOwner, SKPoint pRefPoint, SKPoint pMarkerPoint1, SKPoint pMarkerPoint2, bool isStartMarker, SKRect skOwnerBounds, ref List <Drawable>?markerDrawables, CompositeDisposable disposable, Attributes ignoreAttributes = Attributes.None) { float fAngle1 = 0f; if (svgMarker.Orient.IsAuto) { float xDiff = pMarkerPoint2.X - pMarkerPoint1.X; float yDiff = pMarkerPoint2.Y - pMarkerPoint1.Y; fAngle1 = (float)(Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI); if (isStartMarker && svgMarker.Orient.IsAutoStartReverse) { fAngle1 += 180; } } var markerDrawable = new MarkerDrawable(svgMarker, pOwner, pRefPoint, fAngle1, skOwnerBounds, null, null, ignoreAttributes); if (markerDrawables == null) { markerDrawables = new List <Drawable>(); } markerDrawables.Add(markerDrawable); disposable.Add(markerDrawable); }