@DATABASE DiamondBOX.guide
@AUTHOR Nikolaj Thygesen
@(C) 2000
@$VER: DiamondBOX.guide 1.05 (05.11.00) © 2000 Nikolaj Thygesen
@WORDWRAP

@NODE main "Welcome to DiamondBOX"
@TOC main
@NEXT main
@PREV main

                  @{b}@{fg highlight}@{bg text}D i a m o n d B O X@{fg text}@{bg background}

               © 2000 - Nikolaj Thygesen

                        V pre5@{ub}



   @{" About          " LINK "about.picture/main" }		A little title thing
   @{" Author         " LINK author }		Who did this

   @{" What is this?  " LINK intro }		Welcome to DiamondBOX
   @{" Tutorial       " LINK tutorial }		How to begin
   @{" Background     " LINK background }		Some needed reference info
   @{" Keyboard abuse " LINK keyboard }		Should you use the keyboard?
   @{" Setup          " LINK setup }		How to setup the system
   @{" Disclaimer     " LINK disclaimer }		Legal stuff
   @{" History        " LINK history }		What goin' down?
   @{" To do          " LINK todo }		What needs to be done to DiamondBOX

@ENDNODE

@NODE intro "Intro to DiamondBOX"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}What have we here?@{ub}

    DiamondBOX is a photo retouching system meant to ease the lives of its users though it might not always seem so :o) It's heavily layer based, which might hurt the learning curve a bit. Let's look at parts of the feature set:

  - Fully multithreaded.

  - Internal representation of images always 32-bit.

  - Add as many layers as you want (and have RAM for).

  - Change Layer-Effects on the fly and watch the changes right before your very eyes.

  - Draw with Air Brush, Lines, Shaded Text, Rectangles, Ellipses or even lightnings.

  - Apply textures to Effects for compositions or strange Alpha Channels.

  - Create your own brushes.

  - Print using the TurboPrint saver.

  - Save your picture as a C-source CGFX compatible bitmap.

  - Different Generators to create sky images or maybe just plain pieces of paper.

  - Loads IFF / JPEG / PNG.

  - Expandable - write your own Pebbles (Savers / Loaders / Effects...)

  - Change all buttons with IconEd.

    It is definitely Work-In-Progress, and there's still a long way to go, so don't be too hard on it. Installation is straight forward - unpack the archive to a drawer of your choice. No messy assigns to worry about. This guide was thrown together very fast, so I hope you don't find too many typos. Feel free to report them.

    Life's too short to worry about yesterdays technology (funny phrase on an Amiga :o), so you will need the following to try out DiamondBOX:

  - A 16/24 bit GfxCard running CGFX 2+

  - A 68020 is minimum, but I fear you'll soon come to a crawl when using too many layers.

  - 8 Mb RAM should get you goin', but adding at least another 32 Mb will do you good.

@ENDNODE

@NODE tutorial "Tutorial"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}Tutorial@{ub}

@{i}First, open a picture...@{ui}
    After starting the program, click on the title/about pic to make it go away. Select "Open..." from the ToolBox menu - this opens a standard file requester, from which you should choose an IFF picture of yours.

