colo-imp-rainbow.mkiv / last modification: 2020-01-30 14:16
%D \module
%D   [       file=colo-imp-rainbow,
%D        version=2016.03.21,
%D          title=\CONTEXT\ Color Macros,
%D       subtitle=X11,
%D         author=Alan Braslau]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

%D \subsubject{For scientists by scientists}
%D
%D We define color groups having equal gray scale values by either reducing 
%D their rgb values to darken them or by adding equal amounts of $r=g=b$ to 
%D lighten them.
%D
%D \startformula
%D s = .3r + .59g + .11b
%D \stopformula
%D
%D By the way, \CONTEXT\ has always used this formula internally when colors 
%D are converted to gray. 

\definecolorgroup
  [gray]
  [0.1:0.1:0.1,
   0.2:0.2:0.2,
   0.3:0.3:0.3,
   0.4:0.4:0.4,
   0.5:0.5:0.5,
   0.6:0.6:0.6,
   0.7:0.7:0.7,
   0.8:0.8:0.8,
   0.9:0.9:0.9,
   1.0:1.0:1.0]

\definecolorgroup
  [red]
  [0.333:0.000:0.000,
   0.667:0.000:0.000,
   1.000:0.000:0.000,
   1.000:0.143:0.143,
   1.000:0.286:0.286,
   1.000:0.429:0.429,
   1.000:0.571:0.571,
   1.000:0.714:0.714,
   1.000:0.857:0.857]

\definecolorgroup
  [green]
  [0.000:0.169:0.000,
   0.000:0.339:0.000,
   0.000:0.508:0.000,
   0.000:0.678:0.000,
   0.000:0.847:0.000,
   0.024:1.000:0.024,
   0.268:1.000:0.268,
   0.512:1.000:0.512,
   0.756:1.000:0.756]

\definecolorgroup
  [blue]
  [0.000:0.000:0.909,
   0.101:0.101:1.000,
   0.213:0.213:1.000,
   0.326:0.326:1.000,
   0.438:0.438:1.000,
   0.551:0.551:1.000,
   0.663:0.663:1.000,
   0.775:0.775:1.000,
   0.888:0.888:1.000]

\definecolorgroup
  [cyan]
  [0.000:0.143:0.143,
   0.000:0.286:0.286,
   0.000:0.429:0.429,
   0.000:0.571:0.571,
   0.000:0.714:0.714,
   0.000:0.857:0.857,
   0.000:1.000:1.000,
   0.333:1.000:1.000,
   0.667:1.000:1.000]

\definecolorgroup
  [magenta]
  [0.244:0.000:0.244,
   0.488:0.000:0.488,
   0.732:0.000:0.732,
   0.976:0.000:0.976,
   1.000:0.153:1.000,
   1.000:0.322:1.000,
   1.000:0.492:1.000,
   1.000:0.661:1.000,
   1.000:0.831:1.000]

\definecolorgroup
  [yellow]
  [0.112:0.112:0.000,
   0.225:0.225:0.000,
   0.337:0.337:0.000,
   0.449:0.449:0.000,
   0.562:0.562:0.000,
   0.674:0.674:0.000,
   0.787:0.787:0.000,
   0.899:0.899:0.000,
   1.000:1.000:0.091]

\definecolorgroup
  [orange]
  [0.147:0.095:0.000,
   0.293:0.190:0.000,
   0.440:0.285:0.000,
   0.587:0.380:0.000,
   0.733:0.475:0.000,
   0.880:0.569:0.000,
   1.000:0.673:0.026,
   1.000:0.816:0.169,
   1.000:0.959:0.312]

\definecolorgroup
  [violet]
  [0.137:0.075:0.137,
   0.273:0.149:0.273,
   0.410:0.224:0.410,
   0.546:0.298:0.546,
   0.683:0.373:0.683,
   0.819:0.448:0.819,
   0.950:0.527:0.950,
   1.000:0.661:1.000,
   1.000:0.831:1.000]

\definecolorgroup
  [brown]
  [0.209:0.053:0.053,
   0.417:0.106:0.106,
   0.627:0.160:0.160,
   0.737:0.255:0.255,
   0.837:0.355:0.355,
   0.937:0.455:0.455,
   1.000:0.571:0.571,
   1.000:0.714:0.714,
   1.000:0.857:0.857]

%D Define \quote{rainbow} color palets having equal grayscale values.
%D The names correspond to the number color codes used on electrical resistances.

\dorecurse {9} {
  \definepalet
    [rainbow#1]
    [  one#1=brown:#1,
       two#1=red:#1,
     three#1=orange:#1,
      four#1=yellow:#1,
      five#1=green:#1,
       six#1=blue:#1,
     seven#1=violet:#1,
     eight#1=gray:#1]
}

%D Define two more color palets showing grayscale contrast.
%D Note that \emph{none} of these palets are very aesthetic!

\definepalet
  [rainbow0]
  [  one0=brown:8,
     two0=red:7,
   three0=orange:6,
    four0=yellow:5,
    five0=green:4,
     six0=blue:3,
   seven0=violet:2,
   eight0=gray:1]

\definepalet
  [rainbow]
  [ zero=black,
     one=brown:1,
     two=red:2,
   three=orange:3,
    four=yellow:4,
    five=green:5,
     six=blue:6,
   seven=violet:7,
   eight=gray:8,
    nine=white]

\continueifinputfile{colo-imp-rainbow.mkiv}

\usemodule[art-01] \setupbodyfont[8pt]

\starttexdefinition ShowSomething #1
    \startpacked
        \dorecurse {9} {
            \dontleavehmode
            \start
                \ttbf
                \color      [#1:##1] {\hbox to 6em{#1:##1\hss}}
                \tttf
                \quad
                \colorvalue {#1:##1}
                \quad
                \grayvalue  {#1:##1}
                \quad
            \stop
            \par
        }
    \stoppacked
\stoptexdefinition

\starttext

    \startcolumns [n=2,distance=0pt]
        \ShowSomething {gray}
        \ShowSomething {brown}
        \ShowSomething {red}
        \ShowSomething {orange}
        \ShowSomething {yellow}
        \ShowSomething {green}
        \column
        \ShowSomething {cyan}
        \ShowSomething {blue}
        \ShowSomething {magenta}
        \ShowSomething {violet}
    \stopcolumns

    \startalignment [flushleft]
        \dontleavehmode
        \showcolorgroup [brown]   [vertical,name,number]
        \showcolorgroup [red]     [vertical,name]
        \showcolorgroup [orange]  [vertical,name]
        \showcolorgroup [yellow]  [vertical,name]
        \showcolorgroup [green]   [vertical,name]
        \showcolorgroup [cyan]    [vertical,name]
        \showcolorgroup [blue]    [vertical,name]
        \showcolorgroup [violet]  [vertical,name]
        \showcolorgroup [magenta] [vertical,name]
        \showcolorgroup [gray]    [vertical,name]
    \stopalignment

    \page

    \dorecurse {9} {
        \comparepalet [rainbow#1]
    }

    \comparepalet [rainbow0]

    \comparepalet [rainbow]

\stoptext