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
S_OK
Operazione completata.
E_FAIL
Operazione non riuscita
E_NOTIMPL
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)