Método IPrintOemUni::Compression (prcomoem.h)
El método IPrintOemUni::Compression
se puede usar con impresoras compatibles con Unidrv para proporcionar un método de compresión de mapa de bits personalizado.
Sintaxis
HRESULT Compression(
PDEVOBJ pdevobj,
PBYTE pInBuf,
PBYTE pOutBuf,
DWORD dwInLen,
DWORD dwOutLen,
[out] OUT INT *piResult
);
Parámetros
pdevobj
Puntero proporcionado por el autor de la llamada a una estructura DEVOBJ.
pInBuf
Puntero proporcionado por el autor de la llamada a los datos de la línea de examen de entrada.
pOutBuf
Puntero proporcionado por el autor de la llamada a un búfer de salida para recibir datos comprimidos de línea de examen.
dwInLen
Longitud proporcionada por el autor de la llamada de los datos de entrada.
dwOutLen
Longitud proporcionada por el autor de la llamada del búfer de salida.
[out] piResult
Recibe un valor de resultado proporcionado por el método. Si la operación se realiza correctamente, este valor debe ser el número de bytes comprimidos, que no debe ser mayor que el valor recibido para dwOutLen. Si se produce un error o si el método no se puede comprimir, el valor del resultado debe ser -1.
Valor devuelto
El método debe devolver uno de los valores siguientes.
Código devuelto | Descripción |
---|---|
|
La operación se realizó correctamente. |
|
Error en la operación |
|
El método no se implementa. |
Observaciones
El método IPrintOemUni::Compression
se usa mediante la representación de complementos para comprimir los datos de la línea de examen antes de enviarlos al administrador de trabajos de impresión. El propósito del método es proporcionar compatibilidad con métodos de compresión específicos de la impresora que no son compatibles con Unidrv.
Si se define el método IPrintOemUni::Compression
y si el archivo de GPD de la impresora contiene una entrada de comando CmdEnableOEMComp, Unidrv llama al método cada vez que una línea de examen está lista para enviarse al cola de impresión. (Para obtener información sobre el comando CmdEnableOEMComp, consulte Comandos de compresión de datos de ráster).
Los valores de parámetro pInBuf y dwInLen describen un búfer que contiene una línea de examen de los datos de imagen que se van a comprimir. Los valores de parámetro pOutBuf y dwOutLen describen el búfer en el que el método IPrintOemUni::Compression
debe colocar los datos comprimidos.
Antes de que Unidrv envíe una línea de examen al administrador de trabajos de impresión, intenta cada método de compresión habilitado para determinar cuál crea el flujo de datos más pequeño. Después de determinar el mejor algoritmo de compresión (comprimiendo los datos mediante cada método), pone en cola el comando de impresora que permite a la impresora aceptar el mejor formato comprimido y, a continuación, envía los datos comprimidos a la impresora.
Por lo tanto, se llama al método IPrintOemUni::Compression
para cada línea de examen, tanto si se usan o no los datos comprimidos devueltos por el método. Cuando se llama al método , dwOutLen contiene la longitud devuelta por el mejor método de compresión Unidrv ha intentado hasta entonces. (Si no se ha probado ningún otro método, dwOutLen contiene la longitud sin comprimir). Si el algoritmo no puede generar una línea de examen comprimida igual o inferior a dwOutLen bytes, debe devolver -1 en la ubicación especificada por piResult.
Si, después de que Unidrv intente todos los métodos de compresión habilitados, los datos comprimidos devueltos por IPrintOemUni::Compression
tienen la longitud más pequeña, Unidrv envía el búfer a la cola de impresión, precedido por el comando especificado por la entrada del comando CmdEnableOEMComp.
Si es posible, el algoritmo de compresión del método debe usar el valor de dwOutLen recibido para determinar si puede detener el algoritmo antes de la finalización, para ahorrar tiempo si otro método de compresión ya ha creado un mejor resultado.
El método IPrintOemUni::Compression
es opcional. Si un complemento de representación implementa este método, el método IPrintOemUni::GetImplementedMethod debe devolver S_OK cuando recibe "Compression" como entrada.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Escritorio |
encabezado de | prcomoem.h (include Prcomoem.h) |