@{i}Second, create a primary layer...@{ui}
    Next thing you select the Layer::Manager window (= LM) and select "New primary layer" from the menu. This pops up a window asking you to select the @{"effect" LINK effectlist } to attach to this layer (called an @{"effect" LINK effectlist } layer). Choose the "Boing Ball" @{"effect" LINK effectlist } which paints a checkered pattern on the picture. Finally you can paint away in the window containing the loaded picture. If you want to apply other @{"effects" LINK effectlist } to your picture, go to LM and add a new layer. You can basically add @{"effects" LINK effectlist } to your hearts content, but there is a speed penalty to pay somewhere along the line depending on your processor (yes, I know support for PPC would be great, and I do have one, but that'll have to wait).

@{i}Third, alter characteristics of the effect...@{ui}
    Some @{"effects" LINK effectlist } have parameters changable in the LM window. Selecting an @{"effect" LINK effectlist } in the upper list of the window reveals the parameters of the @{"effect" LINK effectlist } of that particular layer. Should you want to change the @{"effect" LINK effectlist } of the currently selected @{"effect" LINK effectlist } layer, this can be done w/ "Change effect" from the LM menu. One @{"effect" LINK effectlist } "Mono Filter" has its own drawer in the DB tree, namely the "ColorFilters". Here you'll find a couple of palettes which can be applied to pictures giving you different kinds of monochrome pictures - Weird palettes are possible as well.

    Try changing "Boing Ball" to "Painter" - select "Update layers" from the menu to see the changes. Go to the toolbar and open one more picture, then back to LM and select a texture with "Select texture". From the popup select the new picture, and "Update layers". All the stuff you previously painted should now be covered with pixels from your second picture. Not all @{"effects" LINK effectlist } accept textures, but they won't tell you. Try it out and see what happens.

@{i}Changing Brush characteristics...@{ui}
    The brush used for applying paint can be slightly customized. Go to Toolbar and select "Windows/Brush...". This opens another window showing a little black square in the lower half. This is your brush, and by increasing the size and pressure, you can see how it affects your brush on the black square. The brush is global, so you can go right away to your picture and use it. The upper right icon in the Brush::Manager opens a popup allowing you to select the overall shape of your brush.

@{i}Generating new pictures...@{ui}
    Go to toolbar and select "Generate...". Select the desired @{"generator" LINK generatorlist } from the popup. These are just small programs that generate different kinds of pictures. This is where you'll find the scanner interface in the future. The "Mandelbrot" is just a quick hack based on an old BASIC thing I made years ago. One of the @{"generators" LINK generatorlist }, called "New Paper" will create a new picture based on the "width" and "height" supplied in the requester. @{b}Notice@{ub} some @{"generators" LINK generatorlist } require a picture as a parameter, and for these you need to invoke the wanted @{"generator" LINK generatorlist } from the editor menu with either "Operate frozen" or "Operate active". The first will use the unretouched picture whereas the second will operate on the picture visible in the editor window.

@{i}What's in the Toolbar...@{ui}
    The last thing I'll mention in this small but messy tutorial are the buttons of the Toolbar. From there you can select the kind of shape to use when applying @{"effects" LINK effectlist } in a layer. Apart from Brush there's a line, square, ellipse, Flood fill, connected lines and a lightning tool. The little star like shape (which was supposed to be a gear - originally) allows you to choose a @{"generator" LINK  generatorlist }, and the two icons containing a diskette are used for loading and saving pictures. The palette button allows you to select what color to use as default for some @{"effects" LINK effectlist }. Pretty useless really, but now it's there :o) I guess it might go away one day. The way to exit the palette requester is just to click somewhere else on the screen.

@{i}Alpha Channels...@{ui}
    Some @{"effects" LINK effectlist } alter the alpha channel instead of the paint of your picture. The alpha channel is just a layer deciding how much you're allowed to paint on individual image pixels in the editors. If the alpha channel is 100% or white the effect will cover the image underneath completely, but an Alpha Channel value of 0% or black will leave the image unchanged. Values in between 0 - 100 corresponding to grey scales will apply more or less of subsequent effects to the image.

@{i}What does Activate and freeze mean??@{ui}
    If you don't want to apply anymore paint to a certain layer just select it and choose "Freeze" from the LM menu. From then on you can no longer apply paint to that layer. "Activating" the layer means that the you're reopening it (thawing it - the opposite of freeze). Likewise you can freeze the paint and alpha channel parts of your picture to make your changes permanent. This can't currently be undone! If you have opened the same picture in another editor, these frozen changes will affect that other copy as well, but not until you select the window of that editor.

    PHEEW - I hope this has given you an idea of how to work w/ DiamondBOX, otherwise I take the blame. This was basically just meant to get you going, and I hope sure you can figure some stuff out yourselves as you go. In case of real trouble, just ask me - I should know :o)

