diff --git a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureBase.cs b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureBase.cs index 71acebe74..d15971331 100644 --- a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureBase.cs +++ b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureBase.cs @@ -36,7 +36,7 @@ namespace MatterHackers.GCodeVisualizer { protected int extruderIndex; - public abstract void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo); + public abstract void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, Color overrideColor = default(Color)); 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 da8dfae9f..e33b10d94 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) + public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, Color overrideColor = default(Color)) { if (renderInfo.CurrentRenderType.HasFlag(RenderType.Extrusions)) { @@ -116,7 +116,11 @@ namespace MatterHackers.GCodeVisualizer Color extrusionColor = Color.Black; - if (renderInfo.CurrentRenderType.HasFlag(RenderType.SpeedColors)) + if (overrideColor != default(Color)) + { + extrusionColor = overrideColor; + } + else if (renderInfo.CurrentRenderType.HasFlag(RenderType.SpeedColors)) { extrusionColor = color; } diff --git a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureRetract.cs b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureRetract.cs index 005410420..e26b64edf 100644 --- a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureRetract.cs +++ b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureRetract.cs @@ -1,10 +1,5 @@ -using MatterHackers.Agg; -using MatterHackers.Agg.VertexSource; -using MatterHackers.RenderOpenGl; -using MatterHackers.VectorMath; - -/* -Copyright (c) 2014, Lars Brubaker +/* +Copyright (c) 2019, Lars Brubaker, John Lewin All rights reserved. Redistribution and use in source and binary forms, with or without @@ -33,6 +28,10 @@ either expressed or implied, of the FreeBSD Project. */ using System; +using MatterHackers.Agg; +using MatterHackers.Agg.VertexSource; +using MatterHackers.RenderOpenGl; +using MatterHackers.VectorMath; namespace MatterHackers.GCodeVisualizer { @@ -66,7 +65,7 @@ namespace MatterHackers.GCodeVisualizer { if ((renderInfo.CurrentRenderType & RenderType.Retractions) == RenderType.Retractions) { - Vector3 position = new Vector3(this.position); + var position = new Vector3(this.position); // retract and unretract are the extruder color Color color = renderInfo.GetMaterialColor(extruderIndex); @@ -95,31 +94,37 @@ namespace MatterHackers.GCodeVisualizer } } - public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo) + public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, Color overrideColor = default(Color)) { if ((renderInfo.CurrentRenderType & RenderType.Retractions) == RenderType.Retractions) { double radius = Radius(renderInfo.LayerScale); - Vector2 position = new Vector2(this.position.X, this.position.Y); + var position = new Vector2(this.position.X, this.position.Y); renderInfo.Transform.transform(ref position); - Color retractionColor = new Color(Color.Red, 200); - if (extrusionAmount > 0) + var retractionColor = new Color(Color.Red, 200); + if (overrideColor != default(Color)) + { + retractionColor = overrideColor; + } + else if (extrusionAmount > 0) { // unretraction retractionColor = new Color(Color.Blue, 200); } - // render the part using opengl if (graphics2D is Graphics2DOpenGL graphics2DGl) { + // render using opengl graphics2DGl.DrawAACircle(position, radius, retractionColor); } else { - Ellipse extrusion = new Ellipse(position, radius); - graphics2D.Render(extrusion, retractionColor); + // render using agg + graphics2D.Render( + new Ellipse(position, radius), + retractionColor); } } } diff --git a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureTravel.cs b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureTravel.cs index 0859039e7..732e30a2e 100644 --- a/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureTravel.cs +++ b/MatterControl.OpenGL/GCodeRenderer/RenderFeatures/RenderFeatureTravel.cs @@ -62,13 +62,18 @@ namespace MatterHackers.GCodeVisualizer } } - public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo) + public override void Render(Graphics2D graphics2D, GCodeRenderInfo renderInfo, Color overrideColor = default(Color)) { 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; + } + if (graphics2D is Graphics2DOpenGL graphics2DGl) { // render using opengl