Esempio n. 1
0
        private void primitiveDrawingButton_Click(object sender, EventArgs e)
        {
            var drawingButton = (Button)sender;

            var(drawingButtonText, newPrimitive, newPrimitiveDrawer) = GetPrimitiveContext(drawingButton, _primitivePoints);
            if (_primitivePoints != null)
            {
                drawingButton.Text = drawingButtonText;
                _primitive         = newPrimitive;
                _primitivePoints   = null;
                _primitiveDrawer.Draw(_canvasGraphics, _drawingPen, _primitive, _canvas);
                return;
            }

            _primitiveDrawer = newPrimitiveDrawer;
            _primitiveDrawer.ClearCanvas(_canvasGraphics, _canvas);
            drawingButton.Text = "Рисование";
            _primitive         = null;
            _primitivePoints   = new List <Point>();

            ///this is peace of shit code
            (string, Primitive, IPrimitiveDrawer) GetPrimitiveContext(Button drawingButton, List <Point> primitivePoints)
            {
                string           drawingButtonText  = null;
                Primitive        newPrimitive       = null;
                IPrimitiveDrawer newPrimitiveDrawer = null;

                if (drawingButton == polygonDrawingButton)
                {
                    if (primitivePoints != null)
                    {
                        drawingButtonText = "Многоугольник";
                        newPrimitive      = new Polygon(primitivePoints);
                    }
                    else
                    {
                        newPrimitiveDrawer = new PolygonDrawer();
                    }
                }
                else if (drawingButton == edgeDrawingButton)
                {
                    if (primitivePoints != null)
                    {
                        drawingButtonText = "Ребро";
                        newPrimitive      = new Edge(primitivePoints);
                    }
                    else
                    {
                        newPrimitiveDrawer = new EdgeDrawer();
                    }
                }
                else
                {
                    throw new ArgumentException();
                }

                return(drawingButtonText, newPrimitive, newPrimitiveDrawer);
            }

            ///this is peace of shit code
            (string, Primitive, IPrimitiveDrawer) GetPrimitiveContext2(Button drawingButton, List <Point> primitivePoints)
            {
                if (drawingButton != edgeDrawingButton && drawingButton != polygonDrawingButton)
                {
                    throw new ArgumentException();
                }
                var(drawingButtonText, newPrimitive, newPrimitiveDrawer) = primitivePoints != null
                    ? drawingButton == polygonDrawingButton
                        ? ("Многоугольник", new Polygon(primitivePoints), (IPrimitiveDrawer)null)
                        : ("Ребро", (Primitive) new Edge(primitivePoints), (IPrimitiveDrawer)null)
                    : drawingButton == polygonDrawingButton
                        ? ((string)null, (Primitive)null, (IPrimitiveDrawer) new PolygonDrawer())
                        : ((string)null, (Primitive)null, new EdgeDrawer());
                return(drawingButtonText, newPrimitive, newPrimitiveDrawer);
            }
        }