Next: Transforms
Up: Objects
Previous: Objects
Colours are generally represented as triples of coordinates,
representing red, green, and blue components. Sometimes, an opacity
is included as a fourth component, to determine how much the colour
will let other objects show through. Sometimes it is useful
to work with colours in a different space, Hue-Saturation-Light, which
is also a triple of coordinates. Each colour component is usually either a
real value in the range zero to one, or an integral value in the range
zero to 255. A colour type is defined (Colour) which uses a
single long integer to store colours as four eight-bit integers.
Various macros and functions exist to manipulate these colours:
make_Colour( r, g, b )
-
- Returns a value of type
Colour which contains the specified red, green, and blue
components, each of which must be within the range zero to 255.
make_rgba_Colour( r, g, b, a )
-
- Returns a value of type
Colour which contains the specified red, green, blue, and alpha
(opacity) components, each of which must be within the range zero to 255.
get_Colour_r( col )
-
- Given an argument of type
Colour, returns the value of the red component, in the range
zero to 255.
get_Colour_g( col )
-
- Given an argument of type
Colour, returns the value of the green component, in the range
zero to 255.
get_Colour_b( col )
-
- Given an argument of type
Colour, returns the value of the blue component, in the range
zero to 255.
get_Colour_a( col )
-
- Given an argument of type
Colour, returns the value of the alpha component, in the range
zero to 255.
make_Colour_0_1( r, g, b )
-
- Returns a value of type
Colour which contains the specified red, green, and blue
components, each of which must be within the range zero to 1.0.
make_rgba_Colour_0_1( r, g, b )
-
- Returns a value of type
Colour which contains the specified red, green, blue, and
alpha components, each of which must be within the range zero to 1.0.
get_Colour_r_0_1( col )
-
- Given an argument of type
Colour, returns the value of the red component, in the range
zero to 1.0.
get_Colour_g_0_1( col )
-
- Given an argument of type
Colour, returns the value of the green component, in the range
zero to 1.0.
get_Colour_b_0_1( col )
-
- Given an argument of type
Colour, returns the value of the blue component, in the range
zero to 1.0.
get_Colour_a_0_1( col )
-
- Given an argument of type
Colour, returns the value of the alpha component, in the range
zero to 1.0.
get_Colour_luminance( col )
-
- Given an argument of type
Colour, returns the brightness of the colour, in the range zero
to 255. This is used to convert colour to gray-scale.
A surface property type is also defined, to provide descriptions of
surface lighting characteristics:
fill_Surfprop( spr, a, d, s, e, o )
-
- Fills in the
spr structure, which is of type Surfprop, with the five
parameters: ambient coefficient, diffuse coefficient, specular
coefficient, specular exponent, and opacity.
Surfprop_a( spr )
-
- Returns the ambient coefficient, a
number in the range of zero to one.
Surfprop_d( spr )
-
- Returns the diffuse coefficient, a
number in the range of zero to one.
Surfprop_s( spr )
-
- Returns the specular coefficient, a
number in the range of zero to one.
Surfprop_se( spr )
-
- Returns the specular exponent, a
number in the range of zero to infinity, typically less than 100.
Surfprop_t( spr )
-
- Returns the opacity (inverse of
transparency), a number in the range of zero to one.
Several functions are available which deal with colours and surface
properties:
public void rgb_to_hsl(
Real r,
Real g,
Real b,
Real *h,
Real *s,
Real *l )
public void hsl_to_rgb(
Real h,
Real s,
Real l,
Real *r,
Real *g,
Real *b )
public void convert_colour_to_hsl(
Colour rgb,
Colour *hsl )
public void convert_colour_to_rgb(
Colour hsl,
Colour *rgb )
-
- Converts between red-green-blue and hue-saturation-light space.
public BOOLEAN equal_colours(
Colour col1,
Colour col2 )
-
- returns TRUE if the two colours are equal.
public int get_colour_distance(
int r,
int g,
int b,
Colour c2 )
-
- finds the squared Euclidean distance between the first colour,
specified by its components, and the second colour, c2.
public int find_closest_colour(
int r,
int g,
int b,
int n_colours,
Colour colours[] )
-
- Given the three components of a target colour, and a list of
n_colours colours, returns the index in the list of the
closest colour to the target colour.
public BOOLEAN lookup_colour(
char colour_name[],
Colour *col )
-
- Given a colour name, such as ``red'' or ``dark_blue''
looks up the name in a list of colours and passes back the
corresponding colour, returning TRUE if successful. The
supported colours are from the list of about 300 named X colours.
public BOOLEAN lookup_colour_name(
Colour col,
char colour_name[] )
-
- This performs the inverse of the lookup_colour()
function, taking a colour and seeing if it matches one of the known
named colours. If so, the colour name is copied into the argument
colour_name, and TRUE is returned.
Next: Transforms
Up: Objects
Previous: Objects