Example #1
0
 public void method_1(VattiClipper2I.Class191 localMinimum)
 {
     this.class196_0.Y = this.int_0;
     VattiClipper2I.Class200 edge1 = new VattiClipper2I.Class200()
     {
         Edge = localMinimum.Left
     };
     this.list_0.Insert(this.list_0.BinarySearch(edge1, (IComparer <VattiClipper2I.Class200>) this.class196_0), edge1);
     VattiClipper2I.Class199 class199 = localMinimum.Right;
     while (class199.Dy == 0)
     {
         class199 = class199.Successor;
     }
     VattiClipper2I.Class200 edge2 = (VattiClipper2I.Class200)null;
     if (class199 != null)
     {
         edge2 = new VattiClipper2I.Class200()
         {
             Edge = class199
         };
         this.list_0.Insert(this.list_0.BinarySearch(edge2, (IComparer <VattiClipper2I.Class200>) this.class196_0), edge2);
     }
     this.class35_0.Add((VattiClipper2I.Class192) new VattiClipper2I.Class194(edge1));
     if (edge2 == null)
     {
         return;
     }
     this.class35_0.Add((VattiClipper2I.Class192) new VattiClipper2I.Class194(edge2));
 }
Example #2
0
        public static void Clip(
            IList <Polygon2I> clip,
            IList <Polygon2I> subject,
            VattiClipper2I.PolygonFillMode fillMode)
        {
            List <VattiClipper2I.Class191> localMinimumList = new List <VattiClipper2I.Class191>();

            foreach (Polygon2I polygon in (IEnumerable <Polygon2I>)clip)
            {
                VattiClipper2I.smethod_0(polygon, (byte)1, localMinimumList);
            }
            foreach (Polygon2I polygon in (IEnumerable <Polygon2I>)subject)
            {
                VattiClipper2I.smethod_0(polygon, (byte)2, localMinimumList);
            }
            localMinimumList.Sort();
            VattiClipper2I.Class191 localMinimum = (VattiClipper2I.Class191)null;
            if (localMinimumList.Count > 1)
            {
                VattiClipper2I.Class191 class191_1 = localMinimumList[localMinimumList.Count - 1];
                for (int index = localMinimumList.Count - 2; index >= 0; --index)
                {
                    VattiClipper2I.Class191 class191_2 = localMinimumList[index];
                    class191_2.Next = class191_1;
                    class191_1      = class191_2;
                }
                localMinimum = class191_1;
            }
            VattiClipper2I.Class195 class195 = new VattiClipper2I.Class195();
            if (localMinimum == null)
            {
                return;
            }
            class195.EventQueue.Add(localMinimum);
        }
Example #3
0
 public void Add(VattiClipper2I.Class191 localMinimum)
 {
     this.Add((VattiClipper2I.Class192) new VattiClipper2I.Class193(localMinimum));
     while (localMinimum.Next != null && localMinimum.Y == localMinimum.Next.Y)
     {
         localMinimum = localMinimum.Next;
         this.Add((VattiClipper2I.Class192) new VattiClipper2I.Class193(localMinimum));
     }
 }
Example #4
0
 private static void smethod_1(
     Point2I p,
     List <VattiClipper2I.Class191> localMinimumList,
     VattiClipper2I.Class199 e0,
     VattiClipper2I.Class199 e1)
 {
     VattiClipper2I.Class191 class191 = new VattiClipper2I.Class191()
     {
         Y = p.Y
     };
     localMinimumList.Add(class191);
     VattiClipper2I.Class199 class199_1;
     VattiClipper2I.Class199 class199_2;
     if (Vector2I.CompareAngles(new Vector2I(e0.Dx, e0.Dy), new Vector2I(e1.Dx, e1.Dy)) <= 0)
     {
         class199_1 = e1;
         class199_2 = e0;
     }
     else
     {
         class199_1 = e0;
         class199_2 = e1;
     }
     if (class199_1.Dy == 0)
     {
         class191.Left        = class199_1.Successor;
         class199_1.Successor = class199_2;
         class199_1.method_3();
         class191.Right = class199_1;
     }
     else
     {
         class191.Left  = class199_1;
         class191.Right = class199_2;
     }
     e1.XBottom = p.X;
 }
Example #5
0
            public override void vmethod_0(
                VattiClipper2I.Class35 eventQueue,
                VattiClipper2I.Class195 scanBeam)
            {
                scanBeam.method_1(this.class191_0);
                for (VattiClipper2I.Class191 localMinimum = this.class191_0; localMinimum.Next != null; localMinimum = localMinimum.Next)
                {
                    if (localMinimum.Y == localMinimum.Next.Y)
                    {
                        scanBeam.method_1(localMinimum);
                    }
                    else
                    {
                        scanBeam.EventQueue.Add(localMinimum.Next);
                        break;
                    }
                }
                bool flag1 = false;
                bool flag2 = false;

                VattiClipper2I.Class197 outputPolygon = (VattiClipper2I.Class197)null;
                for (int index = 0; index < scanBeam.ActiveEdges.Count; ++index)
                {
                    VattiClipper2I.Class200 activeEdge = scanBeam.ActiveEdges[index];
                    if (activeEdge.Edge.Type == (byte)1)
                    {
                        this.method_0(activeEdge, flag1, flag2, ref outputPolygon);
                        flag1 = !flag1;
                    }
                    else
                    {
                        this.method_0(activeEdge, flag2, flag1, ref outputPolygon);
                        flag2 = !flag2;
                    }
                }
            }
Example #6
0
 public Class193(VattiClipper2I.Class191 localMinimum)
     : base(localMinimum.Y)
 {
     this.class191_0 = localMinimum;
 }