@ENDNODE

@NODE effectlist "Available effects"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}Available effects@{ub}

@{i}Alpha Channel:@{ui}
    This is a global effect meaning it doesn't need to be painted on. It affects all effects applied after itself. If you leave the slider in Layer::Manager around the middle all subsequent effects will cover only 50%. Applying two Alpha Channels around 50% results in an effective 25% Alpha Channel - they affect each other. Alpha Channels accept textures, so that only brighter parts of the texture will allow application of subsesquent effects.

@{i}Balance:@{ui}
    This effect lets you alter the different channels R, G and B independently. Slide the knob of the channel in question to the right to increase the intensity of that channel, and to the left to decrease the intensity. The middle position is neutral.
    Another neato feature of Balance, is the way it uses textures. The red channel of the texture will modify the red channel of the image in an additive fashion, such that a red channel value of 127 in the texture leaves the image red channel untouched, whereas smaller texture values decrease the corresponding value of the image, and larger texture values increase values of the image. The same goes for green and blue channels. This effectively creates a kind of bumpmapping which gives your image a textured feeling. The drawer "BumpMaps" contains a couple of greyscale textures suitable for bump mapping.

@{i}Boing Ball:@{ui}
    Actually kind of a joke, but nevertheless it applies a checkered pattern to the image. The size of the checks can be adjusted with the two numeric gadgets in Layer::Manager.

@{i}Brightness:@{ui}
    With this little sucker you can change the brightness and contrast of the image. Changing the top slider allows you to increase brightness in a linear fashion. The Gamma slider alters brightness in a more "selective" fashion affecting darker pixels the most. Changing the two contrast sliders you can narrow the amount of colors used in the image effectively increasing contrast. The more adventurous individuals can play around with the bottom ten sliders to be even more selective about it all. All values in between slider values are interpolated.

@{i}Convolution Matrix:@{ui}
    This is a multipurpose effect, which actually isn't that well suited for interactive drawing, since it messes up the display slightly, and to get a real view of what the picture looks like, you may need to refresh the view. Depending on the matrix in question this effect can f.ex. blur, sharpen or edge detect the picture.

@{i}Explosion:@{ui}
    When paint is applied with this effect the color chosen will be somewhere between the two colors in Layer::Manager, depending on how much paint is applied. The dark color will be used for smaller amounts of paint whereas larger amounts of paint will draw the color towards the bright color.

@{i}Gradient Painter:@{ui}
    This effect allows you to choose two colors to paint with. Depending on the direction of the gradient the applied color will vary either along the horizontal, vertical or one of the two diagonal directions.

@{i}Logic Operation:@{ui}
    This effect takes the chosen color, and combines it with the picture using an operation selectable with the gadget under the color chooser. This effect also works with textures in which case it combines the two images again using the selected logic operation.

@{i}Maximum filter:@{ui}
    This filter is poorly suited for interactive drawing, which will hopefully change in DiamondBOX 2, but for now this will have to do. Each pixel is assigned the value of the maximum of itself and it's surrounding eight pixels.

@{i}Minimum filter:@{ui}
    This filter is poorly suited for interactive drawing, which will hopefully change in DiamondBOX 2, but for now this will have to do. Each pixel is assigned the value of the minimum of itself and it's surrounding eight pixels.

@{i}Monochrome:@{ui}
    The basic functionality of this effect is to convert color images into monochrome/grey scale. If you press "Select Color Filter", you can select a "filter" (An IFF ILBM w/out a BODY chunk, but a 256 entry palette), which will then work as a filter changing the grey scale values into other intervals. A few of these filters have been provided in the "ColorFilters" drawer.
    The weights used to go from color to monochrome can now be set with the top most three sliders. The weights are relative, that is the weight of each channel is relative to the weights of the other two channels. If the weight of "Red" is half the "Blue" weight, then blue will contribute twice as much to the final grey scale value as red. By zeroing out two channels, individual channels can be isolated, but notice that as soon as you touch any of the color controls the filter info will be altered, and you will need to load a grey scale filter to return to the default setup.
    Another feature of this effect is the ability to select a color and one of three methods of stuffing that color into the picture. The first method changes the brightest parts of the image into the chosen color. The second method squeezes the selected color into the middle tones, and the last method will replace the darkest tones with the selected color, and make the brightest colors white.

