aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML
diff options
context:
space:
mode:
authorMirta <mirta@twine-s.com>2020-07-06 09:53:24 +0300
committerMirta <mirta@twine-s.com>2020-07-06 09:53:24 +0300
commite575493d6ec9915ea4efa25f1c6bc95a73a1957a (patch)
treef9e5e551a590c8580fbd4da30d9e11a7ea0a4114 /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML
parent000867108ed4d5d15e02eae56413e53232268a22 (diff)
parent472128227357a42e556b08b867b643c344c18522 (diff)
downloadTango-e575493d6ec9915ea4efa25f1c6bc95a73a1957a.tar.gz
Tango-e575493d6ec9915ea4efa25f1c6bc95a73a1957a.zip
Accepted addition of gratient header
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/ColorLinearizationModel.cs36
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Tango.MachineStudio.RML.csproj1
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/ColorCalibrationViewVM.cs190
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorCalibrationView.xaml106
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorCalibrationView.xaml.cs1
5 files changed, 215 insertions, 119 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/ColorLinearizationModel.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/ColorLinearizationModel.cs
new file mode 100644
index 000000000..fe9ec7e37
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/ColorLinearizationModel.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Documents;
+
+namespace Tango.MachineStudio.RML.Models
+{
+ public class ColorLinearizationModel
+ {
+ private class LinearizationDataItem
+ {
+ public double L { get; set; }
+ public double A { get; set; }
+ public double B { get; set; }
+ public int InkPercentage { get; set; }
+ }
+
+ public ColorLinearizationModel()
+ {
+
+ }
+
+ public void GetDataFromFile(string fileName)
+ {
+
+ ExcelReader reader = new ExcelReader(fileName);
+ var items = reader.GetDataByIndex<LinearizationDataItem>("Sheet1", 2);
+ foreach (var item in items)
+ {
+ }
+ reader.Dispose();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Tango.MachineStudio.RML.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Tango.MachineStudio.RML.csproj
index 1f9d56f07..145a0e06e 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Tango.MachineStudio.RML.csproj
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Tango.MachineStudio.RML.csproj
@@ -81,6 +81,7 @@
<Compile Include="Contracts\IMainView.cs" />
<Compile Include="Models\CalibrationMeasurementModel.cs" />
<Compile Include="Models\CctModel.cs" />
+ <Compile Include="Models\ColorLinearizationModel.cs" />
<Compile Include="RMLModule.cs" />
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/ColorCalibrationViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/ColorCalibrationViewVM.cs
index dd0c66c58..f118ce77a 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/ColorCalibrationViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/ColorCalibrationViewVM.cs
@@ -16,6 +16,7 @@ using Tango.ColorCalibration;
using Tango.PMR.ColorLab;
using Tango.Logging;
using Tango.MachineStudio.Common.Notifications;
+using System.Text.RegularExpressions;
namespace Tango.MachineStudio.RML.ViewModels
{
@@ -41,6 +42,14 @@ namespace Tango.MachineStudio.RML.ViewModels
set { _liquidType = value; RaisePropertyChangedAuto(); }
}
+ private BL.Entities.LiquidType _selectedLinearizationliquidType;
+
+ public BL.Entities.LiquidType SelectedLinearizationLiquidType
+ {
+ get { return _selectedLinearizationliquidType; }
+ set { _selectedLinearizationliquidType = value; RaisePropertyChangedAuto(); }
+ }
+
private List<BL.Entities.LiquidType> _liquidTypes;
public List<BL.Entities.LiquidType> LiquidTypes
@@ -69,17 +78,38 @@ namespace Tango.MachineStudio.RML.ViewModels
public double Factor
{
get { return _factor; }
- set { _factor = value; }
+ set { _factor = value; RaisePropertyChangedAuto(); }
}
- public RelayCommand CreateGraphCommand { get; set; }
+ private string _errorMessage;
+ public string ErrorMessage
+ {
+ get { return _errorMessage; }
+ set { _errorMessage = value; RaisePropertyChangedAuto(); }
+ }
+ private bool _hasError;
+
+ public bool HasError
+ {
+ get { return _hasError; }
+ set { _hasError = value; RaisePropertyChangedAuto(); }
+ }
- public string CalibrationType
+ public RelayCommand CreateGraphCommand { get; set; }
+ public RelayCommand CreateLinearizationGraphCommand { get; set; }
+
+
+ public string CalibrationLiquidTypeName
{
get { return LiquidType == null ?"" : LiquidType.Name; }
}
+ public string LinearizationLiquidTypeName
+ {
+ get { return SelectedLinearizationLiquidType == null ? "" : SelectedLinearizationLiquidType.Name; }
+ }
+
public Plot PlotControl { get; set; }
private IList<DataPoint> _points;
/// <summary>
@@ -140,6 +170,22 @@ namespace Tango.MachineStudio.RML.ViewModels
}
}
+
+ public Plot LinearizationPlotControl { get; set; }
+ private IList<DataPoint> _linearizationPoints;
+ /// <summary>
+ /// Binding to ItemsSource of line chart.
+ /// </summary>
+ public IList<DataPoint> LinearizationPoints
+ {
+ get { return _linearizationPoints; }
+ set
+ {
+ _linearizationPoints = value;
+ RaisePropertyChangedAuto();
+ }
+ }
+
#endregion
public ColorCalibrationViewVM(INotificationProvider notification)
@@ -152,7 +198,9 @@ namespace Tango.MachineStudio.RML.ViewModels
new CalibrationMeasurementModel(),
};
Factor = 0;
+ HasError = false;
CreateGraphCommand = new RelayCommand(CreateGraph);
+ CreateLinearizationGraphCommand = new RelayCommand(CreateLinearizationGraph);
this.Points = new List<DataPoint>();
TargetPoints = new List<DataPoint>();
}
@@ -166,24 +214,31 @@ namespace Tango.MachineStudio.RML.ViewModels
private double GetLiquidFactor()
{
- try{
- CalibrationInput conversionInput = new CalibrationInput();
- Measurements.ToList().ForEach(x => conversionInput.Measurements.Add(new CalibrationMeasurement{ L = x.L, A = x.A, B = x.B, NanoliterPerCentimeter = x.Ink }));
- conversionInput.LiquidType = PMR.ColorLab.LiquidType.TryParse(_liquidType.Type.ToString(), out PMR.ColorLab.LiquidType outValue) ? outValue : PMR.ColorLab.LiquidType.Black;
-
+ try
+ {
+ CalibrationInput conversionInput = new CalibrationInput();
+ Measurements.ToList().ForEach(x => conversionInput.Measurements.Add(new CalibrationMeasurement { L = x.L, A = x.A, B = x.B, NanoliterPerCentimeter = x.Ink }));
+ conversionInput.LiquidType = PMR.ColorLab.LiquidType.TryParse(_liquidType.Type.ToString(), out PMR.ColorLab.LiquidType outValue) ? outValue : PMR.ColorLab.LiquidType.Black;
- LAB lab;
- if (ColorCalibrationExt.TargetLiquidTypeToLAB.TryGetValue(_liquidType.Type, out lab))
- {
- conversionInput.TargetL = lab.L;
- conversionInput.TargetA = lab.A;
- conversionInput.TargetB = lab.B;
- }
- CalibrationOutput result = _calibrator.GetLiquidFactor(conversionInput);
- return result.LiquidFactor;
+
+ LAB lab;
+ if (ColorCalibrationExt.TargetLiquidTypeToLAB.TryGetValue(_liquidType.Type, out lab))
+ {
+ conversionInput.TargetL = lab.L;
+ conversionInput.TargetA = lab.A;
+ conversionInput.TargetB = lab.B;
+ }
+ CalibrationOutput result = _calibrator.GetLiquidFactor(conversionInput);
+
+ ErrorMessage = Regex.Replace(result.ErrorMessage, "[^A-Za-z0-9_., ]+", "");
+
+ HasError = false == String.IsNullOrEmpty(ErrorMessage);
+ return result.LiquidFactor;
}
catch (Exception ex )
{
+ HasError = true;
+ ErrorMessage = "Error occurred while trying to call GetLiquidFactor.";
LogManager.Log(ex, "Error occurred while trying to call GetLiquidFactor.");
}
return 0.0;
@@ -196,11 +251,10 @@ namespace Tango.MachineStudio.RML.ViewModels
if (_liquidType == null)
return;
- LAB lab;
string labType = ColorCalibrationExt.DisplayLiquidTypeToLABType[_liquidType.Type];
await Task.Factory.StartNew(() =>
{
- Factor = GetLiquidFactor();
+ Factor = GetLiquidFactor( );
});
Points.Clear();
@@ -222,92 +276,38 @@ namespace Tango.MachineStudio.RML.ViewModels
RaisePropertyChanged("CalibrationType");
PlotControl.InvalidatePlot(true);
- //await Task.Factory.StartNew(() =>
- //{
- // DataPoint ? intersectionpoints = FindIntersection(Points.ToArray(), TargetPoints.ToArray());
- // if(intersectionpoints == null)
- // {
- // InvokeUI(() =>
- // {
- // _notification.ShowWarning(LogManager.Log($"No intersect target value with input values", LogCategory.Warning));
- // });
- // }
- //});
-
}
#endregion
+ #region CreateLinearizationGraph
- #region Intersect
-
- public DataPoint? FindIntersection(DataPoint[] line1, DataPoint[] line2)
+ private void CreateLinearizationGraph(object obj)
{
- for (int i = 0; i < line1.Length; i++)
- {
- int nextI = i;
- nextI++;
- if (nextI == line1.Length) break;
-
- for (int j = 0; j < line2.Length; j++)
- {
- int nextJ = j;
- nextJ++;
- if (nextJ == line2.Length) break;
- DataPoint? d = CheckIntersecting(line1[i], line1[nextI], line2[j], line2[nextJ]);
- return d;
-
- }
- }
- return null;
- }
-
- public DataPoint? CheckIntersecting(DataPoint A, DataPoint B, DataPoint C, DataPoint D)
- {
- // Line AB represented as a1x + b1y = c1
- double a1 = B.Y - A.Y;
- double b1 = A.X - B.X;
- double c1 = a1 * (A.X) + b1 * (A.Y);
+ if (_selectedLinearizationliquidType == null)
+ return;
- // Line CD represented as a2x + b2y = c2
- double a2 = D.Y - C.Y;
- double b2 = C.X - D.X;
- double c2 = a2 * (C.X) + b2 * (C.Y);
+ string labType = ColorCalibrationExt.DisplayLiquidTypeToLABType[_selectedLinearizationliquidType.Type];
- double determinant = a1 * b2 - a2 * b1;
+ ColorLinearizationModel model = new ColorLinearizationModel();
+ string fileName = @"C:\Test\Test Input Lineration.xlsx";
+ model.GetDataFromFile(fileName);
+ //await Task.Factory.StartNew(() =>
+ //{
+ // Factor = GetLiquidFactor();
+ //});
- if (determinant == 0)
- {
- // The lines are parallel. This is simplified
- }
- else
- {
- double x = (b2 * c1 - b1 * c2) / determinant;
- double y = (a1 * c2 - a2 * c1) / determinant;
+ LinearizationPoints.Clear();
+
+ Measurements.ToList().ForEach(x => {
+ LinearizationPoints.Add(new DataPoint(x.Ink, x.L));
+ });
- // check if the point lies on given line segment
- /* To check if "x" is between "a" and "b";
- int m = (a+b)/2;
- if(Math.abs(x-m) <= (Math.abs(a-m)))
- {
- }
- */
- double mx1 = (A.X + B.X) / 2;
- double mx2 = (C.X + D.X) / 2;
- double my1 = (A.Y + B.Y) / 2;
- double my2 = (C.Y + D.Y) / 2;
- if (Math.Abs(x - mx1) <= Math.Abs(A.X - mx1)
- && Math.Abs(x - mx2) <= Math.Abs(C.X - mx2)
- && Math.Abs(y - my1) <= Math.Abs(A.Y - my1)
- && Math.Abs(y - my2) <= Math.Abs(C.Y - my2))
- {
- return new DataPoint(x, y);
- }
-
- }
- return null;
+ RaisePropertyChanged("To");
+ RaisePropertyChanged("From");
+ XStep = (int)(Points.Count / 6);
+ LinearizationPlotControl.InvalidatePlot(true);
}
-
#endregion
-
+
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorCalibrationView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorCalibrationView.xaml
index 02cef3c0d..de433b7e7 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorCalibrationView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorCalibrationView.xaml
@@ -13,12 +13,13 @@
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800" Background="Transparent" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MainViewVM}">
- <UserControl.Resources>
- <converters:EmptyStringToNullConverter x:Key="EmptyStringToNullConverter" />
- <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
- </UserControl.Resources>
+ <UserControl.Resources>
+ <converters:EmptyStringToNullConverter x:Key="EmptyStringToNullConverter" />
+ <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
+ <converters:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter"/>
+ </UserControl.Resources>
- <Grid>
+ <Grid>
<DockPanel>
<Border DockPanel.Dock="Top" Background="{StaticResource TransparentBackgroundBrush200}" Margin="20 0" Padding="5" CornerRadius="5">
<Border.Effect>
@@ -35,26 +36,28 @@
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
- <Grid Grid.Column="0" Margin="20 0 0 0">
+ <Grid Grid.Column="0" Margin="20 0 20 0">
<Grid.RowDefinitions>
- <RowDefinition Height="Auto"/>
<RowDefinition Height="1*"/>
- <RowDefinition Height="1"/>
+ <RowDefinition Height="3*"/>
</Grid.RowDefinitions>
- <Border Grid.Row="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="Auto" Height="80" Margin="0 0 0 20" >
- <StackPanel Orientation="Vertical">
- <TextBlock FontSize="16" HorizontalAlignment="Left" >Liquid Type</TextBlock>
+ <Grid Grid.Row="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Width="Auto" Height="80" Margin="0 0 0 20" >
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="1*"></ColumnDefinition>
+ <ColumnDefinition Width="1*"></ColumnDefinition>
+ </Grid.ColumnDefinitions>
+ <StackPanel Orientation="Vertical" Grid.Column="0">
+ <TextBlock FontSize="20" HorizontalAlignment="Left" >Liquid Type</TextBlock>
<ComboBox Margin="0 20 0 0" MinWidth="140" HorizontalAlignment="Left" ItemsSource="{Binding LiquidTypes}"
SelectedItem="{Binding LiquidType}" DisplayMemberPath="Name"
Style="{StaticResource TransparentComboBoxStyle}" FontSize="16"></ComboBox>
</StackPanel>
- </Border>
+ <Button Grid.Column="1" VerticalAlignment="Top" Background="{StaticResource TransparentBackgroundBrush200}" MinWidth="160" Height="50" BorderBrush="{StaticResource TransparentBackgroundBrush200}" Command="{Binding CreateGraphCommand}" >
+ <TextBlock FontSize="16" Foreground="{StaticResource MainWindow.Foreground}">GET MAX DISPENSING RATE</TextBlock>
+ </Button>
+ </Grid>
<Grid Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Stretch">
- <Grid.RowDefinitions>
- <RowDefinition Height="1*"/>
- <RowDefinition Height="Auto"/>
- </Grid.RowDefinitions>
- <DataGrid HorizontalAlignment="Left" VerticalScrollBarVisibility ="Auto" Margin="0 0 0 10" SelectionUnit="FullRow" BorderBrush="{StaticResource DarkGrayBrush }" BorderThickness="1" Background="{StaticResource TransparentBackgroundBrush}" AlternatingRowBackground="{StaticResource Transparent200}" AutoGenerateColumns="False" CanUserAddRows="True" CanUserDeleteRows="False" ItemsSource="{Binding Measurements}" >
+ <DataGrid HorizontalAlignment="Left" VerticalScrollBarVisibility ="Auto" SelectionUnit="FullRow" BorderBrush="{StaticResource DarkGrayBrush }" BorderThickness="1" Background="{StaticResource TransparentBackgroundBrush}" AlternatingRowBackground="{StaticResource Transparent200}" AutoGenerateColumns="False" CanUserAddRows="True" CanUserDeleteRows="False" ItemsSource="{Binding Measurements}" Margin="0 30 0 50">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="BorderThickness" Value="0"/>
@@ -96,14 +99,17 @@
<mahapps:DataGridNumericUpDownColumn Header="B" Minimum="-128" Maximum="127" Binding="{Binding B}" HideUpDownButtons="True" Width="1*" ElementStyle="{StaticResource CellNumericUpDown}" EditingElementStyle="{StaticResource EditableCellNumericUpDown}" />
</DataGrid.Columns>
</DataGrid>
- <Button Grid.Row="1" Background="{StaticResource TransparentBackgroundBrush200}" MinWidth="160" Height="50" BorderBrush="{StaticResource TransparentBackgroundBrush200}" Command="{Binding CreateGraphCommand}" >
- <TextBlock FontSize="16" Foreground="{StaticResource MainWindow.Foreground}">CREATE GRAPH</TextBlock>
- </Button>
+
</Grid>
</Grid>
- <Grid Grid.Column="1">
- <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="20 20 0 0">
- <oxy:Plot Title="{Binding CalibrationType}" x:Name="CalibrationPlot">
+ <Grid Grid.Column="1" Margin="20 0 20 0">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="1*"/>
+ <RowDefinition Height="3*"/>
+ </Grid.RowDefinitions>
+ <Border Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0 20 0 0" BorderThickness="0" BorderBrush="{StaticResource DarkGrayBrush}" CornerRadius="5">
+ <oxy:Plot Title="{Binding CalibrationLiquidTypeName}" x:Name="CalibrationPlot" Margin="0 0 10 0" Background="Transparent">
<oxy:Plot.Series >
<oxy:LineSeries ItemsSource="{Binding Points}" Color="#73B6EC" MarkerFill="SteelBlue" MarkerType="Circle" />
<oxy:LineSeries ItemsSource="{Binding TargetPoints}" Color="#E14141" MarkerFill="#E14141" MarkerType="Circle" />
@@ -113,7 +119,59 @@
<oxy:LinearAxis Position="Left" Title = "Lab" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" IsZoomEnabled="True" Minimum="{Binding From}" Maximum="{Binding To}"/>
</oxy:Plot.Axes>
</oxy:Plot>
- </Border>
+ </Border>
+ <Border BorderBrush="{StaticResource BlueBrush100}" BorderThickness="0" CornerRadius="5" Margin="55 0 20 0">
+ <StackPanel Orientation="Vertical" Grid.Row="0" Margin="10 10 0 0">
+
+ <TextBlock FontSize="16" HorizontalAlignment="Left" Foreground="{StaticResource MainWindow.Foreground}" Height="50" Visibility="{Binding HasError, Converter={StaticResource BooleanToVisibilityInverseConverter}}">
+ <Run FontSize="20"> Factor: </Run>
+ <Run Text="{Binding Factor}" Foreground="{StaticResource BlueBrush100}"></Run>
+ <LineBreak />
+ </TextBlock>
+ <TextBlock FontSize="16" Foreground="{StaticResource MainWindow.Foreground}" FontWeight="SemiBold" Visibility="{Binding HasError, Converter={StaticResource BooleanToVisibilityConverter}}" Margin="0 20 10 10" >Warning:</TextBlock>
+
+ <Border BorderThickness="1" CornerRadius="4" BorderBrush="{StaticResource DarkGrayBrush}" Visibility="{Binding HasError, Converter={StaticResource BooleanToVisibilityConverter}}" Height="Auto">
+ <TextBlock Margin="5" Foreground="{StaticResource RedBrush300}" Text="{Binding ErrorMessage}" TextWrapping="Wrap" Padding="5" FontSize="14"/>
+ </Border>
+ </StackPanel>
+ </Border>
+ </Grid>
+ </Grid>
+ <Grid Grid.Column="2" Margin="10 0 0 0">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="1*"/>
+ <RowDefinition Height="3*"/>
+ </Grid.RowDefinitions>
+ <Grid Grid.Row="0" Margin="55 0 0 0">
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition/>
+ <ColumnDefinition Width="Auto"/>
+ </Grid.ColumnDefinitions>
+ <StackPanel Orientation="Vertical" Grid.Column="0">
+ <TextBlock HorizontalAlignment="Left" FontSize="20" >Liquid Type</TextBlock>
+ <ComboBox Margin="0 20 0 0" MinWidth="140" HorizontalAlignment="Left" ItemsSource="{Binding LiquidTypes}"
+ SelectedItem="{Binding SelectedLinearizationLiquidType}" DisplayMemberPath="Name"
+ Style="{StaticResource TransparentComboBoxStyle}" FontSize="16"></ComboBox>
+ </StackPanel>
+ <Button Grid.Column="1" IsEnabled="False" VerticalAlignment="Top" Background="{StaticResource TransparentBackgroundBrush200}" MinWidth="160" Height="50" BorderBrush="{StaticResource TransparentBackgroundBrush200}" Command="{Binding CreateLinearizationGraphCommand}" >
+ <TextBlock FontSize="16" Foreground="{StaticResource MainWindow.Foreground}">CREATE LINEARIZATION GRAPH</TextBlock>
+ </Button>
+
+ </Grid>
+ <Border Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0 20 0 0" BorderThickness="0" BorderBrush="{StaticResource DarkGrayBrush}" CornerRadius="5">
+ <oxy:Plot Title="{Binding LinearizationLiquidTypeName}" x:Name="LinearizationPlot" Margin="0 0 10 0" Background="Transparent">
+ <oxy:Plot.Series >
+ <oxy:LineSeries ItemsSource="{Binding LinearizationPoints}" Color="#73B6EC" MarkerFill="SteelBlue" />
+ </oxy:Plot.Series>
+ <oxy:Plot.Axes>
+ <oxy:LinearAxis Position="Bottom" Title = "In Ink" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" IsZoomEnabled="True" Minimum="0"/>
+ <oxy:LinearAxis Position="Left" Title = "Out Ink" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" IsZoomEnabled="True" Minimum="0" />
+ </oxy:Plot.Axes>
+ </oxy:Plot>
+ </Border>
+ </Grid>
+
</Grid>
</Grid>
</DockPanel>
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorCalibrationView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorCalibrationView.xaml.cs
index 4c456c12d..d56b3c6c9 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorCalibrationView.xaml.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Views/ColorCalibrationView.xaml.cs
@@ -33,6 +33,7 @@ namespace Tango.MachineStudio.RML.Views
{
ColorCalibrationViewVM vm = (ColorCalibrationViewVM)DataContext;
vm.PlotControl = CalibrationPlot;
+ vm.LinearizationPlotControl = LinearizationPlot;
vm.Loading();
}
}