[UP]


Manual Reference Pages  - hue (3)

NAME

HUE(3f) - [M_pixel:COLOR] converts a color’s components from one color model to another (LICENSE:PD)

CONTENTS

Synopsis
Description
Example
Author
License

SYNOPSIS

subroutine hue(modei,clr1i,clr2i,clr3i,modeo,clr1o,clr2o,clr3o,status)

    character(len=*),intent(in) :: modei
    character(len=*),intent(in) :: modeo
    real,intent(in)             :: clr1i,clr2i,clr3i
    real,intent(out)            :: clr1o,clr2o,clr3o
    integer,intent(out)         :: status

DESCRIPTION

Basic color models:

    +----------------------------------------------------------+
    | valid values for modei and modeo as well as the          |
    | corresponding meanings for clr1*, clr2*, and clr3* are:  |
    +----------------------------------------------------------+
    |model| clr1         |         clr2      |         clr3    |
    |-----+--------------+-------------------+-----------------|
    |hls  |hue           |lightness          |saturation       |
    |-----+--------------+-------------------+-----------------|
    |hsl  |hue           |saturation         |lightness        |
    |-----+--------------+-------------------+-----------------|
    |hvs  |hue           |value              |saturation       |
    |-----+--------------+-------------------+-----------------|
    |hsv  |hue           |saturation         |value            |
    |-----+--------------+-------------------+-----------------|
    |rgb  |red           |green              |blue             |
    |-----+--------------+-------------------+-----------------|
    |cmy  |cyan          |magenta            |yellow           |
    |-----+--------------+-------------------+-----------------|
    |yiq  |gray scale)   |orange-blue        |purple-green     |
    |     |              |chrominance        |chrominance      |
    +----------------------------------------------------------+

o lightness, value, saturation, red, green, blue, cyan, magenta, and yellow range from 0 to 100,
o hue ranges from 0 to 360 degrees,
o y ranges from 0 to 100,
o i ranges from -60 to 60,
o q ranges from -52 to 52
The STATUS variable can signal the following conditions:

     -1   modei = modeo, so no substantial conversion was done,
      1   one of the input color values was outside the allowable range,
      2   modei was invalid
      3   modeo was invalid

EXAMPLE

Sample program

    program demo_hue
    use M_pixel, only : hue
    implicit none
       !                      NAME       RGB(0-255)            HLS(0-100)
       call check_name(’hls’,’red’,      [ 100, 0,   0   ],[ 0,   50,  100 ])
       call check_name(’hls’,’orange’,   [ 100, 65,  0   ],[ 39,  50,  100 ])
       call check_name(’hls’,’yellow’,   [ 100, 100, 0   ],[ 60,  50,  100 ])
       call check_name(’hls’,’green’,    [ 0,   100, 0   ],[ 120, 50,  100 ])
       call check_name(’hls’,’cyan’,     [ 0,   100, 100 ],[ 180, 50,  100 ])
       call check_name(’hls’,’blue’,     [ 0,   0,   100 ],[ 240, 50,  100 ])
       call check_name(’hls’,’magenta’,  [ 100, 0,   100 ],[ 300, 50,  100 ])
       call check_name(’hls’,’black’,    [ 0,   0,   0   ],[ 0,   0,   0   ])
       call check_name(’hls’,’white’,    [ 100, 100, 100 ],[ 0,   100, 0   ])
       call check_name(’hsv’,’black’,    [ 0,   0,   0   ],[ 0,   0,   0   ])
       !                      NAME        RGB(0-255)            HSV(0-100)
       call check_name(’hsv’,’gray50’,   [ 50,  50,  50  ],[ 0,   0,   50  ])
       call check_name(’hsv’,’silver’,   [ 75,  75,  75  ],[ 0,   0,   75  ])
       call check_name(’hsv’,’white’,    [ 100, 100, 100 ],[ 0,   0,   100 ])
       call check_name(’hsv’,’red4’,     [ 55,  0,   0   ],[ 0,   100, 55  ])
       call check_name(’hsv’,’red’,      [ 100, 0,   0   ],[ 0,   100, 100 ])
       call check_name(’hsv’,’olive’,    [ 50,  50,  0   ],[ 60,  100, 50  ])
       call check_name(’hsv’,’yellow’,   [ 100, 100, 0   ],[ 60,  100, 100 ])
       call check_name(’hsv’,’green’,    [ 0,   100, 0   ],[ 120, 100, 100 ])
       call check_name(’hsv’,’lime’,     [ 0,   100, 0   ],[ 120, 100, 100 ])
       call check_name(’hsv’,’teal’,     [ 0,   50,  50  ],[ 180, 100, 50  ])
       call check_name(’hsv’,’cyan’,     [ 0,   100, 100 ],[ 180, 100, 100 ])
       call check_name(’hsv’,’navy’,     [ 0,   0,   50  ],[ 240, 100, 50  ])
       call check_name(’hsv’,’blue’,     [ 0,   0,   100 ],[ 240, 100, 100 ])
       call check_name(’hsv’,’purple’,   [ 63,  13,  94  ],[ 277, 87,  94  ])
       call check_name(’hsv’,’magenta4’, [ 55,  0,   55  ],[ 300, 100, 55  ])
       call check_name(’hsv’,’magenta’,  [ 100, 0,   100 ],[ 300, 100, 100 ])
       call check_name(’hsv’,’maroon’,   [ 69,  19,  38  ],[ 338, 73,  69  ])
    contains
    subroutine check_name(modelout,name,rgb,other)
    ! given a color convert to MODELOUT and compare to expected values
    character(len=*),intent(in)   :: name
    integer,intent(in)            :: rgb(3), other(3)
    character(len=*),intent(in)   :: modelout
       real                       :: val1,val2,val3
       integer                    :: status
       ! convert RGB values to MODELOUT values
       call hue(’rgb’,REAL(rgb(1)),REAL(rgb(2)),REAL(rgb(3)), &
       & modelout,val1,val2,val3,status)
          write(*,*)’COLOR ’//trim(name)
          write(*,*)’EXPECTED ’//modelout//’ ====>’,other
          write(*,*)’RETURNED ’//modelout//’ ====>’, &
          & int([val1+0.5,val2+0.5,val3+0.5])
          write(*,*)’STATUS ==========>’,status
    end subroutine check_name
    end program demo_hue

