libcaca documentation

# TODO list

## libcucul

### API-dependent stuff

- support for holes in canvas (eg. not full EOL)
- support for TAB
- allow to change the canvas size in a per-frame basis.
- export attribute parsing functions such as attr_to_ansi4fg etc.

### API-independent stuff

- Brightness, contrast support for bitmaps (the functions are here, we just need to fill them)
- Error distribution dithering
- Add a random factor to the random ditherer. No need to change the API for that, we can just pass `"random:10"` instead of `"random"` to the cucul_set_bitmap_dithering() function.
- Implement the colour modes set in cucul_set_bitmap_color(). For the moment only `"full16"` and `"16"` are implemented.
- Fix the thin ellipse rendering (currently it's only |s and -s, we could make them smoother by using ' ` , etc).
- better mask support in cucul_blit()
- optimise exporters so that they do not allocate huge blocks of memory when they only need half of it.

## libcaca

### API-dependent stuff

- beep support

### API-independent stuff

- Write a Linux console output
- Better keyboard driver in an X terminal, see http://groups.yahoo.com/group/zepp/message/381
- Unicode support for X11 (maybe through Xft)
- fix Unicode support for ncurses (look at the nano source, it gets it right)
- and Jylam wants a framebuffer output
- write sample code for a text edit widget with cursor support

## Language bindings

### Needed

- Fix Python
- Fix Perl
- C# (it's the next big thing, believe me)
- PHP (together with the HTML output it would allow for nice web applications)

### Not that important

- Ruby
- Java

## Kernel mode

- keyboard support
- printf/fprintf are missing
- Improve malloc/free so that we can reuse freed memory

## Documentation

- Write a tutorial.
- Draw a nicer logo

## Applications

## cacaview

- File browser
- open ANSI files
- save in different formats

## cacadraw

- Only a skeleton exists yet. A modern ANSI editor that can also do Unicode.