HSPでカラーコードを使う。

#deffunc cc2rgb ref array RGB,str cc
カラーコードをRGB配列に変換する。
#define ctype apply3 array RGB
配列を3つの引数に展開する。
#define ccolor str cc
カラーコードを直接colorに適用する。

同じ色でcolorを何回も適用する場合はRGB配列をキャッシュとして保持しておいた方がオーバーヘッドも少なくていいと思う。

#deffunc cc2rgb ref array RGB,str cc
カラーコードをRGB配列に変換する。
#define ctype apply3 array RGB
配列を3つの引数に展開する。
#define ccolor str cc
カラーコードを直接colorに適用する。

同じ色でcolorを何回も適用する場合はRGB配列をキャッシュとして保持しておいた方がオーバーヘッドも少なくていいと思う。

  • タグ:
  • タグはありません
#module @cc2rgb
	#deffunc local cc2rgb array RGB,str _cc
		cc=_cc
		ccLen=strlen(cc)
		cci=int("$"+strmid(cc,1,ccLen-1))
		if ccLen=7 {
			R=cci>>16&$FF
			G=cci>>8 &$FF
			B=cci    &$FF
		}
		else:if ccLen=4 {
			R=cci>>8&$F: R|=R<<4
			G=cci>>4&$F: G|=G<<4
			B=cci   &$F: B|=B<<4
		}
		else: return 1
		RGB=R,G,B
	return 0
	#define global cc2rgb(%1,%2) dim %1,3: cc2rgb@@cc2rgb %1,%2
	#define global ctype apply3(%1) %1(0),%1(1),%1(2)
	#define global ccolor(%1) %tccolor \
		cc2rgb %i,%1 :\
		color apply3(%o)
#global

cc2rgb skyBlue,"#3399FF"
cc2rgb pink,"#F7F"

color apply3(skyBlue)
boxf 0,0,200,200

color apply3(pink)
mes strf("skyBlue=RGB(%d,%d,%d)",apply3(skyBlue))
mes strf("pink=RGB(%d,%d,%d)",apply3(pink))

ccolor "#33FF33"
mes "GReeeeeN"