private void btnCreate_Click(object sender, EventArgs e) { if (cmboShapeType.SelectedItem is null) { errorMessage("Please select a type of shape"); } else if (ValidateInfo()) { ShapeFactory factory = null; switch (cmboShapeType.SelectedItem.ToString()) { case "Circle": Shapes.Point CirclePoint = new Shapes.Point(Int32.Parse(txtPoint1X.Text), Int32.Parse(txtPoint1Y.Text)); factory = new CircleFactory(CirclePoint, Int32.Parse(txtRadius1.Text)); break; case "Ellipse": Shapes.Point EllipsePoint = new Shapes.Point(Int32.Parse(txtPoint1X.Text), Int32.Parse(txtPoint1Y.Text)); factory = new EllipseFactory(EllipsePoint, Int32.Parse(txtRadius1.Text), Int32.Parse(txtRadius2.Text)); break; case "Rectangle": Shapes.Point RectanglePoint = new Shapes.Point(Int32.Parse(txtPoint1X.Text), Int32.Parse(txtPoint1Y.Text)); factory = new RectangleFactory(RectanglePoint, Int32.Parse(txtRadius1.Text), Int32.Parse(txtRadius2.Text)); break; case "Square": Shapes.Point SquarePoint = new Shapes.Point(Int32.Parse(txtPoint1X.Text), Int32.Parse(txtPoint1Y.Text)); factory = new SquareFactory(SquarePoint, Int32.Parse(txtRadius1.Text)); break; case "Triangle": Shapes.Point TriPoint1 = new Shapes.Point(Int32.Parse(txtPoint1X.Text), Int32.Parse(txtPoint1Y.Text)); Shapes.Point TriPoint2 = new Shapes.Point(Int32.Parse(txtPoint2X.Text), Int32.Parse(txtPoint2Y.Text)); Shapes.Point TriPoint3 = new Shapes.Point(Int32.Parse(txtPoint3X.Text), Int32.Parse(txtPoint3Y.Text)); factory = new TriangleFactory(TriPoint1, TriPoint2, TriPoint3); break; case "Composite Image": factory = new CompositeImageFactory(filepath); break; case "Embedded Pic": Shapes.Point EmbeddedPoint = new Shapes.Point(Int32.Parse(txtPoint1X.Text), Int32.Parse(txtPoint1Y.Text)); factory = new EmbeddedPicFactory(EmbeddedPoint, Int32.Parse(txtRadius1.Text), Int32.Parse(txtRadius2.Text), filepath); break; } Shape shape = factory.GetShape(); Console.WriteLine(shape.ShapeType); shapeToDraw = shape; this.Close(); } }
public Shape getShape(int initialX, int initialY, int secondaryX, int secondaryY, bool add) { if (designation == shapeDesignation.EMBEDDED_PIC) { OpenFileDialog openFileDialog1 = new OpenFileDialog(); DialogResult result = openFileDialog1.ShowDialog(); if (result == DialogResult.OK) { string file = openFileDialog1.FileName; Console.WriteLine(openFileDialog1.FileName); embeddedPicFilepath = openFileDialog1.FileName; } } ShapeFactory factory = null; switch (designation) { case shapeDesignation.CIRCLE: Shapes.Point CirclePoint = new Shapes.Point(Math.Min(initialX, secondaryX), Math.Min(initialY, secondaryY)); factory = new CircleFactory(CirclePoint, Math.Abs(secondaryX - initialX)); break; case shapeDesignation.ELLIPSE: Shapes.Point EllipsePoint = new Shapes.Point(Math.Min(initialX, secondaryX), Math.Min(initialY, secondaryY)); factory = new EllipseFactory(EllipsePoint, Math.Abs(secondaryY - initialY), Math.Abs(secondaryX - initialX)); break; case shapeDesignation.RECTANGLE: Shapes.Point RectanglePoint = new Shapes.Point(Math.Min(initialX, secondaryX), Math.Min(initialY, secondaryY)); factory = new RectangleFactory(RectanglePoint, Math.Abs(secondaryY - initialY), Math.Abs(secondaryX - initialX)); break; case shapeDesignation.SQUARE: Shapes.Point SquarePoint = new Shapes.Point(Math.Min(initialX, secondaryX), Math.Min(initialY, secondaryY)); factory = new SquareFactory(SquarePoint, Math.Abs(secondaryX - initialX)); break; case shapeDesignation.TRIANGLE: //TODO: Figure out rectangular triangle drawing //Shapes.Point TriPoint1 = new Shapes.Point(Int32.Parse(txtPoint1X.Text), Int32.Parse(txtPoint1Y.Text)); //Shapes.Point TriPoint2 = new Shapes.Point(Int32.Parse(txtPoint2X.Text), Int32.Parse(txtPoint2Y.Text)); //Shapes.Point TriPoint3 = new Shapes.Point(Int32.Parse(txtPoint3X.Text), Int32.Parse(txtPoint3Y.Text)); //factory = new TriangleFactory(TriPoint1, TriPoint2, TriPoint3); break; case shapeDesignation.EMBEDDED_PIC: Shapes.Point EmbeddedPoint = new Shapes.Point(Math.Min(initialX, secondaryX), Math.Min(initialY, secondaryY)); factory = new EmbeddedPicFactory(EmbeddedPoint, Math.Abs(secondaryX - initialX), Math.Abs(secondaryY - initialY), embeddedPicFilepath); break; case shapeDesignation.LINE: //TODO: Create Line in shapes break; default: return(null); } Shape shape = factory.GetShape(); if (add) { addToList(shape); } return(shape); }