Oui. Comme vous l'avez indiqué, le ColorSync Manager Reference indique ce qui suit:
La fonction CMNewProfileSearch ne tire pas pleinement parti du profil optimisé disponible à partir de la version 2.5 de ColorSync. Utilisez plutôt CMIterateColorSyncFolder .
CMIterateColorSyncFolder
est le officiel pour ce faire. En outre, c'est aussi optimisé façon.
De Apple's ImageApp sample code:
EDIT: J'ai modifié l'exemple de code pour supprimer NewCMProfileIterateUPP
et DisposeCMProfileIterateUPP
.
// Callback routine with a description of a profile that is
// called during an iteration through the available profiles.
//
static OSErr profileIterate (CMProfileIterateData *info, void *refCon)
{
NSMutableArray* array = (NSMutableArray*) refCon;
Profile* prof = [Profile profileWithIterateData:info];
if (prof)
[array addObject:prof];
return noErr;
}
// return an array of all profiles
//
+ (NSArray*) arrayOfAllProfiles
{
NSMutableArray* profs=[[NSMutableArray arrayWithCapacity:0] retain];
CMIterateColorSyncFolder(profileIterate, NULL, 0L, profs);
return (NSArray*)profs;
}
Il se avère que ne pas besoin NewCMProfileIterateUPP
et DisposeCMProfileIterateUPP
ils n'ont donc été remplacés par quoi que ce soit, pour autant que je peux dire. Au lieu de cela, vous pouvez définir la fonction de rappel avec une signature correspondant à profileIterate
ci-dessus. Vous pouvez ensuite passer la fonction de rappel directement au CMIterateColorSyncFolder
.
J'ai testé mes changements dans ImageApp sur Mac OS X 10.5 cela fonctionne comme prévu.
Les fonctions NewCMProfileIterateUPP() et DisposeCMProfileIterateUPP() sont obsolètes dans Mac OS X 10.5. –
Bon point. J'ai modifié l'exemple de code afin que NewCMProfileIterateUPP() et DisposeCMProfileIterateUPP() ne sont plus utilisés. J'espère que cela répond à tout pour vous. ;) – Naaff