Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.11.2
|
Leadtools.ColorConversion Namespace : IccProfileExtended Class |
public class IccProfileExtended
'Declaration Public Class IccProfileExtended
'Usage Dim instance As IccProfileExtended
public ref class IccProfileExtended
Imports Leadtools Imports Leadtools.ColorConversion 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 <TestMethod()> _ 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
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; } [TestMethod] 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:\Users\Public\Documents\LEADTOOLS Images"; }
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