예제 #1
0
            /// <summary>
            /// Devuelve la tabla de hojas de estilo del documento RTF.
            /// </summary>
            /// <returns>Tabla de hojas de estilo del documento RTF.</returns>
            public RtfStyleSheetTable GetStyleSheetTable()
            {
                RtfStyleSheetTable sstable = new RtfStyleSheetTable();

                RtfTreeNode sst = MainGroup.SelectSingleGroup("stylesheet");

                RtfNodeCollection styles = sst.ChildNodes;

                for (int i = 1; i < styles.Count; i++)
                {
                    RtfTreeNode style = styles[i];

                    RtfStyleSheet rtfss = ParseStyleSheet(style);

                    sstable.AddStyleSheet(rtfss.Index, rtfss);
                }

                return(sstable);
            }
예제 #2
0
            /// <summary>
            /// Parsea el nodo con la tabla de estilos del documento.
            /// </summary>
            /// <param name="ssnode">Nodo con la tabla de estilos.</param>
            /// <returns>Tabla de estilos del documento.</returns>
            private RtfStyleSheet ParseStyleSheet(RtfTreeNode ssnode)
            {
                RtfStyleSheet rss = new RtfStyleSheet();

                foreach (RtfTreeNode node in ssnode.ChildNodes)
                {
                    if (node.NodeKey == "cs")
                    {
                        rss.Type = RtfStyleSheetType.Character;
                        rss.Index = node.Parameter;
                    }
                    else if (node.NodeKey == "s")
                    {
                        rss.Type = RtfStyleSheetType.Paragraph;
                        rss.Index = node.Parameter;
                    }
                    else if (node.NodeKey == "ds")
                    {
                        rss.Type = RtfStyleSheetType.Section;
                        rss.Index = node.Parameter;
                    }
                    else if (node.NodeKey == "ts")
                    {
                        rss.Type = RtfStyleSheetType.Table;
                        rss.Index = node.Parameter;
                    }
                    else if (node.NodeKey == "additive")
                    {
                        rss.Additive = true;
                    }
                    else if (node.NodeKey == "sbasedon")
                    {
                        rss.BasedOn = node.Parameter;
                    }
                    else if (node.NodeKey == "snext")
                    {
                        rss.Next = node.Parameter;
                    }
                    else if (node.NodeKey == "sautoupd")
                    {
                        rss.AutoUpdate = true;
                    }
                    else if (node.NodeKey == "shidden")
                    {
                        rss.Hidden = true;
                    }
                    else if (node.NodeKey == "slink")
                    {
                        rss.Link = node.Parameter;
                    }
                    else if (node.NodeKey == "slocked")
                    {
                        rss.Locked = true;
                    }
                    else if (node.NodeKey == "spersonal")
                    {
                        rss.Personal = true;
                    }
                    else if (node.NodeKey == "scompose")
                    {
                        rss.Compose = true;
                    }
                    else if (node.NodeKey == "sreply")
                    {
                        rss.Reply = true;
                    }
                    else if (node.NodeKey == "styrsid")
                    {
                        rss.Styrsid = node.Parameter;
                    }
                    else if (node.NodeKey == "ssemihidden")
                    {
                        rss.SemiHidden = true;
                    }
                    else if (node.NodeType == RtfNodeType.Group &&
                             (node.ChildNodes[0].NodeKey == "*" && node.ChildNodes[1].NodeKey == "keycode"))
                    {
                        rss.KeyCode = new RtfNodeCollection();

                        for (int i = 2; i < node.ChildNodes.Count; i++)
                        {
                            rss.KeyCode.Add(node.ChildNodes[i].CloneNode());
                        }
                    }
                    else if (node.NodeType == RtfNodeType.Text)
                    {
                        rss.Name = node.NodeKey.Substring(0,node.NodeKey.Length-1);
                    }
                    else
                    {
                        if(node.NodeKey != "*")
                            rss.Formatting.Add(node);
                    }
                }

                return rss;
            }
예제 #3
0
 /// <summary>
 /// Elimina de la tabla de estilos el estilo pasado como parámetro.
 /// </summary>
 /// <param name="ss"></param>
 public void RemoveStyleSheet(RtfStyleSheet ss)
 {
     stylesheets.Remove(ss.Index);
 }
예제 #4
0
            /// <summary>
            /// Añade un nuevo estilo a la tabla de estilos. El estilo se añadirá con el índice de estilo pasado como parámetro.
            /// </summary>
            /// <param name="index">Indice del estilo a añadir a la tabla.</param>
            /// <param name="ss">Nuevo estilo a añadir a la tabla.</param>
            public void AddStyleSheet(int index, RtfStyleSheet ss)
            {
                ss.Index = index;

                stylesheets.Add(index, ss);
            }
