Partilhar via


Usando estruturas no WCS 1.0

A maioria das estruturas usadas pelo WCS 1.0 são muito simples e requerem pouca explicação. Eles estão documentados na seção de referência WCS 1.0 intitulada Structures.

As exceções são a estrutura COLORMATCHSETUPW usada pela função SetupColorMatchingW e as seguintes estruturas do Windows definidas em Wingdi.h:

São debatidos mais pormenorizadamente os seguintes temas:

Estruturas de cabeçalho de bitmap do Windows

O WCS 1.0 permite que perfis de cores ICC sejam vinculados ou incorporados em bitmaps independentes de dispositivo (DIBs). Isso permite que as cores DIB sejam caracterizadas com mais precisão do que era possível usando WCS no Windows 95. BITMAPV5HEADER , a nova estrutura de cabeçalho de bitmap, é definida em Wingdi.h na versão do Windows 98. Para fins de desenvolvimento, também está incluído no ficheiro Icm.h com este Manual de Referência do Programador. A estrutura BITMAPV5HEADER é a seguinte:

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;

O membro bV5CSType pode ter os valores PROFILE_EMBEDDED ou PROFILE_LINKED para especificar se um perfil está incorporado ou vinculado ao DIB. O membro bV5ProfileData é o offset em bytes desde o início da estrutura BITMAPV5HEADER até o início dos dados de perfil. Se o perfil estiver incorporado, os dados do perfil serão o perfil real e, se estiverem vinculados, os dados do perfil serão o nome de arquivo terminado nulo do perfil. Isso não pode ser uma cadeia de caracteres Unicode. Ele deve ser composto exclusivamente de caracteres do conjunto de caracteres do Windows (página de código 1252).

Quando um DIB é carregado na memória, os dados de perfil (se presentes) devem seguir a tabela de cores, e bV5ProfileData deve fornecer o deslocamento dos dados de perfil desde o início da estrutura BITMAPV5HEADER. O valor desse membro será diferente agora, pois os bits de bitmap não seguem a tabela de cores na memória. As aplicações devem modificar o membro bV5ProfileData depois de o DIB ser carregado na memória.

Para DIBs compactados, os dados de perfil devem seguir os bits de bitmap semelhantes ao formato de arquivo. O membro bV5ProfileData ainda deve fornecer o deslocamento dos dados do perfil desde o início da estrutura BITMAPV5HEADER.

Os aplicativos devem acessar os dados de perfil somente quando bV5Size == tamanho de ( BITMAPV5HEADER ) ANDbV5CSType estiver PROFILE_EMBEDDED ou PROFILE_LINKED.

Se um perfil estiver vinculado, o caminho do perfil pode ser qualquer nome totalmente qualificado (incluindo um caminho de rede) que pode ser aberto usando a função Win32 CreateFile.

Diferenças entre cabeçalhos V4 e V5

Ao trabalhar com a nova estrutura de bitmap, é útil reconhecer diferenças na forma como BITMAPV4HEADER e BITMAPV5HEADER estruturas são configuradas:

Cabeçalho V4 Significado
bV4CSType LCS_CALIBRADO_RGB Este valor implica que os pontos finais e as gamas são dados nos campos apropriados. Valores falsos causam problemas.
bV4CSType LCS_sRGB. Esse valor implica que o bitmap está no espaço de cores sRGB (gamas e pontos de extremidade ignorados).
bV4CSType LCS_WINDOWS_COLOR_SPACE. Esse valor implica que o bitmap está no espaço de cores padrão do Windows.

 

Cabeçalho V5 Significado
bV5CSType LCS_CALIBRATED_RGB. Este valor implica que os pontos finais e as gamas são dados nos campos apropriados. Valores falsos causam problemas.
bV5CSType LCS_sRGB. Esse valor implica que o bitmap está no espaço de cores sRGB (gamas e pontos de extremidade ignorados).
bV5CSType PROFILE_EMBEDDED. Esse valor implica que bV5ProfileData aponta para um buffer de memória que contém o perfil a ser usado (gamas e pontos de extremidade são ignorados).
bV5CSType PERFIL_LIGADO Esse valor implica que bV5ProfileData aponta para o nome do arquivo do perfil a ser usado (gamas e pontos de extremidade são ignorados).
bV5CSType LCS_WINDOWS_COLOR_SPACE. Esse valor implica que o bitmap está no espaço de cores padrão do Windows.

 

Para converter bitmaps mais antigos de e para a nova estrutura BITMAPV5HEADER, um arquivo utilitário de conversão de linha de comando chamado Bitmap.exe está incluído na Referência do programador WCS 1.0.

BitMap.exe: um utilitário Command-Line para converter cabeçalhos de bitmap

Bitmap.exe é um utilitário de linha de comando localizado na pasta \Bin na pasta de instalação que você especificou. Ele modifica os cabeçalhos de bitmaps do Windows, permitindo que você converta bitmaps existentes das estruturas de cabeçalho BITMAPINFOHEADER e BITMAPV4HEADER para a mais recente estrutura de cabeçalho BITMAPV5HEADER e vice-versa. A sintaxe da linha de comando é a seguinte:

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

As opções de linha de comando têm os seguintes efeitos.

Trocar Significado
/d Os valores padrão são inseridos automaticamente nos cabeçalhos convertidos.
/1 Converter os bitmaps especificados em BITMAPINFOHEADER
/4 Converter os bitmaps especificados para BITMAPV4HEADER
/5 Converter os bitmaps especificados para BITMAPV5HEADER
/f Força a conversão, mesmo que o bitmap já tenha o cabeçalho certo
/s Converte bitmaps na pasta especificada e todos os subdiretórios sob ela