예제 #1
0
        private void FixEnterVertex(EnterFillerVertex enter, ref int i)
        {
            var prevI = i.PrevIndex(SupportPoints.Count);
            var nextI = i.NextIndex(SupportPoints.Count);

            if ((SupportPoints[prevI] is LineEndFillerVertex prevEnd && enter.Some(prevEnd)) || (SupportPoints[nextI] is LineEndFillerVertex nextEnd && enter.Some(nextEnd)))
            {
                SupportPoints.RemoveAt(i);
                i -= 1;
            }
예제 #2
0
 public void Remove()
 {
     if (SupportPoints.Any())
     {
         SupportPoints.RemoveAt(SupportPoints.Count - 1);
     }
     if (LineParts.Any())
     {
         LineParts.RemoveAt(LineParts.Count - 1);
     }
 }
예제 #3
0
 private void FixLineEndVertex(LineEndFillerVertex end, ref int i)
 {
     if (SupportPoints[i.NextIndex(SupportPoints.Count)] is LineEndFillerVertex nextEnd)
     {
         if (end.Point.Enter != nextEnd.Point.Enter && end.Line != nextEnd.Line && end.GetCommonLine(nextEnd) is MarkupRegularLine line)
         {
             SupportPoints.Insert(i + 1, new LineEndFillerVertex(end.Point, line));
             SupportPoints.Insert(i + 2, new LineEndFillerVertex(nextEnd.Point, line));
             i += 2;
         }
     }
 }
예제 #4
0
 private void AddImpl(IFillerVertex newPoint)
 {
     if (newPoint.Equals(First))
     {
         if (First is EnterFillerVertexBase firstEnter && Last is EnterFillerVertexBase lastEnter && firstEnter.Enter == lastEnter.Enter)
         {
             if (Prev is EnterFillerVertexBase prevEnter && prevEnter.Enter == lastEnter.Enter)
             {
                 SupportPoints.Remove(lastEnter);
             }
             else if (Second is EnterFillerVertexBase secondEnter && firstEnter.Enter == secondEnter.Enter)
             {
                 SupportPoints.Remove(firstEnter);
             }
         }
예제 #5
0
        public bool Add(IFillerVertex supportPoint)
        {
            if (supportPoint.Equals(First))
            {
                LineParts.Add(GetFillerLine(Last, First));
                return(true);
            }
            else
            {
                SupportPoints.Add(supportPoint);
                if (VertexCount >= 2)
                {
                    LineParts.Add(GetFillerLine(Prev, Last));
                }

                return(false);
            }
        }
예제 #6
0
 private void GetRuleEdges()
 {
     SupportPoints.Clear();
     SupportPoints.AddRange(EditObject.RulesEdges);
 }
예제 #7
0
 private void GetRuleEdges(MarkupLine editObject)
 {
     SupportPoints.Clear();
     SupportPoints.AddRange(editObject.RulesEdges);
 }