/* Add meta element for page transition effect, this works on IE but not NS */ public virtual void AddTransitionEffect(Lexer lexer, Node root, short effect, double duration) { Node head = root.FindHead(lexer.Options.tt); string transition; if (0 <= effect && effect <= 23) { transition = "revealTrans(Duration=" + (duration).ToString() + ",Transition=" + effect + ")"; } else { transition = "blendTrans(Duration=" + (duration).ToString() + ")"; } if (head != null) { Node meta = lexer.InferredTag("meta"); meta.AddAttribute("http-equiv", "Page-Enter"); meta.AddAttribute("content", transition); Node.InsertNodeAtStart(head, meta); } }
/* create style element using rules from dictionary */ private void CreateStyleElement(Lexer lexer, Node doc) { Node node, head, body; Style style; AttVal av; if (lexer.styles == null && NiceBody(lexer, doc)) { return; } node = lexer.NewNode(Node.StartTag, null, 0, 0, "style"); node.Isimplicit = true; /* insert type attribute */ av = new AttVal(null, null, '"', "type", "text/css"); av.Dict = AttributeTable.DefaultAttributeTable.FindAttribute(av); node.Attributes = av; body = doc.FindBody(lexer.Options.tt); lexer.txtstart = lexer.lexsize; if (body != null) { CleanBodyAttrs(lexer, body); } for (style = lexer.styles; style != null; style = style.Next) { lexer.AddCharToLexer(' '); lexer.AddStringLiteral(style.Tag); lexer.AddCharToLexer('.'); lexer.AddStringLiteral(style.TagClass); lexer.AddCharToLexer(' '); lexer.AddCharToLexer('{'); lexer.AddStringLiteral(style.Properties); lexer.AddCharToLexer('}'); lexer.AddCharToLexer('\n'); } lexer.txtend = lexer.lexsize; Node.InsertNodeAtEnd(node, lexer.NewNode(Node.TextNode, lexer.lexbuf, lexer.txtstart, lexer.txtend)); /* now insert style element into document head doc is root node. search its children for html node the head node should be first child of html node */ head = doc.FindHead(lexer.Options.tt); if (head != null) { Node.InsertNodeAtEnd(head, node); } }
/* add meta element for Tidy */ public virtual bool AddGenerator(Node root) { AttVal attval; Node node; Node head = root.FindHead(Options.tt); if (head != null) { for (node = head.Content; node != null; node = node.Next) { if (node.Tag == Options.tt.TagMeta) { attval = node.GetAttrByName("name"); if (attval != null && attval.Val != null && String.Compare(attval.Val, "generator") == 0) { attval = node.GetAttrByName("content"); if (attval != null && attval.Val != null && attval.Val.Length >= 9 && String.Compare(attval.Val.Substring(0, 9), "HTML Tidy") == 0) { return false; } } } } node = this.InferredTag("meta"); node.AddAttribute("content", "HTML Tidy, see www.w3.org"); node.AddAttribute("name", "generator"); Node.InsertNodeAtStart(head, node); return true; } return false; }