
TODO
----

- update bindings: (done)
-- update map_empty()
-- update delay() -> clock_wait()

- add to bindings: (done)
-- added clock_ms()

- move screen size limits into CMake (done)

- add motion-control instructions:
-- a new "break on collision with sprites" instruction
-- a new "break if no collision with sprites" instruction
-- a new "load program from another sprite" instruction

- changed arguments to frame_info()
- added frame_effect()
- added frame_set_offset()
-- update bindings (done)

- altered frame_set_mask()
- altered frame_set_mask_from()
-- update bindings

- added libdivide - document the dependency and code authorship

- added sprite_set_scale()
- added sprite_set_scalei() wrapper
- added sprite_set_scalef() wrapper

- remove frame_compose() from bindings
- remove frame_compose() from documentation if it is in any of it

- restore frame_copy() to single-argument mode
- revert documentation on frame_copy()

- add RGBA frame type
- drop chroma key frame type
- font_add() now expects RGBA data and no longer has a color key arg
- font_from_disk() no longer has a color key arg
- font_from_buffer() no longer has a color key arg
- RGBA is now the implicit default frame type:
-- frames loaded from disk are now loaded as RGBA frames
-- you can still convert an RGBA frame to RGB for quicker rendering

- frame_convert() has the following changes:
-- rgb frames are converted as they were before, but since there's no
   longer a color key-based frame transparency, they're converted to the
   requested frame type without altering the data
-- rgba frames are converted as follows:
--- if you're converting to a hard/soft light blend filter or a brightness
    filter, then the source frame is drawn onto a frame of neutral pixel
    data, so that the alpha transparency is sort of preserved.  preserved
    in spirit, at least.
--- convo and lut frames, an alpha pixel < 128 is treated as an empty
    pixel, while >= 128 is treated as solid.  this is also how
    frame_set_mask_from() now works.


- removed font_info()
- added string_get_box()
- added extra arg to font_add(), font_from_disk(), font_from_buffer(),
  which can contain an array of character widths.  if set, the font will
  be displayed as a proportional-width font.  otherwise, the font reverts
  to a fixed-width font.


- changed graphics_open()
-- enabled rotated display (e.g. for tablets)
-- added scaled display output to sdl mode
-- reordered arguments
-- pull documentation for this from sources


- update documentation

- add to documentation:
-- makefont.tcl (rewrite in bash) and how to make fonts
-- how to make video clips suitable for upload to video sharing site





Notes for V5.4
--------------

To build the brick engine on any platform, you need:

- CMake (a Makefile maker)
- SDL
- SDL_mixer
- SDL_image, optionally


In the top-level Brick Engine directory, run the CMake command like so:

% cmake .

This will generate the makefiles specific to your platform.  You can
then run make as usual:

% make

CMake's makefiles display some colorful output as each file is
compiled.  When it's all done, you can install the library and headers
with the usual make install:

% sudo make install

Note that, by default, OpenGL-based acceleration is enabled by.  If
you need to turn this off, you can disabled the CMake flag "WITH_GL".
SDL_image support is also enabled by default, and can be disabled by
turning off the CMake flag "WITH_IMAGE".

If you're familiar with CMake, or you want to play with it a bit, you
might try the curses-based CMake configuration tool:

% ccmake .

This will give you a visual guide to the various CMake options.  If
it's your first time running ccmake, hit 'c' to run the usual platform
detection.  After making your changes, hit 'g' to generate your
makefiles, and 'q' to exit out of the program.

Enjoy!
