アルファ値付き色変換レコード †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 型 †
移動 † |