Método IPrintOemUni::ImageProcessing (prcomoem.h)
El método IPrintOemUni::ImageProcessing
se puede usar con impresoras compatibles con Unidrv para modificar los datos de mapa de bits de imagen, con el fin de realizar el formato de color o el mediotonamiento. El método puede devolver el mapa de bits modificado a Unidrv o enviarlo directamente al administrador de trabajos de impresión.
Sintaxis
HRESULT ImageProcessing(
PDEVOBJ pdevobj,
PBYTE pSrcBitmap,
PBITMAPINFOHEADER pBitmapInfoHeader,
PBYTE pColorTable,
DWORD dwCallbackID,
PIPPARAMS pIPParams,
[out] OUT PBYTE *ppbResult
);
Parámetros
pdevobj
Puntero proporcionado por el autor de la llamada a una estructura DEVOBJ.
pSrcBitmap
Puntero proporcionado por el autor de la llamada a un DIB de entrada.
pBitmapInfoHeader
Puntero proporcionado por el llamador a una estructura BITMAPINFOHEADER que describe el mapa de bits al que apunta pSrcBitmap. La estructura BITMAPINFOHEADER se describe en la documentación de Microsoft Windows SDK.
pColorTable
Puntero proporcionado por el autor de la llamada a una tabla de colores. Este parámetro solo se usa si el formato de salida es de ocho bits por píxel. Para obtener más información, vea la siguiente sección Comentarios.
Al interpretar un mapa de bits, debe examinar la tabla de colores. Unidrv puede modificar los colores en un mapa de bits, pero también realizará los ajustes correspondientes en la tabla de colores, lo que no dará lugar a ningún cambio neto. Sin embargo, si omite los cambios en la tabla de colores y examina solo el mapa de bits, es posible que una imagen no se imprima correctamente. Para obtener un ejemplo, vea la explicación del parámetro pPaletteEntry en HT_Get8BPPMaskPalette.
dwCallbackID
Valor proporcionado por el autor de la llamada asignado al atributo *IPCallbackID de la opción seleccionada actualmente para la característica ColorMode. Para obtener más información, vea la siguiente sección Comentarios.
pIPParams
Puntero proporcionado por el autor de la llamada a una estructura de IPPARAMS.
[out] ppbResult
Puntero a una ubicación de memoria que contiene la dirección de un búfer. El contenido del búfer depende de dónde se debe enviar la DIB convertida.
Si este método pretende devolver la DIB convertida a Unidrv y se realiza correctamente en la conversión, debe establecer *ppbResult a la dirección del búfer que contiene la DIB convertida y debe devolver S_OK. Si se produce un error en la conversión, el método debe establecer *ppbResult en nully debe devolver E_FAIL.
Si este método pretende enviar el DIB convertido al colador y se realiza correctamente en la conversión, el método debe establecer *ppbResult en TRUEy debe devolver S_OK. Si se produce un error en la conversión, el método debe establecer *ppbResult en FALSE y debe devolver E_FAIL. Para obtener más información, vea la explicación de los atributos *DevBPP y *DevNumOfPlanes en la sección Comentarios.
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. |
Características de mapa de bits de origen de
Características del mapa de bits de destino de
Observaciones
El método IPrintOemUni::ImageProcessing
se usa para modificar mapas de bits de imagen antes de enviarlos al administrador de trabajos de impresión. Su propósito es proporcionar compatibilidad personalizada con los modos de color y los métodos de halftoning no admitidos por Unidrv. Un controlador de impresora que envía un mapa de bits al administrador de trabajos de impresión (en lugar de enviarlo de nuevo a Unidrv) debe establecer los atributos *DevBPP y *DevNumOfPlanes en cero en el archivo GPD de la impresora.
Si se implementa el método y, si la entrada del archivo GPD para el formato de color actual contiene un atributo *IPCallbackID, Unidrv llama al método cada vez que hay disponible un mapa de bits. La llamada se realiza después de que GDI represente el mapa de bits, que luego se envía al colador. (Para obtener información sobre el atributo *IPCallbackID, consulte atributos de opción para la característica ColorMode).
Si el modo de color actual, tal como se especifica en dwCallbackID, es el que Unidrv admite, el método IPrintOemUni::ImageProcessing
debe realizar operaciones de mediotonamiento en el mapa de bits recibido y devolverlo a Unidrv para la cola. Si el modo de color actual es aquel que Unidrv no admite, el método debe realizar operaciones de halftoning y, a continuación, colocar en cola el mapa de bits.
Si el método realiza solo operaciones de mediotonamiento, debe hacer lo siguiente:
- Realice operaciones de halftoning en los datos, como se indica en el miembro pHalftoneOption de la estructura IPPARAMS.
- Devuelve los datos de imagen modificados a Unidrv colocándolo en un búfer y proporcionando la dirección del búfer como valor devuelto del método. El búfer devuelto puede ser el que apunta pSrcBitmap, o puede ser uno asignado localmente.
Para controlar el formato de color personalizado, el método IPrintOemUni::ImageProcessing
debe hacer lo siguiente:
- Convierta datos DIB, descritos por el pSrcBitmap de y pBitmapInfoHeader, en el formato de color indicado por dwCallbackID.
- Realice operaciones de halftoning en los datos, como se indica en el miembro pHalftoneOption de la estructura IPPARAMS.
- Envíe los datos al administrador de trabajos de impresión llamando al método IPrintOemDriverUni::D rvWriteSpoolBuf.
- Modifique la posición del cursor de la impresora realizando llamadas adecuadas a los métodos IPrintOemDriverUni::D rvXMoveTo y IPrintOemDriverUni::D rvYMoveTo.
El parámetro dwCallbackID indica el tipo de formato de color, si existe, que se debe realizar. Dentro del archivo GPD de la impresora, cada entrada *Option para la característica ColorMode describe un formato de color. Si el formato requiere el procesamiento por el método IPrintOemUni::ImageProcessing
, su entrada *Option debe contener un atributo *IPCallbackID. Cuando Unidrv llama al método IPrintOemUni::ImageProcessing
, proporciona el valor de atributo asociado a la opción seleccionada actualmente para la característica ColorMode. Este valor es el dwCallbackID valor del parámetro.
Tanto si el método de IPrintOemUni::ImageProcessing
está realizando operaciones de formato de color como datos de imagen de cola, o simplemente realizando operaciones de halftoning y devolviendo mapas de bits procesados a Unidrv, debe exportar un método IPrintOemUni::MemoryUsage si asigna cantidades significativas de memoria para mapas de bits de destino u otros fines. De lo contrario, el rendimiento del sistema podría verse degradado.
Si se implementa el método, se llama a para cada región ráster de la página. Sin embargo, si una región está en blanco, el miembro bBlankBand del ipPARAMS estructura se establece en TRUE, lo que indica que el bloque está en blanco y los datos no son válidos. Dado que una banda se puede dividir en bloques alternados de regiones en blanco y no en blanco para optimizar el rendimiento, el tamaño del bloque no siempre se corresponde con el tamaño de banda.
El mapa de bits de origen descrito por pSrcBitmap y pBitmapInfoHeader tiene las siguientes características:
- El contenido de DIB está ordenado y sin comprimir.
- El formato de datos es uno que aparece en Control de formatos de color.
- Si el formato requiere una tabla de colores, la tabla apunta a pColorTable.
- Los datos de color están en formato PRIMARY_ORDER_CBA, como se explica en la descripción del miembro ulPrimaryOrder de de la estructura de GDIINFO. En otras palabras, si el formato de color es RGB o CMY, los bits menos significativos n deben contener el valor azul o amarillo, los siguientes bits de n deben contener el valor verde o magenta, y el siguiente n bits debe contener el valor rojo o cian. Los bits sin usar están en la posición más significativa. Si el formato usa 4 bits por píxel, n es 1. Para 24 bits por píxel, n es 8, como se muestra en la ilustración siguiente. Para CMYK, el cuarto grupo de n bits contiene negro.

