|
|
if (C +
K) < 255
Red = 255 - (C + K)
end
if (M + K) < 255
Green = 255 - (M + K)
end
if (Y + K) < 255
Blue = 255 - (Y + K)
end
C,M,Y,K - CMYK
Red, Green, Blue - RGB
|
C = 255 - Red
M = 255 - Green
Y = 255 - Blue
K = CHOOSE(C < M, C, M)
if Y < K
K = Y
end
if K > 0
C -= K
M -= K
Y -= K
end
! Correct For Print
Min = CHOOSE(C < M, C, M)
if Y < Min
Min = Y
end
if Min + K > 255
Min = 255 - K
end
C -= Min
M -= Min
Y -= Min
K += Min
end
C,M,Y,K - CMYK
Red, Green, Blue - RGB
Min - local variable
|
if L <> 0
if S = 0
Red = L
Green = L
Blue = L
else
if L <= 128
V2 = L * (255 + S) / 255
else
V2= L + S - (L*S)/255
end
V1 = 2*L - V2
H0 = H + 256/3
do Calc
Red = V0
H0 = H
do Calc
Green = V0
H0 = H - 256/3
do Calc
Blue = V0
end
end
Calc routine
if H0 < 0
H0 += 255
elsif H0 > 255
H0 -= 255
end
if H0 < 255/6
V0 = V1 + ((V2-V1)*H0 + 255/12)/(255/6)
elsif H0 < 128
V0 = V2
elsif H0 < 255*2/3
V0 = V1 + ((V2-V1)*(255*2/3 - H0) + 255/12)/(255/6)
else
V0 = V1
endH,S,L - HSL
Red, Green, Blue - RGB
H0,V0,V1,V2 - local variables |
|
Max = fRGBmax(RGB) ! maximum value of color
Min = fRGBmin(RGB) ! minimum value of color
if Max = Min
H = 0
S = 0
else
A1 = Max/255 + Min/255
S1 = Max/255 - Min/255
L = (Max + Min) / 2
if L < 128
S = (S1 / A1) * 255
else
S = (S1 / (2-S1) ) * 255
end
case Max
of Red
H = ( (Green-Blue)/255 / S1 ) * 60
of Green
H = ( (2 + (Blue-Red)/255) / S1 ) * 60
of Blue
H = ( (4 + (Red-Green)/255) / S1 ) * 60
end
if H < 0
H += 255
end
endH,S,L - HSL
Red, Green, Blue - RGB
A1,S1,Min,Max - local variables |
if S = 0 ! achromatic:
shades of gray
Red = V
Green = V
Blue = V
else ! chromatic color
F0 = H/255*6 - int(H/255*6)
VS = V * S / 255
P0 = V - int(VS)
Q0 = V - int(VS * F0)
T0 = V - int(VS * (1-F0))
case int(H/255*6)
of 0
Red = V
Green = T0
Blue = P0
of 1
Red = Q0
Green = V0
Blue = P0
of 2
Red = P0
Green = V
Blue = T0
of 3
Red = P0
Green = Q0
Blue = V
of 4
Red = T0
Green = P0
Blue = V
of 5
Red = V
Green = P0
Blue = Q0
end
endH,S,V - HSV
Red, Green, Blue - RGB
F0,VS,P0,Q0,T0 - local variables |
V = fRGBmax(RGB)
Delta = V - fRGBmin(RGB)
S = choose(V=0, 0, Delta * 255 / V)
if S = 0
H = 0
else
if Red = V
H0 = (Green - Blue) / Delta
elsif Green = V
H0 = 2 + (Blue-Red) / Delta
else
H0 = 4 + (Red-Green) / Delta
end
if H0 < 0
H0 += 6
end
H = H0 * 255/6
endH,S,V - HSV
Red, Green, Blue - RGB
Delta,H0 - local variables |
Red = round(1.164383 * (Y-16) + 1.596027 * (parV-128))
Blue = round(1.164383 * (Y-16) - (0.391762 * (parU-128)) - (0.812968 *
(parV-128)))
Green = round(1.164383 * (Y-16) + 2.017232 * (parU-128))Y,U,V - YUV
Red, Green, Blue - RGB |
K = 0.299 * Red + 0.587 * Green + 0.114 * Blue
Y = round(0.859 * K) + 16
U = round(0.496 * (Blue - K)) + 128
V = round(0.627 * (Red - K)) + 128Y,U,V - YUV
Red, Green, Blue - RGB |
|