Función CreateMultiProfileTransform (icm.h)
Acepta una matriz de perfiles o un único perfil de vínculo de dispositivo y crea una transformación de color que las aplicaciones pueden usar para realizar la asignación de colores.
Sintaxis
HTRANSFORM CreateMultiProfileTransform(
PHPROFILE pahProfiles,
DWORD nProfiles,
PDWORD padwIntent,
DWORD nIntents,
DWORD dwFlags,
DWORD indexPreferredCMM
);
Parámetros
pahProfiles
Puntero a una matriz de identificadores a los perfiles que se van a usar. La función determina si los HPROFIL Contienen información de perfil del Consorcio internacional de colores (ICC) o sistema de colores de Windows (WCS) y los procesa correctamente. Cuando OpenColorProfileW y WcsOpenColorProfileW devuelven perfiles WCS válidos, estos identificadores de perfil contienen la combinación de perfiles DMP, CAMP y GMMP.
nProfiles
Especifica el número de perfiles de la matriz. El máximo es 10.
padwIntent
Puntero a una matriz de intenciones que se van a usar. Cada intención es uno de los siguientes valores:
-
INTENT_PERCEPTUAL
-
INTENT_SATURATION
-
INTENT_RELATIVE_COLORIMETRIC
-
INTENT_ABSOLUTE_COLORIMETRIC
Los GMMP son una generalización de intenciones. Hay dos orígenes posibles de intenciones: el perfil de "destino" y el parámetro de lista de intenciones para CreateMultiProfileTransform. El término "destino" no se usa, ya que todos los dos perfiles del parámetro de lista de perfiles servirán como primer destino y, a continuación, como origen.
Para obtener más información, vea Rendering Intents.
nIntents
Especifica el número de elementos de la matriz intents: puede ser 1 o el mismo valor que nProfiles. En el caso de las matrices de perfiles que contienen perfiles WCS, se omite la primera intención de representación y solo se usan elementos nProfiles -1 para estas matrices de perfiles. El número máximo de nIntents es 10.
dwFlags
Especifica las marcas usadas para controlar la creación de la transformación. Vea la sección Comentarios.
indexPreferredCMM
Especifica el índice basado en uno del perfil de color que indica el módulo de administración de colores (CMM) que se va a usar. El desarrollador de aplicaciones puede permitir que Windows elija el CMM estableciendo este parámetro en INDEX_DONT_CARE. Consulte Uso de CMM de terceros de módulos de administración de colores (CMM) solo están disponibles para los flujos de trabajo ICC. Las matrices de perfiles que contienen perfiles WCS omitirán esta marca. También se omite cuando solo se usan perfiles ICC y cuando se usa la marca WCS_ALWAYS.
Valor devuelto
Si esta función se ejecuta correctamente, el valor devuelto es un identificador de la transformación de color.
Si se produce un error en esta función, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.
Comentarios
Si se usa un perfil de vínculo de dispositivo, se producirá un error en la función si nProfiles no está establecido en 1.
La matriz de intenciones especifica cómo se deben combinar los perfiles. La nªintención se usa para combinar el nºperfil de la matriz. Si solo se especifica una intención, se usa para el primer perfil y todos los demás perfiles se combinan con la intención Match.
Los valores de dwFlags están diseñados solo como sugerencias. El módulo de administración de colores debe determinar la mejor manera de usarlos.
Windows Vista: se han agregado tres marcas nuevas que se pueden usar con dwFlags:
Marca | Descripción |
---|---|
PRESERVEBLACK | Si se establece este bit, el motor de transformación inserta el GMMP de generación negra adecuado como el último GMMP en la secuencia de transformación. Esta marca solo funciona en una transformación de WCS pura. |
SEQUENTIAL_TRANSFORM | Si se establece este bit, cada paso de la canalización de procesamiento de WCS se realiza para cada píxel de la imagen y no se crea ninguna transformación de color optimizada. Esta marca solo funciona en una transformación de WCS pura. Restricciones: una transformación creada con el conjunto de marcas de SEQUENTIAL_TRANSFORM solo se puede usar en el subproceso en el que se creó y solo para una llamada de traducción de colores a la vez. COM debe inicializarse antes de crear la transformación secuencial y debe permanecer inicializada durante la vigencia del objeto de transformación. |
WCS_ALWAYS | Si se establece este bit, incluso las transformaciones all-ICC usarán la ruta de acceso del código WCS. |
Nota:
SEQUENTIAL_TRANSFORM se omitió accidentalmente del encabezado icm.h en windows Vista SDK. Si desea usar la marca SEQUENTIAL_TRANSFORM, definala en la aplicación como se indica a continuación:
#define SEQUENTIAL_TRANSFORM 0x80800000
Para obtener más información, consulte Marcas de creación de transformación de CMM. Todas las marcas mencionadas se admiten para todos los tipos de transformaciones, excepto para FAST_TRANSLATE y USE_RELATIVE_COLORIMETRIC, que solo funcionan en una transformación de la ICC a la ICC pura.
La función CreateMultiProfileTransform se usa fuera de un contexto de dispositivo. Los colores pueden cambiar al transformar de un perfil de color al mismo perfil de color. Esto se debe a errores de precisión. Por lo tanto, no se debe realizar una transformación de color en estas circunstancias.
Se recomienda que solo haya un GMMP entre un DMP de origen y destino. Las descripciones de límites de gamut (GBD) se crean a partir de las combinaciones DMP/CAMP. Los GMMP posteriores usan los GDB antes de que estén en la cadena de procesamiento hasta que exista un GBD DMP/CAMP siguiente en la secuencia que se va a usar. Por ejemplo, supongamos una secuencia DMP1, CAMP1, GMMP1, GMMP2, GMMP3, DMP2, CAMP2, GMMP4, GMMP5, CAMP3, DMP3. A continuación, GMMP1, GMMP2 usa GBD1 como origen y destino. A continuación, GMMP3 usa GBD1 como origen y GBD2 como destino. A continuación, GMMP4 usa GBD2 como origen y destino. Por último, GMMP5 usa GBD2 como origen y GBD3 como destino. Esto supone que ningún GMMP es idéntico a uno junto a él.
En el caso de los perfiles de WCS, se recomienda establecer las intenciones de representación en DWORD_MAX con el fin de usar el GMMP dentro del identificador de perfil de WCS. Esto se debe a que la matriz de intenciones de representación tiene prioridad sobre las intenciones de representación o los modelos de asignación de gama especificados o contenidos en los perfiles especificados por los HPROFIL. La matriz de intenciones de representación hace referencia al GMMP predeterminado para esas intenciones de representación. Idealmente, solo se realiza una asignación de gama entre un dispositivo de origen y destino estableciendo uno o el otro GMMP en NULL al crear el HPROFILE con información de perfil de WCS. Cualquier aplicación heredada que use un DMP de WCS invocará una secuencia de GMMP. Los GDB se eligen en función de las DMV y las CAMP. En el caso de los límites intermedios de la gama GMMP, se usan los GBD de origen y destino.
En resumen, si nIntents == 1, el primer GMM se establece en función del GMMP que se establece como predeterminado* para el valor padwIntent , a menos que ese valor sea DWORD_MAX, en cuyo caso se usa la información de GMM incrustada del segundo perfil (la información insertada de GMM es un GMMP o, en el caso de un perfil ICC, la línea de base GMM correspondiente a** la intención del encabezado de perfil). El resto de los GMM se establecen en función del GMMP que se establece como predeterminado* para RelativeColorimetric.
Si nIntents nProfiles = -1, cada GMM se establece en función del GMMP que se establece como predeterminado* para el valor de la matriz padwIntent en el índice correspondiente, excepto donde los valores padwIntent se DWORD_MAX. Para los valores de la matriz padwIntent que son DWORD_MAX, los GMM en las posiciones correspondientes se establecen en función de la información de GMM incrustada del segundo de los dos perfiles cuyos gamuts están asignados por GMM. (De nuevo, la información de GMM insertada es un GMMP o, en el caso de un perfil ICC, la línea base GMM correspondiente a** la intención del encabezado del perfil).
Si nIntents = nProfiles, la primera intención se omite y la función se comporta como en el caso de nIntents nProfiles = -1.
Cualquier otra combinación de padwIntents y nIntents devolverá un error.
* "establecer como predeterminado" significa que el GMMP predeterminado se consulta mediante WcsGetDefaultColorProfile con su parámetro profileManagementScope establecido en WCS_PROFILE_MANAGEMENT_SCOPE_CURRENT_USER. Esto puede devolver valores predeterminados de usuario actual o de todo el sistema, como se describe en la documentación de WcsGetDefaultColorProfile.
** "GMM correspondiente a" no significa "GMM del GMMP establecido como predeterminado para". En su lugar, significa "una asociación constante entre las intenciones del perfil ICC y los algoritmos GMM de línea base".
La compatibilidad con la transformación WCS para los perfiles icc ColorSpace se limita a los perfiles de espacio de colores RGB. Los siguientes tipos de perfil ICC no se pueden usar en una transformación procesada por EL CIT, ya sea una transformación WCS/ICC mixta o una transformación all-ICC con WCS_ALWAYS conjunto:
- Perfiles de ColorSpace que no son RGB
- Perfiles de NamedColor
- Perfiles de n canales (donde n > 8)
- Perfiles de DeviceLink
- Perfiles abstractos
Requisitos
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Encabezado | icm.h |
Library | Mscms.lib |
Archivo DLL | Mscms.dll |