Esempio n. 1
0
        private void method_15(
            DrawContext.Wireframe context,
            Bitmap bitmap,
            out DxfRasterImage rasterImage,
            out Vector4D transformedOrigin,
            out Vector4D transformedXAxis,
            out Vector4D transformedYAxis)
        {
            GdiBitmap gdiBitmap = new GdiBitmap(bitmap);

            rasterImage = (DxfRasterImage) new DxfImage();
            DxfImageDef imageDef = new DxfImageDef(context.Model);

            imageDef.SetBitmap((IBitmap)gdiBitmap);
            rasterImage.SetImageDef(imageDef, true);
            IClippingTransformer clippingTransformer = (IClippingTransformer)context.GetTransformer().Clone();
            Matrix4D             preTransform1       = Transformation4D.Translation((WW.Math.Vector3D) this.point3D_3);

            clippingTransformer.SetPreTransform(preTransform1);
            Matrix4D preTransform2 = Transformation4D.Scaling((this.point3D_2 - this.point3D_3).GetLength() / (double)bitmap.Width, (this.point3D_0 - this.point3D_3).GetLength() / (double)bitmap.Height, 1.0);

            clippingTransformer.SetPreTransform(preTransform2);
            Matrix4D matrix = clippingTransformer.Matrix;

            WW.Math.Point3D zero = WW.Math.Point3D.Zero;
            transformedOrigin = matrix.TransformTo4D(zero);
            transformedXAxis  = matrix.TransformTo4D(zero + WW.Math.Vector3D.XAxis);
            transformedYAxis  = matrix.TransformTo4D(zero + WW.Math.Vector3D.YAxis);
        }
Esempio n. 2
0
 public void SetImageDef(DxfImageDef imageDef, bool updateAxes)
 {
     this.dxfObjectReference_6 = DxfObjectReference.GetReference((IDxfHandledObject)imageDef);
     if (!updateAxes || imageDef == null)
     {
         return;
     }
     this.vector3D_0 = new WW.Math.Vector3D(imageDef.DefaultPixelSize.X, 0.0, 0.0);
     this.vector3D_1 = new WW.Math.Vector3D(0.0, imageDef.DefaultPixelSize.Y, 0.0);
     this.size2D_0   = imageDef.Size;
 }
Esempio n. 3
0
        public override void DrawInternal(
            DrawContext.Surface context,
            Graphics graphics,
            IGraphicElementBlock parentGraphicElementBlock)
        {
            DxfImageDef imageDef = this.ImageDef;

            if (imageDef == null || !imageDef.Bitmap.IsValid)
            {
                return;
            }
            List <WW.Math.Point2D> clipBoundary = (List <WW.Math.Point2D>) this.GetClipBoundary((DrawContext)context);

            if (clipBoundary == null || clipBoundary.Count <= 0 || !graphics.AddExistingGraphicElement1(parentGraphicElementBlock, (DxfEntity)this, ArgbColor.Empty))
            {
                return;
            }
            List <Triangulator2D.Triangle> triangleList = new List <Triangulator2D.Triangle>();
            List <WW.Math.Point2D>         point2DList  = new List <WW.Math.Point2D>();

            Triangulator2D.Triangulate((IList <IList <WW.Math.Point2D> >) new List <WW.Math.Point2D>[1]
            {
                clipBoundary
            }, (IList <Triangulator2D.Triangle>)triangleList, (IList <WW.Math.Point2D>)point2DList);
            Matrix4D matrix4D = this.method_15();

            WW.Math.Point2D[] point2DArray        = new WW.Math.Point2D[point2DList.Count];
            WW.Math.Point3D[] point3DArray        = new WW.Math.Point3D[point2DList.Count];
            Size2D            referencedImageSize = this.ReferencedImageSize;
            double            num1     = 1.0 / referencedImageSize.X;
            double            num2     = 1.0 / referencedImageSize.Y;
            Vector2D          vector2D = new Vector2D(0.5, 0.5);

            for (int index = point2DList.Count - 1; index >= 0; --index)
            {
                WW.Math.Point2D point = point2DList[index] + vector2D;
                point2DArray[index] = new WW.Math.Point2D(num1 * point.X, 1.0 - num2 * point.Y);
                point3DArray[index] = matrix4D.TransformTo3D(point);
            }
            GraphicElement1 graphicElement = new GraphicElement1(ArgbColor.Empty);

            graphics.AddNewGraphicElement((DxfEntity)this, parentGraphicElementBlock, graphicElement);
            TexturedTriangleList texturedTriangleList = new TexturedTriangleList();

            graphicElement.Geometry.Add((IPrimitive)texturedTriangleList);
            texturedTriangleList.RgbaBytes          = imageDef.Bitmap.GetRgbaBytes();
            texturedTriangleList.Width              = imageDef.Bitmap.Width;
            texturedTriangleList.Height             = imageDef.Bitmap.Height;
            texturedTriangleList.Normal             = matrix4D.Transform(WW.Math.Vector3D.ZAxis);
            texturedTriangleList.Triangles          = (IList <Triangulator2D.Triangle>)triangleList;
            texturedTriangleList.TextureCoordinates = (IList <WW.Math.Point2D>)point2DArray;
            texturedTriangleList.Points             = (IList <WW.Math.Point3D>)point3DArray;
        }
