Leadtools.ColorConversion Send comments on this topic. | Back to Introduction - All Topics | Help Version 15.5.7
IccLookupTable8TagType Class
See Also  Members   Example 
Leadtools.ColorConversion Namespace : IccLookupTable8TagType Class




Contains the lut8Type tag type data.

Object Model


Syntax

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

Example

This example method can be used in creating an "lut8Type" 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 = 33, Input Entries = 256, Output Entries = 256.

Visual BasicCopy Code
Public Sub IccLookupTable8TagTypeExample()
   ' load an Icc Profile
   Dim iccProfile As New IccProfileExtended("C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\EmptyIcc.icc")

   ' these arrays should be filled with the appropriate data
   ' input table will be (IntputChannels(3) * 256) bytes
   ' output table will be (OutputChannels(3) * 256) bytes
   ' clut table will be ((CLUTPoints(8) ^ InputChannels(3)) * OutputChannels(3)) bytes
   Dim inputTables(767) As Byte
   Dim colorLUTTables(1535) As Byte
   Dim outputTables(767) As Byte

   ' fill the tables
   Dim nCntr As Integer
   For nCntr = 0 To 255
      inputTables(nCntr) = CByte(nCntr)
      inputTables(nCntr + 256) = CByte(nCntr)
      inputTables(nCntr + 512) = CByte(nCntr)

      outputTables(nCntr) = CByte(nCntr)
      outputTables(nCntr + 256) = CByte(nCntr)
      outputTables(nCntr + 512) = CByte(nCntr)
   Next nCntr

   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) = CByte((Math.Min(Math.Max(0, rI * 256), 65535) / 256))
            nI = nI + 1
            colorLUTTables(nI) = CByte((Math.Min(Math.Max(0, gI * 256), 65535) / 256))
            nI = nI + 1
            colorLUTTables(nI) = CByte((Math.Min(Math.Max(0, bI * 256), 65535) / 256))
            nI = nI + 1
         Next bI
      Next gI
   Next rI

   ' create new IccLookupTable8 class
   Dim iccLUT8 As New IccLookupTable8(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 iccLUT8TagType As New IccLookupTable8TagType(iccLUT8)

   ' add the new tag to the ICC Profile
   iccProfile.AddTag(iccLUT8TagType, IccTag.BToA1Tag, IccTagTypeBase.Lut8TypeSignature)

   ' 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("C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\IccLookupTable8TagTypeVB.icc")
End Sub
C#Copy Code
public void IccLookupTable8TagTypeExample() 

   // load an Icc Profile 
   IccProfileExtended iccProfile = new IccProfileExtended(@"C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\EmptyIcc.icc"); 
 
   // these arrays should be filled with the appropriate data 
   // input table will be (IntputChannels(3) * 256) bytes 
   // output table will be (OutputChannels(3) * 256) bytes 
   // clut table will be ((CLUTPoints(8) ^ InputChannels(3)) * OutputChannels(3)) bytes 
   byte[] inputTables = new byte[768]; 
   byte[] colorLUTTables = new byte[1536]; 
   byte[] outputTables = new byte[768]; 
 
   // fill the tables 
   for (int nCntr = 0; nCntr < 256; nCntr++) 
   { 
      inputTables[nCntr] = (byte)nCntr; 
      inputTables[nCntr + 256] = (byte)nCntr; 
      inputTables[nCntr + 512] = (byte)nCntr; 
 
      outputTables[nCntr] = (byte)nCntr; 
      outputTables[nCntr + 256] = (byte)nCntr; 
      outputTables[nCntr + 512] = (byte)nCntr; 
   } 
 
   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++] = (byte)(Math.Min(Math.Max(0, rI * 256), 65535) / 256); 
            colorLUTTables[nI++] = (byte)(Math.Min(Math.Max(0, gI * 256), 65535) / 256); 
            colorLUTTables[nI++] = (byte)(Math.Min(Math.Max(0, bI * 256), 65535) / 256); 
         } 
      } 
   } 
 
   // create new IccLookupTable8 class 
   IccLookupTable8 iccLUT8 = new IccLookupTable8(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 
   IccLookupTable8TagType iccLUT8TagType = new IccLookupTable8TagType(iccLUT8); 
 
   // add the new tag to the ICC Profile 
   iccProfile.AddTag(iccLUT8TagType, IccTag.BToA1Tag, IccTagTypeBase.Lut8TypeSignature); 
 
   // 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(@"C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\IccLookupTable8TagTypeCS.icc"); 
}

Remarks

Inheritance Hierarchy

System.Object
   Leadtools.ColorConversion.IccTagTypeBase
      Leadtools.ColorConversion.IccLookupTable8TagType

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also