Developer Tools
Downloads
Algorithms
 
News
 
Colors
Tools: RAD Clarion for Windows, version 6.x
 
CMYK to RGB
Library: CHSTD, CMYKtoColor()

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

RGB to CMYK
Library: CHSTD, ColorToCMYK()

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

HSL to Color
Library: CHSTD, HSLtoColor()
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
  end

H,S,L - HSL
Red, Green, Blue - RGB
H0,V0,V1,V2 - local variables

 
Color to HSL
Library: CHSTD, ColorToHSL()
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
end

H,S,L - HSL
Red, Green, Blue - RGB
A1,S1,Min,Max - local variables

HSV to Color
Library: CHSTD, HSVtoColor()
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
end

H,S,V - HSV
Red, Green, Blue - RGB
F0,VS,P0,Q0,T0 - local variables

Color to HSV
Library: CHSTD, ColorToHSV()
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
end

H,S,V - HSV
Red, Green, Blue - RGB
Delta,H0 - local variables

YUV to Color
Library: CHSTD, YUVtoColor()
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

Color to YUV
Library: CHSTD, ColorToYUV()
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)) + 128

Y,U,V - YUV
Red, Green, Blue - RGB

 
  (c) Sergey Chushkin, 2000-2009
Designer & Programmer