// Copyright (c) Six Labors. // Licensed under the Six Labors Split License. using SixLabors.ImageSharp.Metadata.Profiles.Icc; namespace SixLabors.ImageSharp.Tests.TestDataIcc; internal static class IccTestDataCurves { /// /// Channels: 3 /// public static readonly IccResponseCurve ResponseValGrad = new( IccCurveMeasurementEncodings.StatusA, new[] { IccTestDataNonPrimitives.XyzNumberValVar1, IccTestDataNonPrimitives.XyzNumberValVar2, IccTestDataNonPrimitives.XyzNumberValVar3 }, new[] { new[] { IccTestDataNonPrimitives.ResponseNumberVal1, IccTestDataNonPrimitives.ResponseNumberVal2 }, new[] { IccTestDataNonPrimitives.ResponseNumberVal3, IccTestDataNonPrimitives.ResponseNumberVal4 }, new[] { IccTestDataNonPrimitives.ResponseNumberVal5, IccTestDataNonPrimitives.ResponseNumberVal6 }, }); /// /// Channels: 3 /// public static readonly byte[] ResponseGrad = ArrayHelper.Concat( new byte[] { 0x53, 0x74, 0x61, 0x41 }, IccTestDataPrimitives.UInt322, IccTestDataPrimitives.UInt322, IccTestDataPrimitives.UInt322, IccTestDataNonPrimitives.XyzNumberVar1, IccTestDataNonPrimitives.XyzNumberVar2, IccTestDataNonPrimitives.XyzNumberVar3, IccTestDataNonPrimitives.ResponseNumber1, IccTestDataNonPrimitives.ResponseNumber2, IccTestDataNonPrimitives.ResponseNumber3, IccTestDataNonPrimitives.ResponseNumber4, IccTestDataNonPrimitives.ResponseNumber5, IccTestDataNonPrimitives.ResponseNumber6); public static readonly object[][] ResponseCurveTestData = { new object[] { ResponseGrad, ResponseValGrad, 3 }, }; public static readonly IccParametricCurve ParametricValVar1 = new(1); public static readonly IccParametricCurve ParametricValVar2 = new(1, 2, 3); public static readonly IccParametricCurve ParametricValVar3 = new(1, 2, 3, 4); public static readonly IccParametricCurve ParametricValVar4 = new(1, 2, 3, 4, 5); public static readonly IccParametricCurve ParametricValVar5 = new(1, 2, 3, 4, 5, 6, 7); public static readonly byte[] ParametricVar1 = ArrayHelper.Concat( new byte[] { 0x00, 0x00, 0x00, 0x00, }, IccTestDataPrimitives.Fix161); public static readonly byte[] ParametricVar2 = ArrayHelper.Concat( new byte[] { 0x00, 0x01, 0x00, 0x00, }, IccTestDataPrimitives.Fix161, IccTestDataPrimitives.Fix162, IccTestDataPrimitives.Fix163); public static readonly byte[] ParametricVar3 = ArrayHelper.Concat( new byte[] { 0x00, 0x02, 0x00, 0x00, }, IccTestDataPrimitives.Fix161, IccTestDataPrimitives.Fix162, IccTestDataPrimitives.Fix163, IccTestDataPrimitives.Fix164); public static readonly byte[] ParametricVar4 = ArrayHelper.Concat( new byte[] { 0x00, 0x03, 0x00, 0x00, }, IccTestDataPrimitives.Fix161, IccTestDataPrimitives.Fix162, IccTestDataPrimitives.Fix163, IccTestDataPrimitives.Fix164, IccTestDataPrimitives.Fix165); public static readonly byte[] ParametricVar5 = ArrayHelper.Concat( new byte[] { 0x00, 0x04, 0x00, 0x00, }, IccTestDataPrimitives.Fix161, IccTestDataPrimitives.Fix162, IccTestDataPrimitives.Fix163, IccTestDataPrimitives.Fix164, IccTestDataPrimitives.Fix165, IccTestDataPrimitives.Fix166, IccTestDataPrimitives.Fix167); public static readonly object[][] ParametricCurveTestData = { new object[] { ParametricVar1, ParametricValVar1 }, new object[] { ParametricVar2, ParametricValVar2 }, new object[] { ParametricVar3, ParametricValVar3 }, new object[] { ParametricVar4, ParametricValVar4 }, new object[] { ParametricVar5, ParametricValVar5 }, }; // Formula Segment public static readonly IccFormulaCurveElement FormulaValVar1 = new(IccFormulaCurveType.Type1, 1, 2, 3, 4, 0, 0); public static readonly IccFormulaCurveElement FormulaValVar2 = new(IccFormulaCurveType.Type2, 1, 2, 3, 4, 5, 0); public static readonly IccFormulaCurveElement FormulaValVar3 = new(IccFormulaCurveType.Type3, 0, 2, 3, 4, 5, 6); public static readonly byte[] FormulaVar1 = ArrayHelper.Concat( new byte[] { 0x00, 0x00, 0x00, 0x00, }, IccTestDataPrimitives.Single1, IccTestDataPrimitives.Single2, IccTestDataPrimitives.Single3, IccTestDataPrimitives.Single4); public static readonly byte[] FormulaVar2 = ArrayHelper.Concat( new byte[] { 0x00, 0x01, 0x00, 0x00, }, IccTestDataPrimitives.Single1, IccTestDataPrimitives.Single2, IccTestDataPrimitives.Single3, IccTestDataPrimitives.Single4, IccTestDataPrimitives.Single5); public static readonly byte[] FormulaVar3 = ArrayHelper.Concat( new byte[] { 0x00, 0x02, 0x00, 0x00, }, IccTestDataPrimitives.Single2, IccTestDataPrimitives.Single3, IccTestDataPrimitives.Single4, IccTestDataPrimitives.Single5, IccTestDataPrimitives.Single6); public static readonly object[][] FormulaCurveSegmentTestData = { new object[] { FormulaVar1, FormulaValVar1 }, new object[] { FormulaVar2, FormulaValVar2 }, new object[] { FormulaVar3, FormulaValVar3 }, }; // Sampled Segment public static readonly IccSampledCurveElement SampledValGrad1 = new(new float[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }); public static readonly IccSampledCurveElement SampledValGrad2 = new(new float[] { 9, 8, 7, 6, 5, 4, 3, 2, 1 }); public static readonly byte[] SampledGrad1 = ArrayHelper.Concat( IccTestDataPrimitives.UInt329, IccTestDataPrimitives.Single1, IccTestDataPrimitives.Single2, IccTestDataPrimitives.Single3, IccTestDataPrimitives.Single4, IccTestDataPrimitives.Single5, IccTestDataPrimitives.Single6, IccTestDataPrimitives.Single7, IccTestDataPrimitives.Single8, IccTestDataPrimitives.Single9); public static readonly byte[] SampledGrad2 = ArrayHelper.Concat( IccTestDataPrimitives.UInt329, IccTestDataPrimitives.Single9, IccTestDataPrimitives.Single8, IccTestDataPrimitives.Single7, IccTestDataPrimitives.Single6, IccTestDataPrimitives.Single5, IccTestDataPrimitives.Single4, IccTestDataPrimitives.Single3, IccTestDataPrimitives.Single2, IccTestDataPrimitives.Single1); public static readonly object[][] SampledCurveSegmentTestData = { new object[] { SampledGrad1, SampledValGrad1 }, new object[] { SampledGrad2, SampledValGrad2 }, }; public static readonly IccCurveSegment SegmentValFormula1 = FormulaValVar1; public static readonly IccCurveSegment SegmentValFormula2 = FormulaValVar2; public static readonly IccCurveSegment SegmentValFormula3 = FormulaValVar3; public static readonly IccCurveSegment SegmentValSampled1 = SampledValGrad1; public static readonly IccCurveSegment SegmentValSampled2 = SampledValGrad2; public static readonly byte[] SegmentFormula1 = ArrayHelper.Concat( new byte[] { 0x70, 0x61, 0x72, 0x66, 0x00, 0x00, 0x00, 0x00, }, FormulaVar1); public static readonly byte[] SegmentFormula2 = ArrayHelper.Concat( new byte[] { 0x70, 0x61, 0x72, 0x66, 0x00, 0x00, 0x00, 0x00, }, FormulaVar2); public static readonly byte[] SegmentFormula3 = ArrayHelper.Concat( new byte[] { 0x70, 0x61, 0x72, 0x66, 0x00, 0x00, 0x00, 0x00, }, FormulaVar3); public static readonly byte[] SegmentSampled1 = ArrayHelper.Concat( new byte[] { 0x73, 0x61, 0x6D, 0x66, 0x00, 0x00, 0x00, 0x00, }, SampledGrad1); public static readonly byte[] SegmentSampled2 = ArrayHelper.Concat( new byte[] { 0x73, 0x61, 0x6D, 0x66, 0x00, 0x00, 0x00, 0x00, }, SampledGrad2); public static readonly object[][] CurveSegmentTestData = { new object[] { SegmentFormula1, SegmentValFormula1 }, new object[] { SegmentFormula2, SegmentValFormula2 }, new object[] { SegmentFormula3, SegmentValFormula3 }, new object[] { SegmentSampled1, SegmentValSampled1 }, new object[] { SegmentSampled2, SegmentValSampled2 }, }; public static readonly IccOneDimensionalCurve OneDimensionalValFormula1 = new( new float[] { 0, 1 }, new[] { SegmentValFormula1, SegmentValFormula2, SegmentValFormula3 }); public static readonly IccOneDimensionalCurve OneDimensionalValFormula2 = new( new float[] { 0, 1 }, new[] { SegmentValFormula3, SegmentValFormula2, SegmentValFormula1 }); public static readonly IccOneDimensionalCurve OneDimensionalValSampled = new( new float[] { 0, 1 }, new[] { SegmentValSampled1, SegmentValSampled2, SegmentValSampled1 }); public static readonly byte[] OneDimensionalFormula1 = ArrayHelper.Concat( new byte[] { 0x00, 0x03, 0x00, 0x00, }, IccTestDataPrimitives.Single0, IccTestDataPrimitives.Single1, SegmentFormula1, SegmentFormula2, SegmentFormula3); public static readonly byte[] OneDimensionalFormula2 = ArrayHelper.Concat( new byte[] { 0x00, 0x03, 0x00, 0x00, }, IccTestDataPrimitives.Single0, IccTestDataPrimitives.Single1, SegmentFormula3, SegmentFormula2, SegmentFormula1); public static readonly byte[] OneDimensionalSampled = ArrayHelper.Concat( new byte[] { 0x00, 0x03, 0x00, 0x00, }, IccTestDataPrimitives.Single0, IccTestDataPrimitives.Single1, SegmentSampled1, SegmentSampled2, SegmentSampled1); public static readonly object[][] OneDimensionalCurveTestData = { new object[] { OneDimensionalFormula1, OneDimensionalValFormula1 }, new object[] { OneDimensionalFormula2, OneDimensionalValFormula2 }, new object[] { OneDimensionalSampled, OneDimensionalValSampled }, }; }