Compartir a través de


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 colador.

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 siguientes valores:

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 se implementa.

Observaciones

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

El método IPrintOemUni::FilterGraphics es opcional. Si un complemento de representación implementa este método, el método IPrintOemUni::GetImplementedMethod debe devolver S_OK cuando recibe "FilterGraphics" como entrada.

Si se implementa el método IPrintOemUni::FilterGraphics, Unidrv no pone en cola 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 flujos de datos que Unidrv no proporcione. A continuación, debe poner en cola los datos llamando al método IPrintOemDriverUni::D rvWriteSpoolBuf.

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

Antes de que la función DrvSendPage de Unidrv llame a la IPrintOemUni::FilterGraphics implementación 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 se 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 línea de examen y enviarlos al colador. 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 colado 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 a 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 se requiere 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 de resolución de Este atributo es opcional y, si no lo especifica, se establece en 1 (como es para la mayoría de las impresoras de entrada 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 de trama entrantes antes de enviarlos a la impresora

IPrintOemUni::FilterGraphics finalmente envía 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 manipulación de bits o compresión especial, 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 más pequeños que el origen, la salida sobrescribirá el búfer de origen.

El método IPrintOemUni::FilterGraphics proporciona acceso a los datos de la línea de examen en sí y le ofrece la capacidad de procesar después 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 bits 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, consulte Unidrv-Specific Customd Rendering.

Requisitos

Requisito Valor
de la plataforma de destino de Escritorio
encabezado de prcomoem.h (include Prcomoem.h)

Consulte también

DrvNextBand

DrvSendPage

DrvWriteSpoolBuf

IPrintOemDriverUni::D rvWriteSpoolBuf

IPrintOemUni

IPrintOemUni::GetImplementedMethod

OEMFilterGraphics