LEADTOOLS Color Conversion (Leadtools.ColorConversion assembly)
LEAD Technologies, Inc

IccProfileExtended Class

Example 





Members 
Contains all of the data for a complete ICC profile. .NET support
Object Model
IccProfileExtended ClassIccHeader StructureIccTagList Structure
Syntax
public class IccProfileExtended 
'Declaration
 
Public Class IccProfileExtended 
'Usage
 
Dim instance As IccProfileExtended
public sealed class IccProfileExtended 
function Leadtools.ColorConversion.IccProfileExtended()
public ref class IccProfileExtended 
Remarks
Example
Copy CodeCopy Code  
Public Function FillDateTimeTagType() As IccDateTimeTagType
      ' get the current system data
      Dim sysDateTime As DateTime = DateTime.Now
      ' create a new iccDateTime class
      Dim iccDateTime As New IccDateTime(CUShort(sysDateTime.Year), _
            CUShort(sysDateTime.Month), _
            CUShort(sysDateTime.Day), _
            CUShort(sysDateTime.Hour), _
            CUShort(sysDateTime.Minute), _
            CUShort(sysDateTime.Second))

      ' define the tag type
      Dim iccDateTimeTagType As New IccDateTimeTagType(iccDateTime)

      Return iccDateTimeTagType
   End Function

   Public Function FillIccXyzTagType() As IccXyzTagType
      ' define the array of XYZ numbers
      Dim data() As IccXyzNumber = {New IccXyzNumber(IccTools.FromDoubleTo2bFixed2bNumber(1.0), _
            IccTools.FromDoubleTo2bFixed2bNumber(2.0), _
            IccTools.FromDoubleTo2bFixed2bNumber(3.0))}

      ' define the tag type
      Dim xyzTagType As New IccXyzTagType(data)

      Return xyzTagType
   End Function


   Public Sub IccProfileExtendedExample()
      ' define the IccProfileExtended Class
      Dim iccProfile As New IccProfileExtended()

      ' define the IccHeader class
      Dim header As IccHeader = IccHeader.Empty

      ' filling the ICC header
      ' note that the Illuminant, ProfileSignature, and Version are filled 
      ' with the default values in the IccProfile.Empty property,
      ' and they shouldnt be changed unless the user knows what he is doing
      ' the rest of the fields are the user's responsibility
      ' except for the ProfileID which will be filled automatically upon the call
      ' for the method IccProfile.GenerateProfileId, but this method must be called at the
      ' end when the ICC Profile is completely prepared.
      ' Finally, the Size field will be filled automatically by the different ICC methods,
      ' and it shouldnt be changed unless the user knows what he is doing.
      header.CmmID = &H6170706C
      header.DeviceClass = IccProfileClassType.DeviceLinkClass
      header.ColorSpace = IccColorspaceType.LabData
      header.Pcs = IccColorspaceType.LabData
      header.ProfileSignature = &H61637370
      header.Platform = IccPlatformSignatureType.MacintoshSignature
      header.Flags = IccProfileFlags.None
      header.Manufacturer = &H46464549
      header.Model = 0
      header.Attributes = IccProfileMediaFlags.ColorMedia
      header.RenderingIntent = IccRenderingIntentType.AbsoluteColorimetric
      header.Creator = &H46464549

      ' set the system date/time as the date/time of the Icc Profile
      Dim sysDateTime As System.DateTime = System.DateTime.Now
      Dim iccDateTime As New IccDateTime(CUShort(sysDateTime.Year), _
            CUShort(sysDateTime.Month), _
            CUShort(sysDateTime.Day), _
            CUShort(sysDateTime.Hour), _
            CUShort(sysDateTime.Minute), _
            CUShort(sysDateTime.Second))

      header.DateTime = iccDateTime
      iccProfile.Header = header

      ' create all the tags you want
      ' 1- mediaBlackPointTag (needs XYZ tag type)
      Dim xyzTagType As IccXyzTagType = FillIccXyzTagType()

      ' then insert it into the profile
      iccProfile.AddTag(xyzTagType, IccTag.MediaBlackPointTag, IccTagTypeBase.XyzTypeSignature)

      ' 2- calibrationDateTimeTag
      Dim dateTimeTagType As IccDateTimeTagType = FillDateTimeTagType()
      iccProfile.AddTag(dateTimeTagType, IccTag.CalibrationDateTimeTag, IccTagTypeBase.DateTimeTypeSignature)

      ' 3- and so on...

      ' to get the tag type signature of any tag in the profile,
      Dim tagTypeSignature As Integer = iccProfile.GetTagTypeSignature(IccTag.MediaBlackPointTag)

      ' to delete one of the two tags
      xyzTagType = CType(iccProfile.DeleteTag(IccTag.MediaBlackPointTag), IccXyzTagType)

      ' to get the calibrationDateTimeTag
      dateTimeTagType = CType(iccProfile.GetTag(IccTag.CalibrationDateTimeTag), IccDateTimeTagType)

      ' at the end, generate the profileID. For the time being, it will be filled with 0's
      iccProfile.GenerateProfileId()

      ' finally generate the new Icc Profile by generating the Data Array
      ' and then generating the file
      iccProfile.UpdateDataArray()
      iccProfile.GenerateIccFile(Path.Combine(LEAD_VARS.ImagesDir, "IccProfileExtendedVB.icc"))
   End Sub

