public void calculateBorders(ref double LeftUpperX, ref double LeftUpperY, ref double RightLowerX, ref double RightLowerY, Equipment.VectorPic vectorpic, bool normalized = false)
        {
            if (normalized)
            {
                //if (vectorpic.arcs.Count != 0)
                //{
                //    LeftUpperX = vectorpic.arcs[0].UpperLeft.X; LeftUpperY = vectorpic.arcs[0].UpperLeft.Y;
                //    RightLowerX = vectorpic.arcs[0].UpperLeft.X; RightLowerY = vectorpic.arcs[0].UpperLeft.Y;
                //}
                if (vectorpic.polyLines.Count != 0)
                {
                    LeftUpperX  = vectorpic.polyLines[0][0].X; LeftUpperY = vectorpic.polyLines[0][0].Y;
                    RightLowerX = vectorpic.polyLines[0][0].X; RightLowerY = vectorpic.polyLines[0][0].Y;
                }
                else if (vectorpic.circles.Count != 0)
                {
                    LeftUpperX  = vectorpic.circles[0].center.X; LeftUpperY = vectorpic.circles[0].center.Y;
                    RightLowerX = vectorpic.circles[0].center.X; RightLowerY = vectorpic.circles[0].center.Y;
                }
                else
                {
                    return;
                }
                foreach (var i in vectorpic.polyLines)
                {
                    foreach (var j in i)
                    {
                        if (j.X < LeftUpperX)
                        {
                            LeftUpperX = j.X;
                        }
                        if (j.X > RightLowerX)
                        {
                            RightLowerX = j.X;
                        }

                        if (j.Y < LeftUpperY)
                        {
                            LeftUpperY = j.Y;
                        }
                        if (j.Y > RightLowerY)
                        {
                            RightLowerY = j.Y;
                        }
                    }
                }
                foreach (var i in vectorpic.circles)
                {
                    if (i.center.X - i.radius < LeftUpperX)
                    {
                        LeftUpperX = i.center.X - i.radius;
                    }
                    if (i.center.X + i.radius > RightLowerX)
                    {
                        RightLowerX = i.center.X + i.radius;
                    }

                    if (i.center.Y - i.radius < LeftUpperY)
                    {
                        LeftUpperY = i.center.Y - i.radius;
                    }
                    if (i.center.Y + i.radius > RightLowerY)
                    {
                        RightLowerY = i.center.Y + i.radius;
                    }
                }
                //foreach (var i in vectorpic.arcs)
                //{
                //    if (i.UpperLeft.X < LeftUpperX)
                //        LeftUpperX = i.UpperLeft.X;
                //    if (i.UpperLeft.X + i.radius * 2 > RightLowerX)
                //        RightLowerX = i.UpperLeft.X + i.radius * 2;

                //    if (i.UpperLeft.Y < LeftUpperY)
                //        LeftUpperY = i.UpperLeft.Y;
                //    if (i.UpperLeft.Y + i.radius * 2 > RightLowerY)
                //        RightLowerY = i.UpperLeft.Y + i.radius * 2;
                //}
                //LeftUpperX--; LeftUpperY--;
                //RightLowerX++; RightLowerY++;
            }
            else
            {
                //if (vectorpic.arcs.Count != 0)
                //{
                //    LeftUpperX = vectorpic.arcs[0].UpperLeft.X; LeftUpperY = vectorpic.arcs[0].UpperLeft.Y;
                //    RightLowerX = vectorpic.arcs[0].UpperLeft.X; RightLowerY = vectorpic.arcs[0].UpperLeft.Y;
                //}
                if (vectorpic.polyLines.Count != 0)
                {
                    LeftUpperX  = vectorpic.polyLines[0][0].X; LeftUpperY = vectorpic.polyLines[0][0].Y;
                    RightLowerX = vectorpic.polyLines[0][0].X; RightLowerY = vectorpic.polyLines[0][0].Y;
                }
                else if (vectorpic.circles.Count != 0)
                {
                    LeftUpperX  = vectorpic.circles[0].center.X; LeftUpperY = vectorpic.circles[0].center.Y;
                    RightLowerX = vectorpic.circles[0].center.X; RightLowerY = vectorpic.circles[0].center.Y;
                }
                else
                {
                    return;
                }
                foreach (var i in vectorpic.polyLines)
                {
                    foreach (var j in i)
                    {
                        if (j.X < LeftUpperX)
                        {
                            LeftUpperX = j.X;
                        }
                        if (j.X > RightLowerX)
                        {
                            RightLowerX = j.X;
                        }

                        if (j.Y > LeftUpperY)
                        {
                            LeftUpperY = j.Y;
                        }
                        if (j.Y < RightLowerY)
                        {
                            RightLowerY = j.Y;
                        }
                    }
                }
                foreach (var i in vectorpic.circles)
                {
                    if (i.center.X - i.radius < LeftUpperX)
                    {
                        LeftUpperX = i.center.X - i.radius;
                    }
                    if (i.center.X + i.radius > RightLowerX)
                    {
                        RightLowerX = i.center.X + i.radius;
                    }

                    if (i.center.Y + i.radius > LeftUpperY)
                    {
                        LeftUpperY = i.center.Y + i.radius;
                    }
                    if (i.center.Y - i.radius < RightLowerY)
                    {
                        RightLowerY = i.center.Y - i.radius;
                    }
                }
                //foreach (var i in vectorpic.arcs)
                //{
                //    if (i.UpperLeft.X < LeftUpperX)
                //        LeftUpperX = i.UpperLeft.X;
                //    if (i.UpperLeft.X + i.radius * 2 > RightLowerX)
                //        RightLowerX = i.UpperLeft.X + i.radius * 2;

                //    if (i.UpperLeft.Y > LeftUpperY)
                //        LeftUpperY = i.UpperLeft.Y;
                //    if (i.UpperLeft.Y - i.radius * 2 < RightLowerY)
                //        RightLowerY = i.UpperLeft.Y - i.radius * 2;
                //}
                //LeftUpperX--; LeftUpperY++;
                //    RightLowerX++; RightLowerY--;
            }
        }
        void pickFile(int num)
        {
            OpenFileDialog file = new OpenFileDialog();

            //new FirstOpenAddUGO().ShowDialog();
            if (file.ShowDialog() == DialogResult.OK)
            {
                if (file.FileName.Split('.')[file.FileName.Split('.').Length - 1] == "txt")
                {
                    image img = JsonConvert.DeserializeObject <image> (File.ReadAllText(file.FileName));
                    vectorImages[num]           = new Equipment.VectorPic();
                    vectorImages[num].polyLines = new List <List <Equipment.Point> >();
                    //vectorImages[num].hatching = new List<Equipment.Point>();
                    //vectorImages[num].arcs = new List<arc>();
                    vectorImages[num].circles = new List <circle>();

                    foreach (var i in img.plines)
                    {
                        vectorImages[num].polyLines.Add(new List <Equipment.Point>());
                        foreach (var j in i.list)
                        {
                            vectorImages[num].polyLines[vectorImages[num].polyLines.Count - 1].Add(new Equipment.Point()
                            {
                                X = Convert.ToSingle(j.X), Y = Convert.ToSingle(j.Y)
                            });
                        }
                    }
                    //foreach (var i in img.arcs)
                    //{
                    //    vectorImages[num].arcs.Add(new arc() { EndAngle = (i.EndAngle/Math.PI)*180, radius=i.radius, startAngle=(i.startAngle / Math.PI) * 180, UpperLeft = i.UpperLeft, radiusX = i.radius, radiusY = i.radius });
                    //}
                    foreach (var i in img.circles)
                    {
                        vectorImages[num].circles.Add(new circle()
                        {
                            center = i.center, radius = i.radius, radiusX = i.radiusX, radiusY = i.radiusY
                        });
                    }

                    tableLayoutPanel6.Controls.Remove(buttons_for_files[num]);

                    for_plans[num]             = new PictureBox();
                    for_plans[num].Name        = num.ToString();
                    for_plans[num].Dock        = DockStyle.Fill;
                    for_plans[num].ContextMenu = menu2;
                    tableLayoutPanel6.Controls.Remove(buttons_for_links[num]);

                    tableLayoutPanel6.Controls.Add(for_plans[num], num, 1);
                    tableLayoutPanel6.SetRowSpan(for_plans[num], 2);
                    Refresh();
                    //normalization. Part 1 - calcualiting proportions

                    double LeftUpperX = 0, LeftUpperY = 0,
                           RightLowerX = 0, RightLowerY = 0;

                    LeftUpperX  = 0; LeftUpperY = 0;
                    RightLowerX = 0; RightLowerY = 0;

                    calculateBorders(ref LeftUpperX, ref LeftUpperY, ref RightLowerX, ref RightLowerY, vectorImages[num]);


                    ////
                    foreach (var i in vectorImages[num].polyLines)
                    {
                        for (int j = 0; j < i.Count; j++)
                        {
                            i[j].X -= (float)LeftUpperX;
                            i[j].Y  = (float)LeftUpperY - i[j].Y;
                        }
                    }
                    //foreach (var i in vectorImages[num].arcs)
                    //{
                    //    i.UpperLeft.X -= (float)LeftUpperX;
                    //    i.UpperLeft.Y = (float)LeftUpperY - i.UpperLeft.Y;
                    //}
                    foreach (var i in vectorImages[num].circles)
                    {
                        i.center.X -= (float)LeftUpperX;
                        i.center.Y  = (float)LeftUpperY - i.center.Y;
                    }

                    rebuild_images();
                }
            }
        }