BitmapRotate v1.00 
for the BeOS - Copyright (c) 1998 Tyler Dauwalder

Tyler Dauwalder
dauwaldt@televar.com
http://www.televar.com/~dauwaldt/index.html

1. Description
2. Included files
3. How To Use The Darn Thing
4. Source
5. Planned Features
6. Version History

1. Description
BitmapRotate is a little command line program that
rotates a bitmap by a specified number of degrees.
For now, the input bitmap MUST be a 24-bit RGB bitmap
(Windows format), and the output bitmap is likewise a
24-bit RGB bitmap (Windows format). 

2. Included Files
BitmapRotate        - BeOS Intel R3 version of BitmapRotate
ReadmeBeOS_x86.txt  - This file.
Test1.bmp           - A test bitmap with a background of 0,0,204
Test2.bmp           - A test bitmap with a background of 0,0,0

3. How To Use The Darn Thing
I know this looks a lot like what you get at the command line
if you just type "BitmapRotate" and press Enter, but it actually
has a little more information. Before you read it though, here are 
a couple of valid command lines:

BitmapRotate 30 Test1.bmp Output1.bmp -m2 -b0,0,204 -d255,255,255
BitmapRotate -1234.567890 Test2.bmp Output2.bmp -m1

USAGE: BitmapRotate [Angle] [Input.bmp] [Output.bmp] [Options]
 [Angle]      : degrees counter-clockwise, i.e. 34.52 or -256
 [Input.bmp]  : The input bitmap, which for now has to be in 24-bit 
                RGB Windows format.
 [Output.bmp] : The output bitmap, which is written in 24-bit RGB 
                Windows format.
 [Options]    : See below, eh?

OPTIONS: All you'll ever need to know.
 -m[0,1,2,3]  : Anti-aliasing mode
                0 = No anti-aliasing. The color of the most nearly correct 
                    pixel is used.
                1 = Anti-alias all pixels. This is the default mode, and is
                    used if no other mode is specified. The colors of the four 
                    nearest pixels are combined using a weighted average.
                2 = Anti-alias all pixels with blending. This mode works just 
                    like mode 1 except that specified blend color is
                    substituted for the background color, except in cases where
                    all four source pixels are background pixels. Useful if you
                    have sprites with a background color used for transparency,
                    and you know off-hand that the sprite is going to be
                    displayed on a background of a given color. This mode will
                    anti-alias the sprite to look good on a background of the
                    given blend color.
                3 = Anti-alias all pixels except those that would be
                    anti-aliased with the background color. Basically a 
                    combination of modes 0 and 1. If none of the four 
                    source pixels are background pixels, mode 1 is used. 
                    Otherwise, mode 0 is used. Useful for sprites that have
                    a background color used for transparency that you don't
                    want anti-aliased into the rotated result.

 -b(r,g,b)    : Background color. Used for parts of the destination bitmap
                that have no corresponding pixels in the source bitmap, and
                also used by modes 2 and 3 for special purposes. If not 
                specified for mode 0 or 1, black (0,0,0) will be used. If 
                note specified for mode 2 or 3, you'll be given an error
                message.
 -d(r,g,b)    : Blend color. Used by mode 2 as the color to substitute for
                the background color in anti-aliased pixels.

4. Source
The full source for BitmapRotate is (for now) available from
my web site at http://www.televar.com/~dauwaldt/misc.html

5. Planned Features
- A BeOS specific version that takes advantage of the Translation
Kit (I have it working so far for input, but I'm having trouble getting
output to work; if you have any experience with Translation Kit
output and would like to give me some hints, e-mail me at 
dauwaldt@televar.com). 

- Multi-threading. Most specifically, I'll probably rework the source
code so that you can render each scanline in its own thread. The
Generic version of the code will just do it single-threadedly.

- A GUI Shell (as opposed to the command-line interface currently
in use). Assuming I get around to this, it'll probably be for the BeOS
first, then maybe Win32. 

- A Windows DLL. This will happen if I ever get around to making 
a GUI for the Win32 version with Delphi.

6. Version History 
(This is more for my enjoyment than anything else...)

v1.00 - First public release (Win32 and BeOS Intel). Shell entirely
rewritten to be a little more user-friendly.

v0.98 - Reworked the generic file i/o to not use streams, since the 
limited edition of the Metrowerks compiler that comes with the BeOS 
Intel R3 doesn't seem to support them. Compiled working Win32 and BeOS 
Intel versions from the same code base. Neat-o. Anti-aliasing mode 4 
implemented.

v0.96 - Initial Win32 version. Anti-Aliasing modes 1-3 and a cruddy but
usable shell implemented.