示例#1
0
        /// <inheritdoc/>
        public bool TouchVertex(VertexId vertexId)
        {
            if (_loadedTiles.Contains(vertexId.TileId))
            {
                // tile was already loaded.
                return(false);
            }

            lock (_loadedTiles)
            {
                if (_loadedTiles.Contains(vertexId.TileId))
                {
                    // tile was already loaded.
                    return(false);
                }

                var tile = Tile.FromLocalId(vertexId.TileId, _zoom);
                var url  = _baseUrl + $"/{tile.Zoom}/{tile.X}/{tile.Y}";
                using (var stream = TileParser.DownloadFunc(url))
                {
                    var parse = stream?.Parse(tile);
                    if (parse == null)
                    {
                        return(false);
                    }

                    var result = _routerDb.AddOsmTile(_idMap, tile, parse);
                    _loadedTiles.Add(vertexId.TileId);
                    return(result);
                }
            }
        }
示例#2
0
 public HaymanVertex(VertexId id, RevisionId revisionId)
 {
     _id = id;
     _revisionId = revisionId;
     _outEdges = new Dictionary<EdgeId, IGenericEdge<VertexId, RevisionId, HaymanVertexData, EdgeId, RevisionId, HaymanEdgeData, HyperEdgeId, RevisionId, HaymanEdgeData>>();
     _inEdges = new Dictionary<EdgeId, IGenericEdge<VertexId, RevisionId, HaymanVertexData, EdgeId, RevisionId, HaymanEdgeData, HyperEdgeId, RevisionId, HaymanEdgeData>>();
 }
示例#3
0
文件: Graph.cs 项目: MilkyFayde/WPF
        public void Save(string fileName)
        {
            XmlWriter         writer;
            XmlWriterSettings settings = new XmlWriterSettings();

            settings.Indent              = true;
            settings.NewLineChars        = "\r\n";
            settings.Encoding            = Encoding.ASCII;
            settings.NewLineOnAttributes = false;

            writer = XmlWriter.Create(fileName, settings);
            writer.WriteStartDocument();
            writer.WriteStartElement("Graph");
            writer.WriteAttributeString("Title", Title);
            writer.WriteAttributeString("VertexId", VertexId.ToString());
            writer.WriteAttributeString("LinkId", LinkId.ToString());
            writer.WriteAttributeString("PointX", GraphPoint.X.ToString());
            writer.WriteAttributeString("PointY", GraphPoint.Y.ToString());

            foreach (var vertex in Vertices)
            {
                vertex.Save(writer);
            }

            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Flush();
            writer.Close();
        } // Save
 public void VertexIdEmptyConstructorTest()
 {
     var _VertexId1 = new VertexId();
     var _VertexId2 = new VertexId();
     Assert.IsTrue(_VertexId1.Length > 0);
     Assert.IsTrue(_VertexId2.Length > 0);
     Assert.AreNotEqual(_VertexId1, _VertexId2);
 }
 /// <summary>
 /// Moves the enumerator to the first edge of the given vertex.
 /// </summary>
 /// <param name="vertex">The vertex.</param>
 /// <returns>True if the vertex exists.</returns>
 public bool MoveTo(VertexId vertex)
 {
     if (_enumerator == null)
     {
         throw new InvalidOperationException(
                   $"Cannot reset an enumerator created from an {nameof(EdgeEnumerator)}.");
     }
     return(_enumerator.MoveTo(vertex));
 }
示例#6
0
        /// <summary>
        /// Adds a new visit the path tree.
        /// </summary>
        /// <param name="tree">The tree.</param>
        /// <param name="vertex">The vertex.</param>
        /// <param name="edge">The edge.</param>
        /// <param name="previousPointer">The pointer to the previous entry.</param>
        /// <returns>A pointer to the visit.</returns>
        public static uint AddVisit(this PathTree tree, VertexId vertex, uint edge, uint previousPointer)
        {
            var data0 = vertex.TileId;
            var data1 = vertex.LocalId;
            var data2 = edge;
            var data3 = previousPointer;

            return(tree.Add(data0, data1, data2, data3));
        }
示例#7
0
        /// <summary>
        /// Return the correspoingin vertex of the parallelogram
        /// </summary>
        /// <param name="vertexPar">vertex kind</param>
        /// <returns>vertex value</returns>
        public Point Vertex(VertexId vertexPar)
        {
            switch (vertexPar)
            {
            case VertexId.Corner: return(corner);

            case VertexId.VertexA: return(aPlusCorner);

            case VertexId.OtherCorner: return(OtherCorner);

            case VertexId.VertexB: return(bPlusCorner);

            default:
                throw new InvalidOperationException();
            }
        }
