Metodo IPrintOemUni::FilterGraphics (prcomoem.h)
Il metodo IPrintOemUni::FilterGraphics può essere usato con le stampanti supportate da Unidrv per modificare i dati della riga di analisi e inviarli allo spooler.
Sintassi
HRESULT FilterGraphics(
PDEVOBJ pdevobj,
PBYTE pBuf,
DWORD dwLen
);
Parametri
pdevobj
Puntatore fornito dal chiamante a una struttura DEVOBJ .
pBuf
Puntatore fornito dal chiamante a un buffer contenente i dati della riga di analisi da stampare.
dwLen
Valore fornito dal chiamante che rappresenta la lunghezza, in byte, dei dati a cui punta pBuf.
Valore restituito
Il metodo deve restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
S_OK | Operazione completata. |
E_FAIL | Operazione non riuscita |
E_NOTIMPL | Il metodo non è implementato. |
Commenti
Il metodo IPrintOemUni::FilterGraphics viene usato per modificare i dati della riga di analisi prima che vengano inviati allo spooler di stampa. Il metodo è responsabile dell'invio dei dati ricevuti allo spooler.
Il metodo IPrintOemUni::FilterGraphics è facoltativo. Se un plug-in per il rendering implementa questo metodo, il metodo IPrintOemUni::GetImplementedMethod del plug-in deve restituire S_OK quando riceve "FilterGraphics" come input.
Se viene implementato il metodo IPrintOemUni::FilterGraphics , Unidrv non esegue lo spooling dei dati della stampante. Unidrv chiama invece questo metodo ogni volta che un buffer di dati dell'immagine è pronto per lo spooling.
Si noti che quando questo metodo viene implementato, Unidrv non comprime anche i dati della stampante, come accade normalmente. Se si intende usare la compressione Unidrv, non è consigliabile implementare questo metodo. Inoltre, è necessario modificare IPrintOemUni::GetImplementedMethod in modo che restituisca S_FALSE quando viene passata la stringa "FilterGraphics".
Il metodo può eseguire la post-elaborazione finale dei dati dell'immagine, ad esempio la rimozione di punti adiacenti o qualsiasi altra operazione di filtro del flusso di dati non specificata da Unidrv. Deve quindi eseguire lo spooling dei dati chiamando il metodo IPrintOemDriverUni::D rvWriteSpoolBuf .
Il metodo IPrintOemUni::FilterGraphics viene chiamato dalla funzione DrvSendPage di Unidrv. Se si vuole implementare le funzioni IPrintOemUni::FilterGraphics, non è necessario eseguire completamente l'override delle funzioni DrvSendPage o DrvNextBand di Unidrv.
Prima della funzione DrvSendPage di Unidrv chiama l'implementazione IPrintOemUni::FilterGraphics del plug-in DrvSendPage.
Se necessario, trasporrà la bitmap di cui eseguire il rendering.
Trasforma un passaggio di output costituito da dati a colori in una singola matrice contigua di dati.
Elabora un gruppo di righe di analisi e trasforma questi dati in comandi per la stampante.
Imposta la posizione X/Y e passa la linea di dati grafici alla stampante.
Se il plug-in ha implementato IPrintOemUni::FilterGraphics, Unidrv chiamerà il plug-in con i dati della riga di analisi anziché inviarli alla stampante.
Il metodo IPrintOemUni::FilterGraphics consente a un plug-in di rendering di modificare i dati della riga di analisi e inviarli allo spooler. Se si implementa questa funzione, Unidrv non eseguirà lo spooling dei dati. IPrintOemUni::FilterGraphics verrà invece chiamato ogni volta che un buffer di dati è pronto per essere spoolato e inviato alla stampante.
È possibile usare IPrintOemUni::FilterGraphics per implementare un metodo di compressione speciale o per eseguire la manipolazione dei bit nel flusso di dati inviato alla stampante o a entrambi. In qualsiasi situazione, il codice di compressione predefinito del driver non viene usato. IPrintOemUni::FilterGraphics viene presentato con un blocco di dati ed è necessario per restituire questi dati usando la funzione DrvWriteSpoolBuf . Il driver principale (Unidrv) non eseguirà ulteriori elaborazioni dei dati raster dopo aver chiamato OEMFilterGraphics.
Quando si implementa il metodo IPrintOemUni::FilterGraphics nel plug-in, verrà usato per inviare i dati raster direttamente alla stampante. Il numero di righe di analisi in un blocco viene specificato tramite l'attributo PinsPerPhysPass associato alla funzionalità risoluzione Questo attributo è facoltativo e, se non lo si specifica, è impostato su 1 ,ad esempio per la maggior parte delle stampanti inkjet e di pagina. In caso contrario, PinsPerPhysPass deve essere un multiplo di 8. In IPrintOemUni::FilterGraphics il parametro pBuf punta al buffer che contiene i dati raster della riga di analisi che verranno modificati, ad esempio per la compressione, e infine inviati. Il parametro dwLen è la lunghezza del buffer a cui punta pBuf .
L'elenco seguente descrive diversi scenari comuni per l'implementazione di IPrintOemUni::FilterGraphics:
Tecniche di compressione speciali
Manipolazione dei bit dei dati raster in ingresso prima di inviarli alla stampante
IPrintOemUni::FilterGraphics invia infine tutti i dati alla stampante usando la funzione DrvWriteSpoolBuf . Il driver principale (Unidrv) non esegue altre elaborazioni sui dati inviati da IPrintOemUni::FilterGraphics . Se il plug-in esegue una compressione o una manipolazione di bit speciale, il plug-in deve allocare i buffer necessari per la compressione speciale o la manipolazione dei bit. Se il plug-in non alloca i propri buffer e se i dati compressi sono inferiori all'origine, l'output sovrascriverà il buffer di origine.
Il metodo IPrintOemUni::FilterGraphics consente di accedere ai dati della riga di analisi stessa e consente di post-elaborare i dati raster.
Il numero di righe di analisi è uguale all'altezza dell'immagine. Ad esempio, uno spessore a 1 bit per pixel (bpp) di ogni riga di analisi è uguale alla larghezza di 1 pixel, quindi il numero di linee di analisi è uguale all'altezza dell'immagine.
Per altre informazioni sulla personalizzazione delle operazioni di rendering di Unidrv, vedere Rendering personalizzato specifico di Unidrv.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | prcomoem.h (include Prcomoem.h) |
Vedi anche
IPrintOemDriverUni::D rvWriteSpoolBuf