Beispiel #1
0
        public static DrawableScheme FromScheme(Scheme scheme, int width, int height)
        {
            var elementX = 0;
            var elementY = 0;

            var drawableInputs = scheme.Inputs.Select(i => {
                var input = new DrawableInput(i.Name, elementX, elementY, ElementWidth, ElementHeight);
                elementY += GapHeight + ElementHeight;
                return(input);
            }).ToArray();

            elementX += GapWidth + ElementWidth;
            elementY  = 0;


            var drawableComponents = new List <DrawableComponent>();

            foreach (var layer in scheme.ComponentLayers)
            {
                drawableComponents.AddRange(layer.Select(c => {
                    var component = new DrawableComponent(c.Name, c.Type, c.Input, elementX, elementY, ElementWidth, ElementHeight);
                    elementY     += GapHeight + ElementHeight;
                    return(component);
                }).ToArray());

                elementX += GapWidth + ElementWidth;
                elementY  = 0;
            }

            var drawableOutputs = scheme.Outputs.Select(o => {
                var output = new DrawableOutput(o.Name, o.Input, elementX, elementY, ElementWidth, ElementHeight);
                elementY  += GapHeight + ElementHeight;
                return(output);
            }).ToArray();

            var drawableScheme = new DrawableScheme(drawableInputs, drawableOutputs, drawableComponents, null, width, height);

            drawableScheme.RestoreLines();

            return(drawableScheme);
        }