From 70eeaac26b06465a9fb1336428f284d5ecf31d6c Mon Sep 17 00:00:00 2001 From: larsbrubaker Date: Fri, 7 Feb 2014 17:01:02 -0800 Subject: [PATCH] Moving OrthographicZProjection into PolygonMesh. --- CustomWidgets/PartThumbnailWidget.cs | 2 +- MatterControl.csproj | 1 - OrthographicZProjection.cs | 77 ----------------------- PartPreviewWindow/CreateDiscreteMeshes.cs | 3 +- PartsSheet.cs | 2 +- PrintLibrary/PrintLibraryListItem.cs | 2 +- 6 files changed, 4 insertions(+), 83 deletions(-) delete mode 100644 OrthographicZProjection.cs diff --git a/CustomWidgets/PartThumbnailWidget.cs b/CustomWidgets/PartThumbnailWidget.cs index a0a25c8b8..7563b3eb6 100644 --- a/CustomWidgets/PartThumbnailWidget.cs +++ b/CustomWidgets/PartThumbnailWidget.cs @@ -156,7 +156,7 @@ namespace MatterHackers.MatterControl double maxSize = Math.Max(aabb.XSize, aabb.YSize); double scale = thumbnailWidget.image.Width / (maxSize * 1.2); RectangleDouble bounds2D = new RectangleDouble(aabb.minXYZ.x, aabb.minXYZ.y, aabb.maxXYZ.x, aabb.maxXYZ.y); - PolygonMesh.Processors.OrthographicZProjection.DrawTo(partGraphics2D, loadedMesh, + PolygonMesh.Rendering.OrthographicZProjection.DrawTo(partGraphics2D, loadedMesh, new Vector2((thumbnailWidget.image.Width / scale - bounds2D.Width) / 2 - bounds2D.Left, (thumbnailWidget.image.Height / scale - bounds2D.Height) / 2 - bounds2D.Bottom), scale, diff --git a/MatterControl.csproj b/MatterControl.csproj index 28b51b87e..2d009ad14 100644 --- a/MatterControl.csproj +++ b/MatterControl.csproj @@ -125,7 +125,6 @@ - diff --git a/OrthographicZProjection.cs b/OrthographicZProjection.cs deleted file mode 100644 index b8c3b9643..000000000 --- a/OrthographicZProjection.cs +++ /dev/null @@ -1,77 +0,0 @@ -/* -Copyright (c) 2013, Lars Brubaker -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -The views and conclusions contained in the software and documentation are those -of the authors and should not be interpreted as representing official policies, -either expressed or implied, of the FreeBSD Project. -*/ - -using System; -using System.IO; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -using MatterHackers.PolygonMesh; -using MatterHackers.VectorMath; -using MatterHackers.Agg; -using MatterHackers.Agg.Image; -using MatterHackers.Agg.VertexSource; - -namespace MatterHackers.PolygonMesh.Processors -{ - public static class OrthographicZProjection - { - public static void DrawTo(Graphics2D graphics2D, Mesh meshToDraw, Vector2 offset, double scale, RGBA_Bytes silhouetteColor) - { - graphics2D.Rasterizer.gamma(new gamma_power(.3)); - PathStorage polygonProjected = new PathStorage(); - foreach (Face face in meshToDraw.Faces) - { - if (face.normal.z > 0) - { - polygonProjected.remove_all(); - bool first = true; - foreach (FaceEdge faceEdge in face.FaceEdgeIterator()) - { - Vector2 position = new Vector2(faceEdge.vertex.Position.x, faceEdge.vertex.Position.y); - position += offset; - position *= scale; - if (first) - { - polygonProjected.MoveTo(position.x, position.y); - first = false; - } - else - { - polygonProjected.LineTo(position.x, position.y); - } - } - graphics2D.Render(polygonProjected, silhouetteColor); - } - } - graphics2D.Rasterizer.gamma(new gamma_none()); - } - } -} diff --git a/PartPreviewWindow/CreateDiscreteMeshes.cs b/PartPreviewWindow/CreateDiscreteMeshes.cs index 5d51de1b7..a6f966af8 100644 --- a/PartPreviewWindow/CreateDiscreteMeshes.cs +++ b/PartPreviewWindow/CreateDiscreteMeshes.cs @@ -39,7 +39,6 @@ using MatterHackers.Agg.ImageProcessing; using MatterHackers.Agg.VertexSource; using MatterHackers.MarchingSquares; using MatterHackers.PolygonMesh; -using MatterHackers.PolygonMesh.Processors; using MatterHackers.VectorMath; using ClipperLib; @@ -67,7 +66,7 @@ namespace MatterHackers.MatterControl double scaleFactor = 5; ImageBuffer partPlate = new ImageBuffer((int)(buildVolume.x * scaleFactor), (int)(buildVolume.y * scaleFactor), 32, new BlenderBGRA()); Vector2 renderOffset = new Vector2(buildVolume.x / 2, buildVolume.y / 2) - new Vector2(partBounds.Center.x, partBounds.Center.y); - PolygonMesh.Processors.OrthographicZProjection.DrawTo(partPlate.NewGraphics2D(), meshToSplit, renderOffset, scaleFactor, RGBA_Bytes.White); + PolygonMesh.Rendering.OrthographicZProjection.DrawTo(partPlate.NewGraphics2D(), meshToSplit, renderOffset, scaleFactor, RGBA_Bytes.White); if (backgroundWorker != null) { diff --git a/PartsSheet.cs b/PartsSheet.cs index 563f76b58..6a60b2c8a 100644 --- a/PartsSheet.cs +++ b/PartsSheet.cs @@ -182,7 +182,7 @@ namespace MatterHackers.MatterControl Stroke rectOutline = new Stroke(rect, strokeWidth); partGraphics2D.Render(rectOutline, RGBA_Bytes.DarkGray); - PolygonMesh.Processors.OrthographicZProjection.DrawTo(partGraphics2D, loadedMesh, new Vector2(-bounds2D.Left + PartMarginMM, -bounds2D.Bottom + textSpaceMM + PartMarginMM), PixelPerMM, RGBA_Bytes.Black); + PolygonMesh.Rendering.OrthographicZProjection.DrawTo(partGraphics2D, loadedMesh, new Vector2(-bounds2D.Left + PartMarginMM, -bounds2D.Bottom + textSpaceMM + PartMarginMM), PixelPerMM, RGBA_Bytes.Black); partGraphics2D.Render(typeFacePrinter, RGBA_Bytes.Black); partImagesToPrint.Add(new PartImage(imageOfPart)); diff --git a/PrintLibrary/PrintLibraryListItem.cs b/PrintLibrary/PrintLibraryListItem.cs index 2bf6cae49..9d361a1da 100644 --- a/PrintLibrary/PrintLibraryListItem.cs +++ b/PrintLibrary/PrintLibraryListItem.cs @@ -158,7 +158,7 @@ namespace MatterHackers.MatterControl.PrintLibrary double maxSize = Math.Max(aabb.XSize, aabb.YSize); double scale = thumbnailWidget.image.Width / (maxSize * 1.2); RectangleDouble bounds2D = new RectangleDouble(aabb.minXYZ.x, aabb.minXYZ.y, aabb.maxXYZ.x, aabb.maxXYZ.y); - PolygonMesh.Processors.OrthographicZProjection.DrawTo(partGraphics2D, loadedMesh, + PolygonMesh.Rendering.OrthographicZProjection.DrawTo(partGraphics2D, loadedMesh, new Vector2((thumbnailWidget.image.Width / scale - bounds2D.Width) / 2 - bounds2D.Left, (thumbnailWidget.image.Height / scale - bounds2D.Height) / 2 - bounds2D.Bottom), scale,