Esempio n. 4
0
        public override void ResolveReferences(Class374 modelBuilder)
        {
            base.ResolveReferences(modelBuilder);
            DxfRasterImage handledObject = (DxfRasterImage)this.HandledObject;

            if (this.ulong_6 == 0UL)
            {
                return;
            }
            DxfImageDef imageDef = modelBuilder.method_4 <DxfImageDef>(this.ulong_6);

            if (imageDef == null)
            {
                return;
            }
            handledObject.SetImageDef(imageDef, false);
        }
Esempio n. 5
0
        public override void DrawInternal(
            DrawContext.Surface context,
            ISurfaceGraphicsFactory graphicsFactory)
        {
            DxfImageDef imageDef = this.ImageDef;

            if (imageDef == null || !imageDef.Bitmap.IsValid)
            {
                return;
            }
            List <WW.Math.Point2D> clipBoundary = (List <WW.Math.Point2D>) this.GetClipBoundary((DrawContext)context);

            if (clipBoundary == null || clipBoundary.Count <= 0)
            {
                return;
            }
            List <Triangulator2D.Triangle> triangleList = new List <Triangulator2D.Triangle>();
            List <WW.Math.Point2D>         point2DList  = new List <WW.Math.Point2D>();

            Triangulator2D.Triangulate((IList <IList <WW.Math.Point2D> >) new List <WW.Math.Point2D>[1]
            {
                clipBoundary
            }, (IList <Triangulator2D.Triangle>)triangleList, (IList <WW.Math.Point2D>)point2DList);
            Interface41 nterface41   = (Interface41)context.GetTransformer().Clone();
            Matrix4D    preTransform = this.method_15();

            nterface41.SetPreTransform(preTransform);
            WW.Math.Point2D[] point2DArray        = new WW.Math.Point2D[point2DList.Count];
            Vector4D[]        vector4DArray       = new Vector4D[point2DList.Count];
            Size2D            referencedImageSize = this.ReferencedImageSize;
            double            num1     = 1.0 / referencedImageSize.X;
            double            num2     = 1.0 / referencedImageSize.Y;
            Vector2D          vector2D = new Vector2D(0.5, 0.5);

            for (int index = point2DList.Count - 1; index >= 0; --index)
            {
                WW.Math.Point2D point2D = point2DList[index] + vector2D;
                point2DArray[index]  = new WW.Math.Point2D(num1 * point2D.X, 1.0 - num2 * point2D.Y);
                vector4DArray[index] = nterface41.Transform(new WW.Math.Point3D(point2D.X, point2D.Y, 0.0));
            }
            byte[] rgbaBytes = imageDef.Bitmap.GetRgbaBytes();
            graphicsFactory.CreateTexturedTriangles(rgbaBytes, imageDef.Bitmap.Width, imageDef.Bitmap.Height, preTransform.Transform(WW.Math.Vector3D.ZAxis), (IList <Triangulator2D.Triangle>)triangleList, (IList <WW.Math.Point2D>)point2DArray, (IList <Vector4D>)vector4DArray);
        }
Esempio n. 6
0
 protected DxfRasterImage(DxfImageDef imageDef)
 {
     this.ImageDef = imageDef;
 }
Esempio n. 7
0
 public void Visit(DxfImageDef imageDefinition)
 {
 }
Esempio n. 8
0
 public void Visit(DxfImageDef imageDefinition)
 {
     this.bool_0 = true;
 }