Esempio n. 1
0
        internal void combineSegments(float SaveCurrX, float SaveCurrY)
        {
            PointF pStart;
            PointF pEnd;

            if (shapeSegments.Count > MinNumLines)
            {
                for (int i = 0; i < shapeSegments.Count; ++i)
                {
                    Segment s1 = (Segment)shapeSegments[i];
                    Segment s2 = (Segment)shapeSegments[(i + 1) % shapeSegments.Count];
                    if (s1.hitTest(new PointF(SaveCurrX, SaveCurrY)) && s2.hitTest(new PointF(SaveCurrX, SaveCurrY)))
                    {
                        saveIndex = i;
                        pStart    = s1.GetStartPoint();
                        pEnd      = s2.GetEndPoint();
                        shapeSegments.Remove(s1);
                        shapeSegments.Remove(s2);
                        Segment sCombinedLine = new LineSegment(pStart, pEnd);
                        shapeSegments.Insert(i, sCombinedLine);
                        break;
                    }
                }
            }
        }
Esempio n. 2
0
 internal override bool hitTest(PointF p)
 {
     for (int i = 0; i < shapeSegments.Count; ++i)
     {
         Segment s1 = (Segment)shapeSegments[i];
         Segment s2 = (Segment)shapeSegments[(i + 1) % shapeSegments.Count];
         if (s1.hitTest(p))
         {
             if (!s1.checkCommonPointStart() && !s1.checkCommonPointEnd() && showPoints)
             {
                 currSegment   = s1;
                 belongSegment = null;
                 return(true);
             }
             else
             if (s1.checkCommonPointEnd() && s2.hitTest(p) && showPoints)
             {
                 currSegment   = s1;
                 belongSegment = s2;
                 return(true);
             }
         }
     }
     return(false);
 }
Esempio n. 3
0
// end Constructor

        internal override bool hitTest(PointF p)
        {
            if (!base.hitTest(p))
            {
                BelongSegment = null;
                Segment s1 = (Segment)shapeSegments[0];
                Segment s2 = (Segment)shapeSegments[shapeSegments.Count - 1];
                if (s1.hitTest(p) && s1.checkCommonPointStart())
                {
                    currSegment = s1;
                    return(true);
                }
                if (s2.hitTest(p) && s2.checkCommonPointEnd())
                {
                    currSegment = s2;
                    return(true);
                }

                return(false);
            }
            return(true);
        }