@{i}Mosaic:@{ui}
    Selects one pixel from the image and uses it for all pixels in a rectangular block of the image. Select the block size in Layer::Manager

@{i}Negative:@{ui}
    This effect negates the part of the image being painted - just like a photographic negative.

@{i}Painter:@{ui}
    This is the basic paint effect which accepts textures, making it a composition tool as well. Using the picture itself as a texture this effect can function as a clone effect also.

@{i}Paint with shadow:@{ui}
    This weird effect is meant to be used when applying line drawing-like figures needing a shadow. When paint is first applied the smaller amounts darkens the background, but when almost reaching the maximum amount of applicable paint the chosen color (or texture) is applied instead. Try this out with the "Text tool".

@{i}Posterize:@{ui}
    If you should ever need to decrease the number of possible values of the channels in your picture, then "Posterize" is the right way to go. Select the number of different values you want in the slider, with the rightmost value "Neutral" (255) being the default, and having no effect. The leftmost values have the greatest effect, and staying above 100 can sometimes be hard to see.

@{i}Randomize:@{ui}
    Useless experiment I did. I included it just in case anyone might find find a use for it.

@{i}Reset Alpha:@{ui}
    This global effect allows for absolute setting of alpha channels, meaning that no matter what the previous Alpha Channel was, it will be reset to what ever value is chosen with the Layer::Manager slider.

@{i}Saturation:@{ui}
    Increases saturation of the image. Select amount of increase with the slider in Layer::Manager.

@{i}Solarize:@{ui}
    This is an extreme brightness thing which tilts past 50% brightness and makes those brightest parts of the image negative.

@ENDNODE

@NODE generatorlist "Available generators"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}Available Generators@{ub}

    In the following you'll find a description of the current set of implemented generators. Some of these will expect an argument picture (denoted with an "(arg)"), and in this case you should invoke the generator from the editor menu with "Operate frozen" or "Operate active". The first will use the unretouched picture whereas the second will operate on the picture visible in the editor window.

@{i}Alpha => Image: (arg)@{ui}
    To get a picture containing the alpha channel of the current picture invoke this generator. It creates a greyscale picture in which a black pixel means that the corresponding pixel of the source picture is unaffected by paint and a white pixel meaning completely covered by paint. Any grey levels in between indicates different levels of transparency in the source picture. This resulting picture can then be edited, reapplied to the source picture with the "Alpha" or the "Reset Alpha" effect, and then frozen into the original picture from the editor menu.

@{i}Cloud generator:@{ui}
    If you should ever need a cloudy backdrop, then just invoke this little goodie, and enter a couple of colors along with the dimensions of your backdrop, and soon you'll have a sky on your screen.

@{i}Colored Backdrop:@{ui}
    Will create a backdrop picture in which you setup the dimensions of the picture, and the colors at the four corners. The rest of the picture will then be interpolated between these four colors.

@{i}Crop Image(Alpha): (arg)@{ui}
    This advanced crop generator uses the alpha channel of the picture to decide which pixels to crop, with 0 meaning source pixel not used, and 255 meaning source pixel used. The values in between will interpolate the source pixel color with the global color selected in the generator dialog. One way of using this generator is by painting some effect onto the picture, and stuffing the canvas into the alpha channel with "Canvas/Canvas => Alpha". Finally invoke, the "cropper" from the picture. @{b}Notice@{ub}, this will alter the frozen Alpha channel, so you should reset the Alpha Channel afterwards if you need to do further editing on the picture.

@{i}Flip Left <=> Right: (arg)@{ui}
    This mirrors the source picture around the Y-axis into a new picture.

