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);
        }
Example #3
0
 public static double Project(this double n, IBezierGroup bg)
 {
     return(bg.run(n));
 }