Metodo IPrintOemUni::ImageProcessing (prcomoem.h)

Il IPrintOemUni::ImageProcessing metodo può essere usato con stampanti unidrv supportate per modificare i dati bitmap dell'immagine, per eseguire la formattazione o la metà del colore. Il metodo può restituire la bitmap modificata a Unidrv o inviarla direttamente al spooler di stampa.

Sintassi

HRESULT ImageProcessing(
        PDEVOBJ           pdevobj,
        PBYTE             pSrcBitmap,
        PBITMAPINFOHEADER pBitmapInfoHeader,
        PBYTE             pColorTable,
        DWORD             dwCallbackID,
        PIPPARAMS         pIPParams,
  [out] OUT PBYTE         *ppbResult
);

Parametri

pdevobj

Puntatore fornito dal chiamante a una struttura DEVOBJ .

pSrcBitmap

Puntatore fornito dal chiamante a un DIB di input.

pBitmapInfoHeader

Puntatore fornito dal chiamante a una struttura BITMAPINFOHEADER che descrive la bitmap puntata da pSrcBitmap. La struttura BITMAPINFOHEADER è descritta nella documentazione di Microsoft Windows SDK.

pColorTable

Puntatore fornito dal chiamante a una tabella di colori. Questo parametro viene usato solo se il formato di output è otto bit per pixel. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

Quando si interpreta una bitmap, è necessario esaminare la tabella dei colori. Unidrv può modificare i colori in una bitmap, ma anche apportare modifiche corrispondenti nella tabella dei colori, causando alcuna modifica netta. Tuttavia, se si ignorano le modifiche della tabella dei colori e si esamina solo la bitmap, un'immagine potrebbe non essere stampata correttamente. Per un esempio, vedere la discussione del parametro pPaletteEntry in HT_Get8BPPMaskPalette.

dwCallbackID

Valore fornito dal chiamante assegnato all'attributo *IPCallbackID dell'opzione attualmente selezionata per la funzionalità ColorMode. Per ulteriori informazioni, vedere la sezione Osservazioni successiva.

pIPParams

Puntatore fornito dal chiamante a una struttura IPPARAMS .

[out] ppbResult

Puntatore a una posizione di memoria contenente l'indirizzo di un buffer. Il contenuto del buffer dipende dalla posizione in cui deve essere inviato il diB convertito.

Se questo metodo intende inviare nuovamente il DIB convertito a Unidrv e ha esito positivo nella conversione, deve impostare *ppbResult sull'indirizzo del buffer contenente il DIB convertito e deve restituire S_OK. Se la conversione ha esito negativo, il metodo deve impostare *ppbResult su NULL e deve restituire E_FAIL.

Se questo metodo intende inviare il DIB convertito al spooler e ha esito positivo nella conversione, il metodo deve impostare *ppbResult su TRUE e deve restituire S_OK. Se la conversione ha esito negativo, il metodo deve impostare *ppbResult su FALSE e deve restituire E_FAIL. Per altre informazioni, vedere la discussione sugli attributi *DevBPP e *DevNumOfPlanes nella sezione Osservazioni.

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.
 

Caratteristiche bitmap di origine

Caratteristiche bitmap di destinazione

Commenti

Il IPrintOemUni::ImageProcessing metodo viene usato per modificare le bitmap dell'immagine prima che vengano inviate al spooler di stampa. Lo scopo è fornire supporto personalizzato per le modalità colore e i metodi di metàtoning non supportati da Unidrv. Un driver della stampante che invia una bitmap al spooler di stampa (anziché inviarlo nuovamente a Unidrv) deve impostare gli attributi *DevBPP e *DevNumOfPlanes su zero nel file GPD della stampante.

Se il metodo viene implementato e se la voce del file GPD per il formato di colore corrente contiene un attributo *IPCallbackID , Unidrv chiama il metodo ogni volta che è disponibile una bitmap. La chiamata viene eseguita dopo che GDI esegue il rendering della bitmap, che viene quindi inviata al spooler. Per informazioni sull'attributo *IPCallbackID , vedere Attributi di opzione per la funzionalità ColorMode.

Se la modalità colore corrente, come specificato da dwCallbackID, è una che Unidrv supporta, il IPrintOemUni::ImageProcessing metodo deve eseguire operazioni di metàtoning sulla bitmap ricevuta e restituirlo a Unidrv per il spooling. Se la modalità colore corrente è una che Unidrv non supporta, il metodo deve eseguire operazioni di metàtoning e quindi spoolare la bitmap.

Se il metodo esegue solo operazioni di halftoning, deve eseguire le operazioni seguenti:

  • Eseguire operazioni di halftoning sui dati, come indicato dal membro pHalftoneOption della struttura IPPARAMS .
  • Restituisce i dati dell'immagine modificati in Unidrv inserendolo in un buffer e specificando l'indirizzo del buffer come valore restituito del metodo. Il buffer restituito può essere quello a cui punta pSrcBitmap oppure può essere uno che è allocato localmente.
