invertedColor

構文
invertedColor( color )
引数
color
戻値

プログラム

//////////////////////////////////////////////////
// 【引数】
//   color 
// 【戻値】
// 
//////////////////////////////////////////////////
FUNCTION invertedColor(color)
	DIM array = strSplit(color, 2)
	FOR i = 0 TO UBound(array)
		array[i] = decToHex($FF - hexToDec(array[i]))
	NEXT
	RESULT = JOIN(array, "")
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 要素を追加する配列(参照引数) 
//   str : 追加する要素 
// 【戻値】
//   処理後の配列の中の要素の数 
//////////////////////////////////////////////////
FUNCTION arrayPush(var arr[], str)
	DIM res = RESIZE(arr, UBound(arr) + 1)
	arr[res] = str
	RESULT = res + 1
FEND

//////////////////////////////////////////////////
// 【引数】
//   dec : 10進数 
// 【戻値】
//   16進数に変換した値 
//////////////////////////////////////////////////
FUNCTION decToHex(dec)
	RESULT = FORMAT(VAL(dec), 0, -1)
FEND

//////////////////////////////////////////////////
// 【引数】
//   hex : 16進数 
// 【戻値】
//   10進数に変換した値 
//////////////////////////////////////////////////
FUNCTION hexToDec(hex)
	dec = 0
	hex = STRCONV(hex, SC_LOWERCASE)
	FOR n = 1 TO LENGTH(hex)
		str = COPY(hex, n, 1)
		IFB CHKNUM(str) THEN
			num = str
		ELSE
			num = ASC(str) - 87
		ENDIF
		dec = dec + (num * POWER(16, LENGTH(hex) - n))
	NEXT
	RESULT = dec
FEND

//////////////////////////////////////////////////
// 【引数】
//   string : 分割する文字列 
//   length : 各要素の最大長 
// 【戻値】
// 
//////////////////////////////////////////////////
FUNCTION strSplit(string, length = 1)
	DIM array[-1]
	WHILE LENGTH(string)
		arrayPush(array, COPY(string, 1, length))
		string = COPY(string, length + 1)
	WEND
	RESULT = SLICE(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   配列 : 上限値を求める配列 
// 【戻値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(array[])
	RESULT = RESIZE(array)
FEND