Compartir a través de


Compatibilidad con gráficos de Pseudo-Vector

Importante

Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con las aplicaciones de soporte técnico de impresión (PSA), para personalizar la experiencia de impresión en Windows 10 y 11 para el desarrollo de dispositivos de impresora.

Para obtener más información, consulte la Guía de diseño de aplicaciones de soporte técnico de impresión.

Los dispositivos que no admiten gráficos vectoriales verdaderos pueden aprovechar la compatibilidad que Unidrv proporciona para los gráficos pseudovectores. Cuando se usa esta característica, Unidrv descarga rectángulos negros sólidos y líneas horizontales y verticales directamente en un dispositivo gráfico novector, lo que reduce la sobrecarga de representar estas figuras en una superficie ráster. Esto también reduce el tamaño de los datos de salida, lo que puede mejorar el rendimiento de la impresora para los dispositivos que no controlan los datos ráster de forma eficaz.

Para beneficiarse de esta característica, un minidriver para un dispositivo gráfico novector solo necesita admitir el comando CmdRectBlackFill. Esta funcionalidad se deshabilita cuando la característica Optimización de impresión de la pestaña Avanzadas de las páginas de propiedades de la impresora está desactivada.

La característica de gráficos pseudovector intercepta las llamadas a DrvBitBlt, DrvStrokePath y DrvLineTo, para determinar si se va a dibujar un rectángulo negro sólido o una línea vertical u horizontal. Cuando Unidrv reconoce la figura que se va a dibujar como un rectángulo válido (uno que es negro sólido, no tiene recorte complejo y no usa un ROP mediante los bits de destino actuales), se almacena en una matriz de rectángulo en lugar de dibujarse en la superficie.

El aspecto más difícil de la característica de gráficos pseudovector es evitar problemas de orden z causados por objetos que deben dibujarse sobre objetos dibujados previamente. Es posible que los objetos de la parte superior necesiten borrar o sobrescribir parte de un rectángulo negro. Si el rectángulo negro ya se ha descargado en el dispositivo, es posible que un objeto dibujado más adelante en la superficie del sistema no se dibuje correctamente.

La solución a este problema es almacenar temporalmente un rectángulo válido, en lugar de dibujarlo inmediatamente en la superficie. Cuando se va a dibujar un nuevo objeto en la superficie, Unidrv lo comprueba para ver si el objeto se superpone con cualquier rectángulo negro. Si es así, la parte superpuesta del rectángulo negro se dibuja primero en la superficie, antes de dibujar el nuevo objeto, manteniendo así el orden Z correcto. Dibujar primero el rectángulo también tiene en cuenta la posibilidad de que el nuevo objeto que se va a dibujar tenga un ROP asociado, incluido uno que interactúe con el destino.

Además, es posible que el nuevo objeto que se va a dibujar contenga recortes complejos para que la figura resultante ya no sea un rectángulo. Una vez completada la representación de la banda o página, los rectángulos negros restantes se pueden descargar directamente en el dispositivo sin causar problemas de orden z. Unidrv mantiene una lista de hasta 256 rectángulos por banda, concatenando rectángulos BitBlt siempre que sea posible.

Problemas de gráficos pseudovector

La característica de gráficos pseudovectores puede modificar el orden z en determinadas situaciones, especialmente cuando el texto se descarga directamente en el dispositivo y los objetos posteriores con recorte complejo deben interactuar con ese texto.