Método IPrintOemUni::Compression (prcomoem.h)
El IPrintOemUni::Compression
método 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 análisis de entrada.
pOutBuf
Puntero proporcionado por el autor de la llamada a un búfer de salida para recibir datos de línea de examen comprimidos.
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 está implementado. |
Comentarios
El IPrintOemUni::Compression
método se usa mediante la representación de complementos para comprimir los datos de 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 IPrintOemUni::Compression
método y si el archivo 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 administrador de trabajos de impresión. (Para obtener información sobre el comando CmdEnableOEMComp, vea Comandos de compresión de datos raster).
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 IPrintOemUni::Compression
método 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 IPrintOemUni::Compression
método para cada línea de examen, ya sea que los datos comprimidos devueltos por el método se usen o no. 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 que sea igual o menor que 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 al administrador de trabajos de impresión, precedido por el comando especificado por la entrada de comando CmdEnableOEMComp.
Si es posible, el algoritmo de compresión del método debe usar el valor 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 IPrintOemUni::Compression
método es opcional. Si un complemento de representación implementa este método, el método IPrintOemUni::GetImplementedMethod del complemento debe devolver S_OK cuando recibe "Compression" como entrada.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Escritorio |
Encabezado | prcomoem.h (incluya Prcomoem.h) |