Uso de estructuras en WCS 1.0

La mayoría de las estructuras usadas por WCS 1.0 son muy sencillas y requieren poca explicación. Se documentan en la sección Referencia de WCS 1.0 titulada Estructuras.

Las excepciones son la estructura COLORMATCHSETUPW usada por la función SetupColorMatchingW y las siguientes estructuras de Windows definidas en Wingdi.h:

Los temas siguientes se tratan con mayor longitud:

Estructuras de encabezado de mapa de bits de Windows

WCS 1.0 permite vincular o insertar perfiles de color ICC en mapas de bits independientes del dispositivo (DIB). Esto permite caracterizar los colores DIB con mayor precisión de lo que era posible mediante WCS en Windows 95. BITMAPV5HEADER , la nueva estructura de encabezado de mapa de bits, se define en Wingdi.h en la versión de Windows 98. Para fines de desarrollo, también se incluye en el archivo Icm.h con la Referencia del programador. La estructura BITMAPV5HEADER es la siguiente:

typedef struct {
    DWORD        bV5Size;
    LONG         bV5Width;
    LONG         bV5Height;
    WORD         bV5Planes;
    WORD         bV5BitCount;
    DWORD        bV5Compression;
    DWORD        bV5SizeImage;
    LONG         bV5XPelsPerMeter;
    LONG         bV5YPelsPerMeter;
    DWORD        bV5ClrUsed;
    DWORD        bV5ClrImportant;
    DWORD        bV5RedMask;
    DWORD        bV5GreenMask;
    DWORD        bV5BlueMask;
    DWORD        bV5AlphaMask;
    DWORD        bV5CSType;
    CIEXYZTRIPLE bV5Endpoints;
    DWORD        bV5GammaRed;
    DWORD        bV5GammaGreen;
    DWORD        bV5GammaBlue;
    DWORD        bV5Intent;         // Rendering intent for bitmap 
    DWORD        bV5ProfileData;    // Offset to profile data 
    DWORD        bV5ProfileSize;    // Size of embedded profile data 
    DWORD        bV5Reserved;       // Should be zero 
} BITMAPV5HEADER, FAR *LPBITMAPV5HEADER, *PBITMAPV5HEADER;

El miembro bV5CSType puede tener los valores PROFILE_EMBEDDED o PROFILE_LINKED para especificar si un perfil está incrustado o vinculado con la DIB. El miembro bV5ProfileData es el desplazamiento en bytes desde el principio de la estructura BITMAPV5HEADER hasta el inicio de los datos del perfil. Si el perfil está incrustado, los datos de perfil son el perfil real y, si está vinculado, los datos del perfil son el nombre de archivo terminado en null del perfil. No puede ser una cadena Unicode. Debe estar compuesto exclusivamente de caracteres del juego de caracteres de Windows (página de códigos 1252).

Cuando se carga una DIB en memoria, los datos del perfil (si están presentes) deben seguir la tabla de colores y bV5ProfileData debe proporcionar el desplazamiento de los datos de perfil desde el principio de la estructura BITMAPV5HEADER . El valor de este miembro será diferente ahora, ya que los bits de mapa de bits no siguen la tabla de colores en memoria. Las aplicaciones deben modificar el miembro bV5ProfileData después de cargar la DIB en memoria.

En el caso de las DIB empaquetadas, los datos de perfil deben seguir los bits de mapa de bits similares al formato de archivo. El miembro bV5ProfileData todavía debe proporcionar el desplazamiento de los datos de perfil desde el principio de la estructura BITMAPV5HEADER .

Las aplicaciones solo deben tener acceso a los datos de perfil cuando bV5Size == sizeof ( BITMAPV5HEADER ) ANDbV5CSType es PROFILE_EMBEDDED o PROFILE_LINKED.

Si un perfil está vinculado, la ruta de acceso del perfil puede ser cualquier nombre completo (incluida una ruta de acceso de red) que se puede abrir mediante la función CreateFile de Win32.

Diferencias entre los encabezados V4 y V5

Al trabajar con la nueva estructura de mapa de bits, resulta útil reconocer las diferencias en cómo se configuran las estructuras BITMAPV4HEADER y BITMAPV5HEADER :

Encabezado V4 Significado
bV4CSType LCS_CALIBRATED_RGB. Este valor implica que los puntos finales y gammas se proporcionan en los campos adecuados. Los valores falsos provocan problemas.
bV4CSType LCS_sRGB. Este valor implica que el mapa de bits está en espacio de color sRGB (gammas y puntos de conexión omitido).
bV4CSType LCS_WINDOWS_COLOR_SPACE. Este valor implica que el mapa de bits está en el espacio de colores predeterminado de Windows.

 

Encabezado V5 Significado
bV5CSType LCS_CALIBRATED_RGB. Este valor implica que los puntos finales y gammas se proporcionan en los campos adecuados. Los valores falsos provocan problemas.
bV5CSType LCS_sRGB. Este valor implica que el mapa de bits está en espacio de color sRGB (gammas y puntos de conexión omitido).
bV5CSType PROFILE_EMBEDDED. Este valor implica que bV5ProfileData apunta a un búfer de memoria que contiene el perfil que se va a usar (se omiten gammas y puntos de conexión).
bV5CSType PROFILE_LINKED. Este valor implica que bV5ProfileData apunta al nombre de archivo del perfil que se va a usar (se omiten gammas y puntos de conexión).
bV5CSType LCS_WINDOWS_COLOR_SPACE. Este valor implica que el mapa de bits está en el espacio de colores predeterminado de Windows.

 

Para convertir mapas de bits antiguos en y desde la nueva estructura BITMAPV5HEADER , se incluye un archivo de utilidad de conversión de línea de comandos denominado Bitmap.exe en la Referencia del programador de WCS 1.0.

BitMap.exe: una utilidad de Command-Line para convertir encabezados de mapa de bits

Bitmap.exe es una utilidad de línea de comandos ubicada en la carpeta \Bin de la carpeta de instalación que especificó. Modifica los encabezados de los mapas de bits de Windows, lo que le permite convertir los mapas de bits existentes de BITMAPINFOHEADER y BITMAPV4HEADER estructuras de encabezado a la estructura BITMAPV5HEADER más reciente y de nuevo. La sintaxis de la línea de comandos es la siguiente:

BITMAP [/d] [/1|4|5] [/s] [/f] 
filename

Los modificadores de línea de comandos tienen los siguientes efectos.

Conmutador Significado
/d Los valores predeterminados se escriben automáticamente en los encabezados convertidos.
/1 Convertir los mapas de bits especificados en BITMAPINFOHEADER
/4 Convertir los mapas de bits especificados en BITMAPV4HEADER
/5 Convertir los mapas de bits especificados en BITMAPV5HEADER
/f Fuerza la conversión, incluso si el mapa de bits ya tiene el encabezado derecho.
/s Convierte mapas de bits en la carpeta especificada y todos los subdirectorios en ella.