Método IPrintOemUni::Compression (prcomoem.h)
O método IPrintOemUni::Compression
pode ser usado com impressoras com suporte unidrv para fornecer um método de compactação de bitmap personalizado.
Sintaxe
HRESULT Compression(
PDEVOBJ pdevobj,
PBYTE pInBuf,
PBYTE pOutBuf,
DWORD dwInLen,
DWORD dwOutLen,
[out] OUT INT *piResult
);
Parâmetros
pdevobj
Ponteiro fornecido pelo chamador para uma estrutura de DEVOBJ.
pInBuf
Ponteiro fornecido pelo chamador para dados de linha de verificação de entrada.
pOutBuf
Ponteiro fornecido pelo chamador para um buffer de saída para receber dados de linha de verificação compactados.
dwInLen
Comprimento fornecido pelo chamador dos dados de entrada.
dwOutLen
Comprimento fornecido pelo chamador do buffer de saída.
[out] piResult
Recebe um valor de resultado fornecido pelo método. Se a operação for bem-sucedida, esse valor deverá ser o número de bytes compactados, que não devem ser maiores do que o valor recebido para dwOutLen. Se ocorrer um erro ou se o método não puder compactar, o valor do resultado deverá ser -1.
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. |
Observações
O método IPrintOemUni::Compression
é usado pela renderização de plug-ins para compactar os dados da linha de verificação antes de ser enviado para o spooler de impressão. A finalidade do método é fornecer suporte para métodos de compactação específicos da impressora que não têm suporte pelo Unidrv.
Se o método IPrintOemUni::Compression
for definido e se o gpd da impressora arquivo contiver uma entrada de comando CmdEnableOEMComp, Unidrv chamará o método sempre que uma linha de verificação estiver pronta para ser enviada ao spooler de impressão. (Para obter informações sobre o comando CmdEnableOEMComp, consulte comandos de compactação de dados raster.)
Os valores de parâmetro pInBuf e dwInLen descrevem um buffer que contém uma linha de verificação de dados de imagem a ser compactado. Os valores de parâmetro pOutBu f e dwOutLen descrevem o buffer no qual o método IPrintOemUni::Compression
deve colocar os dados compactados.
Antes que o Unidrv envie uma linha de verificação para o spooler de impressão, ele tenta todos os métodos de compactação habilitados para determinar qual deles cria o menor fluxo de dados. Depois de determinar o melhor algoritmo de compactação (compactando os dados usando cada método), ele envia o comando da impressora que permite que a impressora aceite o melhor formato compactado e, em seguida, envia os dados compactados para a impressora.
Portanto, o método IPrintOemUni::Compression
é chamado para cada linha de verificação, se os dados compactados retornados pelo método são realmente usados ou não. Quando o método é chamado, dwOutLen contém o comprimento retornado pelo melhor método de compactação que Unidrv tentou até então. (Se nenhum outro método tiver sido tentado, dwOutLen contém o comprimento não compactado.) Se o algoritmo não puder produzir uma linha de verificação compactada igual ou menor que dwOutLen bytes, ele deverá retornar -1 no local especificado por piResult.
Se, depois que Unidrv tentar todos os métodos de compactação habilitados, os dados compactados retornados por IPrintOemUni::Compression
tiverem o menor comprimento, Unidrv enviará o buffer para o spooler de impressão, precedido pelo comando especificado pela entrada de comando CmdEnableOEMComp.
Se possível, o algoritmo de compactação do método deve usar o valor dwOutLen recebido para determinar se ele pode parar o algoritmo antes da conclusão, para economizar tempo se outro método de compactação já tiver criado um resultado melhor.
O método IPrintOemUni::Compression
é opcional. Se um plug-in de renderização implementar esse método, o método IPrintOemUni::GetImplementedMethod do plug-in deverá retornar S_OK quando receber "Compactação" como entrada.
Requisitos
Requisito | Valor |
---|---|
da Plataforma de Destino | Área de trabalho |
cabeçalho | prcomoem.h (inclua Prcomoem.h) |