←Select platform

IccMultiLocalizedUnicode Structure

Summary
Contains the name record data used in the multiLocalizedUnicodeType tag type.
Syntax
C#
C++/CLI
Python
public struct IccMultiLocalizedUnicode 
public value class IccMultiLocalizedUnicode : public System.ValueType  
class IccMultiLocalizedUnicode: 
Example
C#
using Leadtools; 
using Leadtools.ColorConversion; 
 
using Leadtools.Codecs; 
 
public string outputIccFile = Path.Combine(LEAD_VARS.ImagesDir, "IccMultiLocalizedUnicodeTagType.icc"); 
 
public void IccMultiLocalizedUnicodeTagTypeExample() 
{ 
   // Load an ICC profile 
   string fileName = Path.Combine(LEAD_VARS.ImagesDir, "InputProfile.icc"); 
   IccProfileExtended iccProfile = new IccProfileExtended(fileName); 
 
   // Define the two bytes for the name's language code. For example: English, "en" 
   ushort nameLanguageCode = 'e'; // (0x0065) 
   nameLanguageCode <<= 8; // Shift to upper byte to become (0x6500) 
   nameLanguageCode |= 'n'; // OR operation to insert the second character (0x006e) into the lower byte to become (0x656e) 
 
   // Define the two bytes for the name's country code. For example: Canada, "ca" 
   ushort nameCountryCode = 'c'; 
   nameCountryCode <<= 8; 
   nameCountryCode |= 'a'; 
 
   // Define the name records 
   string[] names = new string[2]; 
   names[0] = "first name record"; 
   names[1] = "second name record"; 
   IccNameRecord[] nameRecord = new IccNameRecord[2]; 
 
   // Since the size is in bytes, multiply the length by 2 because each element is 2 bytes 
   int firstNameLength = names[0].Length * 2; 
   int secondNameLength = names[1].Length * 2; 
 
   // The offset should start from the beginning of the tag. For the first name record the offset is: 
   // 16Bytes + (numberOfNames(2Names) * sizeOfNameRecord(12Bytes)) 
   int firstNameOffset = 16 + (names.Length * 12); 
   // After that, the offset can be calculated by adding the previous name record's lengths (remember that name records have "2 bytes" elements) 
   int secondNameOffset = firstNameOffset + (names[0].Length * 2); 
 
   // Create the name records 
   nameRecord[0] = new IccNameRecord(nameLanguageCode, nameCountryCode, firstNameLength, firstNameOffset); 
   nameRecord[1] = new IccNameRecord(nameLanguageCode, nameCountryCode, secondNameLength, secondNameOffset); 
 
   // For unicode characters, put all the name record characters into one buffer in a sequential order 
   char[] firstName = new char[names[0].Length]; 
   firstName = names[0].ToCharArray(); 
   char[] secondName = new char[names[1].Length]; 
   secondName = names[1].ToCharArray(); 
   ushort[] unicodeChars = new ushort[names[0].Length + names[1].Length]; 
   int nCntr = 0; 
   int nX = 0; 
   while (nX < names[0].Length) 
   { 
      unicodeChars[nCntr] = firstName[nX]; 
      nX++; 
      nCntr++; 
   } 
   nX = 0; 
   while (nX < names[1].Length) 
   { 
      unicodeChars[nCntr] = secondName[nX]; 
      nX++; 
      nCntr++; 
   } 
 
   // Create the IccMultiLocalizedUnicode class. 
   // 12 is the fixed size of all the name records implemented with the ICC.1:2004-10 specification. 
   // This length doesnt include the length of the name records' characters. 
   IccMultiLocalizedUnicode iccMultiLocalized = new IccMultiLocalizedUnicode(12, nameRecord, unicodeChars); 
 
   // Define the tag type 
   IccMultiLocalizedUnicodeTagType iccMultiLocalizedTagType = new IccMultiLocalizedUnicodeTagType(iccMultiLocalized); 
 
   // Add the new tag to the ICC profile 
   iccProfile.AddTag(iccMultiLocalizedTagType, IccTag.DeviceModelDescTag, IccTagTypeBase.MultiLocalizedUnicodeTypeSignature); 
 
   // 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(outputIccFile); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images"; 
} 
Requirements

Target Platforms

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.ColorConversion Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.