@Section @Title { "@SetColour" and "@SetColor" } @Tag { colour } @Begin @PP The @@SetColour and @@SetColor symbols, setcolour.sym @Index { @@SetColour symbol } setcolor.sym @Index { @@SetColor symbol } which have identical effect, return their right parameter in the colour specified by their left parameter. The form of the left parameter is implementation-dependent; in Basser Lout it must be an object whose value is a sequence of words comprising a PostScript command for setting colour. For example, @ID @Code "{ 1.0 0.0 0.0 setrgbcolor } @SetColour { hello, world }" produces the red result @ID { @BackEnd @Case { PostScript @Yield { { 1.0 0.0 0.0 setrgbcolor } @SetColour { hello, world } } PDF @Yield { { 1.0 0.0 0.0 rg 1.0 0.0 0.0 RG } @SetColour { hello, world } } } } Of course, a colour output device is needed to see the effect; on a monochrome device the result will be some shade of grey. The @@SetColour command will not accept an empty left parameter (it refuses to believe that this could cause a change of colour), but otherwise it trusts the user to supply something sensible. @PP The @@SetColour command accepts the special value {@Code "nochange"} for the left parameter. This value causes the right parameter to have the colour it would have had without the @@SetColour command. @PP There is no default colour, so the user must ensure that the root galley or each of its components is enclosed in a @@SetColour symbol whose left parameter is not {@Code "nochange"}. @PP Lout makes no attempt to understand colour, it simply prints the PostScript commands when appropriate. This has the advantage of permitting access to any of PostScript's colour models (some require initialization which can be supplied using @@PrependGraphic), but the disadvantage of offering no way to make relative changes (`as before only redder,' and so on). @PP For those who wish to obtain colour without working very hard, the @Code setrgbcolor command used above is available in every version of PostScript, requires no initialization, and is simple to use. The three numbers, which range from 0.0 to 1.0, determine the intensity of red, green, and blue respectively. Some useful values for the left parameter are @ID @Tab @Fmta { @Col @Code A ! @Col @I B } { @Rowa A { 1.0 0.0 0.0 setrgbcolor } B { red } @Rowa A { 0.0 1.0 0.0 setrgbcolor } B { green } @Rowa A { 0.0 0.0 1.0 setrgbcolor } B { blue } @Rowa A { 1.0 1.0 1.0 setrgbcolor } B { white } @Rowa A { 0.5 0.5 0.5 setrgbcolor } B { grey } @Rowa A { 0.0 0.0 0.0 setrgbcolor } B { black } } Colouring an object white is useful for producing an empty space whose size is that of some object. @End @Section