コード例 #1
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);
        }
コード例 #2
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;
                    }
                }
            }
コード例 #3
0
 public override void vmethod_0(
     VattiClipper2I.Class35 eventQueue,
     VattiClipper2I.Class195 scanBeam)
 {
     scanBeam.method_2(this.class200_0);
 }
コード例 #4
0
 public virtual void vmethod_0(
     VattiClipper2I.Class35 eventQueue,
     VattiClipper2I.Class195 scanBeam)
 {
 }