LibFLIC
About
LibFLIC provides routines for encoding and decoding Autodesk Animator FLI and Autodesk Animator Pro FLC files.
The code is based on the documentation and source code of Animator and Animator Pro that has been released by Jim Kent.
LibFLIC is written entirely in Rust. C bindings to the underlying codecs are provided.
Examples
A few example programs are provided in the examples/
directory:
- quickfli - a simple FLIC player.
- recompress - loads and saves FLIC files.
- browse - display postage stamps (thumbnails).
To clone this repository, run:
Then build the library and run the example programs using Cargo.
To play a FLIC file, run:
Basic Usage
Add LibFLIC as a dependency to your project's Cargo.toml:
[]
= "0.1"
Import the library in your project, e.g.:
extern crate flic;
use ;
The FlicFile
type refers to FLIC files streamed from disk. When
opening a FLIC file, it will first read the FLIC metadata such as the
animation's dimensions and speed. FlicFile
will keep the file open.
let flic = open?;
Allocate the pixel data and palette data buffers to which we will decode the animation.
let flic_w = flic.width as usize;
let flic_h = flic.height as usize;
let mut buf = vec!;
let mut pal = vec!;
It is convenient to group these two buffers, along with their
dimensions and strides, together to form a single Raster
or
RasterMut
type.
LibFLIC will ask for a Raster
type for operations that require
read-only access to the buffers (e.g. encoding), and a RasterMut
type when it requires read-write access (e.g. decoding).
For example, to decode a frame, we first create a RasterMut
by
borrowing buf
and pal
mutably as shown below. Rasters are cheap
to create, so don't worry about creating and dropping them frequently.
let mut raster = new;
flic.read_next_frame;
Since FLIC files store the differences between consecutive frames, when reading the next frame in the animation, it is up to the library user to ensure that the buffer and palettes contain the previous frame's data.
Documentation
Author
David Wang