complementaryColor

タグ: ,

引数に指定したColor値の補色を返します。

構文
  1. Double = complementaryColor( color )
引数
color
Color値
戻値
補色

プログラム

//////////////////////////////////////////////////
// 【引数】
//   color : Color値 
// 【戻値】
//   補色 
//////////////////////////////////////////////////
FUNCTION complementaryColor(color)
	DIM array = colorToRGB(color)
	DIM num = CALCARRAY(array, CALC_MAX) + CALCARRAY(array, CALC_MIN)
	arrayMap(num + " - %val%", array)
	RESULT = RGBToColor(array[0], array[1], array[2])
FEND

//////////////////////////////////////////////////
// 【引数】
//   callback : 配列の各要素に適用するコールバック関数 
//   array : コールバック関数を適用する配列 
// 【戻値】
//   callback関数を適用した後、 適用後の要素を含む配列 
//////////////////////////////////////////////////
PROCEDURE arrayMap(callback, var array[])
	DIM tmp[RESIZE(array)]
	DIM n = 0
	FOR %val% IN array
		tmp[n] = EVAL(callback)
		n = n + 1
	NEXT
	RESIZE(array, RESIZE(tmp))
	FOR n = 0 TO RESIZE(tmp)
		array[n] = tmp[n]
	NEXT
FEND

//////////////////////////////////////////////////
// 【引数】
//   color : Color値 
// 【戻値】
//   赤成分、緑成分、青成分を格納した配列 
//////////////////////////////////////////////////
FUNCTION colorToRGB(color)
	DIM array[2]
	array[0] = color AND $FF
	array[1] = (color AND $FF00) / $100
	array[2] = (color AND $FF0000) / $10000
	RESULT = SLICE(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   r : 赤成分 
//   g : 緑成分 
//   b : 青成分 
// 【戻値】
//   Color値 
//////////////////////////////////////////////////
FUNCTION RGBToColor(r, g, b)
	RESULT = r + g * 256 + b * 65536
FEND

解説

  1. 2行目
    	DIM array = colorToRGB(color)
    Color値をRGBの各成分に分解し配列に格納する。
  2. 3行目
    	DIM num = CALCARRAY(array, CALC_MAX) + CALCARRAY(array, CALC_MIN)
    RGB値の各成分の最大値と最小値の和を求めnumに代入する。
  3. 4行目
    	arrayMap(num + " - %val%", array)
    numから各成分を引く。
  4. 5行目
    	RESULT = RGBToColor(array[0], array[1], array[2])
    RGB値からColor値に変換した値を戻り値として返す。

Was this post helpful?

関連記事

invertedColor
引数に指定したColor値の反転色を返します。
CHKIMG
指定画像が画面上にあるかチェックしあればその情報を返します。
colorToRGB
Color値を赤成分、緑成分、青成分に変換し配列で返します。
RGBToColor
引数に指定された赤成分、緑成分、青成分からColor値を求めます。
colorToBGR
Color値を青成分、緑成分、赤成分に変換し配列で返します。
BGRToColor
引数に指定された青成分、緑成分、赤成分からColor値を求めます。
PEEKCOLOR
PEEKCOLOR関数は、指定座標の色を取得する関数です。