Пример #1
0
        /// <summary>
        /// Append a new Segment
        /// </summary>
        /// <returns></returns>
        public SMPathSegment Append()
        {
            SMPathSegment newSeg = new SMPathSegment();

            this._nextSegement = newSeg;
            First.InitializeRecurse();
            return(newSeg);
        }
Пример #2
0
        /// Recursivley make a clone of this item
        /// </summary>
        /// <returns>New cloned instance</returns>
        public override SMPath Clone()
        {
            SMPathSegment newPathOut = base.Clone() as SMPathSegment;

            newPathOut._gridDistance = _gridDistance;
            if (Next != null)
            {
                newPathOut._nextSegement = Next.Clone() as SMPathSegment;
            }
            return(newPathOut);
        }
Пример #3
0
        /// <summary>
        /// Set vertical, Index ,  and FirstSegment
        /// </summary>
        public void InitializeRecurse()
        {
            bool          vertical = Vertical;
            int           index    = 1;
            SMPathSegment pathSeg  = Next;

            while (pathSeg != null)
            {
                vertical = !vertical;
                pathSeg.Initialize(this, vertical, index++);
                pathSeg = pathSeg.Next;
            }
        }
Пример #4
0
        public PointF FindEndPoint(PointF gridLoc)
        {
            SMPathSegment pathSeg = this;

            while (pathSeg != null)
            {
                if (pathSeg.Vertical)
                {
                    gridLoc.Y += pathSeg.GridDistance;
                }
                else
                {
                    gridLoc.X += pathSeg.GridDistance;
                }

                pathSeg = pathSeg.Next;
            }
            return(gridLoc);
        }