public override void WriteToXML(XElement root) { XElement xmlElement = new XElement("PortPainter"); base.WriteToXML(xmlElement); xmlElement.Add(new XElement("PortDefenitionGuid", PortDefenitionGuid.ToString("B"))); xmlElement.Add(new XElement("ConnectionPortLocation", ConnectionPortLocation.ToString())); rectanglePainter.WriteToXML(xmlElement); root.Add(xmlElement); }
public static RectangleSide OppositeDirection(this RectangleSide side) { switch (side) { case RectangleSide.Left: return(RectangleSide.Right); case RectangleSide.Right: return(RectangleSide.Left); case RectangleSide.Top: return(RectangleSide.Bottom); case RectangleSide.Bottom: return(RectangleSide.Top); default: throw new InternalRuntimeException($"Can't take the opposite direction of the direction: {side.ToString()}"); } }
private static Rectangle MergeRectangles(Rectangle first, Rectangle second, RectangleSide side) { Rectangle mergedRectangle; switch (side) { case RectangleSide.Left: mergedRectangle = new Rectangle(first.width + second.width, first.height, second.x, first.y); break; case RectangleSide.Right: mergedRectangle = new Rectangle(first.width + second.width, first.height, first.x, first.y); break; case RectangleSide.Top: mergedRectangle = new Rectangle(first.width, first.height + second.height, first.x, first.y); break; case RectangleSide.Bottom: mergedRectangle = new Rectangle(first.width, first.height + second.height, first.x, second.y); break; default: throw new InternalRuntimeException("A rectangle can only be joined on the sides left, right, top or bottom, not " + side.ToString()); } Rectangle[] oldRectangles = new Rectangle[] { first, second }; Rectangle.ReplaceRectangles(oldRectangles, mergedRectangle); return(mergedRectangle); }