Пример #1
0
        private object[] ExpandMaster(CircuitEditingContext context, SubCircuitInstance subCircuitInstance)
        {
            // remove the sub-circuit instance
            var circuit = context.CircuitContainer;
            circuit.Elements.Remove(subCircuitInstance);

            SubCircuit subCircuit = subCircuitInstance.SubCircuit as SubCircuit;

            // clone sub-circuit contents
            List<object> subCircuitContents = new List<object>();
            subCircuitContents.AddRange(Adapters.AsIEnumerable<object>(subCircuit.Elements));
            subCircuitContents.AddRange(Adapters.AsIEnumerable<object>(subCircuit.Wires));
            DomNode[] clones = DomNode.Copy(Adapters.AsIEnumerable<DomNode>(subCircuitContents));

            object[] data = new object[clones.Length];
            clones.CopyTo(data, 0);
            return data;
        }
Пример #2
0
        // create hover form for sub-circuit instance
        private HoverBase CreateHoverForm(SubCircuitInstance subCircuitInstance)
        {
            const float MAX_SIZE = 420;
            const int CircuitMargin = 8;

            TransformAdapter xformAdapter = m_d2dHoverControl.As<TransformAdapter>();
            xformAdapter.Transform.Reset();
            m_d2dHoverControl.D2dGraphics.Transform = Matrix3x2F.Identity;

            m_d2dHoverControl.Context = subCircuitInstance.SubCircuit;

            RectangleF bounds = m_circuitRenderer.GetBounds(subCircuitInstance.SubCircuit.Elements.AsIEnumerable<Module>()
                , m_d2dHoverControl.D2dGraphics);
                                  
            float boundRatio = bounds.Width / bounds.Height;

            Size size =(boundRatio > 1) ? new Size((int)MAX_SIZE, (int)(MAX_SIZE / boundRatio))
                : new Size((int)(MAX_SIZE * boundRatio), (int)MAX_SIZE);

            float scale = (float)size.Width / (float)bounds.Width;
            xformAdapter.Transform.Translate(CircuitMargin, CircuitMargin);
            xformAdapter.Transform.Scale(scale, scale);
            xformAdapter.Transform.Translate(-bounds.X , -bounds.Y );

            HoverBase result = new HoverBase();
            result.Size = new Size(size.Width + 2 * CircuitMargin, size.Height + 2 * CircuitMargin);
            result.Controls.Add(m_d2dHoverControl);
            return result;
        }