Hay dos funciones de alto nivel para reproducir animaciones FLI/FLC:
play_fli(), la cual lee datos directamente del disco, y play_memory_fli(),
la cual usa datos que ya est�n cargados en la RAM. Aparte de las diferentes
fuentes de las que se sacan los datos, estas dos funciones se comportan de
forma id�ntica. Ambas dibujan la animaci�n en el bitmap especificado, que
deber�a ser normalmente screen. Los cuadros se alinear�n con la esquina
superior izquierda del bitmap: si quiere posicionarlos en otra parte de la
pantalla tendr� que crear un sub-bitmap y decirle al reproductor FLI que
dibuje all� la animaci�n. Si loop est� activado, el reproductor volver� al
principio de la animaci�n cuando �sta acabe, de otro modo, reproducir� la
animaci�n una vez. Si la funci�n callback no es NULL, ser� llamada por cada
frame, permiti�ndole realizar tareas en segundo plano. La rutina de callback
debe devolver cero: si retorna un valor que no es cero, el reproductor se
parar� (este es el �nico modo de parar una animaci�n que est� siendo
repetida). El reproductor FLI devuelve FLI_OK si ha llegado al final del
fichero, FLI_ERROR si hubo problemas, y el valor de la funci�n callback, si
fue �sta la que par� la reproducci�n. Si necesita distinguir entre
diferentes valores de retorno, su rutina de callback deber�a devolver
enteros positivos, ya que FLI_OK es cero y FLI_ERROR negativo. Tome nota de
que el reproductor FLI s�lo funcionar� si se instal� el m�dulo de
temporizaci�n, y que alterar� la paleta de colores seg�n la del fichero de
animaci�n.
Ocasionalmente podr�a necesitar un control m�s detallado sobre la
reproducci�n FLI, por ejemplo si quiere sobreimprimir alg�n texto sobre la
animaci�n, o reproducirla a una velocidad diferente. Puede hacer ambas
cosas usando las funciones de bajo nivel descritas abajo.
int play_fli(const char *filename, BITMAP *bmp, int loop, int (*callback)());
Reproduce un fichero FLI o FLC del Autodesk Animator, leyendo los datos
del disco seg�n se necesiten.
Relacionado con:
play_memory_fli,
install_timer,
fli_frame.
int play_memory_fli(const void *fli_data, BITMAP *bmp, int loop,
int (*callback)());
Reproduce una animaci�n FLI o FLC del AutoDesk Animator, leyendo los datos
de una copia de un fichero que se almacena en memoria. Puede obtener el
puntero fli_data reservando un bloque de memoria con malloc y copiando el
fichero FLI all�, o importando un FLI en un fichero de datos con el
grabber. Reproducir animaciones desde la memoria es obviamente m�s r�pido
que desde disco, y es particularmente �til con animaciones FLI peque�as
que se repiten. Sin embargo, las animaciones pueden f�cilmente llegar a
ser grandes, por lo que en la mayor�a de los casos ser�a mejor que use
play_fli().
Relacionado con:
play_fli,
install_timer,
fli_frame.
int open_fli(const char *filename);
int open_memory_fli(const void *fli_data);
Abre un fichero FLI para reproducirlo, leyendo los datos del disco o de
la memoria respectivamente. Devuelve FLI_OK con �xito. La informaci�n del
FLI actual est� almacenada en variables globales, por lo que s�lo puede
tener una animaci�n abierta a la vez.
Relacionado con:
close_fli,
next_fli_frame.
void close_fli();
Cierra un FLI cuando haya acabado con �l.
Relacionado con:
open_fli.
int next_fli_frame(int loop);
Lee el siguiente cuadro de la animaci�n actual. Si loop est� activado, el
reproductor volver� al principio cuando llegue al final del fichero, o
devolver� FLI_EOF si loop est� desactivado. Devuelve FLI_OK con �xito,
FLI_ERROR o FLI_NOT_OPEN si hubo error, y FLI_EOF al alcanzar el final del
fichero. El cuadro es le�do y almacenado en las variables globales
fli_bitmap y fli_palette.
Relacionado con:
open_fli,
fli_bitmap,
fli_palette,
fli_timer,
fli_frame.
extern BITMAP *fli_bitmap;
Contiene el cuadro actual de la animaci�n FLI/FLC.
Relacionado con:
next_fli_frame,
fli_bmp_dirty_from,
fli_palette.
extern PALETTE fli_palette;
Contiene la paleta del FLI actual.
Relacionado con:
next_fli_frame,
fli_pal_dirty_from,
fli_bitmap.
extern int fli_bmp_dirty_from;
extern int fli_bmp_dirty_to;
Estas variables son fijadas por next_fli_frame() para indicar qu� parte
de fli_bitmap ha cambiado desde la �ltima llamada a
reset_fli_variables(). Si fli_bmp_dirty_from es mayor que
fli_bmp_dirty_to, el bitmap no cambi�. De otro modo, las l�neas de
fli_bmp_dirty_from a fli_bmp_dirty_to (inclusive) fueron alteradas.
Puede usar estos valores cuando copie fli_bitmap en pantalla, para
evitar mover datos innecesariamente.
Relacionado con:
fli_bitmap,
reset_fli_variables.
extern int fli_pal_dirty_from;
extern int fli_pal_dirty_to;
Estas variables son fijadas por next_fli_frame() para indicar qu� parte
de fli_palette fue cambiada desde la �ltima llamada a
reset_fli_variables(). Si fli_pal_dirty_from es mayor que
fli_pal_dirty_to, la paleta no fue modificada. De otro modo, los colores
de fli_pal_dirty_from a fli_pal_dirty_to (inclusive) fueron alterados.
Puede usar estas variables cuando actualice la paleta hardware, para
evitar llamadas innecesarias a set_palette().
Relacionado con:
fli_palette,
reset_fli_variables.
void reset_fli_variables();
Una vez haya hecho lo que fuese a hacer con fli_bitmap y fli_palette,
llame esta funci�n para resetear las variables fli_bmp_dirty_* y
fli_pal_dirty_*.
Relacionado con:
fli_bmp_dirty_from,
fli_pal_dirty_from.
extern int fli_frame;
Variable global que contiene el n�mero de cuadro actual del fichero FLI.
Esto es �til para sincronizar otros eventos con la animaci�n, por ejemplo
podr�a comprobarla en la funci�n callback de play_fli() y usarla para
reproducir un sample en un punto particular.
Relacionado con:
play_fli,
play_memory_fli,
next_fli_frame.
extern volatile int fli_timer;
Variable global para cronometrar la reproducci�n FLI. Cuando abre un
fichero FLI, una interrupci�n de temporizador es instalada, la cual
incrementa esta variable cada vez que se va a visualizar un nuevo cuadro.
Llamando a next_fli_frame() la decrementa, por lo que puede comprobarla
y saber el momento de ense�ar un nuevo cuadro cuando sea mayor que cero.
Relacionado con:
install_timer,
next_fli_frame.
Volver al Indice