/// <summary> /// Devuelve todos los nodos, a partir del nodo actual, cuya palabra clave y parámetro son los indicados como parámetro. /// </summary> /// <param name="keyword">Palabra clave buscada.</param> /// <param name="param">Parámetro buscado.</param> /// <returns>Colección de nodos, a partir del nodo actual, cuya palabra clave y parámetro son los indicados como parámetro.</returns> public RtfNodeCollection SelectNodes(string keyword, int param) { RtfNodeCollection nodes = new RtfNodeCollection(); foreach (RtfTreeNode node in children) { if (node.key == keyword && node.param == param) { nodes.Add(node); } nodes.AddRange(node.SelectNodes(keyword, param)); } return(nodes); }
/// <summary> /// Devuelve todos los nodos, a partir del nodo actual, cuyo tipo es el indicado como parámetro. /// </summary> /// <param name="nodeType">Tipo del nodo buscado.</param> /// <returns>Colección de nodos, a partir del nodo actual, cuyo tipo es la indicado como parámetro.</returns> public RtfNodeCollection SelectNodes(RtfNodeType nodeType) { RtfNodeCollection nodes = new RtfNodeCollection(); foreach (RtfTreeNode node in children) { if (node.type == nodeType) { nodes.Add(node); } nodes.AddRange(node.SelectNodes(nodeType)); } return(nodes); }
public void PopulateCollection() { RtfNodeCollection list1 = new RtfNodeCollection(); RtfNodeCollection list2 = new RtfNodeCollection(); RtfTreeNode node = new RtfTreeNode(RtfNodeType.Keyword, "b", true, 2); list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "a", true, 1)); list1.Add(node); list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "c", true, 3)); list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "d", true, 4)); list1.Add(new RtfTreeNode(RtfNodeType.Keyword, "e", true, 5)); list2.Add(node); list2.Add(new RtfTreeNode(RtfNodeType.Keyword, "g", true, 7)); Assert.That(list1.Count, Is.EqualTo(5)); Assert.That(list2.Count, Is.EqualTo(2)); Assert.That(list1[1], Is.SameAs(node)); Assert.That(list2[0], Is.SameAs(node)); list1.AddRange(list2); Assert.That(list1.Count, Is.EqualTo(7)); Assert.That(list1[5], Is.SameAs(list2[0])); Assert.That(list1[6], Is.SameAs(list2[1])); Assert.That(list1[6].NodeKey, Is.EqualTo("g")); Assert.That(list2[0], Is.SameAs(node)); RtfTreeNode node1 = new RtfTreeNode(RtfNodeType.Keyword, "h", false, 8); list1.Insert(5, node1); Assert.That(list1.Count, Is.EqualTo(8)); Assert.That(list1[5], Is.SameAs(node1)); RtfTreeNode node2 = new RtfTreeNode(RtfNodeType.Keyword, "i", false, 9); list1[1] = node2; Assert.That(list1.Count, Is.EqualTo(8)); Assert.That(list1[1], Is.SameAs(node2)); }
/// <summary> /// Constructor de la clase ImageNode. /// </summary> /// <param name="node">Nodo RTF del que se obtendrán los datos de la imagen.</param> public ImageNode(RtfTreeNode node) { if (node != null) { //Asignamos todos los campos del nodo NodeKey = node.NodeKey; HasParameter = node.HasParameter; Parameter = node.Parameter; ParentNode = node.ParentNode; RootNode = node.RootNode; NodeType = node.NodeType; ChildNodes = new RtfNodeCollection(); ChildNodes.AddRange(node.ChildNodes); //Obtenemos los datos de la imagen como un array de bytes getImageData(); } }
/// <summary> /// Constructor de la clase ImageNode. /// </summary> /// <param name="node">Nodo RTF del que se obtendrán los datos de la imagen.</param> public ImageNode(RtfTreeNode node) { if(node != null) { //Asignamos todos los campos del nodo NodeKey = node.NodeKey; HasParameter = node.HasParameter; Parameter = node.Parameter; ParentNode = node.ParentNode; RootNode = node.RootNode; NodeType = node.NodeType; ChildNodes = new RtfNodeCollection(); ChildNodes.AddRange(node.ChildNodes); //Obtenemos los datos de la imagen como un array de bytes getImageData(); } }
/// <summary> /// Devuelve todos los nodos, a partir del nodo actual, cuyo tipo es el indicado como parámetro. /// </summary> /// <param name="nodeType">Tipo del nodo buscado.</param> /// <returns>Colección de nodos, a partir del nodo actual, cuyo tipo es la indicado como parámetro.</returns> public RtfNodeCollection SelectNodesByType(RtfNodeType nodeType) { RtfNodeCollection nodes = new RtfNodeCollection(); foreach (RtfTreeNode node in children) { if (node.type == nodeType) { nodes.Add(node); } nodes.AddRange(node.SelectNodesByType(nodeType)); } return nodes; }
/// <summary> /// Devuelve todos los nodos, a partir del nodo actual, cuya palabra clave es la indicada como parámetro. /// </summary> /// <param name="keyword">Palabra clave buscada.</param> /// <returns>Colección de nodos, a partir del nodo actual, cuya palabra clave es la indicada como parámetro.</returns> public RtfNodeCollection SelectNodes(string keyword) { RtfNodeCollection nodes = new RtfNodeCollection(); foreach (RtfTreeNode node in children) { if (node.key == keyword) { nodes.Add(node); } nodes.AddRange(node.SelectNodes(keyword)); } return nodes; }
/// <summary> /// Busca todos los nodos de tipo Texto que contengan el texto buscado. /// </summary> /// <param name="text">Texto buscado en el documento.</param> /// <returns>Lista de nodos, a partir del actual, que contienen el texto buscado.</returns> public RtfNodeCollection FindText(string text) { RtfNodeCollection list = new RtfNodeCollection(); //Si el nodo actual tiene hijos if (children != null) { foreach (RtfTreeNode node in children) { if (node.NodeType == RtfNodeType.Text && node.NodeKey.IndexOf(text) != -1) list.Add(node); else if(node.NodeType == RtfNodeType.Group) list.AddRange(node.FindText(text)); } } return list; }
/// <summary> /// Devuelve todos los nodos, a partir del nodo actual, cuya palabra clave y parámetro son los indicados como parámetro. /// </summary> /// <param name="keyword">Palabra clave buscada.</param> /// <param name="param">Parámetro buscado.</param> /// <returns>Colección de nodos, a partir del nodo actual, cuya palabra clave y parámetro son los indicados como parámetro.</returns> public RtfNodeCollection SelectNodes(string keyword, int param) { RtfNodeCollection nodes = new RtfNodeCollection(); if (children != null) { foreach (RtfTreeNode node in children) { if (node.key == keyword && node.param == param) { nodes.Add(node); } nodes.AddRange(node.SelectNodes(keyword, param)); } } return nodes; }
/// <summary> /// Devuelve todos los nodos grupo, a partir del nodo actual, cuya primera palabra clave es la indicada como parámetro. /// </summary> /// <param name="keyword">Palabra clave buscada.</param> /// <returns>Colección de nodos grupo, a partir del nodo actual, cuya primera palabra clave es la indicada como parámetro.</returns> public RtfNodeCollection SelectGroups(string keyword) { RtfNodeCollection nodes = new RtfNodeCollection(); if (children != null) { foreach (RtfTreeNode node in children) { if (node.NodeType == RtfNodeType.Group && node.HasChildNodes() && node.FirstChild.NodeKey == keyword) { nodes.Add(node); } nodes.AddRange(node.SelectGroups(keyword)); } } return nodes; }
/// <summary> /// Devuelve todos los nodos grupo, a partir del nodo actual, cuya primera palabra clave es la indicada como parámetro. /// </summary> /// <param name="keyword">Palabra clave buscada.</param> /// <param name="ignoreSpecial">Si está activo se ignorarán los nodos de control '\*' previos a algunas palabras clave.</param> /// <returns>Colección de nodos grupo, a partir del nodo actual, cuya primera palabra clave es la indicada como parámetro.</returns> public RtfNodeCollection SelectGroups(string keyword, bool ignoreSpecial) { RtfNodeCollection nodes = new RtfNodeCollection(); if (children != null) { foreach (RtfTreeNode node in children) { if (node.NodeType == RtfNodeType.Group && node.HasChildNodes() && ( (node.FirstChild.NodeKey == keyword) || (ignoreSpecial && node.ChildNodes[0].NodeKey == "*" && node.ChildNodes[1].NodeKey == keyword)) ) { nodes.Add(node); } nodes.AddRange(node.SelectGroups(keyword, ignoreSpecial)); } } return nodes; }