private static RenderRepresentation ToRenderRepresentation(VisualElement element) { var rep = new RenderRepresentation() { ElementId = element.Id, VisualTypeName = element.GetType().Name, ParentVisualTypeName = element.Parent?.GetType().Name, ParentId = element.Parent?.Id ?? Guid.Empty, WidthRequest = element.WidthRequest, HeightRequest = element.HeightRequest, Bounds = new RenderBounds() { X = element.Bounds.X, Y = element.Bounds.Y, Height = element.Bounds.Height, Width = element.Bounds.Width } }; if (element is View view) { rep.HorizontalOptions = LayoutOptionsToString(view.HorizontalOptions); rep.VerticalOptions = LayoutOptionsToString(view.VerticalOptions); rep.Margin = new RenderThickness { Left = view.Margin.Left, Top = view.Margin.Top, Right = view.Margin.Right, Bottom = view.Margin.Bottom }; } var paddingProp = element.GetType().GetProperty("Padding"); if (!(paddingProp is null)) { var padding = (Thickness)paddingProp.GetValue(element); rep.Padding = new RenderThickness { Left = padding.Left, Top = padding.Top, Right = padding.Right, Bottom = padding.Bottom }; } return(rep); }
public static RenderRepresentation RenderVisualHeirarchy(VisualElement rootElement) { RenderRepresentation rep = ToRenderRepresentation(rootElement); INativeViewRenderer nativeViewRenderer = DependencyService.Get <INativeViewRenderer>(); rep.ViewPng = nativeViewRenderer.Render(rootElement); foreach (VisualElement childElement in rootElement.LogicalChildren) { rep.Children = AddChildren(childElement, rep); } return(rep); }
public static string RenderVisualHeirarchyToJson(VisualElement element) { RenderRepresentation rep = RenderVisualHeirarchy(element); return(JsonConvert.SerializeObject(rep, Newtonsoft.Json.Formatting.Indented)); }
private static string RenderElementInfoString(VisualElement element) { RenderRepresentation rep = ToRenderRepresentation(element); return(rep.ToString()); }
public static List <RenderRepresentation> AddChildren(VisualElement rootElement, RenderRepresentation rep) { var list = new List <RenderRepresentation>(); foreach (VisualElement childElement in rootElement.LogicalChildren) { var childRep = ToRenderRepresentation(childElement); INativeViewRenderer nativeViewRenderer = DependencyService.Get <INativeViewRenderer>(); childRep.ViewPng = nativeViewRenderer.Render(childElement); list.Add(childRep); childRep.Children = AddChildren(childElement, childRep); } return(list); }