Q:
I'd like to programmatically get the name of a ColorSync profile. How
is this done?
A: Traditionally, a single localization of the profile name is
stored in the 'desc' tag containing data with the signature 'desc'.
For some ICC version 4 and version 2 profiles, multiple localized names
for the profile are stored in the 'desc' or 'dscm' tag containing data
with the signature 'mluc'. You can use the CMCopyProfileLocalizedString
or CMCopyProfileLocalizedStringDictionary functions provided by ColorSync
for accessing the new 'mluc' Multi-localized UniCode Tag (refer to TN
2035 ColorSync
On Mac OS X for additional information).
The best method to get the name is to:
a) First call CMCopyProfileLocalizedString to get the best localized
name from the 'desc'/'mluc' tag (if present).
b) If this fails, call CMCopyProfileLocalizedString to get the
best localized name from the 'dscm'/'mluc' tag (if present).
c) If both of the above fail, call CMGetScriptProfileDescription
to get the name from the traditional 'desc' tag.
The code snippet in Listing 1 below shows how to use the above
mentioned functions to get the profile name. This code finds the name
and returns it as a CFString:
CFStringRef CopyProfileDescriptionCFString(CMProfileRef prof)
{
Str255 pName;
ScriptCode code;
CFStringRef str = nil;
CMError err;
// for v4 profiles, try to get the best localized name from the 'desc'/'mluc' tag
err = CMCopyProfileLocalizedString(prof, cmProfileDescriptionTag, 0,0, &str);
// if that didn't work...
if (err != noErr)
{
// for Apple's localized v2 profiles, try to get the best localized name from the 'dscm'/'mluc' tag
err = CMCopyProfileLocalizedString(prof, cmProfileDescriptionMLTag, 0,0, &str);
// if that didn't work...
if (err != noErr)
{
// for normal v2 profiles, get the name from the 'desc'/'desc' tag
err = CMGetScriptProfileDescription( prof, pName, &code);
// convert it to a CFString
if (err == noErr)
{
str = CFStringCreateWithPascalString(0, pName, code);
}
}
}
return str;
}
| |
Listing 1. Getting the name of a ColorSync profile
|
[Oct 25 2002]
|