IccProfileExtended Class (original) (raw)

Summary

Contains all of the data for a complete ICC profile.

Syntax

public class IccProfileExtended 
public ref class IccProfileExtended  
class IccProfileExtended: 

Example

using Leadtools; using Leadtools.ColorConversion; 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 shouldn't 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 shouldn't 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:\LEADTOOLS22\Resources\Images"; }