Partilhar via


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
S_OK
A operação foi bem-sucedida.
E_FAIL
Falha na operação.
E_NOTIMPL
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 obter mais informações sobre como personalizar operações de halftoning no Unidrv, consulte personalizados de halftoning.

Para manipular a formatação de cores personalizada, o método IPrintOemUni::ImageProcessing deve fazer o seguinte:

Para obter mais informações sobre como personalizar operações de formatação de cores no Unidrv, consulte formatos de cores personalizados.

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.

PRIMARY_ORDER_CBA Formatar
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.
O método 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)

Consulte também

HT_Get8BPPMaskPalette

IPrintOemUni

IPrintOemUni::FilterGraphics