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