FGALDC 14 /RE:08027 RE:HTML文書の見やすさ  こんにちは、としき さん、はい、私です。(^^; とりあえず、入力窓に文字色と背景色を入力すると結果を出力してくれるバージ ョンをでっち上げてみました。私としてはこれで満足してしまったので、今後改 良するとしても、色名入力に対応したものにする程度でしょう。 あ、いろいろと盲腸のように不要な部分が付いているような気もしますが、そう いうところは耳而夢斎さんのルーチンをそのまんま張りつけただけ、ということ ですんで、よろしくお願いします。 = colcal.def = * m 1 ^\ "" ?. mp[, ps[=pa, mi[-, &11 a=r, &12 b=r, ; ---- 色情報の取得 ---- &g("文字色",15,"#000000") &Sc((a+12),pw) &g("背景色",15,"#ffffff") &Sc((b+12),pw) ;色名→16進表記変換ルーチン作成予定 o=a+12, p=a, &13 (r)?>z ; o=b+12, p=b, &13 (r)?>z ; ; ---- 彩度差算出 ---- &10 c=r, i=0, (3){c..i=(a..i)-(b..i), (c..i<0)?(c..i=-(c..i)) i+=2,} e=c..0+c..2+c..4, ; ---- 明度差算出 ---- o=a, &14 o=b, &14 f=a..0-b..0, (f<0)?{f=-f,} ; ---- 結果表示 ---- &m("明度差:%3d(%s) 彩度差:%3d(%s)",f,"不十分"+(f>125)*2, e,"不十分"+(e>500)*2) :z ; ---- exit ---- mi], ps], mp], &d #] . 10: ; ---- 演算バッファ ---- ;RtmplongGtmplongBtmplong ;0 4 8 (3+$)."$[12]" 11: ; ---- 文字色バッファ ---- ;RcharcolGcharcolBcharcolCharColorName ;0 4 8 12 (3+$)."$[40]" 12: ; ---- 背景色バッファ ---- ;RbackcolGbackcolBbackcolBackColorName ;0 4 8 12 (3+$)."$[40]" 13: ; ---- 色コード数値化 ---- ;<-- o : 16進表記のカラーコードの入っているポインタ ;<-- p : カラー値格納バッファ ;i,j : temporary ;--> r : 0 success ; 1 error i-, (6){ p..i-, i++, } ;バッファを初期化 (o.0!='#')?{ &m(40) (1). } ;16進のみ対応 &Sn(o) i=r-1, (i%3)?{ &m(40) (1). } ;3文字か6文字だけ j=i/3, #F &?("%s",o) #< #g ;作業窓使用 (j){ #d } ' ' (j){ #d } ' ' #< ;3分割 i-, (3){ &h (j-2)?r|=r<<4, ;1桁なら2桁に C → CC p..i=r, #f i+=2, } #[ ;作業窓を閉じる ;&m("%x %x %x ",p..0,p..2,p..4) (0) 14: ; ---- 明度算出 ---- ;<-- o : カラー値格納バッファのポインタ ;--> o..0 : 明度 ;カラー値格納バッファの中身は破壊する &Im(o,299) ;Red &Im(o+4,587) ;Green &Im(o+8,114) ;Blue &La(o,o+4) &La(o,o+8) &Id(o,1000) (0) * [Variables] a 文字色バッファ[40] b 背景色バッファ[40] c 演算バッファ[12] こんなにいらないけど、演算式の簡略化のため e 彩度差 f 明度差 多分、突っ込みどころ満載というような気もしますが、いろいろと教えていただ けると幸いです。                                 としき