private void Draw() { DiagramImage.Source = _diagramDrawer.Draw(CurrentSeriesUnited, DiagramDataExtremums, Calculator, DiagramMode, GroupInterval); }
private bool DrawDiagram(IPlatformDrawer drawer, Vector2 scrollPosition, float scale, Rect diagramRect) { var screen = new Vector2(Screen.width, Screen.height); if (DiagramDrawer == null) { if (Workspace != null) { if (Workspace.CurrentGraph != null) { LoadDiagram(Workspace.CurrentGraph); } } } if (DiagramDrawer != null && DiagramViewModel != null && InvertGraphEditor.Settings.UseGrid) { if (_cachedLines == null || _cachedScroll != scrollPosition || _cachedScreen != screen) { var lines = new List <CachedLineItem>(); var softColor = InvertGraphEditor.Settings.GridLinesColor; var hardColor = InvertGraphEditor.Settings.GridLinesColorSecondary; var x = -scrollPosition.x; var every10 = 0; while (x < DiagramRect.x + DiagramRect.width + scrollPosition.x) { var color = softColor; if (every10 == 10) { color = hardColor; every10 = 0; } if (x > diagramRect.x) { lines.Add(new CachedLineItem() { Lines = new[] { new Vector2(x, diagramRect.y), new Vector2(x, diagramRect.x + diagramRect.height + scrollPosition.y + 85) }, Color = color }); } x += DiagramViewModel.Settings.SnapSize * scale; every10++; } var y = -scrollPosition.y + 80; every10 = 10; while (y < DiagramRect.y + DiagramRect.height + scrollPosition.y) { var color = softColor; if (every10 == 10) { color = hardColor; every10 = 0; } if (y > diagramRect.y) { lines.Add(new CachedLineItem() { Lines = new[] { new Vector2(diagramRect.x, y), new Vector2(diagramRect.x + diagramRect.width + scrollPosition.x, y) }, Color = color }); } y += DiagramViewModel.Settings.SnapSize * scale; every10++; } _cachedLines = lines.ToArray(); _cachedScreen = screen; _cachedScroll = scrollPosition; } for (int i = 0; i < _cachedLines.Length; i++) { Drawer.DrawLine(_cachedLines[i].Lines, _cachedLines[i].Color); } } if (DiagramDrawer != null) { InvertApplication.SignalEvent <IDesignerWindowEvents>(_ => _.BeforeDrawGraph(diagramRect)); DiagramDrawer.Bounds = new Rect(0f, 0f, diagramRect.width, diagramRect.height); DiagramDrawer.Draw(drawer, 1f); if (_shouldProcessInputFromDiagram) { InvertApplication.SignalEvent <IDesignerWindowEvents>(_ => _.ProcessInput()); } InvertApplication.SignalEvent <IDesignerWindowEvents>(_ => _.AfterDrawGraph(DiagramDrawer.Bounds)); } return(false); }