Example #1
0
        public IShape4D Transform(IShape4D shape)
        {
            shape.Transform(this.matrix4D_0);
            switch (shape.CheckClipping((IInsideTester4D)this.blinnClipper4D_0))
            {
            case InsideTestResult.None:
            case InsideTestResult.Outside:
                return(NullShape4D.Instance);

            case InsideTestResult.Inside:
                shape.Transform(this.matrix4D_1);
                return(shape);

            default:
                IList <Polyline4D> polylines4D     = shape.ToPolylines4D(this.double_0);
                List <Polyline4D>  polyline4DList1 = new List <Polyline4D>(polylines4D.Count);
                int  count = polylines4D.Count;
                bool flag  = true;
                for (int index = 0; index < count; ++index)
                {
                    Polyline4D         polyline        = polylines4D[index];
                    IList <Polyline4D> polyline4DList2 = this.blinnClipper4D_0.Clip(polyline, shape.IsFilled);
                    if (polyline4DList2.Count != 1 || polyline4DList2[0] != polyline)
                    {
                        flag = false;
                    }
                    polyline4DList1.AddRange((IEnumerable <Polyline4D>)DxfUtil.GetTransformed((IEnumerable <Polyline4D>)polyline4DList2, this.matrix4D_1));
                }
                if (!flag)
                {
                    return((IShape4D) new PolylineShape4D((IList <Polyline4D>)polyline4DList1, shape.IsFilled));
                }
                shape.Transform(this.matrix4D_1);
                return(shape);
            }
        }
Example #2
0
 public IList <Polyline4D> Transform(Polyline3D polyline, bool filled)
 {
     return(DxfUtil.GetTransformed((IEnumerable <Polyline4D>) this.blinnClipper4D_0.Clip(DxfUtil.smethod_40(polyline, this.matrix4D_0), filled), this.matrix4D_1));
 }