Método IPrintOemUni::Compression (prcomoem.h)
O IPrintOemUni::Compression
método 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 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.
Retornar valor
O método deve retornar um dos valores a seguir.
Código de retorno | Descrição |
---|---|
|
A operação foi realizada com êxito. |
|
Falha na operação |
|
O método não está implementado. |
Comentários
O IPrintOemUni::Compression
método é 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 da Unidrv.
Se o IPrintOemUni::Compression
método for definido e se o arquivo GPD da impressora 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 compactada. Os valores de parâmetro pOutBuf e dwOutLen descrevem o buffer no qual o IPrintOemUni::Compression
método 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 de impressora que permite que a impressora aceite o melhor formato compactado e envia os dados compactados para a impressora.
Portanto, o IPrintOemUni::Compression
método é chamado para cada linha de verificação, independentemente de os dados compactados retornados pelo método serem 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 testado, dwOutLen conterá o comprimento não compactado.) Se o algoritmo não puder produzir uma linha de verificação compactada igual ou menor que os bytes dwOutLen , 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 IPrintOemUni::Compression
método é 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 |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | prcomoem.h (inclua Prcomoem.h) |