19 Conversiones de formatos de color

En general, Allegro est� dise�ada para usarse s�lo con una profundidad de color a la vez, as� que s�lo llamar� una vez a set_color_depth() y entonces almacenar� todos sus bitmaps en el mismo formato. Si quiere mezclar diferentes formatos de p�xel, puede usar create_bitmap_ex() en vez de create_bitmap(), y llamar a bitmap_color_depth() para pedir el formato de la imagen en cuesti�n. La mayor�a de las r�tinas gr�ficas requieren que todos sus par�metros de entrada est�n en el mismo formato (p.ej. no puede expandir un bitmap origen de 15 bits en un destino de 24 bits), pero hay cuatro excepciones: blit() y las rutinas de rotaci�n puede copiar entren bitmaps de cualquier formato, convirtiendo los datos cuando se requiera, draw_sprite() puede dibujar im�genes origen de 256 colores en destion de cualquier formato, draw_character() _siempre_ usa un bitmap origen de 256 colores, sea cual sea el formato de destino, las funciones draw_trans_sprite() y draw_trans_rle_sprite() son capaces de dibujar im�genes de 32 bits RGBA en un destino hicolor o truecolor, siempre y cuando llame antes a set_alpha_blender(), y la funci�n draw_trans_sprite() es capaz de dibujar una imagen con 8 bits de canal alfa encima de una imagen ya existente de 32 bits, siempre y cuando llame antes a set_write_alpha_blender().

Expandir un bitmap origen de 256 colores en un bitmap destino truecolor es muy r�pido (�obviamente deber� ajustar la paleta de colores correcta antes de la conversi�n!). Convertir entre diferentes formatos truecolor es algo m�s lento, y reducir im�genes truecolor a 256 puede ser muy lento (puede acelerarse si crea una tabla global rgb_map antes de realizar la conversi�n).


int bestfit_color(const PALLETE pal, int r, int g, int b);
Busca en la paleta el valor m�s parecido al color requerido, que es especificado en el formato hardware de la VGA 0-63. Normalmente deber�a llamar makecol8() en vez de esto, pero esta funci�n de bajo nivel puede ser �til si necesita usar una paleta de colores diferente a la seleccionada, o si no quiere usar la tabla precalculada rgb_map a prop�sito.

Relacionado con: makecol8.
extern RGB_MAP *rgb_map;
Para acelerar la reducci�n de valores RGB a 8 bits, Allegro usa una tabla precalculada de 32k (5 bits por cada componente de color). Debe crear esta tabla antes de usar las rutinas de sombreado gouraud, y si est� presente, la tabla acelerar� vastamente la funci�n makecol8(). Las tablas RGB pueden ser precalculadas con la utilidad rgbmap, o generadas en tiempo real. La estructura RGB_MAP est� definida como:
   typedef struct {
      unsigned char data[32][32][32];
   } RGB_MAP;
Relacionado con: create_rgb_table, makecol8.
void create_rgb_table(RGB_MAP *table, const PALETTE pal, void (*callback)(int pos));
Llena la tabla RGB especificada con datos precalculados de la paleta elegida. Si la funci�n callback no es NULL, ser� llamada 256 veces durante el c�lculo, permiti�ndole ense�ar un indicador de progreso.
Relacionado con: rgb_map.
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);
Convierte valores de color entre los modos HSV y RGB. Los valores RGB van de 0 a 255, hue va de 0 a 360, y la saturaci�n y el valor van de 0 a 1.



Volver al Indice