Colors
The color data type
The color data type is used to store general colors. trCAD supports two different color models: RGB and CMYK. Therefore, two distinct constructors for the color data type can be used.
Color constructors
The constructor for using the RGB color mode has the following signature:
rgb( int, int, int )
The three integral values represent the color channels red, green and blue and should be in the interval range [0,255]. The following script creates a color using the rgb constructor:
Example
color c = rgb( 255, 117, 56 )
The constructor for CMYK values has the form
cmyk( float, float, float, float )
The four arguments are the values of the cyan, magenta, yellow and key (black) channels that should be in the range [0.0, 1.0]:
Example
color c = cmyk( 0.63, 0.0, 0.96, 0.01 )
Channel access
In some cases it might be useful to access the channel value of a given color variable directly. This can be done by calling any of the data type members r, g, b, c, m, y or k:
Example
color c = rgb( 255, 117, 56 )
echo( c.g )
Output
117
It is also possible to access values of a different color model than the one used in construction. The color model values are then converted automatically:
Example
color c = cmyk( 0.63, 0.0, 0.96, 0.01 )
echo( c.r )
Output
94
Note
The trCAD color data type is not designed for considering different color spaces (https://en.wikipedia.org/wiki/RGB_color_space) but mainly to provide a buffer for the numerical values of the respective color model. Of course the user can assign the RGB or CMYK data to a certain color space for his own by just proclaiming so.
For the same reason, the convertion between RGB and CMYK color models uses a simple one-to-one mapping algorithm that is very commonly used in web and computer graphics but that does not provide 100 percent convertion correctness. Users that rely on exact CMYK colors should only use the cmyk constructor during the complete process.
The color assignment modifier
The color assignment modifier is a modifier that paints a whole solid in one color. It is automatically constructed when the color data type is used in a modifier chain:
Example
make cmyk( 0.63, 0.0, 0.96, 0.01 ) >> sphere()
make rgb( 255, 0, 128 ) >> translation( <[1.2,0.0,0.0]>) >> sphere()