LEADTOOLS Color Conversion (Leadtools.ColorConversion assembly) Send comments on this topic. | Back to Introduction - All Topics | Help Version 17.0.3.29
IccResponseCurveSet16TagType Class
See Also  Members  
Leadtools.ColorConversion Namespace : IccResponseCurveSet16TagType Class



Contains the responseCurveSet1Type tag type data.

Object Model

IccResponseCurveSet16TagType ClassIccResponseCurve Structure

Syntax

Visual Basic (Declaration) 
Public Class IccResponseCurveSet16TagType 
   Inherits IccTagTypeBase
Visual Basic (Usage)Copy Code
Dim instance As IccResponseCurveSet16TagType
C# 
public class IccResponseCurveSet16TagType : IccTagTypeBase 
C++/CLI 
public ref class IccResponseCurveSet16TagType : public IccTagTypeBase 

Example

This example method can be used in creating an "responseCurveSet16Type" mentioned in the ICC.1:2004-10 specification.

Visual BasicCopy Code
Public Sub IccResponseCurveSet16TagTypeExample()
      ' load an Icc Profile
      Dim iccProfile As New IccProfileExtended(Path.Combine(LEAD_VARS.ImagesDir, "EmptyIcc.icc"))

      ' define the number of measurement types and number of channels
      Dim numOfMeasTypes As Integer = 1
      Dim numOfChannels As UShort = 1

      ' define the number of measurements for each channel
      Dim measurementCount(numOfChannels - 1) As Integer
      measurementCount(0) = 0

      ' define the number-of-channels measurements of patch 
      ' with the maximum colorant value. PCS values shall be relative colorimetric
      Dim measurementOfPatch(numOfChannels - 1) As IccXyzNumber
      measurementOfPatch(0) = New IccXyzNumber(IccTools.FromDoubleTo2bFixed2bNumber(0.0), _
         IccTools.FromDoubleTo2bFixed2bNumber(1.0), _
         IccTools.FromDoubleTo2bFixed2bNumber(2.0))

      ' define number-of-channels response arrays
      Dim respArrays(numOfChannels - 1) As IccResponseArrays
      respArrays(0) = New IccResponseArrays()

      ReDim respArrays(0).ResponseNumber(numOfMeasTypes - 1)
      respArrays(0).ResponseNumber(0) = New IccResponse16Number(0, 0)

      ' define the curve structures
      Dim curveStructure(numOfMeasTypes - 1) As IccCurveStructure
      curveStructure(0) = New IccCurveStructure(IccMeasurementSignatureType.DN, measurementCount, measurementOfPatch, respArrays)

      ' define an array that will contain the offsets of the response data
      ' starting from the beginning from the tag type
      Dim responseDataOffsets(numOfMeasTypes - 1) As Integer
      responseDataOffsets(0) = 0

      ' create the IccResponseCurve class
      Dim responseCurve As New IccResponseCurve(numOfChannels, responseDataOffsets, curveStructure)

      ' define the tag type
      Dim responseCurveSet16TagType As New IccResponseCurveSet16TagType(responseCurve)

      ' add the new tag to the ICC Profile
      iccProfile.AddTag(responseCurveSet16TagType, IccTag.OutputResponseTag, IccTagTypeBase.ResponseCurveSet16TypeSignature)

      ' 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
      iccProfile.GenerateIccFile(Path.Combine(LEAD_VARS.ImagesDir, "IccResponseCurveSet16TagTypeVB.icc"))
   End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
C#Copy Code
public void IccResponseCurveSet16TagTypeExample()
   {
      // load an Icc Profile
      string fileName = Path.Combine(LEAD_VARS.ImagesDir, "EmptyIcc.icc");
      IccProfileExtended iccProfile = new IccProfileExtended(fileName);

      // define the number of measurement types and number of channels
      int numOfMeasTypes = 1;
      ushort numOfChannels = 1;

      // define the number of measurements for each channel
      int[] measurementCount = new int[numOfChannels];
      measurementCount[0] = 0;

      // define the number-of-channels measurements of patch 
      // with the maximum colorant value. PCS values shall be relative colorimetric
      IccXyzNumber[] measurementOfPatch = new IccXyzNumber[numOfChannels];
      measurementOfPatch[0] = new IccXyzNumber(
         IccTools.FromDoubleTo2bFixed2bNumber(0.0),
         IccTools.FromDoubleTo2bFixed2bNumber(1.0),
         IccTools.FromDoubleTo2bFixed2bNumber(2.0));

      // define number-of-channels response arrays
      IccResponseArrays[] respArrays = new IccResponseArrays[numOfChannels];
      respArrays[0] = new IccResponseArrays();

      respArrays[0].ResponseNumber = new IccResponse16Number[numOfMeasTypes];
      respArrays[0].ResponseNumber[0] = new IccResponse16Number(0, 0);

      // define the curve structures
      IccCurveStructure[] curveStructure = new IccCurveStructure[numOfMeasTypes];
      curveStructure[0] = new IccCurveStructure(IccMeasurementSignatureType.DN, measurementCount, measurementOfPatch, respArrays);

      // define an array that will contain the offsets of the response data
      // starting from the beginning from the tag type
      int[] responseDataOffsets = new int[numOfMeasTypes];
      responseDataOffsets[0] = 0;

      // create the IccResponseCurve class
      IccResponseCurve responseCurve = new IccResponseCurve(numOfChannels, responseDataOffsets, curveStructure);

      // define the tag type
      IccResponseCurveSet16TagType responseCurveSet16TagType = new IccResponseCurveSet16TagType(responseCurve);

      // add the new tag to the ICC Profile
      iccProfile.AddTag(responseCurveSet16TagType, IccTag.OutputResponseTag, IccTagTypeBase.ResponseCurveSet16TypeSignature);

      // 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 = Path.Combine(LEAD_VARS.ImagesDir, "IccResponseCurveSet16TagTypeCS.icc");
      iccProfile.GenerateIccFile(IccfileName);
   }

static class LEAD_VARS
{
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";
}
SilverlightCSharpCopy Code
SilverlightVBCopy Code

Remarks

  • The signature for this tag type is IccTagTypeBase.ResponseCurveSet16TypeSignature.
  • The purpose of this tag type is to provide a mechanism to relate physical colorant amounts with the normalized device codes produced by lut8Type, lut16Type, lutAToBType or lutBToAType tags so that corrections can be made for variation in the device without having to produce a new profile.

Inheritance Hierarchy

System.Object
   Leadtools.ColorConversion.IccTagTypeBase
      Leadtools.ColorConversion.IccResponseCurveSet16TagType

Requirements

Target Platforms: Silverlight 3.0, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7, MAC OS/X (Intel Only)

See Also