Método IPrintOemUni::FilterGraphics (prcomoem.h)

El método IPrintOemUni::FilterGraphics se puede usar con impresoras compatibles con Unidrv para modificar los datos de la línea de examen y enviarlos al administrador de colas.

Sintaxis

HRESULT FilterGraphics(
  PDEVOBJ pdevobj,
  PBYTE   pBuf,
  DWORD   dwLen
);

Parámetros

pdevobj

Puntero proporcionado por el autor de la llamada a una estructura DEVOBJ .

pBuf

Puntero proporcionado por el autor de la llamada a un búfer que contiene los datos de línea de examen que se van a imprimir.

dwLen

Valor proporcionado por el autor de la llamada que representa la longitud, en bytes, de los datos a los que apunta pBuf.

Valor devuelto

El método debe devolver uno de los valores siguientes:

Código devuelto Descripción
S_OK La operación se realizó correctamente.
E_FAIL Error en la operación
E_NOTIMPL El método no está implementado.

Comentarios

El método IPrintOemUni::FilterGraphics se usa para modificar los datos de línea de examen antes de enviarlos al administrador de trabajos de impresión. El método es responsable de enviar los datos que recibe al administrador de colas.

El método IPrintOemUni::FilterGraphics 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 "FilterGraphics" como entrada.

Si se implementa el método IPrintOemUni::FilterGraphics , Unidrv no agrupa los datos de la impresora. En su lugar, Unidrv llama a este método cada vez que un búfer de datos de imagen está listo para ser agrupado.

Tenga en cuenta que cuando se implementa este método, Unidrv tampoco comprime los datos de la impresora, como lo hace normalmente. Si piensa usar la compresión Unidrv, no debe implementar este método. Además, debe modificar IPrintOemUni::GetImplementedMethod para que devuelva S_FALSE cuando se pasa la cadena "FilterGraphics".

El método puede realizar el postprocesamiento final de los datos de imagen, como quitar puntos adyacentes o cualquier otra operación de filtrado de flujo de datos que unidrv no proporcione. A continuación, debe colar los datos llamando al método IPrintOemDriverUni::D rvWriteSpoolBuf .

La función DrvSendPage de Unidrv llama al método IPrintOemUni::FilterGraphics. Si desea implementar IPrintOemUni::FilterGraphics, no debe invalidar completamente las funciones DrvSendPage o DrvNextBand de Unidrv.

Antes de que la función DrvSendPage de Unidrv llame a la implementación de IPrintOemUni::FilterGraphics del complemento, DrvSendPage.

  1. Si es necesario, transpone el mapa de bits que se va a representar.

  2. Transforma un paso de salida que consta de datos de color en una única matriz contigua de datos.

  3. Procesa un grupo de líneas de examen y convierte estos datos en comandos para la impresora.

  4. Establece la posición X/Y y pasa la línea de datos gráficos a la impresora.

Si el complemento ha implementado IPrintOemUni::FilterGraphics, Unidrv llamará al complemento con los datos de la línea de examen en lugar de enviarlos a la impresora.

El método IPrintOemUni::FilterGraphics permite a un complemento de representación modificar los datos de la línea de examen y enviarlos al administrador de colas. Si implementa esta función, Unidrv no pondrá en cola los datos. En su lugar, se llamará a IPrintOemUni::FilterGraphics cada vez que un búfer de datos esté listo para ser agrupado y enviado a la impresora.

Puede usar IPrintOemUni::FilterGraphics para implementar un método de compresión especial o para realizar la manipulación de bits en el flujo de datos que se envía a la impresora o ambos. En cualquier situación, no se usa el código de compresión integrado del controlador. IPrintOemUni::FilterGraphics se presenta con un bloque de datos y es necesario para generar estos datos mediante la función DrvWriteSpoolBuf . El controlador principal (Unidrv) no realizará ningún procesamiento adicional de los datos ráster después de llamar a OEMFilterGraphics.

Al implementar el método IPrintOemUni::FilterGraphics en el complemento, se usará para enviar los datos ráster directamente a la impresora. El número de líneas de examen de un bloque se especifica a través del atributo PinsPerPhysPass asociado a la característica resolución Este atributo es opcional y, si no lo especifica, se establece en 1 (como para la mayoría de las impresoras de inyección de lápiz y página). De lo contrario, PinsPerPhysPass debe ser un múltiplo de 8. En IPrintOemUni::FilterGraphics, el parámetro pBuf apunta al búfer que contiene los datos de trama de línea de examen que manipulará si es necesario (por ejemplo, para la compresión) y, por último, enviar. El parámetro dwLen es la longitud del búfer al que apunta pBuf .

En la lista siguiente se describen varios escenarios comunes para implementar IPrintOemUni::FilterGraphics:

  • Técnicas de compresión especiales

  • Manipulación de bits de los datos ráster entrantes antes de enviarlos a la impresora

IPrintOemUni::FilterGraphics envía finalmente todos los datos a la impresora mediante la función DrvWriteSpoolBuf . El controlador principal (Unidrv) no realiza ningún procesamiento más en los datos que IPrintOemUni::FilterGraphics envía. Si el complemento está realizando una compresión especial o manipulación de bits, el complemento debe asignar los búferes necesarios para la compresión especial o la manipulación de bits. Si el complemento no asigna sus propios búferes y si los datos comprimidos son menores que el origen, la salida sobrescribirá el búfer de origen.

El método IPrintOemUni::FilterGraphics proporciona acceso a los propios datos de la línea de examen y le ofrece la capacidad de procesar los datos ráster.

El número de líneas de examen es igual al alto de la imagen. Por ejemplo, un grosor de 1 bit por píxel (bpp) de cada línea de examen es igual al ancho de 1 píxel, por lo que el número de líneas de examen es igual al alto de la imagen.

Para obtener más información sobre cómo personalizar las operaciones de representación de Unidrv, vea Representación personalizada específica de Unidrv.

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado prcomoem.h (incluya Prcomoem.h)

Consulte también

DrvNextBand

DrvSendPage

DrvWriteSpoolBuf

IPrintOemDriverUni::D rvWriteSpoolBuf

IPrintOemUni

IPrintOemUni::GetImplementedMethod

OEMFilterGraphics