private string GetFileName(string Language, string[] Rows, out string Title) { StringBuilder sb = new StringBuilder(); foreach (string Row in Rows) { sb.AppendLine(Row); } string Xml = sb.ToString(); int i = Language.IndexOf(':'); if (i > 0) { Title = Language.Substring(i + 1).Trim(); Language = Language.Substring(0, i).TrimEnd(); } else { Title = string.Empty; } sb.Append(Language); string Hash = Hashes.ComputeSHA256HashString(Encoding.UTF8.GetBytes(sb.ToString())); string LayoutFolder = Path.Combine(contentRootFolder, "Layout"); string FileName = Path.Combine(LayoutFolder, Hash); string PngFileName = FileName + ".png"; if (!File.Exists(PngFileName)) { try { XmlDocument Doc = new XmlDocument(); Doc.LoadXml(Xml); Layout2DDocument LayoutDoc = new Layout2DDocument(Doc); RenderSettings Settings = new RenderSettings() { ImageSize = RenderedImageSize.ResizeImage // TODO: Theme colors, font, etc. }; using (SKImage Img = LayoutDoc.Render(Settings, out Map[] _)) // TODO: Maps
/// <summary> /// Creates a new instance of the layout element. /// </summary> /// <param name="Document">Document containing the new element.</param> /// <param name="Parent">Parent element.</param> /// <returns>New instance.</returns> public override ILayoutElement Create(Layout2DDocument Document, ILayoutElement Parent) { return(new ImageInternal(Document, Parent)); }
/// <summary> /// Dilation filter /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public Dilate(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Represents a segment of text in flowing text. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public Text(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Abstract base class of elements that do spatial distribution of children. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public SpatialDistribution(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Draws a line to a point, relative to the origio of the current container /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public LineTo(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// A point, relative to the origo (of the current container) /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public RelOrigo(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Generates layout elements by looping through a set or vector of values. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public ForEach(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Draws a ellipse arc to a point, relative to the origio of the current container /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public EllipseArcTo(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
protected virtual void Test(string FileName) { Layout2DDocument.FromFile("Xml\\" + FileName); }
/// <summary> /// Creates a new instance of the layout element. /// </summary> /// <param name="Document">Document containing the new element.</param> /// <param name="Parent">Parent element.</param> /// <returns>New instance.</returns> public abstract ILayoutElement Create(Layout2DDocument Document, ILayoutElement Parent);
/// <summary> /// Abstract base class for layout elements. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public LayoutElement(Layout2DDocument Document, ILayoutElement Parent) { this.document = Document; this.parent = Parent; }
/// <summary> /// A point, relative to the last point /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public RelLast(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Replays the segments of another path. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public Replay(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Abstract base class of dynamic layout containers (i.e. containers that can /// generate child elements dynamically). /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public DynamicContainer(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Draws a conic curve to a point, relative to the end of the last segment /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public ConicToRel(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Creates a new instance of the layout element. /// </summary> /// <param name="Document">Document containing the new element.</param> /// <param name="Parent">Parent element.</param> /// <returns>New instance.</returns> public override ILayoutElement Create(Layout2DDocument Document, ILayoutElement Parent) { return(new ConicToRel(Document, Parent)); }
/// <summary> /// Abstract base class for figures with two points. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public FigurePoint2(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// A rectangle /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public Rectangle(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// An arrow /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public Arrow(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Defines a shape for use elsewhere in the layout. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public Shape(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Layout to show, if none of the cases apply. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public Otherwise(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// An image defined in a file. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public ImageFile(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
protected override void Test(string FileName, params KeyValuePair <string, object>[] ContentAttachments) { Layout2DDocument Doc = Layout2DDocument.FromFile("Xml\\" + FileName + ".xml", ContentAttachments); RenderSettings Settings = new RenderSettings(); using (SKImage Image = Doc.Render(Settings, out Map[] _))
/// <summary> /// Abstract base class for layout elements with two points and a weight. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public Point2Weight(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Creates a new instance of the layout element. /// </summary> /// <param name="Document">Document containing the new element.</param> /// <param name="Parent">Parent element.</param> /// <returns>New instance.</returns> public override ILayoutElement Create(Layout2DDocument Document, ILayoutElement Parent) { return new CircleArcToRel(Document, Parent); }
/// <summary> /// Ordering child elements vertically. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public Vertical(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Draws a circle arc to a point, relative to the end of the last segment /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public CircleArcToRel(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }
/// <summary> /// Creates a new instance of the layout element. /// </summary> /// <param name="Document">Document containing the new element.</param> /// <param name="Parent">Parent element.</param> /// <returns>New instance.</returns> public override ILayoutElement Create(Layout2DDocument Document, ILayoutElement Parent) { return(new Dilate(Document, Parent)); }
/// <summary> /// Represents an unformatted text label. /// </summary> /// <param name="Document">Layout document containing the element.</param> /// <param name="Parent">Parent element.</param> public Label(Layout2DDocument Document, ILayoutElement Parent) : base(Document, Parent) { }