private void GenerateBezierUi(IBezierGroup bezierGroup, Canvas canvas, IDrawingBoardHolder eventsHolder) { canvas.Children.Clear(); DrawLines(); _beziers.Clear(canvas, eventsHolder); foreach (var f in bezierGroup.Fragments) { _beziers.AddBezier(canvas, eventsHolder, f); } }
private void CodeToBezierUiButtonOnClick(object sender, RoutedEventArgs e) { var txt = SourceCode1.Text; SourceCode2.Text = SourceCode3.Text = SourceCode4.Text = ""; ReDrawCanvas(); IBezierGroup bg = _runners[0]?.BezierGroup; if (bg == null || bg.FragmentsCount == 0) { txt = txt .Replace(" ", "") .Replace("\t", "") .Replace("\n", "") .Replace("\r", "") .Replace("return", "") .ToLowerInvariant(); if (txt.StartsWith("bezier(")) { txt = RemoveBezierNonNumbers(txt); var arr = ToNumbers(txt); if (arr.Length == 4) { IBezierGroupBuilder bgb = new BezierGroup(); bgb.from(0, 0); bgb.to(1, 1).curve(arr[0], arr[1], arr[2], arr[3]); bg = (IBezierGroup)bgb; } else if (arr.Length == 8) { IBezierGroupBuilder bgb = new BezierGroup(); bgb.from(arr[0], arr[1]); bgb.to(arr[6], arr[7]).curve(arr[2], arr[3], arr[4], arr[5]); bg = (IBezierGroup)bgb; } } else if (txt.StartsWith("bezier2parts")) { txt = RemoveBezierNonNumbers(txt); var arr = ToNumbers(txt); if (arr.Length == (8 * 2 - 2)) { IBezierGroupBuilder bgb = new BezierGroup(); bgb.from(arr[0], arr[1]); bgb.to(arr[6], arr[7]).curve(arr[2], arr[3], arr[4], arr[5]); bgb.to(arr[12], arr[13]).curve(arr[8], arr[9], arr[10], arr[11]); bg = (IBezierGroup)bgb; } } else if (txt.StartsWith("bezier3parts")) { txt = RemoveBezierNonNumbers(txt); var arr = ToNumbers(txt); if (arr.Length == (8 * 3 - 2 * 2)) { IBezierGroupBuilder bgb = new BezierGroup(); bgb.from(arr[0], arr[1]); bgb.to(arr[6], arr[7]).curve(arr[2], arr[3], arr[4], arr[5]); bgb.to(arr[12], arr[13]).curve(arr[8], arr[9], arr[10], arr[11]); bgb.to(arr[18], arr[19]).curve(arr[14], arr[15], arr[16], arr[17]); bg = (IBezierGroup)bgb; } } else if (txt.StartsWith("bezier4parts")) { txt = RemoveBezierNonNumbers(txt); var arr = ToNumbers(txt); if (arr.Length == (8 * 4 - 3 * 2)) { IBezierGroupBuilder bgb = new BezierGroup(); bgb.from(arr[0], arr[1]); bgb.to(arr[6], arr[7]).curve(arr[2], arr[3], arr[4], arr[5]); bgb.to(arr[12], arr[13]).curve(arr[8], arr[9], arr[10], arr[11]); bgb.to(arr[18], arr[19]).curve(arr[14], arr[15], arr[16], arr[17]); bgb.to(arr[24], arr[25]).curve(arr[20], arr[21], arr[22], arr[23]); bg = (IBezierGroup)bgb; } } if (bg == null) { IBezierGroupBuilder bgb = new BezierGroup(); bgb.from(0, 0); bgb.to(1, 1).curve(0.17, 0.67, 0.8, 0.33); bg = (IBezierGroup)bgb; } } // ReSharper disable once PossibleNullReferenceException GenerateBezierUi(bg, TheCanvas, this); }
public static double Project(this double n, IBezierGroup bg) { return(bg.run(n)); }