Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Il metodo IPrintOemUni::Compression
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 ai dati della riga di analisi di input.
pOutBuf
Puntatore fornito dal chiamante a un buffer di output per ricevere dati di 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 è in grado di comprimere, il valore del risultato deve essere -1.
Valore restituito
Il metodo deve restituire uno dei valori seguenti.
Codice restituito | Descrizione |
---|---|
|
Operazione riuscita. |
|
Operazione non riuscita |
|
Il metodo non è implementato. |
Osservazioni
Il metodo IPrintOemUni::Compression
viene utilizzato dai plug-in di rendering per comprimere i dati della riga di analisi prima che vengano inviati allo spooler di stampa. Lo scopo del metodo è fornire supporto per i metodi di compressione specifici della stampante non supportati da Unidrv.
Se viene definito il metodo IPrintOemUni::Compression
e se il 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 allo spooler di stampa. Per informazioni sul comando CmdEnableOEMComp, vedere comandi raster data compression.)
I valori dei parametri pInBuf e dwInLen descrivono un buffer contenente una riga di dati immagine di analisi da comprimere. I valori dei parametri pOutBuf e dwOutLen descrivono il buffer in cui il metodo IPrintOemUni::Compression
deve inserire i dati compressi.
Prima che Unidrv invii una riga di analisi allo 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 lo spooling del comando della stampante che consente alla stampante di accettare il formato compresso migliore, quindi invia i dati compressi alla stampante.
Pertanto, il metodo IPrintOemUni::Compression
viene chiamato per ogni riga di analisi, indipendentemente dal fatto che i dati compressi restituiti dal metodo vengano effettivamente utilizzati 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 provati 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 del comando CmdEnableOEMComp.
Se possibile, l'algoritmo di compressione del metodo deve usare il valore di 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 metodo IPrintOemUni::Compression
è facoltativo. Se un plug-in di rendering implementa questo metodo, il metodo IPrintOemUni::GetImplementedMethod deve restituire S_OK quando riceve "Compression" come input.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Desktop |
intestazione | prcomoem.h (include Prcomoem.h) |