public static bool FromXml(XElement config, Markup makrup, ObjectsMap map, out MarkupLine line, out bool invert) { var lineId = config.GetAttrValue <ulong>(nameof(Id)); if (!MarkupPointPair.FromHash(lineId, makrup, map, out MarkupPointPair pointPair, out invert)) { line = null; return(false); } if (!makrup.TryGetLine(pointPair, out line)) { var type = (LineType)config.GetAttrValue("T", (int)pointPair.DefaultType); switch (type) { case LineType.Regular: line = new MarkupRegularLine(makrup, pointPair); break; case LineType.Stop: line = new MarkupStopLine(makrup, pointPair); break; case LineType.Crosswalk: line = new MarkupCrosswalkLine(makrup, pointPair); break; default: return(false); } } return(true); }
public bool TryGetLine <LineType>(ulong lineId, Dictionary <ObjectId, ObjectId> map, out LineType line) where LineType : MarkupLine { if (MarkupPointPair.FromHash(lineId, this, map, out MarkupPointPair pair)) { return(TryGetLine(pair.Hash, out line)); } else { line = null; return(false); } }
public static bool FromXml(XElement config, Markup makrup, Dictionary <ObjectId, ObjectId> map, out MarkupLine line) { var lineId = config.GetAttrValue <ulong>(nameof(Id)); MarkupPointPair.FromHash(lineId, makrup, map, out MarkupPointPair pointPair); if (!makrup.TryGetLine(pointPair.Hash, out line)) { line = new MarkupLine(makrup, pointPair); return(true); } else { return(false); } }
public static bool FromXml(XElement config, MarkupLine mainLine, Dictionary <ObjectId, ObjectId> map, out LinesIntersectEdge linePoint) { var lineId = config.GetAttrValue <ulong>(MarkupLine.XmlName); MarkupPointPair.FromHash(lineId, mainLine.Markup, map, out MarkupPointPair pair); if (mainLine.Markup.TryGetLine(pair.Hash, out MarkupLine line)) { linePoint = new LinesIntersectEdge(mainLine, line); return(true); } else { linePoint = null; return(false); } }
public static bool FromXml(XElement config, Markup markup, Dictionary<ObjectId, ObjectId> map, out IntersectFillerVertex linePoint) { var lineId1 = config.GetAttrValue<ulong>(MarkupPointPair.XmlName1); MarkupPointPair.FromHash(lineId1, markup, map, out MarkupPointPair pair1); var lineId2 = config.GetAttrValue<ulong>(MarkupPointPair.XmlName2); MarkupPointPair.FromHash(lineId2, markup, map, out MarkupPointPair pair2); if (markup.TryGetLine(pair1.Hash, out MarkupLine line1) && markup.TryGetLine(pair2.Hash, out MarkupLine line2)) { linePoint = new IntersectFillerVertex(line1, line2); return true; } else { linePoint = null; return false; } }