Método IPrintOemUni::ImageProcessing (prcomoem.h)
O método IPrintOemUni::ImageProcessing
pode ser usado com impressoras com suporte unidrv para modificar dados de bitmap de imagem, a fim de executar a formatação de cores ou o halftoning. O método pode retornar o bitmap modificado para Unidrv ou enviá-lo diretamente para o spooler de impressão.
Sintaxe
HRESULT ImageProcessing(
PDEVOBJ pdevobj,
PBYTE pSrcBitmap,
PBITMAPINFOHEADER pBitmapInfoHeader,
PBYTE pColorTable,
DWORD dwCallbackID,
PIPPARAMS pIPParams,
[out] OUT PBYTE *ppbResult
);
Parâmetros
pdevobj
Ponteiro fornecido pelo chamador para uma estrutura de DEVOBJ.
pSrcBitmap
Ponteiro fornecido pelo chamador para uma DIB dede entrada.
pBitmapInfoHeader
Ponteiro fornecido pelo chamador para uma estrutura BITMAPINFOHEADER que descreve o bitmap apontado por pSrcBitmap. A estrutura BITMAPINFOHEADER é descrita na documentação do SDK do Microsoft Windows.
pColorTable
Ponteiro fornecido pelo chamador para uma tabela de cores. Esse parâmetro será usado somente se o formato de saída for de oito bits por pixel. Para obter mais informações, consulte a seção Comentários a seguir.
Ao interpretar um bitmap, você deve examinar a tabela de cores. O Unidrv pode modificar as cores em um bitmap, mas também fará ajustes correspondentes na tabela de cores, resultando em nenhuma alteração de rede. No entanto, se você ignorar as alterações de tabela de cores e examinar apenas o bitmap, uma imagem poderá não ser impressa corretamente. Para obter um exemplo, consulte a discussão do parâmetro pPaletteEntry em HT_Get8BPPMaskPalette.
dwCallbackID
Valor fornecido pelo chamador atribuído ao atributo *IPCallbackID da opção selecionada no momento para o recurso ColorMode. Para obter mais informações, consulte a seção Comentários a seguir.
pIPParams
Ponteiro fornecido pelo chamador para uma estrutura de IPPARAMS.
[out] ppbResult
Ponteiro para um local de memória que contém o endereço de um buffer. O conteúdo do buffer depende de onde o DIB convertido deve ser enviado.
Se esse método pretende enviar o DIB convertido de volta para Unidrv e for bem-sucedido na conversão, ele deverá definir *ppbResult para o endereço do buffer que contém o DIB convertido e deve retornar S_OK. Se a conversão falhar, o método deverá definir * ppbResult para NULL e deve retornar E_FAIL.
Se esse método pretende enviar o DIB convertido para o spooler e for bem-sucedido na conversão, o método deverá definir * ppbResult para TRUE e deve retornar S_OK. Se a conversão falhar, o método deverá definir * ppbResult para FALSE e deve retornar E_FAIL. Para obter mais informações, consulte a discussão dos atributos *DevBPP e *DevNumOfPlanes na seção Comentários.
Valor de retorno
O método deve retornar um dos valores a seguir.
Código de retorno | Descrição |
---|---|
|
A operação foi bem-sucedida. |
|
Falha na operação. |
|
O método não é implementado. |
Características do Bitmap de Origem do
Características do bitmap de destino
Observações
O método IPrintOemUni::ImageProcessing
é usado para modificar bitmaps de imagem antes de serem enviados para o spooler de impressão. Sua finalidade é fornecer suporte personalizado para modos de cor e métodos de halftoning sem suporte da Unidrv. Um driver de impressora que envia um bitmap para o spooler de impressão (em vez de enviá-lo de volta para Unidrv) deve definir os atributos *DevBPP e *DevNumOfPlanes como zero no arquivo GPD da impressora.
Se o método for implementado e se a entrada de arquivo GPD para o formato de cor atual contiver um atributoIPCallbackID, Unidrv chamará o método sempre que um bitmap estiver disponível. A chamada é feita depois que a GDI renderiza o bitmap, que é enviado para o spooler. (Para obter informações sobre o atributo *IPCallbackID, consulte Atributos de opção para o recurso ColorMode.)
Se o modo de cor atual, conforme especificado por dwCallbackID, for aquele compatível com Unidrv, o método IPrintOemUni::ImageProcessing
deverá executar operações de halftoning no bitmap recebido e devolvê-lo ao Unidrv para spooling. Se o modo de cor atual for aquele que o Unidrv não dá suporte, o método deverá executar operações de halftoning e, em seguida, fazer o spool do bitmap.
Se o método estiver executando apenas operações de halftoning, ele deverá fazer o seguinte:
- Execute operações de halftoning nos dados, conforme indicado pelo pHalftoneOption membro da estrutura de IPPARAMS.
- Retorne os dados de imagem modificados para Unidrv colocando-os em um buffer e fornecendo o endereço do buffer como o valor retornado do método. O buffer retornado pode ser aquele apontado por pSrcBitmap ou pode ser um alocado localmente.
Para manipular a formatação de cores personalizada, o método IPrintOemUni::ImageProcessing
deve fazer o seguinte:
- Converter dados DIB, descritos pelos pSrcBitmap e valores de parâmetro pBitmapInfoHeader, no formato de cor indicado por dwCallbackID.
- Execute operações de halftoning nos dados, conforme indicado pelo pHalftoneOption membro da estrutura de IPPARAMS.
- Envie os dados para o spooler de impressão chamando o método IPrintOemDriverUni::D rvWriteSpoolBuf.
- Modifique a posição do cursor da impressora fazendo chamadas apropriadas para os métodos IPrintOemDriverUni::D rvXMoveTo e IPrintOemDriverUni::D rvYMoveTo.
O parâmetro dwCallbackID indica o tipo de formatação de cor, se houver, que deve ser executada. Dentro do arquivo GPD da impressora, cada *Entrada de opção para o recurso ColorMode descreve um formato de cor. Se o formato exigir processamento pelo método IPrintOemUni::ImageProcessing
, sua entrada *Option deverá conter um atributoIPCallbackID *. Quando o Unidrv chama o método IPrintOemUni::ImageProcessing
, ele fornece o valor do atributo associado à opção selecionada no momento para o recurso ColorMode. Esse valor é o valor do parâmetro dwCallbackID.
Se o método IPrintOemUni::ImageProcessing
está executando operações de formatação de cores e spooling de dados de imagem ou apenas executando operações de halftoning e retornando bitmaps processados para Unidrv, ele deve exportar um método IPrintOemUni::MemoryUsage se alocar quantidades significativas de memória para bitmaps de destino ou outras finalidades. Caso contrário, o desempenho do sistema poderá ser prejudicado.
Se o método for implementado, ele será chamado para cada região de raster na página. No entanto, se uma região estiver em branco, o bBlankBand membro da estrutura de IPPARAMS será definido como TRUE, o que indica que o bloco está em branco e os dados são inválidos. Como uma banda pode ser dividida em blocos alternados de regiões em branco e não em branco para otimizar o desempenho, o tamanho do bloco nem sempre corresponde ao tamanho da banda.
O bitmap de origem descrito por pSrcBitmap e pBitmapInfoHeader tem as seguintes características:
- O conteúdo DIB é ordenado de cima para baixo e descompactado.
- O formato de dados é aquele listado em Manipulando formatos de cor.
- Se o formato exigir uma tabela de cores, a tabela será apontada por pColorTable.
- Os dados de cor estão no formato PRIMARY_ORDER_CBA, conforme explicado na descrição do membro ulPrimaryOrder da estrutura de GDIINFO. Em outras palavras, se o formato de cor for RGB ou CMY, os bits n menos significativos deverão conter o valor azul ou amarelo, os próximos n bits deverão conter o valor verde ou magenta e os próximos n bits devem conter o valor vermelho ou ciano. Os bits não utilizados estão na posição mais significativa. Se o formato usar 4 bits por pixel, n será 1. Para 24 bits por pixel, n é 8, conforme mostrado na figura a seguir. Para CMYK, o quarto grupo de n bits contém preto.

