public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var italic = new Italic(); parent.Add(italic); context.RenderNode(element, new SpanContainer(italic)); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var bold = new Bold(); parent.Add(bold); context.RenderNode(element, new SpanContainer(bold)); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var paragraph = new Paragraph(); parent.Add(paragraph); context.RenderNode(element, new OrderListContainer(paragraph)); }
public async void Render(News news) { if (NetworkService.IsNetworkAvailable() == false) { await new DialogService().ShowMessageBox("请检查网络连接。", "错误"); return; } this.IsLoading = true; Exception exception = null; try { var newsDetail = await NewsService.DetailAsync(news.Id); this.Title = newsDetail.Title; var richTextBlock = new RichTextBlock() { FontSize = 16, Margin = new Thickness(20, 0, 20, 10), IsTextSelectionEnabled = false }; var context = new RenderContextBase(newsDetail.Content); context.Render(richTextBlock); this.NewsDetail = richTextBlock; } catch (Exception ex) { exception = ex; } if (exception != null) { await new DialogService().ShowError(exception, "错误", "关闭", null); } this.IsLoading = false; }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var a = (IHtmlAnchorElement)element; if (a.ChildElementCount == 0) { var anchor = new Hyperlink { Foreground = new SolidColorBrush(Colors.LightBlue) }; anchor.Click += async (sender, args) => { var dialog = new MessageDialog(a.Href, "使用浏览器打开"); dialog.Commands.Add(new UICommand("确定", async cmd => { var success = await Launcher.LaunchUriAsync(new Uri(a.Href, UriKind.Absolute)); if (success) { anchor.Foreground = new SolidColorBrush(Colors.Purple); } })); dialog.Commands.Add(new UICommand("取消")); await dialog.ShowAsync(); }; parent.Add(anchor); context.RenderNode(element, new SpanContainer(anchor)); } else { context.RenderNode(element,parent); } }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var a = (IHtmlAnchorElement)element; if (a.ChildElementCount == 0) { var anchor = new Hyperlink { Foreground = new SolidColorBrush(Colors.LightBlue) }; anchor.Click += async(sender, args) => { var dialog = new MessageDialog(a.Href, "使用浏览器打开"); dialog.Commands.Add(new UICommand("确定", async cmd => { var success = await Launcher.LaunchUriAsync(new Uri(a.Href, UriKind.Absolute)); if (success) { anchor.Foreground = new SolidColorBrush(Colors.Purple); } })); dialog.Commands.Add(new UICommand("取消")); await dialog.ShowAsync(); }; parent.Add(anchor); context.RenderNode(element, new SpanContainer(anchor)); } else { context.RenderNode(element, parent); } }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var span = new Span(); var color = element.Style("color"); if (string.IsNullOrEmpty(color) == false) { color = color.Trim().TrimStart('#'); if (color.Length == 6) { var sR = color.Substring(0, 2); var sG = color.Substring(2, 2); var sB = color.Substring(4, 2); byte r, g, b; if (byte.TryParse(sR, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out r) && byte.TryParse(sG, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out g) && byte.TryParse(sB, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out b)) { var value = Color.FromArgb(255, r, g, b); if (value != Colors.White && value != Colors.Black) { span.Foreground = new SolidColorBrush(value); } } } } parent.Add(span); context.RenderNode(element, new SpanContainer(span)); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var richEditBox = new RichEditBox(); richEditBox.Document.SetText(TextSetOptions.None, element.TextContent); parent.Add(richEditBox); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var span = new Span(); parent.Add(span); context.RenderNode(element, new SpanContainer(span)); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var button = new Button() { Content = element.TextContent }; parent.Add(button); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var groupbox = parent as GroupBoxContainer; if (groupbox != null) { groupbox.SetHeader(element.TextContent); } }
private void CompileSelectedSubItems(RenderContextBase renderContext, object myParams) { // Compiles the selected triangles Point3D[] pts; Vector3D[] selNormals; GetSelectedData(out pts, out selNormals); renderContext.DrawTriangles(pts, selNormals); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var paragraph = new Paragraph() { TextAlignment = TextAlignment.Center }; parent.Add(paragraph); context.RenderNode(element, new ParagraphContainer(paragraph)); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var paragraph = new Paragraph { Margin = new Thickness(0, 10, 0, 10) }; parent.Add(paragraph); context.RenderNode(element, new ParagraphContainer(paragraph)); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var line = new Rectangle { MinWidth = double.MaxValue, MinHeight = 1, Fill = new SolidColorBrush(Colors.Gray), Margin = new Thickness(0, 5, 0, 5) }; parent.Add(line); }
/// <inheritdoc/> public void DrawLineSegments( IList <ScreenPoint> points, OxyColor stroke, double thickness, EdgeRenderingMode edgeRenderingMode, double[] dashArray = null, LineJoin lineJoin = LineJoin.Miter) { if (points.Count < 2 || !stroke.IsVisible() || thickness <= 0) { return; } var paint = this.GetLinePaint(stroke, thickness, edgeRenderingMode, dashArray, lineJoin); var skPoints = new SKPoint[points.Count]; switch (edgeRenderingMode) { case EdgeRenderingMode.Automatic when this.RendersToPixels: case EdgeRenderingMode.Adaptive when this.RendersToPixels: case EdgeRenderingMode.PreferSharpness when this.RendersToPixels: var snapOffset = this.GetSnapOffset(thickness, edgeRenderingMode); for (var i = 0; i < points.Count - 1; i += 2) { var p1 = points[i]; var p2 = points[i + 1]; if (RenderContextBase.IsStraightLine(p1, p2)) { skPoints[i] = this.ConvertSnap(p1, snapOffset); skPoints[i + 1] = this.ConvertSnap(p2, snapOffset); } else { skPoints[i] = this.Convert(p1); skPoints[i + 1] = this.Convert(p2); } } break; default: for (var i = 0; i < points.Count; i += 2) { skPoints[i] = this.Convert(points[i]); skPoints[i + 1] = this.Convert(points[i + 1]); } break; } this.SkCanvas.DrawPoints(SKPointMode.Lines, skPoints, paint); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var audio = (IHtmlAudioElement)element; var mediaElement = new MediaElement { Source = new Uri(audio.Source), AreTransportControlsEnabled = true, MinHeight = 65 }; parent.Add(mediaElement); context.RenderNode(element, parent); }
/// <summary> /// Gets the <see cref="SKPoint"/>s that should actually be rendered from the list of <see cref="ScreenPoint"/>s, taking into account DPI scaling and snapping if necessary. /// </summary> /// <param name="screenPoints">The points.</param> /// <param name="strokeThickness">The stroke thickness.</param> /// <param name="edgeRenderingMode">The edge rendering mode.</param> /// <returns>The actual points.</returns> private IEnumerable <SKPoint> GetActualPoints(IList <ScreenPoint> screenPoints, double strokeThickness, EdgeRenderingMode edgeRenderingMode) { switch (edgeRenderingMode) { case EdgeRenderingMode.Automatic when this.RendersToPixels && RenderContextBase.IsStraightLine(screenPoints): case EdgeRenderingMode.Adaptive when this.RendersToPixels && RenderContextBase.IsStraightLine(screenPoints): case EdgeRenderingMode.PreferSharpness when this.RendersToPixels: var snapOffset = this.GetSnapOffset(strokeThickness, edgeRenderingMode); return(screenPoints.Select(p => this.ConvertSnap(p, snapOffset))); default: return(screenPoints.Select(this.Convert)); } }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var hyperLink = new Hyperlink { NavigateUri = new Uri(element.GetAttribute("src"), UriKind.RelativeOrAbsolute), Foreground = new SolidColorBrush(Colors.Red) }; hyperLink.Inlines.Add(new Run() { Text = "无法显示 iframe 的内容,点击使用浏览器查看。" }); parent.Add(hyperLink); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var input = (IHtmlInputElement)element; var type = input.Type ?? string.Empty; type = type.Trim(); if (type.Length == 0) { type = "text"; } type = type.ToLower(); switch (type) { case "text": { var textbox = new TextBox { Text = input.Value }; parent.Add(textbox); break; } case "button": { var button = new Button { Content = input.Value }; parent.Add(button); break; } default: { if (Debugger.IsAttached) { Debugger.Break(); } var textblock = new TextBlock { Text = string.Format("input type=\"{0}\" is not support.", input.Type) }; parent.Add(textblock); break; } } }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var border = new Border { BorderThickness = new Thickness(1), BorderBrush = new SolidColorBrush(Colors.Gray), Margin = new Thickness(0, 5, 0, 5), Padding = new Thickness(10) }; parent.Add(border); var richTextBlock = new RichTextBlock(); border.Child = richTextBlock; context.RenderNode(element, new RichTextBlockContainer(richTextBlock)); }
private void CompileSelectedEdges(RenderContextBase renderContext, object myParams) { var pts = new Point3D[selectedSubItems.Count * 6]; for (int i = 0, count = 0; i < SelectedSubItems.Count; i++) { var tri1 = Triangles[SelectedSubItems[i]]; pts[count++] = Vertices[tri1.V1]; pts[count++] = Vertices[tri1.V2]; pts[count++] = Vertices[tri1.V2]; pts[count++] = Vertices[tri1.V3]; pts[count++] = Vertices[tri1.V3]; pts[count++] = Vertices[tri1.V1]; } ((RenderContextBase)myParams).DrawLines(pts); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var video = (IHtmlVideoElement)element; string source = video.Source; if (string.IsNullOrEmpty(source)) { var sourceElement = video.Children.FirstOrDefault( temp => string.Equals(temp.TagName, "source", StringComparison.OrdinalIgnoreCase) && string.Equals(temp.GetAttribute("type"), "video/mp4", StringComparison.OrdinalIgnoreCase)); if (sourceElement != null) { source = sourceElement.GetAttribute("src"); } } var mediaElement = new MediaElement { AreTransportControlsEnabled = true, MinHeight = 65 }; if (string.IsNullOrEmpty(source) == false) { mediaElement.Source = new Uri(source); } var width = video.DisplayWidth; if (width > 0) { mediaElement.Width = width; } var height = video.DisplayHeight; if (height > 0) { mediaElement.Height = height; } parent.Add(mediaElement); }
public void CompileSelected(RenderContextBase renderContext) { VBOParams vboP = new VBOParams(); Point3D[] pts; Vector3D[] selNormals; GetSelectedData(out pts, out selNormals); vboP.vertices = ConvertToFloatArray(pts); vboP.normals = ConvertToFloatArray(selNormals); vboP.primitiveMode = primitiveType.TriangleList; renderContext.CompileVBO(drawSelectedData, CompileSelectedSubItems, vboP); renderContext.Compile(drawSelectedEdgesData, CompileSelectedEdges, renderContext); needsCompileSelected = false; }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var table = (IHtmlTableElement)element; var grid = new Grid(); foreach (var child in table.Rows) { var row = child as IHtmlTableRowElement; if (row != null) { grid.RowDefinitions.Add(new RowDefinition()); int columnCount = 0; foreach (var column in row.Cells) { var richTextBlock = new RichTextBlock() { IsTextSelectionEnabled = false }; var cellRender = new Border() { Child = richTextBlock, Padding = new Thickness(5) }; context.RenderNode(column, new RichTextBlockContainer(richTextBlock)); Grid.SetColumn(cellRender, columnCount); Grid.SetRow(cellRender, grid.RowDefinitions.Count - 1); grid.Children.Add(cellRender); columnCount++; if (grid.ColumnDefinitions.Count < columnCount) { grid.ColumnDefinitions.Add(new ColumnDefinition()); } } } } parent.Add(grid); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { context.RenderNode(element, parent); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var img = (IHtmlImageElement)element; var source = img.Source; if (string.IsNullOrEmpty(source)) { return; } var image = new Image { Source = new BitmapImage(new Uri(source, UriKind.Absolute)) }; double scale = 1.0; int? width = img.Width(); if (width.HasValue) { if (width.Value > Window.Current.Bounds.Width - 40) { scale = (Window.Current.Bounds.Width - 40) / width.Value; } image.Width = width.Value * scale; } int? height = img.Height(); if (height.HasValue) { image.Height = height.Value * scale; } DisplayInformation.GetForCurrentView().OrientationChanged += (DisplayInformation sender, object args) => { if (sender.CurrentOrientation == DisplayOrientations.Portrait) { double scale1 = 1.0; int? width1 = img.Width(); if (width1.HasValue) { if (width1.Value > Window.Current.Bounds.Width - 40) { scale1 = (Window.Current.Bounds.Width - 40) / width1.Value; } image.Width = width1.Value * scale1; } int? height1 = img.Height(); if (height1.HasValue) { image.Height = height1.Value * scale1; } } else if (sender.CurrentOrientation == DisplayOrientations.Landscape || sender.CurrentOrientation == DisplayOrientations.LandscapeFlipped) { double scale1 = 1.0; int? width1 = img.Width(); if (width1.HasValue) { if (width1.Value > Window.Current.Bounds.Width - 40) { scale1 = (Window.Current.Bounds.Width - 40) / width1.Value; } image.Width = width1.Value * scale1; } int? height1 = img.Height(); if (height1.HasValue) { image.Height = height1.Value * scale1; } } }; parent.Add(image); }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { parent.Add(new LineBreak()); }
public override void OnAddToSystem(EntitySystem EntitySystem, RenderContextBase renderContext) { base.OnAddToSystem(EntitySystem, renderContext); this.EntitySystem = EntitySystem; this.renderContext = renderContext; }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var parentContainer = (parent as RichTextBlockContainer).Get(); Span span = new Span(); Underline underline = null; var textDecoration = element.Style("text-decoration"); if (!string.IsNullOrEmpty(textDecoration)) { if (textDecoration == "underline") { underline = new Underline(); underline.Inlines.Add(span); } } var color = element.Style("color"); if (string.IsNullOrEmpty(color) == false) { color = color.Trim().TrimStart('#'); if (color.Length == 6) { var sR = color.Substring(0, 2); var sG = color.Substring(2, 2); var sB = color.Substring(4, 2); byte r, g, b; if (byte.TryParse(sR, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out r) && byte.TryParse(sG, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out g) && byte.TryParse(sB, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out b)) { var value = Color.FromArgb(255, r, g, b); if (value != Colors.White && value != Colors.Black) { if (underline != null) { underline.Foreground = new SolidColorBrush(value); } else { span.Foreground = new SolidColorBrush(value); } } } } } var fontSize = element.Style("font-size"); if (!string.IsNullOrEmpty(fontSize)) { fontSize = fontSize.Replace("px", ""); if (underline != null) { underline.FontSize = double.Parse(fontSize); } else { span.FontSize = double.Parse(fontSize); } } var fontWeight = element.Style("font-weight"); if (!string.IsNullOrEmpty(fontWeight)) { if (underline != null) { underline.FontWeight = FontWeights.Bold; } else { span.FontWeight = FontWeights.Bold; } } var textAlign = element.Style("text-align"); if (!string.IsNullOrEmpty(textAlign)) { if (textAlign == "left") { parentContainer.TextAlignment = Windows.UI.Xaml.TextAlignment.Left; } else if (textAlign == "right") { parentContainer.TextAlignment = Windows.UI.Xaml.TextAlignment.Right; } else { parentContainer.TextAlignment = Windows.UI.Xaml.TextAlignment.Center; } } var textStyle = element.Style("text-style"); if (!string.IsNullOrEmpty(textStyle)) { if (textStyle == "italic") { if (underline != null) { underline.FontStyle = FontStyle.Italic; } else { span.FontStyle = FontStyle.Italic; } } } if (underline != null) { parent.Add(underline); context.RenderNode(element, new SpanContainer(underline)); } else { parent.Add(span); context.RenderNode(element, new SpanContainer(span)); } }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { // under object always is flash, // so dont render object. }
public virtual void RenderElement(IElement element, ITextContainer parent, RenderContextBase context) { var img = (IHtmlImageElement)element; var source = img.Source; if (string.IsNullOrEmpty(source)) { return; } var image = new Image { Source = new BitmapImage(new Uri(source, UriKind.Absolute)) }; double scale = 1.0; int?width = img.Width(); if (width.HasValue) { if (width.Value > Window.Current.Bounds.Width - 40) { scale = (Window.Current.Bounds.Width - 40) / width.Value; } image.Width = width.Value * scale; } int?height = img.Height(); if (height.HasValue) { image.Height = height.Value * scale; } DisplayInformation.GetForCurrentView().OrientationChanged += (DisplayInformation sender, object args) => { if (sender.CurrentOrientation == DisplayOrientations.Portrait) { double scale1 = 1.0; int?width1 = img.Width(); if (width1.HasValue) { if (width1.Value > Window.Current.Bounds.Width - 40) { scale1 = (Window.Current.Bounds.Width - 40) / width1.Value; } image.Width = width1.Value * scale1; } int?height1 = img.Height(); if (height1.HasValue) { image.Height = height1.Value * scale1; } } else if (sender.CurrentOrientation == DisplayOrientations.Landscape || sender.CurrentOrientation == DisplayOrientations.LandscapeFlipped) { double scale1 = 1.0; int?width1 = img.Width(); if (width1.HasValue) { if (width1.Value > Window.Current.Bounds.Width - 40) { scale1 = (Window.Current.Bounds.Width - 40) / width1.Value; } image.Width = width1.Value * scale1; } int?height1 = img.Height(); if (height1.HasValue) { image.Height = height1.Value * scale1; } } }; parent.Add(image); }