aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio
diff options
context:
space:
mode:
authorRoy <roy.mail.net@gmail.com>2018-03-07 09:03:11 +0200
committerRoy <roy.mail.net@gmail.com>2018-03-07 09:03:11 +0200
commitc435be14ccb975b5666da84a7324ec55c3575842 (patch)
treede823042a399f662ec98eef4327d846975f3bb53 /Software/Visual_Studio/MachineStudio
parentae28ff2b4d331102f1d9becfdea169ed9e9806b3 (diff)
downloadTango-c435be14ccb975b5666da84a7324ec55c3575842.tar.gz
Tango-c435be14ccb975b5666da84a7324ec55c3575842.zip
Add auto generation for ColorLab color space & liquid type.
Started implementing native color query in colorlab module.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataVM.cs9
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/LiquidVolumeVM.cs9
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs162
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Views/MainView.xaml4
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Controls/HiveComboControl.xaml.cs3
5 files changed, 173 insertions, 14 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataVM.cs
index 1bcb29835..87bbacab5 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/CalibrationDataVM.cs
@@ -4,6 +4,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.BL.Entities;
using Tango.SharedUI;
namespace Tango.MachineStudio.ColorLab.ViewModels
@@ -26,6 +27,14 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
set { _color = value; RaisePropertyChangedAuto(); }
}
+ private IdsPack _idsPack;
+
+ public IdsPack IdsPack
+ {
+ get { return _idsPack; }
+ set { _idsPack = value; RaisePropertyChangedAuto(); }
+ }
+
private ObservableCollection<CalibrationDataPointVM> _calibrationPoints;
public ObservableCollection<CalibrationDataPointVM> CalibrationPoints
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/LiquidVolumeVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/LiquidVolumeVM.cs
index a804d628b..a9d46f142 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/LiquidVolumeVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/LiquidVolumeVM.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Tango.BL.Entities;
using Tango.SharedUI;
namespace Tango.MachineStudio.ColorLab.ViewModels
@@ -32,5 +33,13 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
get { return _color; }
set { _color = value; RaisePropertyChangedAuto(); }
}
+
+ private IdsPack _idsPack;
+
+ public IdsPack IdsPack
+ {
+ get { return _idsPack; }
+ set { _idsPack = value; RaisePropertyChangedAuto(); }
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs
index c6cc95930..70419c1a9 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/ViewModels/MainViewVM.cs
@@ -1,14 +1,21 @@
-using System;
+using Google.Protobuf;
+using Microsoft.Win32;
+using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
+using System.IO;
using System.Linq;
using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using Tango.BL;
using Tango.BL.Entities;
+using Tango.Core.Commands;
using Tango.MachineStudio.Common.Controls;
+using Tango.PMR;
+using Tango.PMR.ColorLab;
using Tango.SharedUI;
using Tango.SharedUI.Controls;
@@ -16,6 +23,9 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
{
public class MainViewVM : ViewModel
{
+ [DllImport("Tango.ColorLib.dll", CallingConvention = CallingConvention.Cdecl, EntryPoint = "Convert")]
+ public static extern int GetColorAdjust(IntPtr data, int size, ref IntPtr output);
+
private ObservablesContext _dbContext;
private HiveComboControl _hiveCombo;
@@ -31,11 +41,11 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
set { _machines = value; RaisePropertyChangedAuto(); }
}
- private ObservableCollection<ColorSpace> _colorSpaces;
+ private ObservableCollection<BL.Entities.ColorSpace> _colorSpaces;
/// <summary>
/// Gets or sets the color spaces.
/// </summary>
- public ObservableCollection<ColorSpace> ColorSpaces
+ public ObservableCollection<BL.Entities.ColorSpace> ColorSpaces
{
get { return _colorSpaces; }
set { _colorSpaces = value; RaisePropertyChangedAuto(); }
@@ -75,7 +85,7 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
set
{
_selectedRML = value;
- InvalidateLiquidFactorsAndProcessTables();
+ InvalidateLiquidFactorsCalibrationData();
RaisePropertyChangedAuto();
}
}
@@ -130,23 +140,68 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
set { _selectedHexagon = value; RaisePropertyChangedAuto(); }
}
+ private Cct _cct;
+ /// <summary>
+ /// Gets or sets the CCT.
+ /// </summary>
+ public Cct CCT
+ {
+ get { return _cct; }
+ set { _cct = value; RaisePropertyChangedAuto(); }
+ }
+
+ private int _deltaChroma;
+ /// <summary>
+ /// Gets or sets the delta chroma.
+ /// </summary>
+ public int DeltaChroma
+ {
+ get { return _deltaChroma; }
+ set { _deltaChroma = value; RaisePropertyChangedAuto(); }
+ }
+
+ private int _deltaL;
+ /// <summary>
+ /// Gets or sets the delta l.
+ /// </summary>
+ public int DeltaL
+ {
+ get { return _deltaL; }
+ set { _deltaL = value; RaisePropertyChangedAuto(); }
+ }
+
+
+ #endregion
+
+ #region Commands
+
+ public RelayCommand ImportForwardDataCommand { get; set; }
+
+ public RelayCommand ImportInverseDataCommand { get; set; }
+
#endregion
public MainViewVM() : base()
{
_dbContext = ObservablesContext.CreateDefault();
+ CCT = new Cct();
+
SourceColor = new RgbVM();
SourceColor.ColorChanged += SourceColor_ColorChanged;
Machines = _dbContext.Machines.ToObservableCollection();
ColorSpaces = _dbContext.ColorSpaces.ToObservableCollection();
Rmls = _dbContext.Rmls.ToObservableCollection();
+
+ ImportForwardDataCommand = new RelayCommand(ImportForwardData, () => SelectedRML != null);
+ ImportInverseDataCommand = new RelayCommand(ImportInverseData, () => SelectedRML != null);
}
private void SourceColor_ColorChanged(object sender, Color color)
{
if (_hiveCombo != null)
{
+ GetHiveSuggestions();
_hiveCombo.GenerateDemoModeHiveColors(color);
_hiveCombo.SelectHeagon(_hiveCombo.CenterHexagon);
}
@@ -157,13 +212,92 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
_hiveCombo = hiveCombo;
}
+ #region ColorLab
+
+ private void GetHiveSuggestions()
+ {
+ ConversionInput input = new ConversionInput();
+ input.ColorSpace = PMR.ColorLab.ColorSpace.Rgb;
+ input.DeltaChroma = DeltaChroma;
+ input.DeltaL = DeltaL;
+ input.ForwardData = ByteString.CopyFrom(CCT.ForwardData);
+ input.InverseData = ByteString.CopyFrom(CCT.InverseData);
+ input.InputCoordinates.Red = (int)SourceColor.Red;
+ input.InputCoordinates.Green = (int)SourceColor.Green;
+ input.InputCoordinates.Blue = (int)SourceColor.Blue;
+
+ foreach (var vm in LiquidsCalibrationData)
+ {
+ InputLiquid inputLiquid = new InputLiquid();
+
+ CalibrationData calData = new CalibrationData();
+ calData.LiquidType = (PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code;
+ calData.CalibrationPoints.AddRange(vm.CalibrationPoints.Select(x => new CalibrationPoint() { X = x.X, Y = x.Y }));
+ inputLiquid.CalibrationData = calData;
+
+ inputLiquid.LiquidType = (PMR.ColorLab.LiquidType)vm.IdsPack.LiquidType.Code;
+ inputLiquid.MaxNanoliterPerCentimeter = LiquidTypesRmls.SingleOrDefault(x => x.LiquidType.Code == vm.IdsPack.LiquidType.Code).MaxNlPerCm;
+
+ input.InputCoordinates.InputLiquids.Add(inputLiquid);
+ }
+
+ NativePMR<ConversionInput, ConversionOutput> nativePMR = new NativePMR<ConversionInput, ConversionOutput>(GetColorAdjust);
+ ConversionOutput output = nativePMR.Invoke(input);
+
+ //Fill Hive !
+ }
+
+ #endregion
+
+ #region Import / Export Color Adjustment Data
+
+ private void ImportForwardData()
+ {
+ String file = GetCCTFile();
+ if (file != null)
+ {
+ CCT.ForwardFileName = Path.GetFileName(file);
+ CCT.ForwardData = File.ReadAllBytes(file);
+ }
+ }
+
+ private void ImportInverseData()
+ {
+ String file = GetCCTFile();
+ if (file != null)
+ {
+ CCT.InverseFileName = Path.GetFileName(file);
+ CCT.InverseData = File.ReadAllBytes(file);
+ }
+ }
+
+ private String GetCCTFile()
+ {
+ OpenFileDialog dlg = new OpenFileDialog();
+ dlg.Title = "Select color adjustment file";
+ dlg.Filter = "Color Conversion Table|*.cct";
+ if (dlg.ShowDialogCenter())
+ {
+ return dlg.FileName;
+ }
+
+ return null;
+ }
+
+ #endregion
+
#region Liquid Volumes
private void OnSelectedMachineChanged()
{
if (SelectedMachine != null)
{
- LiquidVolumes = SelectedMachine.Configuration.IdsPacks.OrderBy(x => x.PackIndex).Select(x => new LiquidVolumeVM() { Color = x.LiquidType.Color, Name = x.LiquidType.Name }).ToObservableCollection();
+ LiquidVolumes = SelectedMachine.Configuration.IdsPacks.OrderBy(x => x.PackIndex).Select(x => new LiquidVolumeVM()
+ {
+ Color = x.LiquidType.Color,
+ Name = x.LiquidType.Name,
+ IdsPack = x,
+ }).ToObservableCollection();
}
}
@@ -171,7 +305,7 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
#region RML
- private void InvalidateLiquidFactorsAndProcessTables()
+ private void InvalidateLiquidFactorsCalibrationData()
{
if (SelectedRML != null && SelectedMachine != null)
{
@@ -180,13 +314,14 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
LiquidsCalibrationData = new ObservableCollection<CalibrationDataVM>();
- foreach (var liquidType in SelectedMachine.Configuration.IdsPacks.OrderBy(x => x.PackIndex).Select(x => x.LiquidType))
+ foreach (var idsPack in SelectedMachine.Configuration.IdsPacks.OrderBy(x => x.PackIndex))
{
CalibrationDataVM vm = new CalibrationDataVM();
- vm.Name = liquidType.Name;
- vm.Color = liquidType.Color;
+ vm.Name = idsPack.LiquidType.Name;
+ vm.Color = idsPack.LiquidType.Color;
+ vm.IdsPack = idsPack;
- var cat = liquidType.Cats.FirstOrDefault(x => x.Machine == SelectedMachine);
+ var cat = idsPack.LiquidType.Cats.FirstOrDefault(x => x.Machine == SelectedMachine);
if (cat != null)
{
@@ -196,6 +331,13 @@ namespace Tango.MachineStudio.ColorLab.ViewModels
LiquidsCalibrationData.Add(vm);
}
+
+ CCT = SelectedRML.Ccts.FirstOrDefault();
+
+ if (CCT == null)
+ {
+ CCT = new Cct();
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Views/MainView.xaml
index 72a1bdd4e..c0f2912f3 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Views/MainView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ColorLab/Views/MainView.xaml
@@ -206,7 +206,7 @@
<Image Source="../Images/arrow-long-right.png" Grid.Column="1" Grid.Row="1" Width="140" Opacity="0.8" Margin="20 0 0 0"></Image>
- <commonControls:HiveComboControl x:Name="hiveCombo" Grid.Column="2" Grid.Row="1" />
+ <commonControls:HiveComboControl x:Name="hiveCombo" Grid.Column="2" Grid.Row="1" Resolution="{Binding DeltaChroma,Mode=OneWayToSource}" LAxisValue="{Binding DeltaL,Mode=OneWayToSource}" />
<Image Source="../Images/arrow-long-right.png" Grid.Column="3" Grid.Row="1" Width="140" Opacity="0.8" Margin="0 0 20 0"></Image>
@@ -345,7 +345,7 @@
<TextBlock Text="{Binding Name}" HorizontalAlignment="Center" Foreground="Black"></TextBlock>
</Border>
- <Grid>
+ <Grid Margin="0 0 0 5">
<DataGrid Background="#BBFFFFFF" AlternatingRowBackground="#CCE1E1E1" BorderThickness="1" BorderBrush="#202020" Margin="5 0" ItemsSource="{Binding CalibrationPoints}" CanUserResizeColumns="False" CanUserReorderColumns="False" AutoGenerateColumns="False" CanUserAddRows="True" CanUserDeleteRows="True" CanUserSortColumns="True">
<DataGrid.CellStyle>
<Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Controls/HiveComboControl.xaml.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Controls/HiveComboControl.xaml.cs
index 342a1f1c9..ceba52826 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Controls/HiveComboControl.xaml.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Controls/HiveComboControl.xaml.cs
@@ -118,8 +118,7 @@ namespace Tango.MachineStudio.Common.Controls
private void OnRowHiveHexagonSelected(object sender, HexagonControl hexagon)
{
- int l = 2 - hexagon.Row;
- LogManager.Default.Log("L ROW: " + l.ToString());
+ LAxisValue = 2 - hexagon.Row;
}
private void OnHexagonSelected(object sender, HexagonControl e)