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



Contains the lut16Type tag type data.

Object Model

IccLookupTable16TagType ClassIccLookupTable16 Structure

Syntax

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

Example

This example method can be used in creating an "lut16Type" mentioned in the ICC.1:2004-10 specification, the following information is used: input channels = 3, output channels = 3, Matrix: {1, 0, 0}, {0, 1, 0}, {0, 0, 1}, CLUT points = 8, Input Entries = 2, Output Entries = 2.

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

      ' these arrays should be filled with the appropriate data
      ' input table will be (InputChannels(3) * InputEntries(2)) shorts
      ' output table will be (OutputChannels(3) * OutputEntries(2)) shorts
      ' clut table will be ((CLUTPoints(8) ^ InputChannels(3)) * OutputChannels(3)) shorts
      Dim inputTables(5) As UShort
      Dim colorLUTTables(1535) As UShort
      Dim outputTables(5) As UShort

      ' fill the tables
      inputTables(0) = 0
      inputTables(1) = 65535
      inputTables(2) = 0
      inputTables(3) = 65535
      inputTables(4) = 0
      inputTables(5) = 65535

      outputTables(0) = 0
      outputTables(1) = 65535
      outputTables(2) = 0
      outputTables(3) = 65535
      outputTables(4) = 0
      outputTables(5) = 65535

      Dim nI As Integer = 0
      Dim rI As Integer = 0
      Dim gI As Integer = 0
      Dim bI As Integer = 0

      For rI = 0 To 255 Step +32
         For gI = 0 To 255 Step +32
            For bI = 0 To 255 Step +32
               colorLUTTables(nI) = CUShort(Math.Min(Math.Max(0, rI * 256), 65535))
               nI = nI + 1
               colorLUTTables(nI) = CUShort(Math.Min(Math.Max(0, gI * 256), 65535))
               nI = nI + 1
               colorLUTTables(nI) = CUShort(Math.Min(Math.Max(0, bI * 256), 65535))
               nI = nI + 1
            Next bI
         Next gI
      Next rI

      ' create new IccLookupTable16 class
      Dim iccCLUT16 As New IccLookupTable16(3, 3, 8, _
            IccTools.FromDoubleTo2bFixed2bNumber(1.0), _
            IccTools.FromDoubleTo2bFixed2bNumber(0.0), _
            IccTools.FromDoubleTo2bFixed2bNumber(0.0), _
            IccTools.FromDoubleTo2bFixed2bNumber(0.0), _
            IccTools.FromDoubleTo2bFixed2bNumber(1.0), _
            IccTools.FromDoubleTo2bFixed2bNumber(0.0), _
            IccTools.FromDoubleTo2bFixed2bNumber(0.0), _
            IccTools.FromDoubleTo2bFixed2bNumber(0.0), _
            IccTools.FromDoubleTo2bFixed2bNumber(1.0), _
            inputTables, _
            colorLUTTables, _
            outputTables)

      ' define the tag type
      Dim iccCLUT16TagType As New IccLookupTable16TagType(iccCLUT16)

      ' add the new tag to the ICC Profile
      iccProfile.AddTag(iccCLUT16TagType, IccTag.BToA0Tag, IccTagTypeBase.Lut16TypeSignature)

      ' 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, "IccLookupTable16TagTypeVB.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 IccLookupTable16TagTypeExample()
   {
      // load an Icc Profile
      string IccfileName = Path.Combine(LEAD_VARS.ImagesDir, "EmptyIcc.icc");
      IccProfileExtended iccProfile = new IccProfileExtended(IccfileName);

      // these arrays should be filled with the appropriate data
      // input table will be (InputChannels(3) * InputEntries(2)) shorts
      // output table will be (OutputChannels(3) * OutputEntries(2)) shorts
      // clut table will be ((CLUTPoints(8) ^ InputChannels(3)) * OutputChannels(3)) shorts
      ushort[] inputTables = new ushort[6];
      ushort[] colorLUTTables = new ushort[1536];
      ushort[] outputTables = new ushort[6];

      // fill the tables
      inputTables[0] = 0;
      inputTables[1] = 65535;
      inputTables[2] = 0;
      inputTables[3] = 65535;
      inputTables[4] = 0;
      inputTables[5] = 65535;

      outputTables[0] = 0;
      outputTables[1] = 65535;
      outputTables[2] = 0;
      outputTables[3] = 65535;
      outputTables[4] = 0;
      outputTables[5] = 65535;

      int nI = 0;
      for (int rI = 0; rI < 256; rI += 32)
      {
         for (int gI = 0; gI < 256; gI += 32)
         {
            for (int bI = 0; bI < 256; bI += 32)
            {
               colorLUTTables[nI++] = (ushort)Math.Min(Math.Max(0, rI * 256), 65535);
               colorLUTTables[nI++] = (ushort)Math.Min(Math.Max(0, gI * 256), 65535);
               colorLUTTables[nI++] = (ushort)Math.Min(Math.Max(0, bI * 256), 65535);
            }
         }
      }

      // create new IccLookupTable16 class
      IccLookupTable16 iccLUT16 = new IccLookupTable16(3, 3, 8,
         IccTools.FromDoubleTo2bFixed2bNumber(1.0),
         IccTools.FromDoubleTo2bFixed2bNumber(0.0),
         IccTools.FromDoubleTo2bFixed2bNumber(0.0),
         IccTools.FromDoubleTo2bFixed2bNumber(0.0),
         IccTools.FromDoubleTo2bFixed2bNumber(1.0),
         IccTools.FromDoubleTo2bFixed2bNumber(0.0),
         IccTools.FromDoubleTo2bFixed2bNumber(0.0),
         IccTools.FromDoubleTo2bFixed2bNumber(0.0),
         IccTools.FromDoubleTo2bFixed2bNumber(1.0),
         inputTables,
         colorLUTTables,
         outputTables);

      // define the tag type
      IccLookupTable16TagType iccLUT16TagType = new IccLookupTable16TagType(iccLUT16);

      // add the new tag to the ICC Profile
      iccProfile.AddTag(iccLUT16TagType, IccTag.BToA0Tag, IccTagTypeBase.Lut16TypeSignature);

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

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

Remarks

Inheritance Hierarchy

System.Object
   Leadtools.ColorConversion.IccTagTypeBase
      Leadtools.ColorConversion.IccLookupTable16TagType

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