Esempio n. 1
0
        private void DrawBond(Bond bond, PointF pt, int handleIndex)
        {
            BondAttachment ba         = BondAttachmentExtensions.GetTargetFromHandleIndex(handleIndex);
            HandleIcon     handleIcon = GetHandleIcon(bond.BondType, TransformKind.Scale);

            if (handleIcon != HandleIcon.Anchor && handleIcon != HandleIcon.Spring)
            {
                float hr             = handleSize / 2f;
                int   variationIndex = handleIndex % icons[(int)handleIcon].Length;
                Point p = new Point((int)(pt.X - hr), (int)(pt.Y - hr));
                graphicHolder.DrawImage(icons[(int)handleIcon][variationIndex], p);
            }

            long handleHash = bond.GetHandleHash(ba);

            if (bondPoints.ContainsKey(handleHash))
            {
                // todo: need to allow vertical align inside horz dist chain (which will conflict on a handle).
                Console.WriteLine("conflict handle: " + handleHash);
            }
            else
            {
                bondPoints.Add(handleHash, pt);
            }
        }
Esempio n. 2
0
        public void AddInstance(DesignInstance inst)
        {
            PointF[] pts = (inst.IsRotated) ? inst.GetTransformedCenter() : inst.GetTransformedPoints().GetMidpointsAndCenter();

            for (int i = 0; i < pts.Length; i++)
            {
                BondAttachment ba = BondAttachmentExtensions.GetTargetFromHandleIndex(i);
                AddPoint(xStops, pts[i].X, new CrossPoint(pts[i].Y, inst.InstanceHash, ba));
                AddPoint(yStops, pts[i].Y, new CrossPoint(pts[i].X, inst.InstanceHash, ba));
            }
        }