コード例 #1
0
ファイル: DataNode.cs プロジェクト: 15831944/backsight
 /// <summary>
 /// Queries the specified search extent. If this node is completely
 /// enclosed by the search extent, the <see cref="PassAll"/> method gets
 /// called to process all points with no further spatial checks. For
 /// nodes that partially overlap, each point is checked against the
 /// search extent.
 /// </summary>
 /// <param name="searchExtent">The search extent.</param>
 /// <param name="itemHandler">The method that should be called for each query hit (any
 /// node with an extent that overlaps the query window)</param>
 internal override void Query(Extent searchExtent, ProcessItem itemHandler)
 {
     if (this.Window.IsOverlap(searchExtent))
     {
         if (this.Window.IsEnclosedBy(searchExtent))
         {
             PassAll(itemHandler);
         }
         else
         {
             foreach (IPoint p in m_Items)
             {
                 if (searchExtent.IsOverlap(p.Geometry))
                 {
                     bool keepGoing = itemHandler(p);
                     if (!keepGoing)
                     {
                         return;
                     }
                 }
             }
         }
     }
 }