using Google.Protobuf; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Core.ExtensionMethods; using Tango.PMR.ColorLab; namespace Tango.ColorLib.GradientTest.CLI { class Program { static void Main(string[] args) { GradientGenerator generator = new GradientGenerator(); //RGB, Gamut Region 0, In Gamut //TEST1 TestRGBGamutRegion0(generator); Console.WriteLine("Press enter to nextTestLABGamutRegion0 test..."); Console.ReadLine(); // Lab, Gamut Region 0, In Gamut //TEST2 TestLABGamutRegion0(generator); Console.WriteLine("Press enter to next TestVolumeGamutRegion0 test..."); Console.ReadLine(); //Volume, Gamut Region 0, In Gamut //TEST3 TestVolumeGamutRegion0(generator); Console.WriteLine("Press enter to next TestVolumeGamutRegion1 test..."); Console.ReadLine(); //Volume, Gamut Region 1, In Gamut //TEST4 TestVolumeGamutRegion1(generator); Console.WriteLine("Press enter to next TestCatalogGamutRegion0 test..."); Console.ReadLine(); //Catalog, Gamut Region 0, In Gamut //TEST5 TestCatalogGamutRegion0(generator); Console.WriteLine("Press enter to next TestCatalogGamutRegion1 test..."); Console.ReadLine(); //Catalog, Gamut Region 1, In Gamut //TEST6 TestCatalogGamutRegion1(generator); Console.WriteLine("Press enter to next TestRGBMixedGamut test..."); Console.ReadLine(); //RGB, Mixed Gamut Regions, In Gamut //TEST7 TestRGBMixedGamut(generator); Console.WriteLine("Press enter to next TestLABOutOfGamut test..."); Console.ReadLine(); //LAB, Gamut Region 0, Out of Gamut //TEST8 TestLABOutOfGamut(generator); Console.WriteLine("Press enter to next TestLABMixedGamut test..."); Console.ReadLine(); //7. Lab, Mixed Gamut Regions, In Gamut //TEST9 TestLABMixedGamut(generator); Console.WriteLine("Press enter to next TestMixedEnvironment test..."); Console.ReadLine(); //8. Mixed Environment //TEST9 TestMixedEnvironment(generator); { /*GradientConversionInput input = new GradientConversionInput(); //CCT input.ForwardData = ByteString.CopyFrom(File.ReadAllBytes(@"Sylko_HV_IL350R.cct")); //TODO: Load CCT file from local drive. //RML Liquid Factors input.InputLiquids.Add(new InputLiquid() { LiquidType = LiquidType.Cyan, CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Cyan), MaxNanoliterPerCentimeter = 200, }); input.InputLiquids.Add(new InputLiquid() { LiquidType = LiquidType.Magenta, CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Magenta), MaxNanoliterPerCentimeter = 200, }); input.InputLiquids.Add(new InputLiquid() { LiquidType = LiquidType.Yellow, CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Yellow), MaxNanoliterPerCentimeter = 200, }); input.InputLiquids.Add(new InputLiquid() { LiquidType = LiquidType.Black, CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Black), MaxNanoliterPerCentimeter =200, }); //Process Ranges input.ProcessRanges.Add(new ProcessRange() { MinInkUptake = 200, MaxInkUptake =200, }); input.ProcessRanges.Add(new ProcessRange() { MinInkUptake = 200, MaxInkUptake = 400, }); //White Point input.ThreadL = 92.7867 ; input.ThreadA = -0.2519; input.ThreadB = 0.6968; //Segment length input.SegmentLength = 1000;*/ } { /* input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Rgb, Offset = 0, Red = 93, Green = 123, Blue = 95, }); //Lab Stop 2 input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 0.6, L = 50, A = -10, B = -10, }); //Volume Stop 3 GradientInputStop c = new GradientInputStop() { ColorSpace = ColorSpace.Volume, Offset = 1, }; c.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Cyan, Volume = 50 }); c.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Magenta, Volume = 0 }); c.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Yellow, Volume = 50 }); c.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Black, Volume = 0 }); input.Stops.Add(c); Console.WriteLine($"Testing input:\n{input.ToJsonString(nameof(input.ForwardData),nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); //watch.Elapsed.TotalSeconds.ToString("0.0")} Console.WriteLine(); Console.WriteLine($"Result:\n{output.ToJsonString()}"); Console.WriteLine();*/ } Console.WriteLine("Press return to exit..."); Console.ReadLine(); } static GradientConversionInput CreateBaseGradientConversionInput() { GradientConversionInput input = new GradientConversionInput(); //CCT input.ForwardData = ByteString.CopyFrom(File.ReadAllBytes(@"Sylko_IL400_BL95_C200R_1N.cct")); //TODO: Load CCT file from local drive. //RML Liquid Factors input.InputLiquids.Add(new InputLiquid() { LiquidType = LiquidType.Cyan, CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Cyan), //MaxNanoliterPerCentimeter = 200, MaxNanoliterPerCentimeter = 130, }); input.InputLiquids.Add(new InputLiquid() { LiquidType = LiquidType.Magenta, CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Magenta), //MaxNanoliterPerCentimeter = 200, MaxNanoliterPerCentimeter = 130, }); input.InputLiquids.Add(new InputLiquid() { LiquidType = LiquidType.Yellow, CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Yellow), //MaxNanoliterPerCentimeter = 200, MaxNanoliterPerCentimeter = 180, }); input.InputLiquids.Add(new InputLiquid() { LiquidType = LiquidType.Black, CalibrationData = BL.Entities.Cat.CreateDemoCalibrationData(LiquidType.Black), //MaxNanoliterPerCentimeter = 200, MaxNanoliterPerCentimeter = 130, }); //Process Ranges input.ProcessRanges.Add(new ProcessRange() { //MinInkUptake = 200, //MaxInkUptake = 200, MinInkUptake = 130, MaxInkUptake = 180, }); input.ProcessRanges.Add(new ProcessRange() { //MinInkUptake = 200, //MaxInkUptake = 400, MinInkUptake = 180, MaxInkUptake = 280, }); //White Point //input.ThreadL = 92.7867; //input.ThreadA = -0.2519; //input.ThreadB = 0.6968; input.ThreadL = 91.08; input.ThreadA = 4.69; input.ThreadB = -18.04; //Segment length input.SegmentLength = 1000; return input; } /// /// 1. RGB, Gamut Region 0, In Gamut /// static void TestRGBGamutRegion0(GradientGenerator generator) { GradientConversionInput input = CreateBaseGradientConversionInput(); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Rgb, Offset = 0, Red = 160, Green = 200, Blue = 200, }); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Rgb, Offset = 0.5, Red = 100, Green = 100, Blue = 160, }); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Rgb, Offset = 1, Red = 0, Green = 150, Blue = 200, }); Console.WriteLine($"TestRGBGamutRegion0 input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); Console.WriteLine(); Console.WriteLine($"Result TestRGBGamutRegion0 :\n{output.ToJsonString()}"); Console.WriteLine(); } /// /// 2. LAB, Gamut Region 0, In Gamut /// static void TestLABGamutRegion0(GradientGenerator generator) { GradientConversionInput input = CreateBaseGradientConversionInput(); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 0.0, //L = 44.75, //A = 15.14, //B = -32.5, L =47.52, A = -17.31, B = -40.88, }); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 0.5, //L = 39.70, //A = 25.0, //B = -4.8, L = 82.27, A = -0.8, B = 96.85, }); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 1, //L = 53, //A = -15.0, //B = -35, L = 38.0, A = 0.0, B = -45.0, }); Console.WriteLine($"TestLABGamutRegion0 input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); Console.WriteLine(); Console.WriteLine($"Result TestLABGamutRegion0 :\n{output.ToJsonString()}"); Console.WriteLine(); } /// /// 3. VolumeAB, Gamut Region 0, In Gamut /// static void TestVolumeGamutRegion0(GradientGenerator generator) { GradientConversionInput input = CreateBaseGradientConversionInput(); GradientInputStop gradientInputStop1 = new GradientInputStop() { ColorSpace = ColorSpace.Volume, Offset = 0.0, }; gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Cyan, Volume = 0 }); gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Magenta, Volume = 0 }); gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Yellow, Volume = 100 }); gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Black, Volume = 0 }); input.Stops.Add(gradientInputStop1); GradientInputStop gradientInputStop2 = new GradientInputStop() { ColorSpace = ColorSpace.Volume, Offset = 0.5, }; gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Cyan, Volume = 0 }); gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Magenta, Volume = 100 }); gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Yellow, Volume = 0 }); gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Black, Volume = 0 }); input.Stops.Add(gradientInputStop2); GradientInputStop gradientInputStop3 = new GradientInputStop() { ColorSpace = ColorSpace.Volume, Offset = 1, }; gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Cyan, Volume = 100 }); gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Magenta, Volume = 0 }); gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Yellow, Volume = 0 }); gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Black, Volume = 0 }); input.Stops.Add(gradientInputStop3); Console.WriteLine($"TestVolumeGamutRegion0 input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); Console.WriteLine(); Console.WriteLine($"Result TestVolumeGamutRegion0 :\n{output.ToJsonString()}"); Console.WriteLine(); } /// /// 4. VolumeAB, Gamut Region 1, In Gamut /// static void TestVolumeGamutRegion1(GradientGenerator generator) { GradientConversionInput input = CreateBaseGradientConversionInput(); GradientInputStop gradientInputStop1 = new GradientInputStop() { ColorSpace = ColorSpace.Volume, Offset = 0.0, }; gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Cyan, Volume = 100 }); gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Magenta, Volume = 50 }); gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Yellow, Volume = 0 }); gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Black, Volume = 0 }); input.Stops.Add(gradientInputStop1); //Volume, Gamut Region 1, In Gamut GradientInputStop gradientInputStop2 = new GradientInputStop() { ColorSpace = ColorSpace.Volume, Offset = 0.5, }; gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Cyan, Volume = 0 }); gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Magenta, Volume = 100 }); gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Yellow, Volume = 50 }); gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Black, Volume = 0 }); input.Stops.Add(gradientInputStop2); GradientInputStop gradientInputStop3 = new GradientInputStop() { ColorSpace = ColorSpace.Volume, Offset = 1, }; gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Cyan, Volume = 50 }); gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Magenta, Volume = 0 }); gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Yellow, Volume = 100 }); gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Black, Volume = 0 }); input.Stops.Add(gradientInputStop3); Console.WriteLine($"TestVolumeGamutRegion1 input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); Console.WriteLine(); Console.WriteLine($"Result TestVolumeGamutRegion1 :\n{output.ToJsonString()}"); Console.WriteLine(); } /// /// 5. RGB, Mixed Gamut Regions, In Gamut /// static void TestRGBMixedGamut(GradientGenerator generator) { GradientConversionInput input = CreateBaseGradientConversionInput(); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Rgb, Offset = 0, Red = 180, Green = 152, Blue = 116, }); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Rgb, Offset = 0.4, Red = 34, Green = 108, Blue = 80, }); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Rgb, Offset = 1, Red = 70, Green = 50, Blue = 50, }); Console.WriteLine($"TestRGBMixedGamut input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); Console.WriteLine(); Console.WriteLine($"Result TestRGBMixedGamut :\n{output.ToJsonString()}"); Console.WriteLine(); } /// /// 6. Lab, Gamut Region 0, Out of Gamut /// static void TestLABOutOfGamut(GradientGenerator generator) { GradientConversionInput input = CreateBaseGradientConversionInput(); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 0.0, L = 51, A = 70, B = 35, }); //Lab Stop 2 input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 0.3, L = 37, A = 24, B = -50, }); //Lab Stop 3 input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 1, L = 78, A = -50, B = 75, }); Console.WriteLine($"TestLABOutOfGamut input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); Console.WriteLine(); Console.WriteLine($"Result TestLABOutOfGamut :\n{output.ToJsonString()}"); Console.WriteLine(); } /// ///7. Lab, Mixed Gamut Regions, In Gamut /// static void TestLABMixedGamut(GradientGenerator generator) { GradientConversionInput input = CreateBaseGradientConversionInput(); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 0.0, L = 73, A = -30, B = 45, }); //Lab Stop 2 input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 0.6, L = 27, A = 5, B = -15, }); //Lab Stop 3 input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 1, L = 74, A = -12, B = 35, }); Console.WriteLine($"TestLABMixedGamut input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); Console.WriteLine(); Console.WriteLine($"Result TestLABMixedGamut :\n{output.ToJsonString()}"); Console.WriteLine(); } /// ///8. Mixed Environment /// static void TestMixedEnvironment(GradientGenerator generator) { GradientConversionInput input = CreateBaseGradientConversionInput(); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Rgb, Offset = 0, Red = 93, Green = 123, Blue = 95, }); input.Stops.Add(new GradientInputStop() { ColorSpace = ColorSpace.Lab, Offset = 0.6, L = 50, A = -10, B = -10, }); GradientInputStop gradientInputStop1 = new GradientInputStop() { ColorSpace = ColorSpace.Volume, Offset = 1.0, }; gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Cyan, Volume = 50 }); gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Magenta, Volume = 0 }); gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Yellow, Volume = 50 }); gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() { LiquidType = LiquidType.Black, Volume = 0 }); input.Stops.Add(gradientInputStop1); Console.WriteLine($"TestMixedEnvironment input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); Console.WriteLine(); Console.WriteLine($"Result TestMixedEnvironment :\n{output.ToJsonString()}"); Console.WriteLine(); } static void TestCatalogGamutRegion0(GradientGenerator generator) { GradientConversionInput input = CreateBaseGradientConversionInput(); GradientInputStop gradientInputStop1 = new GradientInputStop() { ColorSpace = ColorSpace.Catalog, Offset = 0.0, Cyan = 50.0, Magenta = 50.0, Yellow = 0.0, Key = 0.0, }; //gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Cyan, // Volume = 50 //}); //gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Magenta, // Volume = 50 //}); //gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Yellow, // Volume = 0 //}); //gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Black, // Volume = 0 //}); input.Stops.Add(gradientInputStop1); GradientInputStop gradientInputStop2 = new GradientInputStop() { ColorSpace = ColorSpace.Catalog, Offset = 0.5, Cyan = 0.0, Magenta = 50.0, Yellow = 50.0, Key = 0.0, }; //gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Cyan, // Volume = 0 //}); //gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Magenta, // Volume = 50 //}); //gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Yellow, // Volume = 50 //}); //gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Black, // Volume = 0 //}); input.Stops.Add(gradientInputStop2); GradientInputStop gradientInputStop3 = new GradientInputStop() { ColorSpace = ColorSpace.Catalog, Offset = 1, Cyan = 50.0, Magenta = 50.0, Yellow = 0.0, Key = 0.0, }; //gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Cyan, // Volume = 50 //}); //gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Magenta, // Volume = 0 //}); //gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Yellow, // Volume = 50 //}); //gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Black, // Volume = 0 //}); input.Stops.Add(gradientInputStop3); Console.WriteLine($"TestCatalogGamutRegion0 input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); Console.WriteLine(); Console.WriteLine($"Result TestCatalogGamutRegion0 :\n{output.ToJsonString()}"); Console.WriteLine(); } static void TestCatalogGamutRegion1(GradientGenerator generator) { GradientConversionInput input = CreateBaseGradientConversionInput(); GradientInputStop gradientInputStop1 = new GradientInputStop() { ColorSpace = ColorSpace.Catalog, Offset = 0.0, Cyan = 100.0, Magenta = 50.0, Yellow = 0.0, Key = 0.0, }; //gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Cyan, // Volume = 100 //}); //gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Magenta, // Volume = 50 //}); //gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Yellow, // Volume = 0 //}); //gradientInputStop1.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Black, // Volume = 0 //}); input.Stops.Add(gradientInputStop1); //Volume, Gamut Region 1, In Gamut GradientInputStop gradientInputStop2 = new GradientInputStop() { ColorSpace = ColorSpace.Catalog, Offset = 0.5, Cyan = 100.0, Magenta = 50.0, Yellow = 0.0, Key = 0.0, }; //gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Cyan, // Volume = 100 //}); //gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Magenta, // Volume = 50 //}); //gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Yellow, // Volume = 0 //}); //gradientInputStop2.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Black, // Volume = 0 //}); input.Stops.Add(gradientInputStop2); GradientInputStop gradientInputStop3 = new GradientInputStop() { ColorSpace = ColorSpace.Catalog, Offset = 1, Cyan = 50.0, Magenta = 0.0, Yellow = 100.0, Key = 0.0, }; //gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Cyan, // Volume = 50 //}); //gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Magenta, // Volume = 0 //}); //gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Yellow, // Volume = 100 //}); //gradientInputStop3.LiquidVolumes.Add(new LiquidVolume() //{ // LiquidType = LiquidType.Black, // Volume = 0 //}); input.Stops.Add(gradientInputStop3); Console.WriteLine($"TestCatalogGamutRegion1 input:\n{input.ToJsonString(nameof(input.ForwardData), nameof(CalibrationData))}"); Console.WriteLine(); Console.WriteLine("Processing..."); Stopwatch watch = new Stopwatch(); watch.Start(); GradientConversionOutput output = generator.GenerateGradient(input); watch.Stop(); Console.WriteLine($"Processing completed after: {watch.Elapsed.Milliseconds.ToString("00000.00")} mseconds."); Console.WriteLine(); Console.WriteLine($"Result TestCatalogGamutRegion1 :\n{output.ToJsonString()}"); Console.WriteLine(); } } }