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; }
internal NeuronDrawing(Neuron element, IDictionary <NodeBase, INodeDrawing> previousNodes, ICanvas edgesCanvas, IPreference preferences, NeuronSizesPreCalc cache, EdgeSizesPreCalc edgesCache, IElementSelectionChecker selectionChecker, ISelectableElementRegister selectableElementRegister) : base(element, preferences.Neurons, cache, selectableElementRegister, selectionChecker) { _previousNodes = previousNodes; _edgesCanvas = edgesCanvas; _preferences = preferences; _cache = cache; _edgesCache = edgesCache; _selectionChecker = selectionChecker; _selectableElementRegister = selectableElementRegister; }
private async Task DrawLayersGeneral(Gdi.Graphics graph, LayerSizesPreCalc layersDrawingSize, Func <ILayerDrawing, ICanvas, Task> drawLayerAction) { var graphCanvas = new GraphicsCanvas(graph, this.ControlCanvas.Size); 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; SimpleNodeSizesPreCalc simpleNodeSizesCache = new SimpleNodeSizesPreCalc(); NeuronSizesPreCalc neuronCache = new NeuronSizesPreCalc(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, layersDrawingSize, simpleNodeSizesCache, _selectionChecker, _selectableElementRegister); } else { layerDrawing = new NeuronLayerDrawing(layer as NeuronLayer, previousNodesDic, graphCanvas, preferences, layersDrawingSize, neuronCache, simpleNodeSizesCache, edgesCache, _selectionChecker, _selectableElementRegister); } var canvasRect = new Rectangle(new Position(x, 0), new Size(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; } }