高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

GX 09 - 任意のシェイプの色分解

(96 年 6 月 1 日)

Q: 任意のシェイプを色分解しようとしています。たとえば、シアン・プレートを作成するため、まずシェイプの色を取得し、それを gxCMYKspace に変換します。さらに、ブラックの成分をシアンの成分で置き換えて、他の成分を排除しようとしました。

この方法は、単純なシェイプではうまくいくのですが、ビットマップを扱おうとすると問題が発生します。視覚的なイメージを変えることなく、ビットマップをある色空間から別の色空間に変換する方法がわりません (言い換えれば、ピクセルに対する GXConvertColor を反映して、ピクセルの値を変更する必要があります)。

ビットマップ全体を "手動" でトラバースするのではなく、この処理をエレガントに実行する方法はありませんか。

A: 転送モードを使うと、ビットマップを鮮やかに処理できますが、それほど高速な処理は望めません (とはいえ、処理速度に関して、ビットマップを手動でトラバースするもう 1 つの方法より劣るということはありませんが)。

転送モードでは、5×4の行列を使って、ソースのどの色成分がデスティネーションのどの色成分にマップされるかを指定できます。

転送モードを最も簡単にセットアップするには、次のように、既存のモードを取得して、それを変更します。

gxTransferMode 構造体の中で:
1. 色空間として gxCMYKSpace を設定します。
2. この後、シアンをブラックにコピーするため、sourceMatrix を次のように設定します。
     [       0       0       0       1
             0       0       0       0
             0       0       0       0
             0       0       0       0
             0       0       0       0       ]

参考文献

 * 『Inside Macintosh: QuickDraw GX Objects』の 5-33 および 34 ページには、転送モード行列の詳細が説明されています。


[ Technical Q&A's : QuickDraw GX : GX Graphics : GX09 ]