Contains the lutBToAType tag type data.
Object Model
Syntax
Visual Basic (Declaration) | |
---|
Public Class IccLookupTableBToATagType
Inherits IccTagTypeBase |
C++/CLI | |
---|
public ref class IccLookupTableBToATagType : public IccTagTypeBase |
Example
This example method can be used in creating an "lutBtoAType" mentioned in the ICC.1:2004-10 specification. The following information is used: input channels = 3, output channels = 2.
Visual Basic | Copy Code |
---|
Public Function FillIccCurveTagType() As IccCurveTagType
Dim myDoubleValue As Double = 1.5
Dim curveData(0) As UShort
curveData(0) = New UShort()
curveData(0) = IccTools.FromDoubleToU8Fixed8Number(myDoubleValue)
myDoubleValue = IccTools.FromU8Fixed8NumberToDouble(curveData(0))
Dim iccCurve As New IccCurve(curveData)
Dim iccCurveTagType As New IccCurveTagType(iccCurve)
Return iccCurveTagType
End Function
Public Function FillIccParametricCurveTagType() As IccParametricCurveTagType
Dim parameters() As Integer = {IccTools.FromDoubleTo2bFixed2bNumber(5.0)}
Dim parametricCurve As New IccParametricCurve(IccFunctionsType.Function4Bytes, parameters)
Dim parametricCurveTagType As New IccParametricCurveTagType(parametricCurve)
Return parametricCurveTagType
End Function
Public Sub IccLookupTableBToATagTypeExample()
Dim iccProfile As New IccProfileExtended(LeadtoolsExamples.Common.ImagesPath.Path + "EmptyIcc.icc")
Dim iccCurveType() As IccCurveTagType = {FillIccCurveTagType(), FillIccCurveTagType(), FillIccCurveTagType()}
Dim element() As Integer = {IccTools.FromDoubleTo2bFixed2bNumber(1.0), _
IccTools.FromDoubleTo2bFixed2bNumber(2.0), _
IccTools.FromDoubleTo2bFixed2bNumber(3.0), _
IccTools.FromDoubleTo2bFixed2bNumber(4.0), _
IccTools.FromDoubleTo2bFixed2bNumber(5.0), _
IccTools.FromDoubleTo2bFixed2bNumber(6.0), _
IccTools.FromDoubleTo2bFixed2bNumber(7.0), _
IccTools.FromDoubleTo2bFixed2bNumber(8.0), _
IccTools.FromDoubleTo2bFixed2bNumber(9.0), _
IccTools.FromDoubleTo2bFixed2bNumber(10.0), _
IccTools.FromDoubleTo2bFixed2bNumber(11.0), _
IccTools.FromDoubleTo2bFixed2bNumber(12.0)}
Dim iccMatrix As New IccMatrix(element)
Dim iccParametricCurveType() As IccParametricCurveTagType = {FillIccParametricCurveTagType(), _
FillIccParametricCurveTagType(), _
FillIccParametricCurveTagType()}
Dim iccCLUT16 As New IccColorLookupTable16Bit()
iccCLUT16.NumberOfGridPoints(0) = 1
iccCLUT16.NumberOfGridPoints(1) = 1
iccCLUT16.NumberOfGridPoints(2) = 1
iccCLUT16.Precision = 2
iccCLUT16.Pad(0) = 0
iccCLUT16.Pad(1) = 0
iccCLUT16.Pad(2) = 0
ReDim iccCLUT16.Data(1)
iccCLUT16.Data(0) = 3
iccCLUT16.Data(1) = 4
Dim iccCurveTypeA() As IccCurveTagType = {FillIccCurveTagType(), FillIccCurveTagType()}
Dim iccLUTBtoA As New IccLookupTableBToATagType(3, _
2, _
iccCurveType, _
iccParametricCurveType, _
iccCurveTypeA, _
iccCLUT16, _
iccMatrix)
iccProfile.AddTag(iccLUTBtoA, IccTag.BToA2Tag, IccTagTypeBase.LutBtoATypeSignature)
iccProfile.GenerateProfileId()
iccProfile.UpdateDataArray()
iccProfile.GenerateIccFile(LeadtoolsExamples.Common.ImagesPath.Path + "IccLookupTableBToATagTypeVB.icc")
End Sub |
C# | Copy Code |
---|
public IccCurveTagType FillIccCurveTagType() { double myDoubleValue = 1.0; ushort[] curveData = new ushort[1]; curveData[0] = IccTools.FromDoubleToU8Fixed8Number(myDoubleValue); IccCurve iccCurve = new IccCurve(curveData); IccCurveTagType iccCurveTagType = new IccCurveTagType(iccCurve); return iccCurveTagType; } public IccParametricCurveTagType FillIccParametricCurveTagType() { int[] parameters = new int[1]; parameters[0] = IccTools.FromDoubleTo2bFixed2bNumber(5.0); IccParametricCurve parametricCurve = new IccParametricCurve(IccFunctionsType.Function4Bytes, parameters); IccParametricCurveTagType parametricCurveTagType = new IccParametricCurveTagType(parametricCurve); return parametricCurveTagType; } public void IccLookupTableBToATagTypeExample() { // load an Icc Profile string fileName = LeadtoolsExamples.Common.ImagesPath.Path + "EmptyIcc.icc"; IccProfileExtended iccProfile = new IccProfileExtended(fileName); // "B Curves" should be of the same number as Input Channels // They can be either IccCurveTagType or IccResponseCurveTagType // fill the data IccCurveTagType[] iccCurveType = new IccCurveTagType[3]; iccCurveType[0] = FillIccCurveTagType(); iccCurveType[1] = FillIccCurveTagType(); iccCurveType[2] = FillIccCurveTagType(); // define the "Matrix" int[] element = new int[12] { IccTools.FromDoubleTo2bFixed2bNumber(1.0), IccTools.FromDoubleTo2bFixed2bNumber(2.0), IccTools.FromDoubleTo2bFixed2bNumber(3.0), IccTools.FromDoubleTo2bFixed2bNumber(4.0), IccTools.FromDoubleTo2bFixed2bNumber(5.0), IccTools.FromDoubleTo2bFixed2bNumber(6.0), IccTools.FromDoubleTo2bFixed2bNumber(7.0), IccTools.FromDoubleTo2bFixed2bNumber(8.0), IccTools.FromDoubleTo2bFixed2bNumber(9.0), IccTools.FromDoubleTo2bFixed2bNumber(10.0), IccTools.FromDoubleTo2bFixed2bNumber(11.0), IccTools.FromDoubleTo2bFixed2bNumber(12.0)}; IccMatrix iccMatrix = new IccMatrix(element); // "M Curves" should be of the same number as Input Channels // They can be either IccCurve or IccResponseCurve // Fill the data IccParametricCurveTagType[] iccParametricCurveType = new IccParametricCurveTagType[3]; iccParametricCurveType[0] = FillIccParametricCurveTagType(); iccParametricCurveType[1] = FillIccParametricCurveTagType(); iccParametricCurveType[2] = FillIccParametricCurveTagType(); // define the CLUT IccColorLookupTable16Bit iccCLUT16 = new IccColorLookupTable16Bit(); // only the first i entries are used, where i is the number of input channels iccCLUT16.NumberOfGridPoints[0] = 1; iccCLUT16.NumberOfGridPoints[1] = 1; iccCLUT16.NumberOfGridPoints[2] = 1; // the percision that determins if we are using IccColorLookupTable // 8Bit or 16Bit, 1 for 8-bit, and 2 for 16-bit iccCLUT16.Precision = 2; // and then the padding bytes iccCLUT16.Pad[0] = 0; iccCLUT16.Pad[1] = 0; iccCLUT16.Pad[2] = 0; // and finally the CLUT data points (arranged as described in the text in // ICC.1:2004-10 specification, page 48 // The size of the data array is: multiplication of all the cells in the numberOfGridPoints array // 1 * 1 * 1 * 2 (number of output channel) * 2 (Percision) = 4 Bytes = 2 ushort iccCLUT16.Data = new ushort[2]; iccCLUT16.Data[0] = 3; iccCLUT16.Data[1] = 4; // "A Curves" should be of the same number as Output Channels // They can be either IccCurve or IccResponseCurve IccCurveTagType[] iccCurveTypeA = new IccCurveTagType[2]; iccCurveTypeA[0] = FillIccCurveTagType(); iccCurveTypeA[1] = FillIccCurveTagType(); // The data pointer will contain all the curve buffers in a sequential order, // the offset of the start of each curve buffer will be saved into the // appropriate offset variable in the class // the data pointer will be created automatically inside the toolkit when // the IccProfile.SetICCTagData() method // define the tag type IccLookupTableBToATagType iccLUTBtoA = new IccLookupTableBToATagType( 3, // input channels 2, // output channels iccCurveType, iccParametricCurveType, iccCurveTypeA, iccCLUT16, iccMatrix); // add the new tag to the ICC Profile iccProfile.AddTag(iccLUTBtoA, IccTag.BToA2Tag, IccTagTypeBase.LutBtoATypeSignature); // generate the new profile id iccProfile.GenerateProfileId(); // update the icc array with the new changes iccProfile.UpdateDataArray(); // write the Icc Profile into a new file string IccfileName = LeadtoolsExamples.Common.ImagesPath.Path + "IccLookupTableBToATagTypeCS.icc"; iccProfile.GenerateIccFile(IccfileName); } |
Remarks
Inheritance Hierarchy
Requirements
Target Platforms: Microsoft .NET Framework 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family
See Also