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



Contains the lut8Type tag type data.

Object Model

IccLookupTable8TagType ClassIccLookupTable8 Structure

Syntax

Visual Basic (Declaration) 
Public Class IccLookupTable8TagType 
   Inherits IccTagTypeBase
Visual Basic (Usage)Copy Code
Dim instance As IccLookupTable8TagType
C# 
public class IccLookupTable8TagType : 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(Path.Combine(LEAD_VARS.ImagesDir, "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(Path.Combine(LEAD_VARS.ImagesDir, "IccLookupTable8TagTypeVB.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 IccLookupTable8TagTypeExample()
   {
      // load an Icc Profile
      string fileName = Path.Combine(LEAD_VARS.ImagesDir, "EmptyIcc.icc");
      IccProfileExtended iccProfile = new IccProfileExtended(fileName);

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

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.IccLookupTable8TagType

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