#!/bin/sh # MetaCard 2.4 stack # The following is not ASCII text, # so now would be a good time to q out of more exec mc $0 "$@" ô colorslider2ˆ`¬¬¬¬¬¬¬¬¬¬¬¬±r ColorSlider UGenevaê P)on scrollbarDrag x put x into fld (short name of the target) set the backColor of grc _test to HSVtoRGB(fld "H",fld "S",fld "V") end scrollbarDrag function HSVtoRGB h, s, v local rgb, i, f, p, q, t set the numberFormat to "0.###############" divide s by 100 divide v by 100 if s is 0 then put v,v,v into rgb else divide h by 60 put trunc(h) into i put h - i into f put v * (1 - s) into p put v * (1 - s * f) into q put v * (1 - s * (1- f)) into t if i is 0 then put v,t,p into rgb if i is 1 then put q,v,p into rgb if i is 2 then put p,v,t into rgb if i is 3 then put p,q,v into rgb if i is 4 then put t,p,v into rgb if i is 5 then put v,p,q into rgb end if return round(item 1 of rgb * 255), round(item 2 of rgb * 255), round(item 3 of rgb * 255) end HSVtoRGB function RGBtoHSV r, g, b local maxv, minv, diff, s, rc, gc, bc, h set the numberFormat to "0.###############" put r / 255 into r put g / 255 into g put b / 255 into b put max(r,g,b) into maxv put min(r,g,b) into minv put maxv - minv into diff if maxv <> 0 and diff <> 0 then put diff / maxv into s put (maxv - r) / diff into rc put (maxv - g) / diff into gc put (maxv - b) / diff into bc if r = maxv then put bc - gc into h else if g = maxv then put 2 + rc - bc into h else if b = maxv then put 4 + gc - rc into h multiply h by 60 if h < 0 then add 360 to h end if else put 0 into s put 0 into h end if return round(h),round(s * 100),round(maxv * 100) end RGBtoHSV ëìíîïðñòóôë_testK@ÿÿ'ªm ìH-h ?$ ê 359íHéae•ŠÿÿµÕ 4µÕ359 îS-h ?µ$ ê 100ïSéaeºŠÿÿÿÿ‡¤c‚100 ðV-h ?Ú$ ê 100ñVéaeàŠÿÿÿÿ‡¤c‚100 ò- / ê Hue ó- µ> ê Saturation ô- Ú> ê Value