@{i}Flip Top <=> Bottom: (arg)@{ui}
    This mirrors the source picture around the X-axis into a new picture.

@{i}Mandelbrot:@{ui}
    Creates a picture of the mandelbrot set. You enter the dimensions of the picture, and the max number of iterations before a point is considered part of the set. A few seconds later you get a picture of the good old set - no you can't zoom in!!

@{i}New paper:@{ui}
    With this little thing you can create a new piece of white digital paper. The dimensions can be entered in the two numerical gadgets.

@{i}Scale dimensions: (arg)@{ui}
    Will create a new rescaled picture based on the source picture. Use the slider to quickly change the size gadgets maintaining the aspect ratio.

@ENDNODE

@NODE keyboard "Keyboard abuse"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}Keyboard abuse@{ub}

    As previously stated some things are done w/ the keyboard. These details will be addressed below:

@{i}<Shift>:@{ui}
    is used to invert the @{"effect" LINK effectlist } of tools on the Canvas - w/out <shift> you can paint w/ LMB, but w/ <shift>-LMB you'll remove paint from the Canvas. In LM <shift> is used for multi selecting layers (removal). When closing an editor, holding down <shift> will close only the changes, but keep the frozen picture.

@{i}<Arrow Up/Down>:@{ui}
    are currently only used to move layers up and down in LM - can be done from the menu as well.

@{i}<ESC>:@{ui}
    abort dialogs for f.ex. @{"generators" LINK generatorlist }.

@{i}<Return>:@{ui}
    is a real goodie. Apart from accepting dialogs, when used in LM, it tells the current picture to refresh all its layers. This can be done from the LM menu as well, and will also happen automatically when current picture is selected.

@ENDNODE

@NODE background "DiamondBOX fundamentals - Nice to know"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}Background@{ub}

    In the following paragraphs we'll take at look at some of the internals of DiamondBOX.

    When you open a picture the following happens: DB opens your picture and stores it in 24 bit along with an alpha channel. Next thing it opens an editor window with a canvas, a reference to the opened picture, but no layers. All manipulations done to the picture in the editor window will be only temporary, and opening a second editor with the same loaded picture ("Project/Edit..." in Toolbar) displays the original picture, but with a different canvas. All painting is done on the canvas of the active window, and this canvas will be attached to the active layer of the current editor. A frozen layer has it's own private frozen canvas which can't be altered in any way. When rendering @{"effects" LINK effectlist } in the editor the canvases are combined with the alpha channel before applying paint to the picture.

    To make changes available to all editors referring to a certain picture, you must freeze the contents of an editor. When done you can close the editor, but the picture is STILL loaded, and can be edited later on, or just left hanging around in case you need it as an texture later on.

    You might wanna close all unused editors as they consume quite a lot of RAM. Talking about RAM abuse - printing with the TurboPrint saver allocates a second copy of the picture which can also quite memory consuming.


@{b}Useful words to understand:@{ub}

@{i}Picture:@{ui} Well :o)

@{i}Layer:@{ui} is like a transparent piece of onion skin placed on top of your picture. All modifications will go to this layer allowing you to remove all modifications by simply removing the layers in question.

@{i}Canvas:@{ui} Is the active layer. Only one layer can be active at a time.

@{"Effect:" LINK effectlist } All modifications applied to the canvas are translated through an effect, so that where ever you apply paint to a canvas, the corresponding effect will be applied to that particular part of the pictre.

@{"Tool:" LINK toollist } When modifying the canvas you use tools like "AirBrush" or the rectangle tool.

@{i}Primary Layer:@{ui} This is a layer having it's own reference to the canvas, and an effect as well.

@{i}Group Layer:@{ui} This is a kind of layer which doesn't do anything in itself. It holds a reference to the canvas. but that's all.

@{i}Secondary Layer:@{ui} This kind of "layer" actually only has it's own effect, and borrows the physical layer/canvas from the previous Group Layer. This can be useful if a number of effects need to be applied to the same part of a picture. A Secondary Layer can not be activated as it refers to a Group Layer for information on where to paint.

