Todas las funciones de dibujo de Allegro usan parámetros en enteros para
representar colores. En las resoluciones truecolor estos números codifican
el color directamente como una colección de bits rojos, verdes y azules,
pero en el modo normal de 256 colores, los valores son tratados como índices
de la paleta actual, que es una tabla que contiene las intensidades de rojo,
verde y azul de cada uno de los 256 colores posibles.
La paleta se almacena con estructuras RGB, que contienen intensidades de
rojo, verde y azul en el formato hardware de la VGA, que van de 0 a 63, y
son definidas así:
   typedef struct RGB
   {
      unsigned char r, g, b;
   } RGB;
Por ejemplo:
   RGB negro  = { 0,  0,  0  };
   RGB blanco = { 63, 63, 63 };
   RGB verde  = { 0,  63, 0  };
   RGB gris   = { 32, 32, 32 };
El tipo PALETTE es definido como un array de 256 estructuras RGB.
Puede notar que gran parte del código de Allegro escribe 'palette' como
'pallete'. Esto es porque los ficheros de cabecera de mi viejo compilador
Mark Williams del Atari lo escribían con dos l's, y estoy acostumbrado a
eso. Allegro aceptará sin problemas ambas escrituras, debido a algunos
#defines en allegro/alcompat.h.
void vsync();
   Espera a que empiece un retrazo vertical. El retrazo ocurre cuando el
   rayo de electrones de su monitor ha llegado a la parte inferior de la
   pantalla y está volviendo arriba para hacer otro barrido. Durante este
   corto periodo de tiempo la tarjeta de vídeo no manda datos al monitor,
   por lo que puede hacer cosas que de otra forma no podría, como alterar
   la paleta sin causar parpadeo (nieve). Sin embargo Allegro esperará
   automáticamente el retrazo vertical antes de alterar la paleta o hacer
   scroll por hardware, por lo que normalmente no debe preocuparse por esta
   función.
Relacionado con:
set_palette,
scroll_screen,
timer_simulate_retrace.
void set_color(int index, const RGB *p);
   Cambia la entrada de la paleta especificada al triplete RGB dado. A
   diferencia de otras funciones de paleta, esto no hace sincronización con
   el retrazo, por lo que debería llamar vsync() antes para evitar
   problemas de nieve.
Relacionado con:
set_palette,
get_color,
_set_color.
void _set_color(int index, const RGB *p);
   Esta es una versión inline de set_color(), que puede usar en la función
   callback del simulador de retrazo vertical. Sólo debería ser usada en
   VGA modo 13h y modo-X, porque algunos de las recientes SVGAs no son
   compatibles con la VGA (set_color() y set_palette() usarán llamadas VESA
   en estas tarjetas, pero _set_color() no sabrá nada de eso).
Relacionado con:
set_color,
set_gfx_mode,
timer_simulate_retrace.
void set_palette(const PALETTE p);
   Ajusta la paleta entera de 256 colores. Debe pasar un array de 256
   estructuras RGB. A diferencia de set_color(), no hace falta llamar
   vsync() antes de esta función.
Relacionado con:
select_palette,
palette_color,
set_gfx_mode,
set_palette_range,
set_color,
get_palette.
void set_palette_range(const PALETTE p, int from, int to, int vsync);
   Ajusta las entradas de la paleta desde from hasta to (inclusivos: pase 0
   y 255 para ajustar la paleta entera). Si vsync está activado, espera un
   retrazo vertical, de otro modo cambia los colores inmediatamente.
Relacionado con:
set_palette,
get_palette_range.
void get_color(int index, RGB *p);
   Recupera la entrada de la paleta especificada.
Relacionado con:
get_palette,
set_color.
void get_palette(PALETTE p);
   Recupera la paleta entera de 256 colores. Debe proveer un array de 256
   estructuras RGB para almacenar ahí los colores.
Relacionado con:
get_palette_range,
get_color,
set_palette.
void get_palette_range(PALETTE p, int from, int to);
   Recupera las entradas de la paleta desde from hasta to (inclusivos: pase
   0 y 255 para recuperar la paleta entera).
Relacionado con:
get_palette,
set_palette_range.
void fade_interpolate(const PALETTE source, const PALETTE dest,
        PALETTE output, int pos, int from, to);
   Calcula una paleta temporal en un sitio entre source y dest,
   devolviéndola en el parámetro output. La posición entre los dos extremos
   es especificada por el valor pos: 0 devuelve una copia exacta de source,
   64 devuelve dest, 32 devuelve una paleta a medio camino entre las dos,
   etc. Esta rutina sólo afecta a los colores desde from hasta to
   (inclusivos: pase 0 y 255 para interpolar la paleta entera).
