IPrintOemUni::Compression 方法 (prcomoem.h)
IPrintOemUni::Compression
方法可以與 Unidrv 支援的印表機搭配使用,以提供自定義的點圖壓縮方法。
語法
HRESULT Compression(
PDEVOBJ pdevobj,
PBYTE pInBuf,
PBYTE pOutBuf,
DWORD dwInLen,
DWORD dwOutLen,
[out] OUT INT *piResult
);
參數
pdevobj
呼叫端提供的 DEVOBJ 結構的指標。
pInBuf
呼叫端提供的輸入掃描行數據的指標。
pOutBuf
呼叫端提供的輸出緩衝區指標,以接收壓縮掃描行數據。
dwInLen
呼叫端提供的輸入數據長度。
dwOutLen
呼叫端提供的輸出緩衝區長度。
[out] piResult
接收方法提供的結果值。 如果作業成功,這個值應該是壓縮的位元元組數目,不得大於 dwOutLen 收到的值。 如果發生錯誤,或方法無法壓縮,結果值應該是 -1。
傳回值
方法必須傳回下列其中一個值。
傳回碼 | 描述 |
---|---|
|
作業成功。 |
|
作業失敗 |
|
此方法尚未實作。 |
備註
轉 IPrintOemUni::Compression
譯外掛程式會在傳送至列印多任務緩衝處理器之前,先壓縮掃描行數據,以使用方法。 方法的目的是要針對 Unidrv 不支援的印表機特定壓縮方法提供支援。
IPrintOemUni::Compression
如果已定義 方法,而且印表機的 GPD 檔案包含 CmdEnableOEMComp 命令專案,Unidrv 會在每次掃描行準備好傳送至列印後台處理程式時呼叫 方法。 (如需 CmdEnableOEMComp 命令的相關信息,請參閱 點陣數據壓縮命令s.)
pInBuf 和 dwInLen 參數值描述包含要壓縮之影像數據的掃描行的緩衝區。 pOutBuf 和 dwOutLen 參數值會描述方法應該放置壓縮數據的緩衝區IPrintOemUni::Compression
。
在 Unidrv 將掃描行傳送至列印後台處理程式之前,它會嘗試每個啟用的壓縮方法來判斷哪一個會建立最小的數據流。 使用每個方法壓縮數據) 來判斷最佳的壓縮演算法 (之後,它會多任務緩衝處理印表機命令,讓印表機接受最佳的壓縮格式,然後將壓縮的數據傳送至印表機。
因此, IPrintOemUni::Compression
系統會針對每個掃描行呼叫 方法,不論是否實際使用 方法所傳回的壓縮數據。 呼叫 方法時, dwOutLen 包含最佳壓縮方法 Unidrv 所傳回的長度,最多會嘗試一次。 (如果沒有嘗試其他方法, dwOutLen 會包含未壓縮的長度。) 如果演算法無法產生等於或短於 dwOutLen 位元組的壓縮掃描行,它應該會在 piResult 所指定的位置傳回 -1。
如果在 Unidrv 嘗試所有已啟用的壓縮方法之後,傳 IPrintOemUni::Compression
回的壓縮數據長度最小,Unidrv 會將緩衝區傳送至列印後台處理程式,前面加上 CmdEnableOEMComp 命令專案指定的命令。
可能的話,方法的壓縮演算法應該使用收到的 dwOutLen 值來判斷它是否可以在完成之前停止演算法,以節省時間,如果另一個壓縮方法已經建立更好的結果。
方法是 IPrintOemUni::Compression
選擇性的。 如果轉譯外掛程式實作這個方法,外掛程式的 IPrintOemUni::GetImplementedMethod 方法必須在收到 “Compression” 做為輸入時傳回S_OK。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | prcomoem.h (包含 Prcomoem.h) |