protected override void CreateFragment() { string text = Text; string font = string.Format("font: {0}pt {1}", Font.Size, Font.FontFamily.Name); //Create fragment container htmlContainer = new InitialContainer("<table border=0 cellspacing=5 cellpadding=0 style=\"" + font + "\"><tr><td>" + text + "</td></tr></table>"); //_htmlContainer.SetBounds(new Rectangle(0, 0, 10, 10)); }
/// <summary> /// Parses the document /// </summary> private void ParseDocument() { InitialContainer root = this; MatchCollection tags = Parser.Match(Parser.HtmlTag, DocumentSource); CssBox curBox = root; int lastEnd = -1; foreach (Match tagmatch in tags) { string text = tagmatch.Index > 0 ? DocumentSource.Substring(lastEnd + 1, tagmatch.Index - lastEnd - 1) : string.Empty; if (!string.IsNullOrEmpty(text.Trim())) { CssAnonymousBox abox = new CssAnonymousBox(curBox) { Text = text }; } else if (text != null && text.Length > 0) { CssAnonymousSpaceBox sbox = new CssAnonymousSpaceBox(curBox) { Text = text }; } HtmlTag tag = new HtmlTag(tagmatch.Value); if (tag.IsClosing) { curBox = FindParent(tag.TagName, curBox); } else if (tag.IsSingle) { CssBox foo = new CssBox(curBox, tag); } else { curBox = new CssBox(curBox, tag); } lastEnd = tagmatch.Index + tagmatch.Length - 1; } string finaltext = DocumentSource.Substring((lastEnd > 0 ? lastEnd + 1 : 0), DocumentSource.Length - lastEnd - 1 + (lastEnd == 0 ? 1 : 0)); if (!string.IsNullOrEmpty(finaltext)) { CssAnonymousBox abox = new CssAnonymousBox(curBox) { Text = finaltext }; } }
public HtmlPanel() { this.htmlContainer = new InitialContainer(); base.SetStyle(ControlStyles.ResizeRedraw, true); base.SetStyle(ControlStyles.Opaque, true); this.DoubleBuffered = true; this.BackColor = SystemColors.Window; this.AutoScroll = true; HtmlRenderer.AddReference(Assembly.GetCallingAssembly()); }
/// <summary> /// Creates a new HtmlPanel /// </summary> public HtmlPanel() { htmlContainer = new InitialContainer(); SetStyle(ControlStyles.ResizeRedraw, true); SetStyle(ControlStyles.Opaque, true); //SetStyle(ControlStyles.Selectable, true); DoubleBuffered = true; BackColor = SystemColors.Window; AutoScroll = true; HtmlRenderer.AddReference(Assembly.GetCallingAssembly()); }
public static void Render(Graphics g, string html, RectangleF area, bool clip) { InitialContainer initialContainer = new InitialContainer(html); Region region = g.Clip; if (clip) { g.SetClip(area); } initialContainer.SetBounds(area); initialContainer.MeasureBounds(g); initialContainer.Paint(g); if (clip) { g.SetClip(region, CombineMode.Replace); } }
private void HtmlToolTip_Popup(object sender, PopupEventArgs e) { string toolTip = base.GetToolTip(e.AssociatedControl); NumberFormatInfo invariantInfo = NumberFormatInfo.InvariantInfo; object[] size = new object[] { e.AssociatedControl.Font.Size, e.AssociatedControl.Font.FontFamily.Name }; string str = string.Format(invariantInfo, "font: {0}pt {1}", size); string[] strArrays = new string[] { "<table class=htmltooltipbackground cellspacing=5 cellpadding=0 style=\"", str, "\"><tr><td style=border:0px>", toolTip, "</td></tr></table>" }; this.container = new InitialContainer(string.Concat(strArrays)); this.container.SetBounds(new Rectangle(0, 0, 10, 10)); this.container.AvoidGeometryAntialias = true; using (Graphics graphic = e.AssociatedControl.CreateGraphics()) { this.container.MeasureBounds(graphic); } e.ToolTipSize = Size.Round(this.container.MaximumSize); }
/// <summary> /// Renders the specified HTML source on the specified area clipping if specified /// </summary> /// <param name="g">Device to draw</param> /// <param name="html">HTML source</param> /// <param name="area">Area where HTML should be drawn</param> /// <param name="clip">If true, it will only paint on the specified area</param> public static void Render(Graphics g, string html, RectangleF area, bool clip) { InitialContainer container = new InitialContainer(html); Region prevClip = g.Clip; if (clip) { g.SetClip(area); } container.SetBounds(area); container.MeasureBounds(g); container.Paint(g); if (clip) { g.SetClip(prevClip, System.Drawing.Drawing2D.CombineMode.Replace); } }
void HtmlToolTip_Popup(object sender, PopupEventArgs e) { string text = this.GetToolTip(e.AssociatedControl); string font = string.Format(NumberFormatInfo.InvariantInfo, "font: {0}pt {1}", e.AssociatedControl.Font.Size, e.AssociatedControl.Font.FontFamily.Name); //Create fragment container container = new InitialContainer("<table class=htmltooltipbackground cellspacing=5 cellpadding=0 style=\"" + font + "\"><tr><td style=border:0px>" + text + "</td></tr></table>"); container.SetBounds(new Rectangle(0, 0, 10, 10)); container.AvoidGeometryAntialias = true; //Measure bounds of the container using (Graphics g = e.AssociatedControl.CreateGraphics()) { container.MeasureBounds(g); } //Set the size of the tooltip e.ToolTipSize = Size.Round(container.MaximumSize); }
private void ParseDocument() { InitialContainer initialContainer = this; MatchCollection matchCollections = Parser.Match("<[^<>]*>", this.DocumentSource); CssBox cssBox = initialContainer; int index = -1; foreach (Match match in matchCollections) { string str = (match.Index > 0 ? this.DocumentSource.Substring(index + 1, match.Index - index - 1) : string.Empty); if (!string.IsNullOrEmpty(str.Trim())) { (new CssAnonymousBox(cssBox)).Text = str; } else if (str != null && str.Length > 0) { (new CssAnonymousSpaceBox(cssBox)).Text = str; } HtmlTag htmlTag = new HtmlTag(match.Value); if (htmlTag.IsClosing) { cssBox = this.FindParent(htmlTag.TagName, cssBox); } else if (!htmlTag.IsSingle) { cssBox = new CssBox(cssBox, htmlTag); } else { CssBox cssBox1 = new CssBox(cssBox, htmlTag); } index = match.Index + match.Length - 1; } string str1 = this.DocumentSource.Substring((index > 0 ? index + 1 : 0), this.DocumentSource.Length - index - 1 + (index == 0 ? 1 : 0)); if (!string.IsNullOrEmpty(str1)) { (new CssAnonymousBox(cssBox)).Text = str1; } }
/// <summary> /// Creates the fragment of HTML that is rendered /// </summary> protected virtual void CreateFragment() { htmlContainer = new InitialContainer(Text); }
/// <summary> /// Sets the initial container of the box /// </summary> /// <param name="b"></param> private void SetInitialContainer(InitialContainer b) { _initialContainer = b; }
/// <summary> /// Renders the specified HTML source on the specified area clipping if specified /// </summary> /// <param name="g">Device to draw</param> /// <param name="html">HTML source</param> /// <param name="area">Area where HTML should be drawn</param> /// <param name="clip">If true, it will only paint on the specified area</param> public static void Render(Graphics g, string html, RectangleF area, bool clip) { InitialContainer container = new InitialContainer(html); Region prevClip = g.Clip; if (clip) g.SetClip(area); container.SetBounds(area); container.MeasureBounds(g); container.Paint(g); if (clip) g.SetClip(prevClip, System.Drawing.Drawing2D.CombineMode.Replace); }