@{i}Freeze:@{ui} Means making changes permanent. Freezing a layer means making it unavailable for further editing. Freezing RGB and/or Alpha Channel means copying those parts of a picture to the unchanged background copy.

@{"Generator:" LINK generatorlist } A little program generating pictures maybe based on a set of parameters, and in some cases an argument picture as well.

@ENDNODE

@NODE toollist "Canvas tools"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}Available Tools@{ub}

    In the following we'll go through the different tools of DiamondBOX. You'll find an icon for each Tool in the Toolbar, and the different settings for the Tools can be changed in "Tool::Manager", but not all settings relate to all tools. Look below to find out how to control the different tools.

@{i}AirBrush:@{ui} This tool uses the current brush chosen in "Tool::Manager" like an Air Brush to add paint to the Canvas, which in turn adds the effect of the active layer(s) to the picture. If keeping <shift> depressed while painting paint is removed from the Canvas instead.

@{i}Line:@{ui} With this tool you can add straight lines to the Canvas. The current brush is applied for every point along the line, but it isn't added like with the AirBrush, so when drawing several crossing lines the amount of paint of the intersections will be the same as that of the rest of the lines. The absolute pressure from "Tool::Manager" will be applied to the line, so increasing this value will create denser lines. If keeping <shift> depressed while dragging the line it will remove paint from the Canvas. This removing of paint also takes the currently applied pressure into account, and may take some experiments to get used to :o)

@{i}Lightning:@{ui} This tool behaves exactly like the "Line" tool above except the drawn line will not follow a straight line. Instead it will twist and bend in a random fashion resembling the path of a lightning. Combining this tool with the "Lightning" brush, and a suitable effect - like "Explosion" - can create some neat images.

@{i}Text:@{ui} With this tool you can add text to the Canvas. Notice that text placed on the Canvas can not be edited except by means of the usual painting tools. The Text tool uses the font selected from the Tool::Manager menu, and produces a shadow below the text. The position of the shadow will be a number a pixels below and to the right of the text itself depending on the size parameter of Tool::Manager. The larger the value, the further apart text and shadow will be. Also the pressure setting of Tool::Manager decides how noticeable the shadow will be. The larger the pressure the more pronounced the shadow will be. To completely avoid shadows set pressure to 0 - the far left. Try combining this tool with "Paint with shadow" which was specifically designed to be used with the text tool. The actual text to be drawn is located near the top of Tool::Manager. It's not directly possible to create transparent text, but by combining a text layer with a couple of alpha layers - one on each side of the text layer - you can simulate this feature.

@{i}Ellipse:@{ui} Should you ever need to draw an ellipse or a circle, this tool would be the right way to go. After selecting the tool, go to the picture and click the mouse of the upper left corner of the rectangle enclosing the ellipse, then move the mouse to the lower right corner of said rectangle, and finally let go of the mouse button. This produces an ellipse with a density controlled by the pressure setting of Tool::Manager. The higher the pressure, the denser the ellipse. Keeping <shift> depressed while dragging the mouse pointer will decrease the amount of paint on the Canvas within the new ellipse.

@{i}Rectangle:@{ui} This tool works exactly like "Ellipse" above, but of course produces a rectangle :o)

@{i}Polygon:@{ui} The polygon tool will create a polygon by connecting a number of lines, and then filling the area between the lines with an amount of paint as indicated by the pressure setting of Tool::Manager. To create a polygon mark the first vertex of the polygon by clicking and holding the LMB, then drag the mouse to the second vertex and let go. For subsequent vertices click, hold, drag and release the LMB. Double clicking a vertex will end the polygon creation. Pressure and <shift> are handled like in the Ellipse tool.

