#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"