aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models
diff options
context:
space:
mode:
authorRoy <roy.mail.net@gmail.com>2022-05-30 17:11:19 +0300
committerRoy <roy.mail.net@gmail.com>2022-05-30 17:11:19 +0300
commite645e84144f312c8b26832f0a356a006bd8c0c2a (patch)
tree3b35c305790eb6807301a5b9b5d9ddfd4a48b8da /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models
parent10eb841cf1535f7bbab097e7cf0a3fd0cf2282fa (diff)
downloadTango-e645e84144f312c8b26832f0a356a006bd8c0c2a.tar.gz
Tango-e645e84144f312c8b26832f0a356a006bd8c0c2a.zip
Merged MS batch conversion branch.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelIn.cs16
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelOut.cs88
2 files changed, 104 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelIn.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelIn.cs
new file mode 100644
index 000000000..7dfab5d5c
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelIn.cs
@@ -0,0 +1,16 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.MachineStudio.RML.Models
+{
+ public class BatchConversionCsvModelIn
+ {
+ public string Index { get; set; }
+ public double L { get; set; }
+ public double A { get; set; }
+ public double B { get; set; }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelOut.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelOut.cs
new file mode 100644
index 000000000..f4881ce00
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/Models/BatchConversionCsvModelOut.cs
@@ -0,0 +1,88 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.MachineStudio.RML.Models
+{
+ public class BatchConversionCsvModelOut
+ {
+ public string Index { get; set; }
+ public double L { get; set; }
+ public double A { get; set; }
+ public double B { get; set; }
+
+ public double SuggestionL { get; set; }
+ public double SuggestionA { get; set; }
+ public double SuggestionB { get; set; }
+ public double SuggestionDeltaE { get; set; }
+
+ public double OutputL { get; set; }
+ public double OutputA { get; set; }
+ public double OutputB { get; set; }
+ public double OutputDeltaE { get; set; }
+
+ public double Cyan { get; set; }
+ public double Magenta { get; set; }
+ public double Yellow { get; set; }
+ public double Black { get; set; }
+
+ public double LightCyan { get; set; }
+ public double LightMagenta { get; set; }
+ public double LightYellow { get; set; }
+
+ public bool OutOfGamut { get; set; }
+
+ public static double MirtaDeltaE(double L1, double a1, double b1, double L2, double a2, double b2)
+ {
+ double h1 = Math.Atan2(b1, a1) * (180 / Math.PI);
+ if (h1 < 0)
+ h1 = h1 + 360;
+ double h2 = Math.Atan2(b2, a2) * (180 / Math.PI);
+ if (h2 < 0)
+ h2 = h2 + 360;
+ double refX_H = h1;
+ //chroma calculation
+ double refX_C = Math.Sqrt(a1 * a1 + b1 * b1);
+ //reference SL parameter
+ double refX_SL;
+ if (L1 <= 16)
+ refX_SL = 0.511;
+ else
+ refX_SL = L1 * 0.040975 / (1 + 0.01765 * L1);
+ //reference SC parameter
+ double refX_SC = (0.638 + 0.0638 * refX_C / (1 + 0.0131 * refX_C));
+ //reference CQ parameter
+ double refX_CQ = Math.Pow(refX_C, 4);
+ //reference F parameter
+ double refX_F = Math.Sqrt(refX_CQ / (refX_CQ + 1900));
+ // reference T parameter
+ double refX_T = 0;
+ if ((refX_H > 164) & (refX_H < 345))
+ refX_T = 0.56 + Math.Abs(0.2 * Math.Cos(Math.PI * (refX_H + 168) / 180));
+ else if ((refX_H >= 345) | (refX_H <= 164))
+ refX_T = 0.36 + Math.Abs(0.4 * Math.Cos(Math.PI * (refX_H + 35) / 180));
+ // reference SH parameter
+ double refX_SH = refX_SC * (refX_T * refX_F + 1 - refX_F);
+
+ //sample parameter calculations
+ //hue calculation
+ double samX_H = h2;
+ //chroma calculation
+ double samX_C = Math.Sqrt(a2 * a2 + b2 * b2);
+
+ double dL = L1 - L2;
+ double dC = samX_C - refX_C;
+ double da = a1 - a2;
+ double db = b1 - b2;
+ double dH = Math.Sqrt(Math.Max(da * da + db * db - dC * dC, 0.0));
+
+ double dECMC = Math.Sqrt(Math.Pow(dL / (2 * refX_SL), 2) + Math.Pow(dC / refX_SC, 2) + Math.Pow(dH / refX_SH, 2));
+ return dECMC;
+
+ }
+ }
+
+
+}