Put in the speeds legend

Removed unused icons
This commit is contained in:
Lars Brubaker 2015-05-22 15:07:48 -07:00
parent 4d4841adf3
commit 61dab45d0b
9 changed files with 107 additions and 134 deletions

View file

@ -1,115 +1,99 @@
using System;
using MatterHackers.Agg;
using MatterHackers.Agg.UI;
using MatterHackers.GCodeVisualizer;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Threading.Tasks;
using MatterHackers.Agg;
using MatterHackers.MatterControl.PrintQueue;
using MatterHackers.GCodeVisualizer;
using MatterHackers.Agg.UI;
using MatterHackers.MeshVisualizer;
using MatterHackers.VectorMath;
using System.IO;
using MatterHackers.Agg.PlatformAbstract;
using System.Text.RegularExpressions;
namespace MatterHackers.MatterControl.PartPreviewWindow
{
public class ColorGradientWidget : FlowLayoutWidget
{
public ColorGradientWidget(GCodeFile gcodeFileTest)
: base(FlowDirection.TopToBottom)
{
BackgroundColor = new RGBA_Bytes(0, 0, 0, 120);
public class ColorGradientWidget : FlowLayoutWidget
{
HashSet<float> speeds = new HashSet<float>();
PrinterMachineInstruction previousInstruction = gcodeFileTest.Instruction(0);
for (int i = 1; i < gcodeFileTest.LineCount; i++)
{
PrinterMachineInstruction instruction = gcodeFileTest.Instruction(i);
if (instruction.EPosition > previousInstruction.EPosition && (instruction.Line.IndexOf('X') != -1 || instruction.Line.IndexOf('Y') != -1))
{
speeds.Add((float)instruction.FeedRate);
}
previousInstruction = instruction;
}
public ColorGradientWidget(GCodeFile gcodeFileTest)
: base(FlowDirection.TopToBottom)
{
ExtrusionColors extrusionColors = new ExtrusionColors();
BackgroundColor = new RGBA_Bytes(0, 0, 0, 120);
speeds.Select(speed => extrusionColors.GetColorForSpeed(speed)).ToArray();
HashSet<float> speeds = new HashSet<float>();
PrinterMachineInstruction previousInstruction = gcodeFileTest.Instruction(0);
for (int i = 1; i < gcodeFileTest.LineCount; i++)
{
PrinterMachineInstruction instruction = gcodeFileTest.Instruction(i);
if(instruction.EPosition > previousInstruction.EPosition && (instruction.Line.IndexOf('X') != -1 || instruction.Line.IndexOf('Y') != -1))
{
speeds.Add((float)instruction.FeedRate);
}
previousInstruction = instruction;
}
float min = speeds.Min();
float max = speeds.Max();
int maxItems = Math.Min(7, speeds.Count());
ExtrusionColors extrusionColors = new ExtrusionColors();
int count = maxItems - 1;
float increment = (max - min) / count;
int index = 0;
speeds.Select(speed => extrusionColors.GetColorForSpeed(speed)).ToArray();
int[] rangeValues;
if (speeds.Count < 8)
{
rangeValues = speeds.Select(s => (int)s).OrderBy(i => i).ToArray();
}
else
{
rangeValues = Enumerable.Range(0, maxItems).Select(x => (int)(min + increment * index++)).ToArray();
}
float min = speeds.Min();
float max = speeds.Max();
int maxItems = Math.Min(7, speeds.Count());
RGBA_Bytes[] speedColors = rangeValues.OrderBy(s => s).Select(speed => extrusionColors.GetColorForSpeed(speed)).ToArray();
int count = maxItems - 1;
float increment = (max - min) / count;
int index = 0;
for (int i = 0; i < speedColors.Length; i++)
{
RGBA_Bytes color = speedColors[i];
int speed = rangeValues[i];
int[] rangeValues;
if (speeds.Count < 8)
{
rangeValues = speeds.Select(s => (int)s).OrderBy(i => i).ToArray();
}
else
{
rangeValues = Enumerable.Range(0, maxItems).Select(x => (int)(min + increment * index++)).ToArray();
}
GuiWidget colorWidget = new GuiWidget();
colorWidget.Width = 20;
colorWidget.Height = 20;
colorWidget.BackgroundColor = color;
colorWidget.Margin = new BorderDouble(2);
float feedRateToMMPerSecond = speed / 60;
RGBA_Bytes[] speedColors = rangeValues.OrderBy(s => s).Select(speed => extrusionColors.GetColorForSpeed(speed)).ToArray();
ColorToSpeedWidget colorToSpeedWidget = new ColorToSpeedWidget(colorWidget, feedRateToMMPerSecond.ToString());
this.AddChild(colorToSpeedWidget);
}
for (int i = 0; i < speedColors.Length; i++)
{
RGBA_Bytes color = speedColors[i];
int speed = rangeValues[i];
Margin = new BorderDouble(5, 5, 200, 50);
Margin *= TextWidget.GlobalPointSizeScaleRatio;
HAnchor |= Agg.UI.HAnchor.ParentLeft;
VAnchor = Agg.UI.VAnchor.ParentTop;
}
GuiWidget colorWidget = new GuiWidget();
colorWidget.Width = 20;
colorWidget.Height = 20;
colorWidget.BackgroundColor = color;
colorWidget.Margin = new BorderDouble(2);
float feedRateToMMPerSecond = speed / 60;
public class ColorToSpeedWidget : FlowLayoutWidget
{
public string layerSpeed;
public GuiWidget speedColor;
public ColorToSpeedWidget(GuiWidget colorWidget, String speed)
: base(FlowDirection.LeftToRight)
{
Margin = new BorderDouble(2);
ColorToSpeedWidget colorToSpeedWidget = new ColorToSpeedWidget(colorWidget, feedRateToMMPerSecond.ToString());
this.AddChild(colorToSpeedWidget);
speedColor = colorWidget;
layerSpeed = speed + " mm\\s";
}
colorWidget.Margin = new BorderDouble(left: 2);
Margin = new BorderDouble(5, 5, 200, 50);
HAnchor |= Agg.UI.HAnchor.ParentLeft;
VAnchor = Agg.UI.VAnchor.ParentTop;
}
public class ColorToSpeedWidget : FlowLayoutWidget
{
public GuiWidget speedColor;
public string layerSpeed;
public ColorToSpeedWidget(GuiWidget colorWidget, String speed)
: base(FlowDirection.LeftToRight)
{
Margin = new BorderDouble(2);
speedColor = colorWidget;
layerSpeed = speed + " mm\\s";
colorWidget.Margin = new BorderDouble(left: 2);
TextWidget speedTextBox = new TextWidget(layerSpeed, pointSize: 12);
speedTextBox.TextColor = RGBA_Bytes.White;
speedTextBox.VAnchor = VAnchor.ParentCenter;
speedTextBox.Margin = new BorderDouble(left: 2);
this.AddChild(colorWidget);
this.AddChild(speedTextBox);
}
}
}
TextWidget speedTextBox = new TextWidget(layerSpeed, pointSize: 12);
speedTextBox.TextColor = RGBA_Bytes.White;
speedTextBox.VAnchor = VAnchor.ParentCenter;
speedTextBox.Margin = new BorderDouble(left: 2);
this.AddChild(colorWidget);
this.AddChild(speedTextBox);
}
}
}
}

