예제 #1
0
        /// <summary>
        /// Поиск узла дерева, содержащего данную позицию в тексте, вместе со всеми объемлющими узлами
        /// Порядок узлов в списке - от узла к корню. Нулевой элемент - самый вложенный.
        /// </summary>
        /// <param name="p">Корень дерева, в котором искать</param>
        /// <param name="line">строка</param>
        /// <param name="col">столбец</param>
        /// <returns></returns>
        public static List<PointOfInterest> FindPointByLocation(PointOfInterest p, int line, int col)
        {
            if (!p.IsInside(line, col))
                return null;

            List<PointOfInterest> result = new List<PointOfInterest>();

            foreach (PointOfInterest pt in p.Items)
            {
                List<PointOfInterest> l2 = FindPointByLocation(pt, line, col);
                if (l2 != null)
                    result.AddRange(l2);
            }
            result.Add(p);
            return result;
        }