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 コマンドの詳細については、「ラスター データ圧縮コマンド」を参照してください)。
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 を含む) |