Exemple #1
0
        public bool IsDiff(LineAAVertex val)
        {
            //*** NEED 64 bits long
            long dx = val.x - x;
            long dy = val.y - y;

            if ((dx + dy) == 0)
            {
                return(false);
            }
            return((len = AggMath.uround(Math.Sqrt(dx * dx + dy * dy))) > SIGDIFF);
        }
Exemple #2
0
        public void AddVertex(LineAAVertex val)
        {
            int count = _list.Count;

            if (count > 1)
            {
                LineAAVertex[] innerArray = _list.UnsafeInternalArray;
                if (!innerArray[count - 2].IsDiff(innerArray[count - 1]))
                {
                    _list.RemoveLast();
                }
            }
            _list.Append(val);
        }
        public void AddVertex(LineAAVertex val)
        {
            int count = list.Count;

            if (count > 1)
            {
                var innerArray = list.Array;
                if (!innerArray[count - 2].IsDiff(innerArray[count - 1]))
                {
                    list.RemoveLast();
                }
            }
            list.AddVertex(val);
        }
Exemple #4
0
        public void Close(bool closed)
        {
            //----------------------
            //iter backward
            int count      = _list.Count;
            var innerArray = _list.UnsafeInternalArray;

            while (count > 1)
            {
                if (innerArray[count - 2].IsDiff(innerArray[count - 1]))
                {
                    break;
                }
                else
                {
                    LineAAVertex t = _list[count - 1];
                    _list.RemoveLast();
                    ModifyLast(t);
                    count--;
                }
            }


            if (closed)
            {
                //if close figure
                count = _list.Count;
                var first = innerArray[0];
                while (count > 1)
                {
                    if (innerArray[count - 1].IsDiff(first))
                    {
                        break;
                    }
                    count--;
                    _list.RemoveLast();
                }
            }
        }
Exemple #5
0
 //
 public void ModifyLast(LineAAVertex val)
 {
     _list.RemoveLast();
     AddVertex(val);
 }