Extract GCodeRenderer from widget to model

This commit is contained in:
John Lewin 2017-06-24 10:38:08 -07:00
parent 847c088cce
commit 8b3bc325cd
3 changed files with 17 additions and 17 deletions

View file

@ -70,6 +70,9 @@ namespace MatterHackers.MatterControl
public class BedConfig
{
public GCodeFile LoadedGCode { get; set; }
// TODO: Make assignment private, wire up post slicing initialization here
public GCodeRenderer GCodeRenderer { get; set; }
}
public class PrinterConfig

View file

@ -400,7 +400,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private void TrackballTumbleWidget_DrawGlContent(object sender, EventArgs e)
{
if (loadedGCode == null || gcodeViewWidget.gCodeRenderer == null)
if (loadedGCode == null || printer.BedPlate.GCodeRenderer == null)
{
return;
}
@ -417,7 +417,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
new Vector2[] { ActiveSliceSettings.Instance.Helpers.ExtruderOffset(0), ActiveSliceSettings.Instance.Helpers.ExtruderOffset(1) },
MeshViewerWidget.GetMaterialColor);
gcodeViewWidget.gCodeRenderer.Render3D(renderInfo);
printer.BedPlate.GCodeRenderer.Render3D(renderInfo);
}
private void SetAnimationPosition()

View file

@ -88,8 +88,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private Vector2 unscaledRenderOffset = new Vector2(0, 0);
public GCodeRenderer gCodeRenderer { get; private set; }
public event EventHandler ActiveLayerChanged;
private GCodeFile loadedGCode => printer.BedPlate.LoadedGCode;
@ -107,7 +105,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
activeLayerIndex = value;
if (gCodeRenderer == null || activeLayerIndex < 0)
if (printer.BedPlate.GCodeRenderer == null || activeLayerIndex < 0)
{
activeLayerIndex = 0;
}
@ -177,9 +175,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
internal void Clear3DGCode()
{
if (gCodeRenderer != null)
var renderer = printer.BedPlate.GCodeRenderer;
if (renderer != null)
{
gCodeRenderer.Clear3DGCode();
renderer.Clear3DGCode();
this.Invalidate();
}
}
@ -223,7 +222,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
//using (new PerformanceTimer("GCode Timer", "Render"))
{
gCodeRenderer?.Render(graphics2D, renderInfo);
printer.BedPlate.GCodeRenderer?.Render(graphics2D, renderInfo);
}
}
}
@ -446,6 +445,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
}
// TODO: The bulk of this should move to the data model rather than in this widget
public async void LoadInBackground(string gcodePathAndFileName)
{
printer.BedPlate.LoadedGCode = await GCodeFileLoaded.LoadInBackground(gcodePathAndFileName, this.progressReporter);
@ -465,7 +465,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
CenterPartInView();
}
gCodeRenderer = new GCodeRenderer(loadedGCode);
printer.BedPlate.GCodeRenderer = new GCodeRenderer(loadedGCode);
if (ActiveSliceSettings.Instance.PrinterSelected)
{
@ -481,14 +481,15 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
try
{
// TODO: Why call this then throw away the result? What does calling initialize the otherwise would be invalid?
gCodeRenderer.GCodeFileToDraw?.GetFilamentUsedMm(ActiveSliceSettings.Instance.GetValue<double>(SettingsKey.filament_diameter));
printer.BedPlate.GCodeRenderer.GCodeFileToDraw?.GetFilamentUsedMm(ActiveSliceSettings.Instance.GetValue<double>(SettingsKey.filament_diameter));
}
catch (Exception ex)
{
Debug.Print(ex.Message);
GuiWidget.BreakInDebugger();
}
gCodeRenderer.CreateFeaturesForLayerIfRequired(0);
printer.BedPlate.GCodeRenderer.CreateFeaturesForLayerIfRequired(0);
});
DoneLoading?.Invoke(this, null);
@ -496,11 +497,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public override void OnClosed(ClosedEventArgs e)
{
if (gCodeRenderer != null)
{
gCodeRenderer.Dispose();
}
printer.BedPlate.GCodeRenderer?.Dispose();
base.OnClosed(e);
}
@ -519,7 +516,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
layerScale = layerScale * (Width / oldWidth);
}
else if (gCodeRenderer != null)
else if (printer.BedPlate.GCodeRenderer != null)
{
CenterPartInView();
}