internal InputLayerDrawing(InputLayer layer, Preference preferences, LayerSizesPreCalc cache, SimpleNodeSizesPreCalc simpleNodeCache, IElementSelectionChecker selectionChecker, ISelectableElementRegister selectableElementRegister) : base(layer, preferences, cache, simpleNodeCache, selectionChecker, selectableElementRegister) { _preference = preferences; _simpleNodeCache = simpleNodeCache; _selectionChecker = selectionChecker; _selectableElementRegister = selectableElementRegister; }
private void DrawLayers(Gdi.Graphics graph, LayerSizesPreCalc layerSizesPreCalc) { DrawLayersGeneral(graph, layerSizesPreCalc, (layerDrawing, layerCanvas) => { layerDrawing.Draw(layerCanvas); return(Task.CompletedTask); }).Wait(); }
internal LayerBaseDrawing(TLayer layer, Preference preferences, LayerSizesPreCalc cache, SimpleNodeSizesPreCalc biasCache, IElementSelectionChecker selectionChecker, ISelectableElementRegister selectableElementRegister) : base(layer) { _preferences = preferences; _cache = cache; _biasCache = biasCache; _selectionChecker = selectionChecker; _selectableElementRegister = selectableElementRegister; _nodesDrawing = new List <INodeDrawing>(layer.GetAllNodes().Count()); }
private async Task DrawLayersGeneral(Graphics graph, Func <ILayerDrawing, ICanvas, Task> drawLayerAction) { var layersDrawingSize = this.ControlCanvas.GetLayersDrawingSize(); var graphCanvas = new GraphicsCanvas(graph, this.ControlCanvas.Size.Width, this.ControlCanvas.Size.Height); int x = 0; _selectionResolver.SetCurrentRootCanvas(graphCanvas); IDictionary <NodeBase, INodeDrawing> previousNodesDic = new Dictionary <NodeBase, INodeDrawing>(); var inputLayer = this.ControlCanvas.Control.InputLayer; var preferences = this.ControlCanvas.Control.Preferences; LayerSizesPreCalc layersCache = new LayerSizesPreCalc(layersDrawingSize, inputLayer.GetMaxNodeCountInLayer(), preferences); SimpleNodeSizesPreCalc simpleNodesCache = new SimpleNodeSizesPreCalc(); PerceptronSizesPreCalc perceptronCache = new PerceptronSizesPreCalc(preferences); EdgeSizesPreCalc edgesCache = new EdgeSizesPreCalc(); for (LayerBase layer = inputLayer; layer != null; layer = layer.Next) { ILayerDrawing layerDrawing = null; if (layer == inputLayer) { layerDrawing = new InputLayerDrawing(layer as InputLayer, preferences, layersCache, simpleNodesCache, _selectionChecker, _selectableElementRegister); } else { layerDrawing = new PerceptronLayerDrawing(layer as PerceptronLayer, previousNodesDic, graphCanvas, preferences, layersCache, perceptronCache, simpleNodesCache, edgesCache, _selectionChecker, _selectableElementRegister); } var canvasRect = new Rectangle(x, 0, layersDrawingSize.Width, layersDrawingSize.Height); var layerCanvas = new NestedCanvas(canvasRect, graphCanvas); await drawLayerAction(layerDrawing, layerCanvas); previousNodesDic = layerDrawing.NodesDrawing.ToDictionary(n => n.Node, n => n); x += layersDrawingSize.Width; } }
internal NeuronLayerDrawing(NeuronLayer layer, IDictionary <NodeBase, INodeDrawing> previousNodes, ICanvas edgesCanvas, IPreference preferences, LayerSizesPreCalc cache, NeuronSizesPreCalc neuronCache, SimpleNodeSizesPreCalc biasCache, EdgeSizesPreCalc edgesCache, IElementSelectionChecker selectionChecker, ISelectableElementRegister selectableElementRegister) : base(layer, preferences, cache, biasCache, selectionChecker, selectableElementRegister) { _previousNodes = previousNodes; _edgesCanvas = edgesCanvas; _preferences = preferences; _neuronCache = neuronCache; _edgesCache = edgesCache; _selectionChecker = selectionChecker; _selectableElementRegister = selectableElementRegister; }
private async Task DrawLayersAsync(Gdi.Graphics graph, LayerSizesPreCalc layerSizesPreCalc) { await DrawLayersGeneral(graph, layerSizesPreCalc, async (layerDrawing, layerCanvas) => await Task.Run(() => { layerDrawing.Draw(layerCanvas); })); }