アルファ値付き色変換レコード

CXFORMWITHALPHA レコードは CXFORM レコードを拡張したもので、アルファチャネル付きの色変換を可能にします。 次の 2 種類の色変換を使うことができます。

  • 乗算変換
  • 加算変換

乗算変換は、 赤・緑・青・アルファ のそれぞれに 8.8 形式の固定小数の値を掛け算します。この固定小数の 1.0 の値は 0x100 か、10 進数の値で 256 を使って表現します。

次のような式を使って、色 (R,G,B,A) を 色 (R', G', B', A') に変換します。

R' = (R * RedMultTerm) / 256
G' = (G * GreenMultTerm) / 256
B' = (B * BlueMultTerm) / 256
A' = (A * AlphaMultTerm) / 256

加算変換は、 赤・緑・青・アルファ のそれぞれに正の数または負の数の値を足し算します。結果が 255 を超えた場合は、255 に飽和されます。 結果が 0 以下になる場合も同様に、 0 に飽和されます。

次のような式を使って、色 (R,G,B,A) を 色 (R', G', B', A') に変換します。

R' = max(0, min(R + RedAddTerm, 255))
G' = max(0, min(G + GreenAddTerm, 255))
B' = max(0, min(B + BlueAddTerm, 255))
A' = max(0, min(A + AlphaAddTerm, 255))

次のように、乗算変換と加算変換を組み合わせることも可能です。乗算が先に適用されます。

R' = max(0, min(((R * RedMultTerm) / 256) + RedAddTerm, 255))
G' = max(0, min(((G * GreenMultTerm) / 256) + GreenAddTerm, 255))
B' = max(0, min(((B * BlueMultTerm) / 256) + BlueAddTerm, 255))
A' = max(0, min(((A * AlphaMultTerm) / 256) + AlphaAddTerm, 255))

CXFORMWITHALPHA レコードは CXFORM レコードと同様に、バイト境界に合わせられる (byte aligned) 必要があります。

CXFORMWITHALPHA 型

フィールドコメント
HasAddTermsUB[1]加算値を使用する = 1
HasMultTermsUB[1]乗算値を使用する = 1
NbitsUB[4]これ以降のフィールドで使用するビット長
RedMultTermIf HasMultTerms = 1, SB[Nbits]乗算値 (赤)
GreenMultTermIf HasMultTerms = 1, SB[Nbits]乗算値 (緑)
BlueMultTermIf HasMultTerms = 1, SB[Nbits]乗算値 (青)
AlphaMultTermIf HasMultTerms = 1, SB[Nbits]乗算値 (アルファ)
RedAddTermIf HasAddTerms = 1, SB[Nbits]加算値 (赤)
GreenAddTermIf HasAddTerms = 1, SB[Nbits]加算値 (緑)
BlueAddTermIf HasAddTerms = 1, SB[Nbits]加算値 (青)
AlphaAddTermIf HasAddTerms = 1, SB[Nbits]加算値 (アルファ)

移動


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-10-27 (日) 17:36:54 (3134d)