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();
}
}
}