/// <summary> /// Get a colorless figure /// </summary> /// <param name="xmlElement"> XmlReader instance</param> /// <param name="shape"> Figure type</param> /// <returns></returns> private static Figure LoadFigure(XElement xmlElement, string shape) { Figure figure = null; float radius, width, height, a, b, c; FiguresFactory factory = new FiguresFactory(); Material material = (xmlElement.Attributes().Count() == 2) ? Material.Paper : Material.Film; switch (shape) { case "Circle": radius = float.Parse(xmlElement.Element("Radius").Value); figure = factory.GetFigure(material, radius); break; case "Rectangle": width = float.Parse(xmlElement.Element("Width").Value); height = float.Parse(xmlElement.Element("Height").Value); figure = factory.GetFigure(material, width, height); break; case "Triangle": a = float.Parse(xmlElement.Element("SideA").Value); b = float.Parse(xmlElement.Element("SideB").Value); c = float.Parse(xmlElement.Element("SideC").Value); figure = factory.GetFigure(material, a, b, c); break; } return(figure); }
/// <summary> /// Get a colorless figure /// </summary> /// <param name="reader"> XmlReader instance</param> /// <param name="shape"> Figure type</param> /// <returns></returns> private static Figure LoadFigure(XmlReader reader, string shape) { Figure figure = null; float radius, width, height, a, b, c; FiguresFactory factory = new FiguresFactory(); Material material = (reader.AttributeCount == 2)? Material.Paper : Material.Film; reader.Read(); reader.Read(); switch (shape) { case "Circle": radius = float.Parse(reader.ReadInnerXml()); figure = factory.GetFigure(material, radius); break; case "Rectangle": width = float.Parse(reader.ReadInnerXml()); reader.Read(); height = float.Parse(reader.ReadInnerXml()); figure = factory.GetFigure(material, width, height); break; case "Triangle": a = float.Parse(reader.ReadInnerXml()); reader.Read(); b = float.Parse(reader.ReadInnerXml()); reader.Read(); c = float.Parse(reader.ReadInnerXml()); figure = factory.GetFigure(material, a, b, c); break; } return(figure); }
public IEnumerable <string> GetAvailableFigures() { FiguresFactory figuresFactory = new FiguresFactory(); var list = figuresFactory.GetAvailableFigures(); return(list); }
private void Deserialize() { if (!System.IO.File.Exists("figures.txt")) { MessageBox.Show("Не был найден файл figures.txt", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); throw new NotImplementedException(); } StreamReader f = new StreamReader("figures.txt"); figures.list.Clear(); while (!f.EndOfStream) { string s = f.ReadLine(); string[] data = s.Split(new char[] { ',' }); try { float x = float.Parse(data[1], CultureInfo.InvariantCulture.NumberFormat); float y = float.Parse(data[2], CultureInfo.InvariantCulture.NumberFormat); float w = float.Parse(data[3], CultureInfo.InvariantCulture.NumberFormat); float h = float.Parse(data[4], CultureInfo.InvariantCulture.NumberFormat); Point a = new Point((int)x, (int)y); Point b = new Point((int)w, (int)h); String type = data[0]; switch (type) { case "Rect": Factory = new CreateRect(); break; /*case "Oval": * Factory = new CreateOval(); * break; * case "Line": * Factory = new CreateLine(); * break; * case "Triangle": * Factory = new CreateTriangle(); * break; * case "Rhombus": * Factory = new CreateRhombus(); * break; * case "Star": * Factory = new CreateStar(); * break;*/ default: Factory = null; break; } AbstrFigure figure = Factory.FactoryMethod(a, b);//проверка на null figures.list.Add(figure); } catch { } } f.Close(); }
public Paint(Canvas canvaToDraw) { pluginControl = new PluginControl(this); CurrentFactory = new LineFactory(); Canva = canvaToDraw; PrevPos = new Point() { X = -1, Y = -1 }; rewind = new RedoUndoClass(Canva); }
public void TestTriangleValue() { FiguresFactory factory = new FiguresFactory(); IFigure figure = factory.GetFigure("triangle"); var jparams = JToken.Parse(@"{ 'a': 10, 'b': 10, 'c': 10 }"); figure.SetParamsFromJson(jparams); decimal expected = 43.30127018922193233818615854m; decimal area = figure.CalculateArea(); Assert.Equal(expected, area, 25); }
public void TestCircleValue() { FiguresFactory factory = new FiguresFactory(); IFigure figure = factory.GetFigure("circle"); var jparams = JToken.Parse(@"{ 'radius': 10 }"); figure.SetParamsFromJson(jparams); decimal expected = 314.15926535897900m; decimal area = figure.CalculateArea(); Assert.Equal(expected, area, 25); }
public void CheckFiguresFactory() { Figure circle = null; Figure rectangle = null; Figure triangle = null; // Create factory FiguresFactory factory = new FiguresFactory(); // Film Circle circle = factory.GetFigure(Material.Film, 3); Figure expCircleF = new CircleFilm(3); Assert.AreEqual(expCircleF, circle); // Paper Circle circle = factory.GetFigure(Material.Paper, 3); Figure expCircleP = new CirclePaper(3); Assert.AreEqual(expCircleP, circle); // Film Rectangle rectangle = factory.GetFigure(Material.Film, 2, 2); Figure expRectangleF = new RectangleFilm(2, 2); Assert.AreEqual(expRectangleF, rectangle); // Paper Rectangle rectangle = factory.GetFigure(Material.Paper, 2, 2); Figure expRectangleP = new RectanglePaper(2, 2); Assert.AreEqual(expRectangleP, rectangle); // Film Triangle triangle = factory.GetFigure(Material.Film, 2, 2, 2); Figure expTriangleF = new TriangleFilm(2, 2, 2); Assert.AreEqual(expTriangleF, triangle); // Paper Triangle triangle = factory.GetFigure(Material.Paper, 3, 4, 5); Figure expTriangleP = new TrianglePaper(3, 4, 5); Assert.AreEqual(expTriangleP, triangle); }
private void WindowSizeChanged() { int width, height; SDL.SDL_GetWindowSize(_window, out width, out height); _rectangle = FiguresFactory.CreateRectangle( width / 2, height / 2, _defaultRotationAngle, _offsetFromBorders, width - _offsetFromBorders, _offsetFromBorders, height - _offsetFromBorders, width - 300, height - 300 ); _trapeze.SetMovementBorders( _offsetFromBorders, width - _offsetFromBorders, _offsetFromBorders, height - _offsetFromBorders ); _ellipse.SetMovementBorders( _offsetFromBorders, width - _offsetFromBorders, _offsetFromBorders, height - _offsetFromBorders ); }
/// <summary> /// Initializes figuresFactory and figuresBox /// </summary> public TaskUnitTest() { figuresFactory = new FiguresFactory(); figuresBox = new Box(); Figure figure = null; // Create a paper circle figure = figuresFactory.GetFigure(Material.Paper, 5); Painter.Colorize(figure, Сoloring.Orange); figuresBox.Add(figure); totalArea += figure.GetArea(); totalPerimeter += figure.GetPerimeter(); // Create a film rectangle figure = figuresFactory.GetFigure(Material.Film, 2, 5); figuresBox.Add(figure); totalArea += figure.GetArea(); totalPerimeter += figure.GetPerimeter(); // Create a paper triangle figure = figuresFactory.GetFigure(Material.Paper, 2, 2, 2); Painter.Colorize(figure, Сoloring.Green); figuresBox.Add(figure); totalArea += figure.GetArea(); totalPerimeter += figure.GetPerimeter(); // Create a film triangle figure = figuresFactory.GetFigure(Material.Film, 3, 4, 5); figuresBox.Add(figure); totalArea += figure.GetArea(); totalPerimeter += figure.GetPerimeter(); // Create a film circle figure = figuresFactory.GetFigure(Material.Film, 4); figuresBox.Add(figure); totalArea += figure.GetArea(); totalPerimeter += figure.GetPerimeter(); }
private void InitializeFigures() { int width, height; SDL.SDL_GetWindowSize(_window, out width, out height); _rectangle = FiguresFactory.CreateRectangle( width / 2, height / 2, _defaultRotationAngle, _offsetFromBorders, width - _offsetFromBorders, _offsetFromBorders, height - _offsetFromBorders, width - 300, height - 300 ); _trapeze = FiguresFactory.CreateTrapeze( 115, height / 2 + 15, _defaultRotationAngle, _offsetFromBorders, width - _offsetFromBorders, _offsetFromBorders, height - _offsetFromBorders, 200, 100 ); _ellipse = FiguresFactory.CreateEllipse( width - 100, height / 2, _defaultRotationAngle, _offsetFromBorders, width - _offsetFromBorders, _offsetFromBorders, height - _offsetFromBorders, 100, 57 ); _currentFigure = _trapeze; PerformClipping(); }
private void LineButtonClicked(object sender, EventArgs e) { tool = LineButton.Text; Factory = new CreateLine(); isToolChosen = true; }
static void Main(string[] args) { System.Console.WriteLine("Hello! It's batch calculator."); if (args.Length != 1) { System.Console.WriteLine("Usage: Program.exe <input json file>"); return; } decimal totalArea = 0m; FiguresFactory figuresFactory = new FiguresFactory(); using (StreamReader file = File.OpenText(args[0])) { JsonTextReader reader = new JsonTextReader(file); var jtoken = JToken.Load(reader); if (jtoken.Type != JTokenType.Array) { System.Console.WriteLine("Error! File must contain json array"); return; } var jarray = (JArray)jtoken; foreach (JToken jtokenFigure in jarray) { if (jtokenFigure.Type != JTokenType.Object) { System.Console.WriteLine("Error! Each element of array must contain object"); } var jfigure = (JObject)jtokenFigure; string figureName = jfigure.Value<string>("figure"); if (figureName == null) { System.Console.WriteLine("Error! Figure object must contain figure key"); return; } IFigure figure = figuresFactory.GetFigure(figureName); if (figure == null) { System.Console.WriteLine("Error! Unknown figure"); return; } var jtokenParams = jfigure["params"]; figure.SetParamsFromJson(jtokenParams); System.Console.WriteLine(figure.ToString()); decimal area = figure.CalculateArea(); System.Console.WriteLine("Area = " + area); System.Console.WriteLine(); totalArea += area; } } System.Console.WriteLine("TotalArea = " + totalArea); }
public void SetFactory(FiguresFactory factory) { CurrentFactory = factory; }
private void OvalButtonClicked(object sender, EventArgs e) { tool = OvalButton.Text; Factory = new CreateOval(); isToolChosen = true; }
private void StarButtonClicked(object sender, EventArgs e) { tool = StarButton.Text; Factory = new CreateStar(); isToolChosen = true; }
private void TriButtonClicked(object sender, EventArgs e) { tool = TriButton.Text; Factory = new CreateTriangle(); isToolChosen = true; }
public IActionResult CalculateArea([FromBody] JToken jsonData) { if (jsonData.Type != JTokenType.Object) { return(BadRequest(new { error = "Figure must be object" })); } var jfigure = (JObject)jsonData; string figureName = jfigure.Value <string>("figure"); if (figureName == null) { return(BadRequest(new { error = "Figure object must contain figure key" })); } FiguresFactory figuresFactory = new FiguresFactory(); IFigure figure = figuresFactory.GetFigure(figureName); if (figure == null) { return(BadRequest(new { error = "Unknown figure type" })); } var jtokenParams = jfigure["params"]; try { figure.SetParamsFromJson(jtokenParams); } catch { return(BadRequest(new { error = "Invalid figure arguments" })); } decimal area = 0m; try { area = figure.CalculateArea(); } catch (System.ArgumentException) { return(BadRequest(new { error = "Invalid figure arguments" })); } catch (System.OverflowException) { return(BadRequest(new { error = "Overflow caused during calculation. Arguments is too big" })); } return(Ok(new { area = area })); }
private void SetInitialBoardModel() { boardModel.Figures.Clear(); //#region Fill all figures in the board model int otherFiguresRowNumber = 1; int pawnsRowNumber = 2; Color color = Color.Black; for (int rowNumber = 1; rowNumber <= 2; rowNumber++) { if (rowNumber == 2) { pawnsRowNumber = 7; otherFiguresRowNumber = 8; color = Color.White; } for (int columnNumber = 1; columnNumber <= 8; columnNumber++) { FiguresFactory figuresFactory = new FiguresFactory(); var pawn = figuresFactory.getPawn(); var adjustedFigure = this.SetFigureInitialValues(pawn, columnNumber.ToString() + color + pawn.Type, columnNumber, pawnsRowNumber, color); boardModel.Figures.Add(adjustedFigure); Figure specialFigure = null; switch (columnNumber) { case 1: specialFigure = figuresFactory.getRook(); break; case 2: specialFigure = figuresFactory.getKnight(); break; case 3: specialFigure = figuresFactory.getBishop(); break; case 4: specialFigure = figuresFactory.getQueen(); break; case 5: specialFigure = figuresFactory.getKing(); break; case 6: specialFigure = figuresFactory.getBishop(); break; case 7: specialFigure = figuresFactory.getKnight(); break; case 8: specialFigure = figuresFactory.getRook(); break; } adjustedFigure = this.SetFigureInitialValues(specialFigure, columnNumber.ToString() + color + specialFigure.Type, columnNumber, otherFiguresRowNumber, color); boardModel.Figures.Add(adjustedFigure); } } //#endregion //#region Calculate possible moves on all figures in the board for (int i = 0; i < boardModel.Figures.Count; i++) { switch (boardModel.Figures[i].Type) { case "pawn": boardModel.Figures[i] = Pawn.CalculatePossibleMoves(boardModel, boardModel.Figures[i]); break; } } //#endregion }
private void RhombusButtonClicked(object sender, EventArgs e) { tool = RhombusButton.Text; Factory = new CreateRhombus(); isToolChosen = true; }