예제 #5
0
            /// <summary>
            /// Añade un nuevo estilo a la tabla de estilos. El estilo se añadirá con un nuevo índice no existente en la tabla.
            /// </summary>
            /// <param name="ss">Nuevo estilo a añadir a la tabla.</param>
            public void AddStyleSheet(RtfStyleSheet ss)
            {
                ss.Index = newStyleSheetIndex();

                stylesheets.Add(ss.Index, ss);
            }
예제 #6
0
            /// <summary>
            /// Parsea el nodo con la tabla de estilos del documento.
            /// </summary>
            /// <param name="ssnode">Nodo con la tabla de estilos.</param>
            /// <returns>Tabla de estilos del documento.</returns>
            private RtfStyleSheet ParseStyleSheet(RtfTreeNode ssnode)
            {
                RtfStyleSheet rss = new RtfStyleSheet();

                foreach (RtfTreeNode node in ssnode.ChildNodes)
                {
                    if (node.NodeKey == "cs")
                    {
                        rss.Type  = RtfStyleSheetType.Character;
                        rss.Index = node.Parameter;
                    }
                    else if (node.NodeKey == "s")
                    {
                        rss.Type  = RtfStyleSheetType.Paragraph;
                        rss.Index = node.Parameter;
                    }
                    else if (node.NodeKey == "ds")
                    {
                        rss.Type  = RtfStyleSheetType.Section;
                        rss.Index = node.Parameter;
                    }
                    else if (node.NodeKey == "ts")
                    {
                        rss.Type  = RtfStyleSheetType.Table;
                        rss.Index = node.Parameter;
                    }
                    else if (node.NodeKey == "additive")
                    {
                        rss.Additive = true;
                    }
                    else if (node.NodeKey == "sbasedon")
                    {
                        rss.BasedOn = node.Parameter;
                    }
                    else if (node.NodeKey == "snext")
                    {
                        rss.Next = node.Parameter;
                    }
                    else if (node.NodeKey == "sautoupd")
                    {
                        rss.AutoUpdate = true;
                    }
                    else if (node.NodeKey == "shidden")
                    {
                        rss.Hidden = true;
                    }
                    else if (node.NodeKey == "slink")
                    {
                        rss.Link = node.Parameter;
                    }
                    else if (node.NodeKey == "slocked")
                    {
                        rss.Locked = true;
                    }
                    else if (node.NodeKey == "spersonal")
                    {
                        rss.Personal = true;
                    }
                    else if (node.NodeKey == "scompose")
                    {
                        rss.Compose = true;
                    }
                    else if (node.NodeKey == "sreply")
                    {
                        rss.Reply = true;
                    }
                    else if (node.NodeKey == "styrsid")
                    {
                        rss.Styrsid = node.Parameter;
                    }
                    else if (node.NodeKey == "ssemihidden")
                    {
                        rss.SemiHidden = true;
                    }
                    else if (node.NodeType == RtfNodeType.Group &&
                             (node.ChildNodes[0].NodeKey == "*" && node.ChildNodes[1].NodeKey == "keycode"))
                    {
                        rss.KeyCode = new RtfNodeCollection();

                        for (int i = 2; i < node.ChildNodes.Count; i++)
                        {
                            rss.KeyCode.Add(node.ChildNodes[i].CloneNode());
                        }
                    }
                    else if (node.NodeType == RtfNodeType.Text)
                    {
                        rss.Name = node.NodeKey.Substring(0, node.NodeKey.Length - 1);
                    }
                    else
                    {
                        if (node.NodeKey != "*")
                        {
                            rss.Formatting.Add(node);
                        }
                    }
                }

                return(rss);
            }
예제 #7
0
 /// <summary>
 /// Elimina de la tabla de estilos el estilo pasado como parámetro.
 /// </summary>
 /// <param name="ss"></param>
 public void RemoveStyleSheet(RtfStyleSheet ss)
 {
     stylesheets.Remove(ss.Index);
 }
예제 #8
0
            /// <summary>
            /// Añade un nuevo estilo a la tabla de estilos. El estilo se añadirá con el índice de estilo pasado como parámetro.
            /// </summary>
            /// <param name="index">Indice del estilo a añadir a la tabla.</param>
            /// <param name="ss">Nuevo estilo a añadir a la tabla.</param>
            public void AddStyleSheet(int index, RtfStyleSheet ss)
            {
                ss.Index = index;

                stylesheets.Add(index, ss);
            }
예제 #9
0
            /// <summary>
            /// Añade un nuevo estilo a la tabla de estilos. El estilo se añadirá con un nuevo índice no existente en la tabla.
            /// </summary>
            /// <param name="ss">Nuevo estilo a añadir a la tabla.</param>
            public void AddStyleSheet(RtfStyleSheet ss)
            {
                ss.Index = newStyleSheetIndex();

                stylesheets.Add(ss.Index, ss);
            }