Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 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;
            }
        }