@{i}Flood fill:@{ui} In some other systems this tool is called a magic wand. When this tool is clicked on a pixel of a picture the color of that particular spot is remembered and all neighbouring pixels of the same color have their corresponding part of the Canvas filled with paint. The Tolerance setting of Tool::Manager allows you to include colors varying slightly from the color of the original pixel clicked. The higher the tolerance the more differently colored pixels are painted by "Flood Fill". This tool may, depending on the size of the picture, need a lot of stack/RAM, and under extreme conditions it might crash the program. Should this happen, you will need to increase the value of the "STACK_SIZE" tool type in the icon. Changing the standard stack size of the icon will NOT make any difference since DiamondBOX consists of a number of separate processes launched by the main process, and their stack size is taken from the tool type at startup.

-----------------------------------

@{i}Texture position:@{ui} This tool is a little different in that it doesn't draw anything in itself, but allows the user to displace the texture of a layer. Select the tool, click, drag and release LMB to displace the texture. A rectangle will display while dragging to indicate the location of the texture. In case of textures larger than the picture itself will display nothing, because the edges of the texture are "off limits".

@ENDNODE

@NODE setup "DiamondBOX tool types"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}Setup@{ub}

    If you wanna avoid a couple of icons in the Toolbar, they can just be dragged from "buttons" drawer into the "storage" drawer from WorkBench. DB needs at least one button in the Toolbar, but I'm sure you can live w/ that.

    The "Pebbles" drawer contains all @{"Effects" LINK effectlist }, @{"Generators" LINK  generatorlist }, ... If you don't need some of these just move them into the "Storage" drawer before opening the program.

    I must admit that I'm not a settings fetichist, so don't expect stuff like NewIcons support, or wild config managers and themes. Still the program icon contains a few tooltypes as listed below:

@{i}PubScreen:@{ui}	What Public Screen to use (which must be 15/16/24 bit - no builtin public screen manager).

@{i}LAYERMAN_X:@{ui}	X-coordinate for Layer::Manager.

@{i}LAYERMAN_Y:@{ui}	Y-coordinate for Layer::Manager.

@{i}TOOLBAR_X:@{ui}	X-coordinate for ToolBar.

@{i}TOOLBAR_Y:@{ui}	Y-coordinate for ToolBar.

@{i}TOOLBAR_WIDTH:@{ui}	Width of the ToolBar window.

@{i}PICTURE_PATH:@{ui}	The default drawer containing pictures.

@{i}BRUSH_NAME:@{ui}	Name of brush to use as a default.

@{i}STACK_SIZE:@{ui}	Stack size for all "threads" (pictures, Layer::Manager, ...)

@ENDNODE

@NODE todo "Stuff left to do"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}To do@{ub}

    A lot of things haven't been implemented yet, as I'm currently concentrating on stability and the basic functionality. If you open a 1000X1000 picture and add 30 layers at once, it might seem like DiamondBOX has gone down, but don't worry, it's just got a lot to do, and should return sooner or later (Maybe I should add a progress bar in that case). A good idea is to add one layer modify it and freeze it, then add another, and so on. This will reduce the number of needed calculations drastically.
    If you've got an idea for a great @{"effect" LINK effectlist }, and maybe even have some source code or the likes, just tell me, and I might give it a try. A relatively trivial @{"effect" LINK effectlist } can be implemented in about half an hour.

@ENDNODE

@NODE ErrorHandler " ***** ERROR ***** "
@TOC main
@TITLE " Whooops "
@NEXT ErrorHandler
@PREV ErrorHandler

@{b} Error @{ub} Back and forward not allowed!

@ENDNODE

@NODE author "Who am I"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}About me@{ub}

    I currently work as a systems consultant developing all different kinds of things for different kinds of companies. In case you need to contact me please use one of the e-mail addresses below:

	Nikolaj_Thygesen@bigfoot.com	// Always linked to current address, but I've had complaints.

	nkt@ecsoft.dk			// My current company address.

@ENDNODE

