Condividi tramite


Gestione delle superfici gestite dal dispositivo

Importante

La piattaforma di stampa moderna è il mezzo preferito di Windows per comunicare con le stampanti. Ti consigliamo di usare il driver di classe IPP di Microsoft, insieme a Print Support Apps (PSA), per personalizzare l'esperienza di stampa in Windows 10 e 11 per lo sviluppo di dispositivi per stampanti.

Per altre informazioni, vedere Piattaforma di stampa moderna e guida alla progettazione dell'app di supporto per la stampa.

Quando Unidrv esegue il rendering delle immagini di pagina di stampa, usa superfici di disegno gestite da GDI. Il rendering di tutte le immagini viene eseguito come bitmap. Per i dispositivi con funzionalità che non possono essere sfruttate da questo scenario, ad esempio la possibilità di disegnare vettori, è possibile fornire supporto personalizzato dei driver per una superficie di disegno gestita dal dispositivo. Per supportare una superficie gestita dal dispositivo, è necessario fornire un plug-in di rendering che implementa quanto segue:

Le funzioni di hook non possono richiamare i servizi di supporto con prefisso GDI quando si disegna su una superficie gestita dal dispositivo. Tuttavia, possono creare una superficie bitmap temporanea e quindi passare l'handle della superficie alle funzioni di disegno con prefisso Eng (vedere Rendering di un processo di stampa).

Il metodo IPrintOemUni::D riverDMS viene chiamato ogni volta che viene eseguito il rendering di un processo di stampa, quindi il plug-in di rendering può specificare il tipo di superficie di rendering (gestita da GDI o gestita dal dispositivo) per ogni processo. Basando la scelta della superficie su un'opzione selezionabile nell'interfaccia utente, è necessario fornire anche un plug-in dell'interfaccia utente.

Disegno di testo in una superficie gestita dal dispositivo

Il plug-in per il rendering deve associare la funzione DrvTextOut di Unidrv (insieme a tutte le altre funzioni di disegno DDI grafiche). La creazione di testo per una superficie gestita dal dispositivo comporta l'interazione tra le quattro funzioni seguenti:

  • Funzione DrvTextOut di Unidrv

  • Funzione di hooking DrvTextOut del plug-in di rendering

  • Metodo IPrintOemDriverUni::D rvUniTextOut di Unidrv

  • Metodo IPrintOemUni::TextOutAsBitmap del plug-in di rendering

I passaggi necessari per la visualizzazione del testo in una superficie gestita dal dispositivo sono i seguenti:

  1. GDI chiama la funzione DrvTextOut di Unidrv.

  2. Unidrv chiama la funzione di hooking DrvTextOut del plug-in di rendering.

  3. La funzione di hook invia comandi al dispositivo per specificare il pennello, la rotazione e l'area di ritaglio del testo.

  4. La funzione di hook chiama il metodo IPrintOemDriverUni::D rvUniTextOut di Unidrv, che usa i tipi di carattere scaricati per restituire il testo. Questo metodo gestisce anche il ritaglio basato su glifi.

  5. Se IPrintOemDriverUni::D rvUniTextOut non può usare un tipo di carattere scaricabile (perché il tipo di carattere non è disponibile o è ruotato), chiama il metodo IPrintOemUni::TextOutAsBitmap del plug-in di rendering, che disegna il testo come bitmap.

  6. Dopo la restituzione di IPrintOemDriverUni::D rvUniTextOut, la funzione di hook DrvTextOut deve disegnare sottolineature e barrature, in base ai rettangoli specificati dal parametro prclExtra della funzione DrvTextOut, usando i comandi vector (se supportato).