Public NotInheritable Class LEAD_VARS
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"
End Class
public IccDateTimeTagType FillDateTimeTagType()
   {
      // get the current system data
      System.DateTime sysDateTime = System.DateTime.Now;
      // create a new iccDateTime class
      IccDateTime iccDateTime = new IccDateTime((ushort)sysDateTime.Year,
         (ushort)sysDateTime.Month,
         (ushort)sysDateTime.Day,
         (ushort)sysDateTime.Hour,
         (ushort)sysDateTime.Minute,
         (ushort)sysDateTime.Second);

      // define the tag type
      IccDateTimeTagType iccDateTimeTagType = new IccDateTimeTagType(iccDateTime);

      return iccDateTimeTagType;
   }

   public IccXyzTagType FillIccXyzTagType()
   {
      // define the array of XYZ numbers
      IccXyzNumber[] data = new IccXyzNumber[1];
      data[0] = new IccXyzNumber(
         IccTools.FromDoubleTo2bFixed2bNumber(1.0),
         IccTools.FromDoubleTo2bFixed2bNumber(2.0),
         IccTools.FromDoubleTo2bFixed2bNumber(3.0));

      // define the tag type
      IccXyzTagType xyzTagType = new IccXyzTagType(data);

      return xyzTagType;
   }


   public void IccProfileExtendedExample()
   {
      // define the IccProfileExtended Class
      IccProfileExtended iccProfile = new IccProfileExtended();

      // define the IccHeader class
      IccHeader header = IccHeader.Empty;

      // filling the ICC header
      // note that the Illuminant, ProfileSignature, and Version are filled 
      // with the default values in the IccProfile.Empty property,
      // and they shouldnt be changed unless the user knows what he is doing
      // the rest of the fields are the user's responsibility
      // except for the ProfileID which will be filled automatically upon the call
      // for the method IccProfile.GenerateProfileId, but this method must be called at the
      // end when the ICC Profile is completely prepared.
      // Finally, the Size field will be filled automatically by the different ICC methods,
      // and it shouldnt be changed unless the user knows what he is doing.
      header.CmmID = 0x6170706C;     // any CMM ID
      header.DeviceClass = IccProfileClassType.DeviceLinkClass;
      header.ColorSpace = IccColorspaceType.LabData;
      header.Pcs = IccColorspaceType.LabData;
      header.ProfileSignature = 0x61637370;   // any profile signature
      header.Platform = IccPlatformSignatureType.MacintoshSignature;
      header.Flags = IccProfileFlags.None;
      header.Manufacturer = 0x46464549;       // any manufacturer
      header.Model = 0x0;   // any model
      header.Attributes = IccProfileMediaFlags.ColorMedia;
      header.RenderingIntent = IccRenderingIntentType.AbsoluteColorimetric;
      header.Creator = 0x46464549;   // any creator

      // set the system date/time as the date/time of the Icc Profile
      System.DateTime sysDateTime = System.DateTime.Now;
      IccDateTime iccDateTime = new IccDateTime((ushort)sysDateTime.Year,
         (ushort)sysDateTime.Month,
         (ushort)sysDateTime.Day,
         (ushort)sysDateTime.Hour,
         (ushort)sysDateTime.Minute,
         (ushort)sysDateTime.Second);

      header.DateTime = iccDateTime;
      iccProfile.Header = header;
      // create all the tags you want
      // 1- mediaBlackPointTag (needs XYZ tag type)
      IccXyzTagType xyzTagType = FillIccXyzTagType();

      // then insert it into the profile
      iccProfile.AddTag(xyzTagType, IccTag.MediaBlackPointTag, IccTagTypeBase.XyzTypeSignature);

      // 2- calibrationDateTimeTag
      IccDateTimeTagType dateTimeTagType = FillDateTimeTagType();
      iccProfile.AddTag(dateTimeTagType, IccTag.CalibrationDateTimeTag, IccTagTypeBase.DateTimeTypeSignature);

      // 3- and so on...

      // to get the tag type signature of any tag in the profile,
      int tagTypeSignature = iccProfile.GetTagTypeSignature(IccTag.MediaBlackPointTag);

      // to delete one of the two tags
      xyzTagType = (IccXyzTagType) iccProfile.DeleteTag(IccTag.MediaBlackPointTag);

      // to get the calibrationDateTimeTag
      dateTimeTagType = (IccDateTimeTagType) iccProfile.GetTag(IccTag.CalibrationDateTimeTag);

      // at the end, generate the profileID. For the time being, it will be filled with 0's
      iccProfile.GenerateProfileId();

      // finally generate the new Icc Profile by updating the Data Array
      // and then generating the file
      iccProfile.UpdateDataArray();
      string IccfileName = Path.Combine(LEAD_VARS.ImagesDir, "IccProfileExtendedCS.icc");
      iccProfile.GenerateIccFile(IccfileName);
   }

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

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

IccProfileExtended Members
Leadtools.ColorConversion Namespace
IccTagTypeBase Class
IccCurveTagType Class
IccDateTimeTagType Class
IccDataTagType Class
IccLookupTable16TagType Class
IccLookupTable8TagType Class
IccMeasurementTagType Class
IccNamedColor2TagType Class
IccParametricCurveTagType Class
IccResponseCurveSet16TagType Class
IccViewingConditionsTagType Class
IccChromaticityTagType Class
IccColorantTableTagType Class
IccMultiLocalizedUnicodeTagType Class
IccColorantOrderTagType Class
IccLookupTableAToBTagType Class
IccLookupTableBToATagType Class
IccProfileSequenceDescriptionTagType Class
IccS15Fixed16ArrayTagType Class
IccSignatureTagType Class
IccTextTagType Class
IccU16Fixed16ArrayTagType Class
IccUint16ArrayTagType Class
IccUint32ArrayTagType Class
IccUint64ArrayTagType Class
IccUint8ArrayTagType Class
IccUnknownTagType Class
IccXyzTagType Class
IccTools Class

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.