A figura anterior ilustra dados de cor em PRIMARY_ORDER_CBA formato para dois pixels, com 24 bits de dados de cor por pixel. Movendo de endereços de memória baixa para endereços de memória alta, há oito bits de dados azuis, depois oito bits de dados verdes e, em seguida, oito bits de dados vermelhos, após os quais o padrão se repete. Isso também é conhecido como ordem de saída do dispositivo BGR.
Para operações de halftoning, nas quais um bitmap processado é retornado para Unidrv, o bitmap retornado deve ter as seguintes características:
- O conteúdo DIB deve ser ordenado de cima para baixo e descompactado.
- O formato de dados deve ser aquele listado em manipulando formatos de corese deve ser compatível com os atributos *DevBPP e *DevNumOfPlanes do formato de cor identificado por dwCallbackID. (Para obter informações sobre esses atributos, consulte atributos de opção para o recurso ColorMode.)
- Se o formato exigir uma tabela de cores, a tabela deverá ser criada e seu endereço deverá ser retornado em pColorTable.
- Os dados de cor devem ser retornados no formato PRIMARY_ORDER_CBA, conforme descrito para o bitmap de origem.
-
A estrutura BITMAPINFOHEADER especificada por pBitmapInfoHeader deve descrever os bitmaps de entrada e saída. O método
IPrintOemUni::ImageProcessing
não deve alterar o conteúdo da estrutura.
IPrintOemUni::ImageProcessing
é opcional. Se um plug-in de renderização implementar esse método, o método IPrintOemUni::GetImplementedMethod método deverá retornar S_OK quando receber "ImageProcessing" como entrada.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Área de trabalho |
cabeçalho | prcomoem.h (inclua Prcomoem.h) |