CreateMultiProfileTransform, fonction (icm.h)
Accepte un tableau de profils ou un profil de lien d’appareil unique et crée une transformation de couleur que les applications peuvent utiliser pour effectuer le mappage des couleurs.
Syntaxe
HTRANSFORM CreateMultiProfileTransform(
PHPROFILE pahProfiles,
DWORD nProfiles,
PDWORD padwIntent,
DWORD nIntents,
DWORD dwFlags,
DWORD indexPreferredCMM
);
Paramètres
pahProfiles
Pointeur vers un tableau de handles vers les profils à utiliser. La fonction détermine si les HPROFILEs contiennent des informations de profil ICC (International Color Consortium) ou Windows Color System (WCS) et les traite de manière appropriée. Lorsque des profils WCS valides sont retournés par OpenColorProfileW et WcsOpenColorProfileW, ces handles de profil contiennent la combinaison de profils DMP, CAMP et GMMP.
nProfiles
Spécifie le nombre de profils dans le tableau. Le maximum est 10.
padwIntent
Pointeur vers un tableau d’intentions à utiliser. Chaque intention est l’une des valeurs suivantes :
-
INTENT_PERCEPTUAL
-
INTENT_SATURATION
-
INTENT_RELATIVE_COLORIMETRIC
-
INTENT_ABSOLUTE_COLORIMETRIC
Les GMMPs sont une généralisation des intentions. Il existe deux sources possibles d’intentions : le profil « destination » et le paramètre de liste d’intentions pour CreateMultiProfileTransform. Le terme « destination » n’est pas utilisé, car tous les profils du paramètre de liste de profils, sauf deux, serviront de première destination, puis de source.
Pour plus d’informations, consultez Rendu des intentions.
nIntents
Spécifie le nombre d’éléments dans le tableau d’intentions : peut être 1 ou la même valeur que nProfiles. Pour les tableaux de profils qui contiennent des profils WCS, la première intention de rendu est ignorée et seuls les éléments nProfiles -1 sont utilisés pour ces tableaux de profils. Le nombre maximal de nIntents est de 10.
dwFlags
Spécifie les indicateurs utilisés pour contrôler la création de la transformation. Consultez la section Notes.
indexPreferredCMM
Spécifie l’index de base unique du profil de couleur qui indique le module de gestion des couleurs (CMM) à utiliser. Le développeur d’applications peut autoriser Windows à choisir la gestion des applications en définissant ce paramètre sur INDEX_DONT_CARE. Consultez Utilisation de modules de gestion des couleurs (CMM) Les machines virtuelles tierces sont uniquement disponibles pour les flux de travail ICC. Les tableaux de profils contenant des profils WCS ignorent cet indicateur. Il est également ignoré lorsque seuls les profils ICC sont utilisés et lorsque l’indicateur WCS_ALWAYS est utilisé.
Valeur retournée
Si cette fonction réussit, la valeur de retour est un handle de la transformation de couleur.
Si cette fonction échoue, la valeur de retour est NULL. Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Notes
Si un profil de lien d’appareil est utilisé, la fonction échoue si nProfiles n’est pas défini sur 1.
Le tableau d’intentions spécifie la façon dont les profils doivent être combinés. La nième intention est utilisée pour combiner le nièmeprofil dans le tableau. Si une seule intention est spécifiée, elle est utilisée pour le premier profil et tous les autres profils sont combinés à l’aide de l’intention de correspondance.
Les valeurs dans dwFlags sont destinées uniquement à des indicateurs. Le module de gestion des couleurs doit déterminer la meilleure façon de les utiliser.
Windows Vista : trois nouveaux indicateurs ont été ajoutés et peuvent être utilisés avec dwFlags :
Indicateur | Description |
---|---|
PRESERVEBLACK | Si ce bit est défini, le moteur de transformation insère le GMMP de génération noire approprié comme dernier GMMP dans la séquence de transformation. Cet indicateur fonctionne uniquement dans une transformation WCS pure. |
SEQUENTIAL_TRANSFORM | Si ce bit est défini, chaque étape du pipeline de traitement WCS est effectuée pour chaque pixel de l’image et aucune transformation de couleur optimisée n’est générée. Cet indicateur fonctionne uniquement dans une transformation WCS pure. Restrictions : une transformation créée avec le jeu d’indicateurs SEQUENTIAL_TRANSFORM ne peut être utilisée que dans le thread sur lequel elle a été créée et uniquement pour un seul appel de traduction de couleur à la fois. COM doit être initialisé avant de créer la transformation séquentielle et doit rester initialisé pendant toute la durée de vie de l’objet transform. |
WCS_ALWAYS | Si ce bit est défini, même les transformations toutes ICC utilisent le chemin de code WCS. |
Notes
SEQUENTIAL_TRANSFORM a été omis par inadvertance de l’en-tête icm.h dans le Kit de développement logiciel (SDK) Windows Vista. Si vous souhaitez utiliser l’indicateur SEQUENTIAL_TRANSFORM, définissez-le dans votre application comme suit :
#define SEQUENTIAL_TRANSFORM 0x80800000
Pour plus d’informations, consultez Indicateurs de création de transformation CMM. Tous les indicateurs mentionnés sont pris en charge pour tous les types de transformations, à l’exception des FAST_TRANSLATE et des USE_RELATIVE_COLORIMETRIC, qui fonctionnent uniquement dans une transformation ICC-to-ICC pure.
La fonction CreateMultiProfileTransform est utilisée en dehors d’un contexte d’appareil. Les couleurs peuvent changer lors de la transformation d’un profil de couleur vers le même profil de couleur. Cela est dû à des erreurs de précision. Par conséquent, une transformation de couleur ne doit pas être effectuée dans ces circonstances.
Nous recommandons qu’il n’y ait qu’un seul GMMP entre un DMP source et de destination. Les descriptions de limites de gamut (GBD) sont créées à partir des combinaisons DMP/CAMP. Les GMMP suivants utilisent les GDB antérieurs dans la chaîne de traitement jusqu’à ce qu’il existe un GBD DMP/CAMP suivant dans la séquence à utiliser. Par exemple, supposons une séquence DMP1, CAMP1, GMMP1, GMMP2, GMMP3, DMP2, CAMP2, GMMP4, GMMP5, CAMP3, DMP3. Ensuite, GMMP1, GMMP2 utilisent GBD1 comme source et destination. Ensuite, GMMP3 utilise GBD1 comme source et GBD2 comme destination. Ensuite, GMMP4 utilise GBD2 comme source et destination. Enfin, GMMP5 utilise GBD2 comme source et GBD3 comme destination. Cela suppose qu’aucun GMMP n’est identique à un gmmp à côté.
Pour les profils WCS, nous vous recommandons de définir les intentions de rendu sur DWORD_MAX afin d’utiliser le GMMP dans le handle de profil WCS. En effet, le tableau d’intentions de rendu est prioritaire sur les intentions de rendu ou les modèles de mappage de gamut spécifiés ou contenus dans les profils spécifiés par les HPROFILEs. Le tableau d’intentions de rendu fait référence au GMMP par défaut pour ces intentions de rendu. Dans l’idéal, un seul mappage de gamuts est effectué entre un appareil source et un appareil de destination en définissant l’un ou l’autre GMMP sur NULL lors de la création du fichier HPROFILE avec les informations de profil WCS. Toute application héritée qui utilise un DMP WCS appelle une séquence de GMMPs. Les gdBs sont choisis en fonction des DPM et des CAMPs. Pour les limites de gamut GMMP intermédiaires, les GBD source et de destination sont utilisés.
En résumé, si nIntents == 1, le premier GMM est défini en fonction du GMMP défini par défaut* pour la valeur padwIntent , sauf si cette valeur est DWORD_MAX, auquel cas les informations GMM incorporées du deuxième profil sont utilisées (les informations GMM incorporées sont soit un GMMP, soit, dans le cas d’un profil ICC, GMM de base correspondant à** l’intention de l’en-tête de profil). Le reste des gmms sont définis en fonction du GMMP défini comme valeur par défaut* pour RelativeColorimetric.
Si nIntents = nProfiles -1, chaque GMM est défini en fonction du GMMP défini comme valeur par défaut* pour la valeur dans le tableau padwIntent à l’index correspondant, sauf si les valeurs padwIntent sont DWORD_MAX. Pour les valeurs du tableau padwIntent qui sont DWORD_MAX, les MMM aux positions correspondantes sont définies en fonction des informations GMM incorporées du deuxième des deux profils dont les gamuts sont mappés par le GMM. (Là encore, les informations GMM incorporées sont un GMMP ou, dans le cas d’un profil ICC, le GMM de base correspondant à** l’intention de l’en-tête du profil).
Si nIntents = nProfiles, la première intention est ignorée et la fonction se comporte comme dans le cas où nIntents = nProfiles -1.
Toute autre combinaison de padwIntents et nIntents retourne une erreur.
* « set as default » signifie que le GMMP par défaut est interrogé à l’aide de WcsGetDefaultColorProfile avec son paramètre profileManagementScope défini sur WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER. Cela peut retourner des valeurs par défaut utilisateur actuel ou système, comme décrit dans la documentation de WcsGetDefaultColorProfile.
** « GMM correspondant à » ne signifie pas « GMM du GMMP défini par défaut pour ». Au lieu de cela, cela signifie « une association constante entre les intentions de profil ICC et les algorithmes GMM de base ».
La prise en charge de la transformation WCS pour les profils Icc ColorSpace est limitée aux profils d’espace de couleurs RVB. Les types de profils ICC suivants ne peuvent pas être utilisés dans une transformation traitée CITE, soit une transformation MIXTE WCS/ICC, soit une transformation icc avec WCS_ALWAYS défini :
- Profils ColorSpace non RVB
- Profils NamedColor
- profils n-canal (où n8 > )
- Profils DeviceLink
- Profils abstraits
Spécifications
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | icm.h |
Bibliothèque | Mscms.lib |
DLL | Mscms.dll |