基本的なデータ型 > アルファ値付き色変換レコード

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

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 型

フィールド コメント
HasAddTerms UB[1] 加算値を使用する = 1
HasMultTerms UB[1] 乗算値を使用する = 1
Nbits UB[4] これ以降のフィールドで使用するビット長
RedMultTerm If HasMultTerms = 1, SB[Nbits] 乗算値 (赤)
GreenMultTerm If HasMultTerms = 1, SB[Nbits] 乗算値 (緑)
BlueMultTerm If HasMultTerms = 1, SB[Nbits] 乗算値 (青)
AlphaMultTerm If HasMultTerms = 1, SB[Nbits] 乗算値 (アルファ)
RedAddTerm If HasAddTerms = 1, SB[Nbits] 加算値 (赤)
GreenAddTerm If HasAddTerms = 1, SB[Nbits] 加算値 (緑)
BlueAddTerm If HasAddTerms = 1, SB[Nbits] 加算値 (青)
AlphaAddTerm If HasAddTerms = 1, SB[Nbits] 加算値 (アルファ)

移動

最終更新:2017年02月20日 20:36