示例#8
0
 /// <summary>
 /// Return the vertex referenced by the given vertex identifier.
 /// If no vertex is referenced by that identifier, then return null.
 /// </summary>
 /// <param name="vertexId">The identifier of the vertex.</param>
 /// <returns>
 /// The vertex referenced by the provided identifier or null when no such edge exists.
 /// </returns>
 public IHaymanVertex GetVertex(VertexId vertexId)
 {
     IHaymanVertex vertex;
     _vertices.TryGetValue(vertexId, out vertex);
     return vertex;
 }
示例#9
0
 IHaymanVertex IModelGraphAdapter.GetVertex(VertexId id)
 {
     return _graph.GetVertex(id);
 }
示例#10
0
 protected bool Equals(VertexModel other)
 {
     return(VertexId.Equals(other.VertexId));
 }
 public void op_Bigger_Smaller2_Test()
 {
     var _VertexId1 = new VertexId(5);
     var _VertexId2 = new VertexId(23);
     Assert.IsFalse(_VertexId1 > _VertexId2);
 }
 public void op_Bigger_Equals_Test()
 {
     var _VertexId1 = new VertexId(1);
     var _VertexId2 = new VertexId(1);
     Assert.IsFalse(_VertexId1 > _VertexId2);
 }
 public void op_Bigger_Null_Test1()
 {
     var      _VertexId1 = new VertexId();
     VertexId _VertexId2 = null;
     Assert.IsTrue(_VertexId1 > _VertexId2);
 }
 public void op_Inequality_NotEquals2_Test()
 {
     var _VertexId1 = new VertexId(5);
     var _VertexId2 = new VertexId(23);
     Assert.IsTrue(_VertexId1 != _VertexId2);
 }
 public void op_Inequality_Equals_Test()
 {
     var _VertexId1 = new VertexId(1);
     var _VertexId2 = new VertexId(1);
     Assert.IsFalse(_VertexId1 != _VertexId2);
 }
 public void op_Inequality_SameReference_Test()
 {
     var _VertexId1 = new VertexId();
     #pragma warning disable
     Assert.IsFalse(_VertexId1 != _VertexId1);
     #pragma warning restore
 }
 public void op_Inequality_Null_Test2()
 {
     VertexId _VertexId1 = null;
     var      _VertexId2 = new VertexId();
     Assert.IsTrue(_VertexId1 != _VertexId2);
 }
示例#18
0
 public override int GetHashCode()
 {
     return(VertexId.GetHashCode());
 }
