Compartir a través de


Compatibilidad con gráficos pseudovectoriales

Importante

La plataforma de impresión moderna es el medio preferido de Windows para comunicarse con impresoras. Se recomienda usar el controlador de clase de bandeja de entrada IPP de Microsoft, junto con 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 Plataforma de impresión moderna y la Guía de diseño de aplicaciones para compatibilidad con impresión.

Los dispositivos que no admiten gráficos vectoriales verdaderos pueden aprovechar la compatibilidad que Unidrv proporciona para los gráficos pseudovectoriales. Al usar esta característica, Unidrv descarga rectángulos negros sólidos y líneas horizontales y verticales directamente en un dispositivo gráfico no vectorial, 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 minicontrolador para un dispositivo gráfico no vectorial 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 pseudovectoriales 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 con 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 consiste en 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 el rectángulo primero 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 pseudovectoriales

La característica de gráficos pseudovectoriales 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.