diff --git a/MatterControl.OpenGL/GCodeRenderer/GCodeRenderer.cs b/MatterControl.OpenGL/GCodeRenderer/GCodeRenderer.cs index d05e9013f..cac5fe132 100644 --- a/MatterControl.OpenGL/GCodeRenderer/GCodeRenderer.cs +++ b/MatterControl.OpenGL/GCodeRenderer/GCodeRenderer.cs @@ -207,12 +207,14 @@ namespace MatterHackers.GCodeVisualizer { graphics2DGl.PreRender(Color.White); GL.Begin(BeginMode.Triangles); + + int lastFeature = endFeature - 1; for (int i = startFeature; i < endFeature; i++) { RenderFeatureBase feature = renderFeatures[renderInfo.EndLayerIndex][i]; if (feature != null) { - feature.Render(graphics2DGl, renderInfo); + feature.Render(graphics2DGl, renderInfo, highlightFeature: i == lastFeature); } } GL.End(); diff --git a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureBase.cs b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureBase.cs index d15971331..15e1ffd8c 100644 --- a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureBase.cs +++ b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureBase.cs @@ -36,7 +36,13 @@ namespace MatterHackers.GCodeVisualizer { protected int extruderIndex; - public abstract void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, Color overrideColor = default(Color)); + public static Color HighlightColor { get; set; } = new Color("#D0F476"); + + public static Color StartColor { get; set; } = Color.Red; + + public static Color EndColor { get; set; } = new Color("#008000"); + + public abstract void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, bool highlightFeature = false); public abstract void CreateRender3DData(VectorPOD colorVertexData, VectorPOD indexData, GCodeRenderInfo renderInfo); diff --git a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureExtrusion.cs b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureExtrusion.cs index e33b10d94..606046a05 100644 --- a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureExtrusion.cs +++ b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureExtrusion.cs @@ -108,7 +108,7 @@ namespace MatterHackers.GCodeVisualizer } } - public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, Color overrideColor = default(Color)) + public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, bool highlightFeature = false) { if (renderInfo.CurrentRenderType.HasFlag(RenderType.Extrusions)) { @@ -116,9 +116,9 @@ namespace MatterHackers.GCodeVisualizer Color extrusionColor = Color.Black; - if (overrideColor != default(Color)) + if (highlightFeature) { - extrusionColor = overrideColor; + extrusionColor = RenderFeatureBase.HighlightColor; } else if (renderInfo.CurrentRenderType.HasFlag(RenderType.SpeedColors)) { @@ -147,7 +147,14 @@ namespace MatterHackers.GCodeVisualizer var endPoint = new Vector2(end.X, end.Y); renderInfo.Transform.transform(ref endPoint); - graphics2DGl.DrawAALineRounded(startPoint, endPoint, extrusionLineWidths / 2, extrusionColor); + var eWidth = extrusionLineWidths / 2; + + graphics2DGl.DrawAALineRounded(startPoint, endPoint, eWidth, extrusionColor); + + if (highlightFeature) + { + Render3DStartEndMarkers(graphics2DGl, eWidth / 2, startPoint, endPoint); + } } else { diff --git a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureRetract.cs b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureRetract.cs index e26b64edf..810bc79c8 100644 --- a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureRetract.cs +++ b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureRetract.cs @@ -94,7 +94,7 @@ namespace MatterHackers.GCodeVisualizer } } - public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, Color overrideColor = default(Color)) + public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, bool highlightFeature = false) { if ((renderInfo.CurrentRenderType & RenderType.Retractions) == RenderType.Retractions) { @@ -104,9 +104,9 @@ namespace MatterHackers.GCodeVisualizer renderInfo.Transform.transform(ref position); var retractionColor = new Color(Color.Red, 200); - if (overrideColor != default(Color)) + if (highlightFeature) { - retractionColor = overrideColor; + retractionColor = RenderFeatureBase.HighlightColor; } else if (extrusionAmount > 0) { diff --git a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureTravel.cs b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureTravel.cs index 732e30a2e..e4a8898a9 100644 --- a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureTravel.cs +++ b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureTravel.cs @@ -62,17 +62,18 @@ namespace MatterHackers.GCodeVisualizer } } - public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, Color overrideColor = default(Color)) + protected void Render3DStartEndMarkers(Graphics2DOpenGL graphics2DGl, double radius, Vector2 startPoint, Vector2 endPoint) + { + graphics2DGl.DrawAACircle(startPoint, radius, RenderFeatureBase.StartColor); + graphics2DGl.DrawAACircle(endPoint, radius, RenderFeatureBase.EndColor); + } + + public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, bool highlightFeature = false) { if ((renderInfo.CurrentRenderType & RenderType.Moves) == RenderType.Moves) { - double movementLineWidth = 0.35 * renderInfo.LayerScale; - var movementColor = new Color(10, 190, 15); - - if (overrideColor != default(Color)) - { - movementColor = overrideColor; - } + double movementLineWidth = 0.2 * renderInfo.LayerScale; + Color movementColor = (highlightFeature) ? RenderFeatureBase.HighlightColor : new Color(10, 190, 15); if (graphics2D is Graphics2DOpenGL graphics2DGl) {