alCopyModeColorMatrix

カラーマトリックス コピーモードを設定

alCopyModeColorMatrix arr

arr	: カラーマトリックス (行列) を表す配列

(プラグイン / モジュール : Artlet2D)

解説

画像コピー時にカラーマトリックス (行列) 変換を行うように設定します。

引数 arr は、カラーマトリックスを表す double 型の 1 次元配列で、

arr = m00,m01,m02,m03,m04, m10,m11,m12,m13,m14, m20,m21,m22,m23,m24, m30,m31,m32,m33,m34

となる値を指定します。それぞれの配列要素 (行列要素) は、コピー元の色 (R G B A) を下記のように変換してをコピー先の色 (R' G' B' A') へ出力することを示します。

R' = m00 * R + m01 * G + m02 * B + m03 * A + m04
G' = m10 * R + m11 * G + m12 * B + m13 * A + m14
B' = m20 * R + m21 * G + m22 * B + m23 * A + m24
A' = m30 * R + m31 * G + m32 * B + m33 * A + m34

それぞれの要素は、最大輝度を 1.0 とする値で記述します。

引数配列は、モジュールに内蔵のマクロ MAT_R, MAT_G, MAT_B, MAT_A (= 0, 5, 10, 15) を使用して以下のように記述するとコードが見やすくなります。

	cmatrix(MAT_R) = m00, m01, m02, m03, m04
	cmatrix(MAT_G) = m10, m11, m12, m13, m14
	cmatrix(MAT_B) = m20, m21, m22, m23, m24
	cmatrix(MAT_A) = m30, m31, m32, m33, m34
	alCopyModeColorMatrix cmatrix

マラーマトリックスを用いると、画像の明るさの調整、ネガポジ反転、半透明化、グレースケール変換、セピア色変換、RGB 交換、アルファチャネルのグレースケール画像化など、さまざまな効果を得ることができます。

	(マトリックスの作成例)

	; 無変換 (基本)
	cmatrix(MAT_R) = 1.0, 0.0, 0.0, 0.0, 0.0
	cmatrix(MAT_G) = 0.0, 1.0, 0.0, 0.0, 0.0
	cmatrix(MAT_B) = 0.0, 0.0, 1.0, 0.0, 0.0
	cmatrix(MAT_A) = 0.0, 0.0, 0.0, 1.0, 0.0

	; 全体を明るくする
	cmatrix(MAT_R) = 1.0, 0.0, 0.0, 0.0, 0.2
	cmatrix(MAT_G) = 0.0, 1.0, 0.0, 0.0, 0.2
	cmatrix(MAT_B) = 0.0, 0.0, 1.0, 0.0, 0.2
	cmatrix(MAT_A) = 0.0, 0.0, 0.0, 1.0, 0.2

	; 全体を暗くする
	cmatrix(MAT_R) = 1.0, 0.0, 0.0, 0.0, -0.2
	cmatrix(MAT_G) = 0.0, 1.0, 0.0, 0.0, -0.2
	cmatrix(MAT_B) = 0.0, 0.0, 1.0, 0.0, -0.2
	cmatrix(MAT_A) = 0.0, 0.0, 0.0, 1.0, -0.2

	; 半透明でコピーする
	cmatrix(MAT_R) = 1.0, 0.0, 0.0, 0.0, 0.0
	cmatrix(MAT_G) = 0.0, 1.0, 0.0, 0.0, 0.0
	cmatrix(MAT_B) = 0.0, 0.0, 1.0, 0.0, 0.0
	cmatrix(MAT_A) = 0.0, 0.0, 0.0, 0.5, 0.0

	; グレースケールに変換
	cmatrix(MAT_R) = 0.299, 0.587, 0.114, 0.0, 0.0
	cmatrix(MAT_G) = 0.299, 0.587, 0.114, 0.0, 0.0
	cmatrix(MAT_B) = 0.299, 0.587, 0.114, 0.0, 0.0
	cmatrix(MAT_A) = 0.0, 0.0, 0.0, 1.0, 0.0

	; セピア色に変換
	cmatrix(MAT_R) = 0.393, 0.769, 0.189, 0.0, 0.0
	cmatrix(MAT_G) = 0.349, 0.686, 0.168, 0.0, 0.0
	cmatrix(MAT_B) = 0.272, 0.534, 0.131, 0.0, 0.0
	cmatrix(MAT_A) = 0.0, 0.0, 0.0, 1.0, 0.0

	; ネガポジ反転
	cmatrix(MAT_R) = -1.0, 0.0, 0.0, 0.0, 0.0
	cmatrix(MAT_G) = 0.0, -1.0, 0.0, 0.0, 0.0
	cmatrix(MAT_B) = 0.0, 0.0, -1.0, 0.0, 0.0
	cmatrix(MAT_A) = 0.0, 0.0, 0.0, 1.0, 0.0

	; アルファチャネルをグレースケールに変換
	cmatrix(MAT_R) = 0.0, 0.0, 0.0, 1.0, 0.0
	cmatrix(MAT_G) = 0.0, 0.0, 0.0, 1.0, 0.0
	cmatrix(MAT_B) = 0.0, 0.0, 0.0, 1.0, 0.0
	cmatrix(MAT_A) = 0.0, 0.0, 0.0, 0.0, 1.0

カラーマトリックス コピーモードは、下記の命令に適用されます。

alCopyImageToImage
alCopyImageToScreen
alCopyScreenToImage
alStretchImageToImage
alStretchImageToScreen
alStretchScreenToImage

目的の処理が完了したら、alResetCopyMode 命令でデフォルトのコピーモードに戻すことができます。

コピーモードは、描画先の HSP Screen ID, 仮想イメージ ID を問わずに適用されます。

関連項目

alResetCopyModeコピーモードをリセット(Artlet2D)

サンプル逆引き (1)

sample_08_Copy.hsp

情報

プラグイン / モジュールArtlet2D
バージョン1.01 R3.1
作成日2018/06/16
著作者s.programs
URLhttp://spn.php.xdomain.jp/
備考a2d.hsp をインクルードしてください。
タイプユーザー拡張命令
グループコピーモード
対応環境
  • Windows 版 HSP
移植のヒントWindows XP 以降の環境が必要です。
hs ファイルdoclib\Artlet2D\a2dhelp.hs