示例#19
0
 internal static void WriteVertexId(this Stream stream, VertexId vertexId)
 {
     stream.WriteUInt32(vertexId.TileId);
     stream.WriteUInt32(vertexId.LocalId);
 }
 public void op_SmallerOrEqual_Bigger1_Test()
 {
     var _VertexId1 = new VertexId(2);
     var _VertexId2 = new VertexId(1);
     Assert.IsFalse(_VertexId1 <= _VertexId2);
 }
 public void op_Smaller_Null_Test2()
 {
     VertexId _VertexId1 = null;
     var      _VertexId2 = new VertexId();
     Assert.IsTrue(_VertexId1 < _VertexId2);
 }
 public void op_Bigger_SameReference_Test()
 {
     var _VertexId1 = new VertexId();
     #pragma warning disable
     Assert.IsFalse(_VertexId1 > _VertexId1);
     #pragma warning restore
 }
 public void op_BiggerOrEqual_Null_Test2()
 {
     VertexId _VertexId1 = null;
     var      _VertexId2 = new VertexId();
     Assert.IsTrue(_VertexId1 >= _VertexId2);
 }
 public void VertexIdInt32ConstructorTest()
 {
     var _VertexId = new VertexId(5);
     Assert.AreEqual("5", _VertexId.ToString());
     Assert.AreEqual(1,   _VertexId.Length);
 }
 public void VertexIdUInt32ConstructorTest()
 {
     var _VertexId = new VertexId(23U);
     Assert.AreEqual("23", _VertexId.ToString());
     Assert.AreEqual(2,    _VertexId.Length);
 }
 public void op_Bigger_Bigger1_Test()
 {
     var _VertexId1 = new VertexId(2);
     var _VertexId2 = new VertexId(1);
     Assert.IsTrue(_VertexId1 > _VertexId2);
 }
 public void op_BiggerOrEqual_Bigger2_Test()
 {
     var _VertexId1 = new VertexId(23);
     var _VertexId2 = new VertexId(5);
     Assert.IsTrue(_VertexId1 >= _VertexId2);
 }
 public void op_BiggerOrEqual_SameReference_Test()
 {
     var _VertexId1 = new VertexId();
     #pragma warning disable
     Assert.IsTrue(_VertexId1 >= _VertexId1);
     #pragma warning restore
 }
 public void op_Smaller_Equals_Test()
 {
     var _VertexId1 = new VertexId(1);
     var _VertexId2 = new VertexId(1);
     Assert.IsFalse(_VertexId1 < _VertexId2);
 }
 public void op_BiggerOrEqual_SmallerThan2_Test()
 {
     var _VertexId1 = new VertexId(5);
     var _VertexId2 = new VertexId(23);
     Assert.IsFalse(_VertexId1 >= _VertexId2);
 }
 public void op_Smaller_Smaller2_Test()
 {
     var _VertexId1 = new VertexId(5);
     var _VertexId2 = new VertexId(23);
     Assert.IsTrue(_VertexId1 < _VertexId2);
 }
 public void CompareToSmallerTest1()
 {
     var _VertexId1 = new VertexId(1);
     var _VertexId2 = new VertexId(2);
     Assert.IsTrue(_VertexId1.CompareTo(_VertexId2) < 0);
 }
 public void op_SmallerOrEqual_Null_Test1()
 {
     var      _VertexId1 = new VertexId();
     VertexId _VertexId2 = null;
     Assert.IsTrue(_VertexId1 <= _VertexId2);
 }
 /// <summary>
 /// Return the correspoingin vertex of the parallelogram
 /// </summary>
 /// <param name="vertexPar">vertex kind</param>
 /// <returns>vertex value</returns>
 public Point Vertex(VertexId vertexPar) {
     switch (vertexPar) {
         case VertexId.Corner: return corner;
         case VertexId.VertexA: return aPlusCorner;
         case VertexId.OtherCorner: return OtherCorner;
         case VertexId.VertexB: return bPlusCorner;
         default:
             throw new InvalidOperationException();
     }
 }
 public void op_SmallerOrEqual_Equals_Test()
 {
     var _VertexId1 = new VertexId(1);
     var _VertexId2 = new VertexId(1);
     Assert.IsTrue(_VertexId1 <= _VertexId2);
 }
示例#36
0
 /// <summary>
 /// Create a new vertex, add it to the graph, and return the newly created vertex.
 /// The provided object identifier is a recommendation for the identifier to use.
 /// It is not required that the implementation use this identifier.
 /// If the object identifier is already being used by the graph to reference a vertex,
 /// then that reference vertex is returned and no vertex is created.
 /// If the identifier is a vertex (perhaps from another graph),
 /// then the vertex is duplicated for this graph. Thus, a vertex can not be an identifier.
 /// </summary>
 /// <param name="vertexId">The recommended object identifier.</param><param name="vertexInitializer">A delegate to initialize the new vertex.</param>
 /// <returns>
 /// The newly created vertex or the vertex already referenced by the provided identifier.
 /// </returns>
 public IHaymanVertex AddVertex(VertexId vertexId, Action<HaymanVertexData> vertexInitializer)
 {
     var data = new HaymanVertexData();
     vertexInitializer(data);
     return AddVertex(new HaymanVertex(vertexId, null) { VertexData = data });
 }
 public void VertexIdStringConstructorTest()
 {
     var _VertexId = new VertexId("123");
     Assert.AreEqual("123", _VertexId.ToString());
     Assert.AreEqual(3,     _VertexId.Length);
 }
示例#38
0
 /// <summary>
 /// Gets the given vertex.
 /// </summary>
 /// <param name="vertex">The vertex.</param>
 /// <returns>The vertex.</returns>
 public Coordinate GetVertex(VertexId vertex)
 {
     return(_network.GetVertex(vertex));
 }
 public void op_SmallerOrEqual_SmallerThan2_Test()
 {
     var _VertexId1 = new VertexId(5);
     var _VertexId2 = new VertexId(23);
     Assert.IsTrue(_VertexId1 <= _VertexId2);
 }