En la ilustración anterior se muestran los datos de color en formato de PRIMARY_ORDER_CBA para dos píxeles, con 24 bits de datos de color por píxel. Pasar de direcciones de memoria baja a direcciones de memoria alta, hay ocho bits de datos azules, después ocho bits de datos verdes y, después, ocho bits de datos rojos, después del cual se repite el patrón. Esto también se conoce como orden de salida del dispositivo BGR.
Para las operaciones de halftoning, en las que se devuelve un mapa de bits procesado a Unidrv, el mapa de bits devuelto debe tener las siguientes características:
- El contenido de DIB debe estar ordenado y sin comprimir.
- El formato de datos debe ser uno que aparezca en Control de formatos de color, y debe ser compatible con el* DevBPP y *DevNumOfPlanes atributos del formato de color identificado por dwCallbackID. (Para obtener información acerca de estos atributos, vea Option Attributes for the ColorMode Feature.)
- Si el formato requiere una tabla de colores, la tabla debe crearse y su dirección debe devolverse en pColorTable.
- Los datos de color deben devolverse en formato PRIMARY_ORDER_CBA, tal como se describe para el mapa de bits de origen.
-
La estructura BITMAPINFOHEADER especificada por pBitmapInfoHeader debe describir los mapas de bits de entrada y salida. El método
IPrintOemUni::ImageProcessing
no debe cambiar el contenido de la estructura.
IPrintOemUni::ImageProcessing
es opcional. Si un complemento de representación implementa este método, el método IPrintOemUni::GetImplementedMethod debe devolver S_OK cuando recibe "ImageProcessing" como entrada.
Requisitos
Requisito | Valor |
---|---|
de la plataforma de destino de | Escritorio |
encabezado de | prcomoem.h (include Prcomoem.h) |