DECLARE SUB hsv2rgb (hh, ss, vv, r, g, b) DECLARE SUB rgb2hsv (r, g, b, h, s, v) DIM byte AS STRING * 1 OPEN "bs-fg.raw" FOR BINARY AS #1 OPEN "unfme.raw" FOR BINARY AS #2 FOR y = 0 TO 199 FOR x = 0 TO 319 GET #1, , byte r = ASC(byte) GET #1, , byte g = ASC(byte) GET #1, , byte b = ASC(byte) r = r / 255 g = g / 255 b = b / 255 h = h / 255 s = s / 255 v = v / 255 rgb2hsv r, g, b, h, s, v IF h < 260 AND h > 220 THEN r = 0 g = 0 b = 0 ELSE hsv2rgb h, s, v, r, g, b 'r = r * 255 'g = g * 255 'b = b * 255 END IF byte = CHR$(r) PUT #2, , byte byte = CHR$(g) PUT #2, , byte byte = CHR$(b) PUT #2, , byte NEXT NEXT CLOSE SUB hsv2rgb (hh, ss, vv, r, g, b) h = hh: s = ss: v = vv IF s = 0 THEN r = v * 255 g = v * 255 b = v * 255 ELSE IF h = 360 THEN h = 0 h = h / 60 i = INT(h) f = h - i p = v * (1 - s) q = v * (1 - (s * f)) t = v * (1 - (s * (1 - f))) SELECT CASE i CASE 0: r = v * 255: g = t * 255: b = p * 255 CASE 1: r = q * 255: g = v * 255: b = p * 255 CASE 2: r = p * 255: g = v * 255: b = t * 255 CASE 3: r = p * 255: g = q * 255: b = v * 255 CASE 4: r = t * 255: g = p * 255: b = v * 255 CASE 5: r = v * 255: g = p * 255: b = q * 255 END SELECT END IF END SUB SUB rgb2hsv (r, g, b, h, s, v) min = r IF min > g THEN min = g IF min > b THEN min = b max = r IF max < g THEN max = g IF max < b THEN max = b v = max delta = max - min IF max <> 0 THEN s = delta / max ELSE s = 0 IF delta = 0 THEN 'ELSE s = 0 h = -1 EXIT SUB END IF SELECT CASE max CASE r: h = 60 * (g - b) / delta CASE g: h = 120 + 60 * (b - r) / delta CASE ELSE: h = 240 + 60 * (r - g) / delta END SELECT h = ((h MOD 360) + 360) MOD 360 END SUB