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); }
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; }
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; }
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); }
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); }
protected DxfRasterImage(DxfImageDef imageDef) { this.ImageDef = imageDef; }
public void Visit(DxfImageDef imageDefinition) { }
public void Visit(DxfImageDef imageDefinition) { this.bool_0 = true; }