Aurora v0.2A

Written by Steve Sprang

Released April 21, 1997

Introduction

Aurora is an image-editing tool for BeOS. The current version (0.2A) offers several improvements over the last release (v0.05A). These improvements include the ability to save your images, and the ability to cut, copy and paste selections. I've also fixed a few bugs, and sped up a few operations.

There is, however, still one serious shortcoming. You cannot yet undo. I hope to remedy this within a week, but being the end of the semester, I am starting to run out of time for BeOS hacking.

Despite this major shortcoming, I hope that you find Aurora useful.


Usage

Requirements

Aurora requires Jon Watte's excellent Datatypes library in order to do anything. If you do not have this installed, please get it and do so. Grab a couple of image handlers (JPEG, GIF, etc). while you're at it.

Opening Images

Assuming that you have the appropriate handler installed, images can be opened in Aurora by dropping them on the application's icon, or by selecting "Open Image..." from the main menu.

Creating New Images

New images can be created by selecting "New Image..." from the main menu. The dimensions of the new image as well as its color space (RGB color or indexed color) can be specified.

Saving Images

Aurora can now save images! (Thanks to Simon Clarke for help on this issue.) Simply select "Save" or "Save As..." from the "File" menu.

The Edit Menu

Nearly all items in the "Edit" menu have been enabled.

* Cut - Cuts the current selection.
* Copy - Copies the current selection.
* Paste - Pastes the clipboard contents.
* Clear - Clears the current selection (fills with the background color).
* Stroke - Stokes the current selection with the current brush. (This is currently pretty slow)
* Fill - Fills the current selection with the foreground color.

Aurora also supports drag and drop of selections between images. Hold down the command key before initiating a drag to activate this feature.

Note that it is currently not possible to cut and paste (or drag 'n' drop) image data between images of differing color spaces (RGB vs. Indexed).

Mac Users: Copying and pasting RGB images produces unexpected results. This issue will be resolved in DR9 and does not affect BeBoxen.

The Image Menu

* Invert - Inverts the current selection or the entire image if there is no selection.
* Mode - Allows you to switch between RGB and Indexed color modes. The current mode is indicated by the small view next to the scrollbar in the lower-left corner of the window. If you see a red, green, and blue rectangle then you are in RGB color mode. If you see the word "Indexed" you are in indexed color mode. In the future the three RGB rectangles will allow you to toggle the corresponding channels on and off.
* Change Size... - Allows you to resize the image or the canvas. The dialog which appears displays the current image dimensions and offers text fields to enter new dimensions. A pop-up menu allows you to choose whether you would like to change the canvas size or the image size. If the "Maintain Proportions" checkbox is checked, hitting tab or return within one of the text fields causes the other text field to resize to a proportional value. Currently, you MUST hit tab or return to activate this behavior.
* Flip - Allows you to flip a selection vertically or horizontally. If there is no selection, the entire image is flipped.

Filters

A rudimentary filter API has now been implemented. The following Filters are included with this release:

* Blur
* Unsharp Mask
* Diffuse
* Brighten
* Darken
* Find Edges

These filters were all written in about 45 minutes. They mainly exist so that I could make sure that the API was working. Blur, for instance does not blur a one-pixel border around the selection. It's also slightly inefficient. Improved filters will appear in future releases.

If Aurora is launched from Terminal, the running times of the filters are printed.

Tools

Aurora supports the following tools:

*Marquee - Standard rectangular selection tool.

*Lasso - Standard irregular selection tool. The lasso is limited within RGB images due to a bug in the BeOS (I can't mask). Therefore, it is not possible to drag irregular selections when in RGB mode. It works fine in Indexed Color mode however.

*Paintbrush - Standard paintbrush tool. Clicking with the primary mouse button paints with the fore color, clicking with the secondary mouse button paints with the back color.

*Clone Standard clone tool. Clicking with the secondary mouse button sets the sample source point. Clicking with the primary mouse button paints the sample. Currently, the clone tool paints with a rectangle the size of the current brush instead of the actual brush shape. Again this is due to a bug in the BeOS which prevents me from properly masking.

*Eye Dropper - Sets the currently active color to the color of the pixel below the cursor.

*Flood Fill - Since I have yet to implement magnification, I've replaced the useless magnify tool, with the useful flood-fill tool. Click with the primary mouse button to fill with the fore color, or the secondary mouse button to fill with the back color.

*Crop - Click and drag with the primary mouse button to select an area to be cropped. Clicking within this rectangle will crop the image. Clicking outside of this recangle will cause the crop rectangle to disappear.

Brush and Color Palettes

The brush palette allows you to specify the shape of the current brush. Click in this window to reshape the brush.

The color palette allows you to view and set the currently active fore and back colors. Works like you would expect.

Selections

Currently, you can only have one selection at a time. Selections do, however, control the range of image operations. For example, the paintbrush is masked by the current selection.

If you hold down the option key before dragging a selection, a copy is left at the original location. Typing delete or backspace will remove the current selection.


Filter API

The filter API is rather simple. Sample source for all included filters is included in case you want to fix them up, or just see how to write your own. The API is currently in the evaluation stage. I really don't know what the best filter API would look like. If you have thoughts on this subject, I would appreciate your input. I will be studying Adobe's filter API in the near future to find out what I'm missing.

void aurora_name(char *&string);
Should set "string" equal to a pointer to a string containing the filter's name.

bool aurora_filter(BBitmap *input, BView *painter)
The "input" parameter is a pointer to the (unlocked) RGB image. The "painter" parameter is a pointer to the BView attached to the input bitmap. Your filter should not remove or delete the "painter" view or bad things will happen.


Limitations

* Macintoshes will still paint the wrong colors when in RGB color mode. Again, I am waiting for DR9 to resolve this issue. Dithering will at least allow the images to display correctly. Indexed color image-editing works fine.

* The limitations involved with the lasso and clone tools (mentioned in the tools section).


Contact Information

Please send all comments and bug reports to me:

Email: sprang@andrew.cmu.edu

Aurora is freeware, however, donations are welcome:
Permanent Address:

Steve Sprang
141 State Route 603
Shiloh, OH 44878

WWW

Other Be Software