public AlgorithmFlowElement(FlowInterfaceControl control, StorageLayer l)
        {
            this.m_Control = control;
            this.m_Layer   = l;
            var attrs = l.Algorithm.GetType().GetCustomAttributes(typeof(FlowDesignerNameAttribute), true);

            this.Name        = attrs.Length > 0 ? (attrs[0] as FlowDesignerNameAttribute).Name : l.Algorithm.ToString();
            this.ImageWidth  = 128;
            this.ImageHeight = 192;
            this.ObjectPropertyUpdated();

            // Create input / output connectors.
            foreach (string s in this.m_Layer.Algorithm.InputNames)
            {
                this.m_InputConnectors.Add(new AlgorithmFlowConnector(this, s, true, l));
            }
            this.m_OutputConnectors.Add(new AlgorithmFlowConnector(this, "Output", false, l));

            this.m_CompiledViewToggleThread = new Thread(() =>
            {
                while (this.m_CompiledViewToggleThread.ThreadState != ThreadState.AbortRequested)
                {
                    Thread.Sleep(100);
                    if (this.m_RealBitmap == this.m_RuntimeBitmap)
                    {
                        this.m_RealBitmap = this.m_CompiledBitmap;
                    }
                    else
                    {
                        this.m_RealBitmap = this.m_RuntimeBitmap;
                    }
                    try
                    {
                        this.m_Control.Invoke(new Action(() =>
                        {
                            this.m_Control.Invalidate(this.InvalidatingRegion.Apply(this.m_Control.Zoom));
                        }));
                    }
                    catch
                    {
                        break;
                    }
                }
            });
            this.m_CompiledViewToggleThread.Start();
        }
 public override void SetDeserializationData(FlowInterfaceControl control)
 {
     this.m_Control = control;
 }
 public AlgorithmFlowElement(FlowInterfaceControl control, IAlgorithm algorithm)
     : this(control, new StorageLayer {
     Algorithm = algorithm
 })
 {
 }