View file

@ -67,11 +67,11 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private CheckBox expandModelOptions;
private CheckBox expandDisplayOptions;
private CheckBox syncToPrint;
private CheckBox showSpeeds;
private CheckBox showSpeeds;
private GuiWidget gcodeDisplayWidget;
private ColorGradientWidget gradient;
private ColorGradientWidget gradientWidget;
private EventHandler unregisterEvents;
private WindowMode windowMode;
@ -568,25 +568,23 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
// put in a show speed checkbox
{
showSpeeds = new CheckBox(LocalizedString.Get("Speeds"), textColor: ActiveTheme.Instance.PrimaryTextColor);
showSpeeds = new CheckBox(LocalizedString.Get("Speeds"), textColor: ActiveTheme.Instance.PrimaryTextColor);
showSpeeds.Checked = gcodeViewWidget.RenderSpeeds;
//showSpeeds.Checked = gradient.Visible;
//showSpeeds.Checked = gradient.Visible;
showSpeeds.CheckedStateChanged += (sender, e) =>
{
/* if (!showSpeeds.Checked)
{
gradient.Visible = false;
}
else
{
gradient.Visible = true;
}*/
/* if (!showSpeeds.Checked)
{
gradient.Visible = false;
}
else
{
gradient.Visible = true;
}*/
gradient.Visible = showSpeeds.Checked;
gradientWidget.Visible = showSpeeds.Checked;
gcodeViewWidget.RenderSpeeds = showSpeeds.Checked;
};
layerInfoContainer.AddChild(showSpeeds);
@ -899,16 +897,13 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
&& gcodeViewWidget.LoadedGCode != null
&& gcodeViewWidget.LoadedGCode.LineCount > 0)
{
CloseIfNotNull(gradient);
gradient = new ColorGradientWidget(gcodeViewWidget.LoadedGCode);
AddChild(gradient);
gradient.Visible = false;
CloseIfNotNull(gradientWidget);
gradientWidget = new ColorGradientWidget(gcodeViewWidget.LoadedGCode);
AddChild(gradientWidget);
gradientWidget.Visible = false;
CreateOptionsContent();
setGradientVisibility();
setGradientVisibility();
buttonRightPanel.Visible = true;
viewControlsToggle.Visible = true;
@ -936,9 +931,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
layerRenderRatioSlider.SecondValueChanged += new EventHandler(layerEndRenderRatioSlider_ValueChanged);
AddChild(layerRenderRatioSlider);
SetSliderSizes();
// let's change the active layer so that it is set to the first layer with data
@ -951,20 +943,17 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
}
}
private void setGradientVisibility()
{
if (showSpeeds.Checked)
{
gradient.Visible = true;
}
else
{
gradient.Visible = false;
}
}
private void setGradientVisibility()
{
if (showSpeeds.Checked)
{
gradientWidget.Visible = true;
}
else
{
gradientWidget.Visible = false;
}
}
private void layerStartRenderRatioSlider_ValueChanged(object sender, EventArgs e)
{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B