Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
Distance.cs
1using System.Threading.Tasks;
2using System.Xml;
4
6{
10 public abstract class Distance : LayoutElement
11 {
12 private LengthAttribute distance;
13
19 public Distance(Layout2DDocument Document, ILayoutElement Parent)
20 : base(Document, Parent)
21 {
22 }
23
28 {
29 get => this.distance;
30 set => this.distance = value;
31 }
32
37 public override Task FromXml(XmlElement Input)
38 {
39 this.distance = new LengthAttribute(Input, "distance", this.Document);
40 return base.FromXml(Input);
41 }
42
47 public override void ExportAttributes(XmlWriter Output)
48 {
49 base.ExportAttributes(Output);
50
51 this.distance?.Export(Output);
52 }
53
58 public override void CopyContents(ILayoutElement Destination)
59 {
60 base.CopyContents(Destination);
61
62 if (Destination is Distance Dest)
63 Dest.distance = this.distance?.CopyIfNotPreset(Destination.Document);
64 }
65
71 public override async Task DoMeasureDimensions(DrawingState State)
72 {
73 await base.DoMeasureDimensions(State);
74
75 EvaluationResult<Length> Distance = await this.distance.TryEvaluate(State.Session);
76 if (Distance.Ok)
77 State.CalcDrawingSize(Distance.Result, ref this.dist, true, this);
78 else
79 this.defined = false;
80 }
81
85 protected float dist;
86
91 public override void ExportStateAttributes(XmlWriter Output)
92 {
93 base.ExportStateAttributes(Output);
94
95 this.distance?.ExportState(Output);
96 }
97 }
98}
Contains a 2D layout document.
void Export(XmlWriter Output)
Exports the attribute.
Definition: Attribute.cs:187
void ExportState(XmlWriter Output)
Exports the state of the attribute.
Definition: Attribute.cs:199
static async Task< EvaluationResult< T > > TryEvaluate(Attribute< T > Attribute, Variables Session)
Tries to evaluate the attribute value.
Definition: Attribute.cs:256
LengthAttribute CopyIfNotPreset(Layout2DDocument ForDocument)
Copies the attribute object if undefined, or defined by an expression. Returns a reference to itself,...
Abstract base class for distance elements.
Definition: Distance.cs:11
override Task FromXml(XmlElement Input)
Populates the element (including children) with information from its XML definition.
Definition: Distance.cs:37
LengthAttribute DistanceAttribute
Degrees
Definition: Distance.cs:28
float dist
Measured distance
Definition: Distance.cs:85
override async Task DoMeasureDimensions(DrawingState State)
Measures layout entities and defines unassigned properties, related to dimensions.
Definition: Distance.cs:71
override void CopyContents(ILayoutElement Destination)
Copies contents (attributes and children) to the destination element.
Definition: Distance.cs:58
override void ExportStateAttributes(XmlWriter Output)
Exports the local attributes of the current element.
Definition: Distance.cs:91
override void ExportAttributes(XmlWriter Output)
Exports attributes to XML.
Definition: Distance.cs:47
Distance(Layout2DDocument Document, ILayoutElement Parent)
Abstract base class for distance elements.
Definition: Distance.cs:19
Variables Session
Current session.
Definition: DrawingState.cs:91
void CalcDrawingSize(Length L, ref float Size, bool Horizontal, ILayoutElement Element)
Converts a defined length to drawing size.
Abstract base class for layout elements.
Layout2DDocument Document
Layout document.
Base interface for all layout elements.
Layout2DDocument Document
Layout document.