/// <inheritdoc cref="IPaperXmlElementWriter.WritePolygonPaperFigure(StreamWriter, IPaperFigure)"/> public void WritePolygonPaperFigure(StreamWriter writer, IPaperFigure polygonFigure) { WriteElementName(writer, polygonFigure as PolygonFigure); WriteSides(writer, polygonFigure as PolygonFigure); WriteColor(writer, polygonFigure); WriteEndElement(writer, polygonFigure as PolygonFigure); }
/// <inheritdoc cref="IPaperXmlElementWriter.WriteCircularPaperFigure(StreamWriter, IPaperFigure)"/> public void WriteCircularPaperFigure(StreamWriter writer, IPaperFigure circularFigure) { WriteElementName(writer, circularFigure as CircularFigure); WriteRadius(writer, circularFigure as CircularFigure); WriteColor(writer, circularFigure); WriteEndElement(writer, circularFigure as CircularFigure); }
/// <summary> /// Constructor to initialize a rectangle through two or four sides and other paper figure. /// </summary> /// <param name="sidesCollection">Two or four sides</param> public PaperRectangle(IEnumerable <double> sidesCollection, IPaperFigure figure) : base(sidesCollection) { double area = Sides[0] * Sides[1]; if (area > figure.GetArea()) { throw new ArgumentException("You cannot create a shape because the original shape is smaller."); } Color = figure.Color; IsRecolor = true; }
/// <summary> /// Constructor to initialize a circle through a radius and other paper figure. /// </summary> /// <param name="radius">Cicle radius</param> /// <param name="figure">Other paper figure</param> public PaperCircle(double radius, IPaperFigure figure) : base(radius) { double area = Math.PI * Math.Pow(Radius, 2); if (area > figure.GetArea()) { throw new ArgumentException("You cannot create a shape because the original shape is smaller."); } Color = figure.Color; IsRecolor = true; }
/// <summary> /// Constructor to initialize a square through one or three sides and other paper figure. /// </summary> /// <param name="sidesCollection">Three sides</param> /// <param name="figure">Other paper figure</param> public PaperTriangle(IEnumerable <double> sidesCollection, IPaperFigure figure) : base(sidesCollection) { double halfPerimetr = Sides.Sum() / 2; double area = Math.Sqrt(halfPerimetr * (halfPerimetr - Sides[0]) * (halfPerimetr - Sides[1]) * (halfPerimetr - Sides[2])); if (area > figure.GetArea()) { throw new ArgumentException("You cannot create a shape because the original shape is smaller."); } Color = figure.Color; IsRecolor = true; }
/// <summary> /// Paints a figure in a given color /// </summary> /// <param name="figure"> Figure to paint</param> /// <param name="color"> Color</param> public static void Colorize(Figure figure, Сoloring color) { if (figure is IPaperFigure) { IPaperFigure fig = (IPaperFigure)figure; fig.Сolor = color; } else { throw new Exception("This figure cannot be painted."); } }
/// <summary> /// Write figure color to Xml file using StreamWriter /// </summary> /// <param name="writer">StreamWriter object</param> /// <param name="figure">The figure whose color should be written</param> protected void WriteColor(StreamWriter writer, IPaperFigure figure) => writer.WriteLine($"<{nameof(figure.Color)}>{figure.Color}</{nameof(figure.Color)}>");
/// <summary> /// Write figure color to Xml file using XmlWriter /// </summary> /// <param name="writer">XmlWriter object</param> /// <param name="figure">The figure whose color should be written</param> protected void WriteColor(XmlWriter writer, IPaperFigure figure) => writer.WriteElementString(nameof(figure.Color), figure.Color.ToString());
/// <inheritdoc cref="Square(IEnumerable{double}, IFigure)"/> public PaperSquare(IEnumerable <double> sides, IPaperFigure cutOutPaperFigure) : base(sides, cutOutPaperFigure) { Color = cutOutPaperFigure.Color; IsPainted = true; }
/// <inheritdoc cref="Circle(double, IFigure)"/> public PaperCircle(double radius, IPaperFigure cutOutPaperFigure) : base(radius, cutOutPaperFigure) { Color = cutOutPaperFigure.Color; IsPainted = true; }