Results:

    COLOR red
    EXPECTED hls ====>           0          50         100
    RETURNED hls ====>           0          50         100
    STATUS ==========>           0
    COLOR orange
    EXPECTED hls ====>          39          50         100
    RETURNED hls ====>          39          50         100
    STATUS ==========>           0
    COLOR yellow
    EXPECTED hls ====>          60          50         100
    RETURNED hls ====>          60          50         100
    STATUS ==========>           0
    COLOR green
    EXPECTED hls ====>         120          50         100
    RETURNED hls ====>         120          50         100
    STATUS ==========>           0
    COLOR cyan
    EXPECTED hls ====>         180          50         100
    RETURNED hls ====>         180          50         100
    STATUS ==========>           0
    COLOR blue
    EXPECTED hls ====>         240          50         100
    RETURNED hls ====>         240          50         100
    STATUS ==========>           0
    COLOR magenta
    EXPECTED hls ====>         300          50         100
    RETURNED hls ====>         300          50         100
    STATUS ==========>           0
    COLOR black
    EXPECTED hls ====>           0           0           0
    RETURNED hls ====>           0           0           0
    STATUS ==========>           0
    COLOR white
    EXPECTED hls ====>           0         100           0
    RETURNED hls ====>           0         100           0
    STATUS ==========>           0
    COLOR black
    EXPECTED hsv ====>           0           0           0
    RETURNED hsv ====>           0           0           0
    STATUS ==========>           0
    COLOR gray50
    EXPECTED hsv ====>           0           0          50
    RETURNED hsv ====>           0           0          50
    STATUS ==========>           0
    COLOR silver
    EXPECTED hsv ====>           0           0          75
    RETURNED hsv ====>           0           0          75
    STATUS ==========>           0
    COLOR white
    EXPECTED hsv ====>           0           0         100
    RETURNED hsv ====>           0           0         100
    STATUS ==========>           0
    COLOR red4
    EXPECTED hsv ====>           0         100          55
    RETURNED hsv ====>           0         100          55
    STATUS ==========>           0
    COLOR red
    EXPECTED hsv ====>           0         100         100
    RETURNED hsv ====>           0         100         100
    STATUS ==========>           0
    COLOR olive
    EXPECTED hsv ====>          60         100          50
    RETURNED hsv ====>          60         100          50
    STATUS ==========>           0
    COLOR yellow
    EXPECTED hsv ====>          60         100         100
    RETURNED hsv ====>          60         100         100
    STATUS ==========>           0
    COLOR green
    EXPECTED hsv ====>         120         100         100
    RETURNED hsv ====>         120         100         100
    STATUS ==========>           0
    COLOR lime
    EXPECTED hsv ====>         120         100         100
    RETURNED hsv ====>         120         100         100
    STATUS ==========>           0
    COLOR teal
    EXPECTED hsv ====>         180         100          50
    RETURNED hsv ====>         180         100          50
    STATUS ==========>           0
    COLOR cyan
    EXPECTED hsv ====>         180         100         100
    RETURNED hsv ====>         180         100         100
    STATUS ==========>           0
    COLOR navy
    EXPECTED hsv ====>         240         100          50
    RETURNED hsv ====>         240         100          50
    STATUS ==========>           0
    COLOR blue
    EXPECTED hsv ====>         240         100         100
    RETURNED hsv ====>         240         100         100
    STATUS ==========>           0
    COLOR purple
    EXPECTED hsv ====>         277          87          94
    RETURNED hsv ====>         277          86          94
    STATUS ==========>           0
    COLOR magenta4
    EXPECTED hsv ====>         300         100          55
    RETURNED hsv ====>         300         100          55
    STATUS ==========>           0
    COLOR magenta
    EXPECTED hsv ====>         300         100         100
    RETURNED hsv ====>         300         100         100
    STATUS ==========>           0
    COLOR maroon
    EXPECTED hsv ====>         338          73          69
    RETURNED hsv ====>         337          72          69
    STATUS ==========>           0

AUTHOR

John S. Urban

LICENSE

Public Domain


hue (3) March 11, 2021
Generated by manServer 1.08 from 54ebb067-69dd-4e3b-a65b-e9cca33b28c1 using man macros.