Per altre informazioni sulla personalizzazione delle operazioni di halftoning in Unidrv, vedere Customd Halftoning.

Per gestire la formattazione dei colori personalizzata, il IPrintOemUni::ImageProcessing metodo deve eseguire le operazioni seguenti:

Per altre informazioni sulla personalizzazione delle operazioni di formattazione dei colori in Unidrv, vedere Formati di colore personalizzati.

Il parametro dwCallbackID indica il tipo di formattazione dei colori, se presente, che deve essere eseguito. All'interno del file GPD della stampante, ogni voce di opzione per la funzionalità ColorMode descrive un formato di colore. Se il formato richiede l'elaborazione IPrintOemUni::ImageProcessing dal metodo, la voce *Option deve contenere un attributo *IPCallbackID . Quando Unidrv chiama il IPrintOemUni::ImageProcessing metodo, fornisce il valore dell'attributo associato all'opzione attualmente selezionata per la funzionalità ColorMode. Questo valore è il valore del parametro dwCallbackID .

Indipendentemente dal fatto che il IPrintOemUni::ImageProcessing metodo stia eseguendo operazioni di formattazione dei colori e di spooling dei dati dell'immagine o semplicemente eseguendo operazioni di metàtoning e restituendo bitmap elaborate a Unidrv, deve esportare un metodo IPrintOemUni::MemoryUsage se alloca quantità significativa di memoria per le bitmap di destinazione o altri scopi. In caso contrario, le prestazioni del sistema potrebbero essere ridotte.

Se il metodo viene implementato, viene chiamato per ogni area raster nella pagina. Tuttavia, se un'area è vuota, il membro bBlankBand della struttura IPPARAMS è impostato su TRUE, che indica che il blocco è vuoto e i dati non sono validi. Poiché una banda può essere suddivisa in blocchi alternati di aree vuote e nonblank per ottimizzare le prestazioni, le dimensioni del blocco non corrispondono sempre alle dimensioni della banda.

La bitmap di origine descritta da pSrcBitmap e pBitmapInfoHeader presenta le caratteristiche seguenti:

  • I contenuti DIB sono ordinati in alto e non compressi.
  • Il formato dei dati è quello elencato in Gestione dei formati di colore.
  • Se il formato richiede una tabella colori, la tabella viene puntata da pColorTable.
  • I dati dei colori sono in formato PRIMARY_ORDER_CBA, come illustrato nella descrizione del membro ulPrimaryOrder della struttura GDIINFO . In altre parole, se il formato di colore è RGB o CMY, i bit meno significativi n devono contenere il valore blu o giallo, i n bit successivi devono contenere il valore verde o magenta e i successivi n bit devono contenere il valore rosso o ciano. I bit inutilizzati si trovano nella posizione più significativa. Se il formato usa 4 bit per pixel, n è 1. Per 24 bit per pixel, n è 8, come illustrato nella figura seguente. Per CYMK, il quarto gruppo di n bit contiene nero.

formato PRIMARY_ORDER_CBA
La figura precedente illustra i dati di colore in PRIMARY_ORDER_CBA formato per due pixel, con 24 bit di dati di colore per pixel. Passando da indirizzi di memoria ridotta a indirizzi di memoria elevata, sono presenti otto bit di dati blu, quindi otto bit di dati verdi e quindi otto bit di dati rossi, dopo il quale il modello ripete. Questo è noto anche come ordine di output del dispositivo BGR.
Per le operazioni di halftoning, in cui viene restituita una bitmap elaborata a Unidrv, la bitmap restituita deve avere le caratteristiche seguenti:
  • Il contenuto DIB deve essere ordinato e non compresso.
  • Il formato dei dati deve essere quello elencato in Gestione dei formati di colore e deve essere compatibile con gli attributi *DevBPP e *DevNumOfPlanes del formato di colore identificato da dwCallbackID. Per informazioni su questi attributi, vedere Attributi di opzione per la funzionalità ColorMode.
  • Se il formato richiede una tabella colori, la tabella deve essere creata e l'indirizzo deve essere restituito in pColorTable.
  • I dati dei colori devono essere restituiti in formato PRIMARY_ORDER_CBA, come descritto per la bitmap di origine.
  • La struttura BITMAPINFOHEADER specificata da pBitmapInfoHeader deve descrivere sia le bitmap di input che di output. Il IPrintOemUni::ImageProcessing metodo non deve modificare il contenuto della struttura.
Il IPrintOemUni::ImageProcessing metodo è facoltativo. Se un plug-in di rendering implementa questo metodo, il metodo IPrintOemUni::GetImplementedMethod deve restituire S_OK quando riceve "ImageProcessing" come input.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione prcomoem.h (include Prcomoem.h)

Vedi anche

HT_Get8BPPMaskPalette

IPrintOemUni

IPrintOemUni::FilterGraphics