Relacionado con:
fade_in,
fade_out,
fade_from.
void fade_from_range(const PALETTE source, const PALETTE dest,
       int speed, int from, to);
   Funde gradualmente una parte de la paleta desde la paleta source hasta la
   paleta dest. La velocidad va de 1 (lento) a 64 (instantáneo). Esta rutina
   sólo afecta los colores desde from hasta to (inclusivos: pase 0 y 255
   para fundir la paleta entera).
Relacionado con:
fade_from.
void fade_in_range(const PALETTE p, int speed, int from, to);
   Funde gradualmente una parte de la paleta desde una pantalla negra hasta
   la paleta especificada. La velocidad va de 1 (lento) a 64 (instantáneo).
   Esta rutina sólo afecta los colores desde from hasta to (inclusivos: pase
   0 y 255 para fundir la paleta entera).
Relacionado con:
fade_in.
void fade_out_range(int speed, int from, to);
   Funde gradualmente una parte de la paleta desde la paleta actual hasta
   una pantalla negra. La velocidad va de 1 (lento) a 64 (instantáneo). Esta
   rutina sólo afecta los colores desde from hasta to (inclusivos: pase 0 y
   255 para fundir la paleta entera).
Relacionado con:
fade_out.
void fade_from(const PALETTE source, const PALETTE dest, int speed);
   Funde gradualmente desde la paleta source hasta la paleta dest. La
   velocidad va de 1 (lento) a 64 (instantáneo).
Relacionado con:
fade_in,
fade_out,
fade_interpolate,
fade_from_range.
void fade_in(const PALETTE p, int speed);
   Funde gradualmente desde una pantalla negra a la paleta especificada. La
   velocidad va de 1 (lento) a 64 (instantáneo).
Relacionado con:
fade_out,
fade_from,
fade_interpolate,
fade_in_range.
void fade_out(int speed);
   Funde gradualmente la paleta actual hasta una pantalla negra. La
   velocidad va de 1 (lento) a 64 (instantáneo).
Relacionado con:
fade_in,
fade_from,
fade_interpolate,
fade_in_range.
void select_palette(const PALLETE p);
   Rutina fea que puede usar en algunas situaciones peculiares cuando
   necesita convertir entre formatos de imagen con paleta a truecolor.
   Ajusta la tabla de la paleta interna de la misma forma que la función
   set_palette(), para que la conversión use la paleta especificada, pero
   sin afectar de ningún modo al hardware de visualización. La paleta
   antigua es almacenada en un buffer interno, y puede ser recuperada
   llamando unselect_palette().
Relacionado con:
set_palette,
unselect_palette.
void unselect_palette();
   Recupera la tabla de la paleta que estaba en uso antes de la última
   llamada a select_palette().
Relacionado con:
select_palette.
void generate_332_palette(PALETTE pal);
   Construye una paleta truecolor falsa, usando tres bits para el rojo y el
   verde y dos para el azul. La función load_bitmap() devuelve esto si el
   fichero no contiene ninguna paleta (ej. cuando lee un bitmap truecolor).
Relacionado con:
generate_optimized_palette,
set_color_depth.
int generate_optimized_palette(BITMAP *bmp, PALETTE pal,
            const char rsvd[256]);
   Genera una paleta de 256 colores óptima para hacer una versión reducida,
   en cuanto a color, de la imagen truecolor especificada. El parámetro rsvd
   apunta a una tabla que indica qué colores se le permite modificar a la
   función: cero para colores libres que pueden ser asignados como el
   optimizador quiera, valores negativos para colores reservados que no
   pueden usarse, y valores positivos para entradas fijas de la paleta que
   no deben cambiarse, pero que se pueden usar en la optimización.
Relacionado con:
generate_332_palette,
set_color_depth.
extern PALETTE default_palette;
   La paleta por defecto de la BIOS IBM. Se seleccionará automáticamente
   cuando active un nuevo modo gráfico.
Relacionado con:
black_palette,
desktop_palette.
extern PALETTE black_palette;
   Una paleta que contiene colores negros sólidos, usada por las rutinas de
   fundidos.
Relacionado con:
desktop_palette.
extern PALETTE desktop_palette;
   La paleta usada por el escritorio de baja resolución del Atari ST. No
   estoy seguro por qué esto sigue aquí, excepto porque los programas
   grabber y test la usan. Es probablemente el único código heredado del
   Atari que queda en Allegro, y sería una pena quitarlo :-)
Relacionado con:
black_palette.
Volver al Indice