Mac OS X version 10.4 (Tiger) から、CUPSプリントシステム用のラスタプリンタドライバを作成する際に、16bpccでビットマップラスタデータを受け取ることができるようになりました。より深いピクセルデータを扱うことで、色の忠実性と精度を向上させる機会が得られます。16bpc (bits-per-color) のサポートはCUPS色空間の バイト順序(エンディアン)1bpccおよび8bpccのラスタデータに関しては、各ピクセルの色成分データが1バイト以下のサイズであるため、特定色成分のデータのバイト順序は明白です。16bpcのデータに関しては、特定色成分のカラー値は2バイトで、バイト順序はネイティブのバイト順序になるように定義されています。すなわち、ビッグエンディアンのマシンで実行するときの16bpcのデータに関しては、各色成分値のバイト順序はビッグエンディアンです。リトルエンディアンのマシンで実行するときの16bpcのデータに関しては、各色成分値のバイト順序はリトルエンディアンです。この手法は16bpcのCUPSラスタデータを受け取ることを想定して、CUPSフィルタに渡されるデータを最高のパフォーマンスで最も簡単に処理します。ただし、16bpcのデータを処理するCUPSフィルタは、ラスタデータの出力元のアーキテクチャがフィルタのアーキテクチャと一致しているかどうかを調べる必要があります。 ラスタデータの出力元のアーキテクチャがラスタを処理するフィルタと同じであるかを調べるために、CUPSには簡単な方法が用意されています。 リスト1:エンディアンデータのスワップが必要かどうかの確認
bool isRasterEndianSwapNeeded(int in_fd) {
bool swap16BitData = false;
cups_raster_t *raster;
// in_fdは、stdinなどからラスタを読み取る
// ファイルの入力ファイル記述子。
raster = cupsRasterOpen(in_fd, CUPS_RASTER_READ);
if(raster->sync == CUPS_RASTER_REVSYNC)
swap16BitData = true;
return swap16BitData;
}
16bpcデータの要求16bpcのデータが必要なことを指定するために、デベロッパが使用できる方法が2つあります。どちらの方法が最適であるかは、データを受け取るドライバがTigerより前のバージョンで動作することを目的としているかどうかによって決まります。 Mac OS X 10.4以降のシステム専用16bpcのラスタデータを受け取り、そのフォーマットをサポートするシステムでドライバを動作させることにのみ関心がある場合は、 リスト2:PPDファイルでcupsBitsPerColor値として8を指定 *ColorModel RGB/RGB Color:"<</cupsColorSpace 1/cupsColorOrder 0/cupsBitsPerColor 8>>setpagedevice" これは
各カラー値は単一バイトで指定されます。 同じパラメータを16bpccで指定する場合は、PPDファイルで相当する行をリスト3に示すように変更します。 リスト3:PPDファイルでcupsBitsPerColor値として16を指定 *ColorModel RGB/RGB Color:"<</cupsColorSpace 1/cupsColorOrder 0/cupsBitsPerColor 16>>setpagedevice" これは
各カラー値は、ホストのエンディアンフォーマットの2バイト整数値として指定されます。 この方法は簡単ですが、Tigerより前のバージョンのMac OS Xまたは 他のシステムとの互換性値が16の ドライバで16bpccデータを優先することを指定できるように、 リスト4:16bpcを優先することを指定しながら、Mac OS X 10.4より前のシステムでは8bpcとの互換性を維持
*ColorModel RGB/RGB Color:"
<</cupsColorSpace 1/cupsColorOrder 0/cupsBitsPerColor 8
/cupsPreferredBitsPerColor 16>>setpagedevice"
*End
各カラー値は、ホストのエンディアンフォーマットの2バイト整数値として指定されます。
このようにデータ要求を指定するCUPSプリンタドライバは、各ページラスタの前にCUPSラスタヘッダ構造体を使用し、それらに提供されるラスタデータのフォーマットを判断する必要があります。このヘッダで 要約Mac OS X v10.4以降では、CUPSラスタプリンタドライバへの16bpccデータの提供をサポートしています。深い色データを利用することで、一定の出力デバイスから優れた結果を得る可能性がもたらされます。深い色をサポートしていないCUPSとの互換性も維持しながら深い色データを要求できるため、1つのドライバを幅広いプラットフォームやOSバージョンに配備することができます。 ドキュメント改訂履歴
掲載日: 2005-08-24 | ||||||||||
|