- bestfit_color — Finds a palette color fitting the requested RGB values.
- create_rgb_table — Generates an RGB mapping table with lookup data for a palette.
- hsv_to_rgb — Converts color values between the HSV and RGB color spaces.
- rgb_map — Look up table to speed up reducing RGB values to palette colors.
- rgb_to_hsv — Converts color values between the HSV and RGB color spaces.
In general, Allegro is designed to be used in only one color depth at a 
time, so you will call set_color_depth() once and then store all your 
bitmaps in the same format. If you want to mix several different pixel 
formats, you can use create_bitmap_ex() in place of create_bitmap(), and 
call bitmap_color_depth() to query the format of a specific image. Most of 
the graphics routines require all their input parameters to be in the same 
format (eg. you cannot stretch a 15-bit source bitmap onto a 24-bit 
destination), but there are some exceptions:
- 
   blit() and the rotation routines can copy between bitmaps of any format,
   converting the data as required.
- 
   draw_sprite() can draw 256-color source images onto destinations of any
   format.
- 
   draw_character_ex() _always_ uses a 256-color source bitmap, whatever the
   format of the destination.
- 
   The draw_trans_sprite() and draw_trans_rle_sprite() functions are able to
   draw 32-bit RGBA images onto any hicolor or truecolor destination, as long
   as you call set_alpha_blender() first.
- 
   The draw_trans_sprite() function is able to draw an 8-bit alpha channel
   image over the top of an existing 32-bit image, as long as you call
   set_write_alpha_blender() first.
Expanding a 256-color source onto a truecolor destination is fairly fast 
(obviously you must set the correct palette before doing this conversion!). 
Converting between different truecolor formats is slightly slower, and 
reducing truecolor images to a 256-color destination is very slow (it can be 
sped up significantly if you set up the global rgb_map table before doing 
the conversion).
   Searches the specified palette for the closest match to the requested 
   color, which are specified in the VGA hardware 0-63 format. Normally you 
   should call makecol8() instead, but this lower level function may be 
   useful if you need to use a palette other than the currently selected 
   one, or specifically don't want to use the rgb_map lookup table.
Return value:
   Returns the index of the palette for the closest match to the requested
   color.
See also:
makecol8.
   To speed up reducing RGB values to 8-bit paletted colors, Allegro uses a 
   32k lookup table (5 bits for each color component). You must set up this 
   table before using the gouraud shading routines, and if present the table 
   will also vastly accelerate the makecol8() and some create_*_table()
   functions. RGB tables can be precalculated with the rgbmap utility, or
   generated at runtime with create_rgb_table().
      
See also:
create_rgb_table,
makecol8,
create_trans_table,
create_light_table,
create_color_table.
Examples using this:
ex3d,
excolmap,
exrgbhsv,
exshade,
extrans.
   Fills the specified RGB mapping table with lookup data for the specified 
   palette. If the callback function is not NULL, it will be called 256 
   times during the calculation, allowing you to display a progress 
   indicator. Example:
      RGB_MAP rgb_table;
      
      create_rgb_table(&rgb_table, palette, NULL);
      rgb_map = &rgb_table;
See also:
rgb_map.
Examples using this:
ex3d,
excolmap,
exrgbhsv,
exshade,
extrans.
void hsv_to_rgb(float h, float s, float v, int *r, int *g, int *b); 
void rgb_to_hsv(int r, int g, int b, float *h, float *s, float *v); 
   Convert color values between the HSV and RGB color spaces. The RGB values 
   range from 0 to 255, hue is from 0 to 360, and saturation and value are 
   from 0 to 1. Example:
      int r, g, b;
      float hue, saturation, value;
      ...
      /* Convert a reddish color to HSV format. */
      rgb_to_hsv(255, 0, 128, &hue, &saturation, &value);
      
      /* Now put our tin foil hat, and verify that. */
      hsv_to_rgb(hue, saturation, value, &r, &g, &b);
      ASSERT(r == 255);
      ASSERT(g == 0);
      ASSERT(b == 128);
Examples using this:
exlights,
exrgbhsv.