Metodo IPrintOemUni::Compression (prcomoem.h)
Il IPrintOemUni::Compression
metodo può essere usato con stampanti supportate da Unidrv per fornire un metodo di compressione bitmap personalizzato.
Sintassi
HRESULT Compression(
PDEVOBJ pdevobj,
PBYTE pInBuf,
PBYTE pOutBuf,
DWORD dwInLen,
DWORD dwOutLen,
[out] OUT INT *piResult
);
Parametri
pdevobj
Puntatore fornito dal chiamante a una struttura DEVOBJ .
pInBuf
Puntatore fornito dal chiamante per l'analisi dei dati della riga di input.
pOutBuf
Puntatore fornito dal chiamante a un buffer di output per ricevere i dati della riga di analisi compressi.
dwInLen
Lunghezza fornita dal chiamante dei dati di input.
dwOutLen
Lunghezza fornita dal chiamante del buffer di output.
[out] piResult
Riceve un valore di risultato fornito dal metodo. Se l'operazione ha esito positivo, questo valore deve essere il numero di byte compressi, che non deve essere maggiore del valore ricevuto per dwOutLen. Se si verifica un errore o se il metodo non può comprimere, il valore del risultato deve essere -1.
Valore restituito
Il metodo deve restituire uno dei valori seguenti.
Codice restituito | Descrizione |
---|---|
|
Operazione completata. |
|
Operazione non riuscita |
|
Il metodo non è implementato. |
Commenti
Il IPrintOemUni::Compression
metodo viene usato dai plug-in per eseguire il rendering dei plug-in per comprimere i dati della riga prima di inviarli al spooler di stampa. Lo scopo del metodo è fornire supporto per i metodi di compressione specifici della stampante non supportati da Unidrv.
Se il metodo è definito e se il IPrintOemUni::Compression
file GPD della stampante contiene una voce di comando CmdEnableOEMComp, Unidrv chiama il metodo ogni volta che una riga di analisi è pronta per essere inviata al spooler di stampa. Per informazioni sul comando CmdEnableOEMComp, vedere Comandi di compressione dei dati Raster.
I valori dei parametri pInBuf e dwInLen descrivono un buffer contenente una riga di dati dell'immagine di analisi da comprimere. I valori dei parametri pOutBuf e dwOutLen descrivono il buffer in cui il IPrintOemUni::Compression
metodo deve inserire i dati compressi.
Prima che Unidrv invii una riga di analisi al spooler di stampa, prova ogni metodo di compressione abilitato per determinare quale crea il flusso di dati più piccolo. Dopo aver determinato l'algoritmo di compressione migliore (comprimendo i dati usando ogni metodo), esegue ilpooling del comando della stampante che consente alla stampante di accettare il formato compresso migliore, quindi invia i dati compressi alla stampante.
Pertanto, il IPrintOemUni::Compression
metodo viene chiamato per ogni riga di analisi, se i dati compressi restituiti dal metodo vengono effettivamente usati o meno. Quando viene chiamato il metodo, dwOutLen contiene la lunghezza restituita dal metodo di compressione migliore Unidrv ha provato fino a allora. Se non sono stati provato altri metodi, dwOutLen contiene la lunghezza non compressa. Se l'algoritmo non può produrre una riga di analisi compressa uguale o inferiore a dwOutLen byte, deve restituire -1 nella posizione specificata da piResult.
Se, dopo che Unidrv prova tutti i metodi di compressione abilitati, i dati compressi restituiti da IPrintOemUni::Compression
hanno la lunghezza più piccola, Unidrv invia il buffer allo spooler di stampa, preceduto dal comando specificato dalla voce di comando CmdEnableOEMComp.
Se possibile, l'algoritmo di compressione del metodo deve usare il valore dwOutLen ricevuto per determinare se può arrestare l'algoritmo prima del completamento, per risparmiare tempo se un altro metodo di compressione ha già creato un risultato migliore.
Il IPrintOemUni::Compression
metodo è facoltativo. Se un plug-in di rendering implementa questo metodo, il metodo IPrintOemUni::GetImplementedMethod deve restituire S_OK quando riceve "Compressione" come input.
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Desktop |
Intestazione | prcomoem.h (include Prcomoem.h) |