@NODE disclaimer "Everyone's got one - I want one too!"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}Use DiamondBOX at your own risk@{ub}

 ************************************************************************
 *                                                                      *
 *                            DISCLAIMER                                *
 *                                                                      *
 *   THIS SOFTWARE/INFORMATION IS PROVIDED "AS IS".                     *
 *   NO REPRESENTATIONS OR WARRANTIES ARE MADE WITH RESPECT TO THE      *
 *   ACCURACY, RELIABILITY, PERFORMANCE, CURRENTNESS, OR OPERATION      *
 *   OF THIS SOFTWARE/INFORMATION, AND ALL USE IS AT YOUR OWN RISK.     *
 *   THE AUTHOR ASSUMES NO RESPONSIBILITY OR LIABILITY WHATSOEVER       *
 *   WITH RESPECT TO YOUR USE OF THIS SOFTWARE/INFORMATION.             *
 *                                                                      *
 ************************************************************************

@ENDNODE

@NODE history "Release Note"
@NEXT ErrorHandler
@PREV ErrorHandler

@{b}Changes@{ub}

Pre Release #5:
---------------

  - Added "Fill Canvas" and "Clear Canvas" butons to ToolBar.

  - Added "Maximum filter" effect.

  - Added "Minimum filter" effect.

  - Added Channel Weights to the "Monochrome" effect.

  - Slightly changed rendering of circles to remove annoying pixels around 0°, 90°, 180°, ...

  - Added "Update Picture" shortcut to <return> in editor.

  - Added "Gradient Painter" effect.

  - Updated this rather incomplete guide :o)

  - Added "Alpha => Image" generator.

  - Added the text to be drawn to Tool::Manager.

  - Added "Font selector" dialogue to Tool::Manager menu.

  - Added Shaded Text drawing tool!!

  - Added "Paint with shadow" effect - check it out with text.

  - Improved lines and lightnings to allow for removing of paint as well.

  - Improved rectangles, ellipses and polygons to account for the "Pressure" setting
    in Tool::Manager.

Pre Release #4:
---------------

  - Added PNG + JPEG support - finally!!! Boy did that cost blood, sweat and tears!!
    Notice that DiamondBOX loads, uses and preserves the alpha channel of PNG's!
    DiamondBOX is now in part @{b}based on the works of the Independent Jpeg Group.@{ub}

  - Added BumpMaps drawer - check out the "Balance" texture mapping.

  - Added "Posterize" effect.

  - Added "Edit", "View" and "Kill" buttons on Toolbar.

  - Added single color ranges to "Mono Filter".

  - Improved visuals slightly of a couple of effects.

  - Added "Logic Operation" effect.

  - Added "Balance" effect.

  - Added "Cloud" generator.

  - Stripped NewIcon info from buttons.

  - Added new input method: Textual buttons.

  - Added new input method: Popup buttons.

  - Removed useless "RAW.loader". This should hopefully fix the JPEG crashes.
    This loader should never have been included in the previous release 1.03.

  - Fixed a few minor bugs.

Pre Release #3:
---------------

  - Added tolerance setting for flood fill in Tool::Manager

  - Added Tool Type "STACK_SIZE". Default is 100000. This should suffice for smaller
    pictures, but flood filling large pictures may kill you. In that case try upping
    the stack limit. Do *NOT* use the std. WB Stack setting of the icon.

  - Changed behaviour of CLOSE gadget in editors => kill frozen picture as well
    If shift held frozen picture will be kept in RAM.

  - Added lightning draw tool - fractal line

  - Added line draw tool

  - Added support for several layer types in Layer::Manager

  - Renamed old type layers => Primary Layers

  - Added "Group layers"

  - Added "Secondary layers"

  - Added effects: "Explosion", "Saturation" and "Convolution Matrix"
    Also added useless experiment "Randomize"

  - Added generators: "Flip Left <=> Right" and "Flip Top <=> Bottom"

  - Added saver: "RGB8"

  - Fixed Enforcer hit from Layer::Manager

  - Improved TurboPrinting - still some way to go

  - Added "Position Texture" to the "Picture/Tool menu"

  - Added menus "Picture/Operate frozen + active"

  - A bunch of other improvements and bugs fixed

Pre Pre Release #3
------------------

  - Nothing recorded

@ENDNODE
