home *** CD-ROM | disk | FTP | other *** search
- Instructions for !Widget5 by Andrew Sellors
-
- *****************************************************************************
- * NOTE: *
- * !Widget5 is FreeWare. *
- * This means that you may freely copy and distribute it, provided that it *
- * is complete with all original files, and that you do not sell it. *
- * PD libraries may charge a nominal fee for the cost of duplication, *
- * postage etc. *
- * In no circumstances shall the author be liable for any damage, loss of *
- * profits, time or data or any indirect or consequential loss rising out of *
- * the use of this software or inability to use this software. *
- *****************************************************************************
-
- Contents:
- ~~~~~~~~~
-
- About Widget 5
- Compatibility
- Operation
- Managing Filters
- Filter File Format
- Drawing Masks
- Configuration Window
- Security
- Setting the 3D bit
- Credits
- The Future
- Contacting the author
-
- ********************************************************************************
-
- About Widget 5:
- ~~~~~~~~~~~~~~~
-
- * Widget 5 is a 256 grey level image processing package for square pixel
- Sprites.
-
- * Widget 5 will work with any size of image, memory permitting.
-
- * Widget 5 loads any file as a 256 grey level image, disregarding any palette.
- (Useful for owners of the Brainsoft video digitizer)
-
- * Images are stored in 12 separate "Image Banks" in memory.
-
- * Widget 5 can be run in any screen mode, but those which have 256 grey levels
- in the palette will result in the best images.
-
- * Widget 5 will store the images in a dynamic area when used with RISC OS 3.5+
-
- * Widget 5 can load and saved squashed sprite files to reduce disc usage.
-
- * Widget 5 supports the following image manipulation functions:
-
- * Add two images
- * Average two images
- * Mix two images
- * Convolve an image to another using a NxM matrix (N,M in the range 1-9)
- * Focal Analysis with the following localised processes on a
- 3x3, 5x5, 7x7 or 9x9 patch:
- * Mean greylevel
- * Median
- * Maximum
- * Minimum
- * Changing image greylevels by:
- * Drawing the mapping function using the mouse
- * Applying a threshold value
- * Applying a gamma correction value
- * Applying histogram equalization
- * Applying S.L.C.E. (Saturating Linear Contrast Enhancement)
- * Scaling an image by resampling using bi-linear interpolation
- * False colouring selected greylevel ranges and calculating the percentage
- of each range.
- * Levels slice by false colouring equally spaced sections of the total
- grey level range to a defined number of sections and calculating the
- percentages of pixels contained in each of the ranges.
-
- * Widget 5 allows an irregularly shaped area mask to be defined to allow
- localised processing.
-
- * Area masks can be loaded and saved as text files of point coordinates.
-
- * Widget 5 allows the image to be zoomed using the usual magnifier window
-
- * Widget 5 can draw the following graphs from an image:
-
- * Greylevel histogram
- * Cumulative histogram
-
- * Individual bar heights can be inspected on the graphs.
-
- * Graph data can be saved as a CSV file to allow importation into another
- package for analysis.
-
- * Widget 5 allows Convolution Filters to be loaded and saved.
-
- * Widget 5 uses the 3D bit in CMOS RAM to select 2D or 3D windows _and_
- iconsprites on startup. (See the "Setting the 3D bit" section if you don't
- like 2D windows)
-
- ********************************************************************************
-
- Compatibility:
- ~~~~~~~~~~~~~~
-
- This program is for RISC OS 3.10 or later.
- It has been tested on both RISC OS 3.10 and RISC OS 3.50.
-
- ********************************************************************************
-
- Operation:
- ~~~~~~~~~~
-
- NOTE: Clicking on an action icon with Adjust performs the action but leaves the
- window open
-
- If a window contains icons where text can be entered in then pressing the
- RETURN key when in the last icon has the affect of selecting the default
- action button (the one with the yellow border if 3D windows are used).
-
- About Image Banks
- =================
-
- When held in memory, an image is assigned an Image Bank number so that it can be
- referenced to for subsequent operations. This is shown on the title of the
- image window and also on the menu displayed when the menu button on the mouse
- is pressed over an image.
-
- Operations chosen from the menu on the image window always use that Image Bank
- for the source image.
-
- When an image window is closed, the image is discarded from memory and the Image
- Bank becomes free.
-
- Starting up
- ===========
-
- The !Widget5 application starts up when you double-click on its filer icon.
-
- Creating a blank image
- ======================
-
- Clicking on the icon bar icon displays the create image window.
-
- The size of the image can be changed by typing or using the arrow icons.
-
- The radio icons determine which image bank the image is created in.
-
- Used image banks icons are greyed out.
-
- Loading a file
- ==============
-
- When a sprite file is dragged to the icon it is loaded into memory and the
- place image window is displayed.
-
- This allows the image to be placed into one of the Image Banks.
-
- Unavailable banks are greyed out, if they are all greyed out then free one of
- the banks by closing the window, but remember to save the image first if you
- want to keep it!
-
- More that one image can be loaded without being placed in a bank, and an image
- can be loaded (but not placed) when all the image banks are used.
-
- Loading squashed sprites
- ========================
-
- Squashed sprite files can also be loaded into Widget 5 in the same way as normal
- sprite files. These are the same as the files saved by the !Squash application
- that comes with the machine and save disc space by storing the data in a
- compressed form.
-
- Only Squashed sprite files can be loaded, an attempt to load a file which does
- not contain a squashed sprite will return an error message.
-
- Image menu
- ==========
-
- Pressing the menu button over one of the Image Banks displays the menu for that
- bank. The Image Bank number is repeated on the menu title.
-
- The "Info" subwindow shows the size and memory usage of the Image Bank, total
- number of used greylevels in the image and the overall greylevel range.
-
- The "Save" submenu allows the image to be saved as a 256 grey level sprite.
- The name of the sprite in the file it set to the same as the filename (up to
- a maximum of 12 characters).
- Selecting the "Save squashed" option will result in the sprite being saved as
- a squashed sprite and so saving disc space.
-
- The "Process" submenu allows one of the image processing operations to be
- selected. These operation will use the Image Bank as source that the menu was
- open over.
-
- The "Graph" submenu allows graphs to be generated for that particular image.
-
- The "Zoom" subwindow allows the size of the image to be changed on screen.
- Clicking on the "Zoom" entry itself displays the zoom window statically.
- The image that the zoom window refers to is displayed in its title and the
- zoom window is always kept above that image window.
-
- The "Add mask" option adds a mask to that image bank and displays the mask
- tools window. If the image bank already has a mask then the option is greyed
- out.
-
- Using Masks
- ===========
-
- Many process windows have "Use Source Mask" and "Copy Outside" options. These
- options control how the mask defined on the source image is used by the process.
- If the source image does not have a mask defined then these options are greyed
- out.
-
- The "Use Source Mask" option when selected makes the process only apply to
- pixels within the mask area on the source image rather than on the whole image.
-
- The "Copy Outside" option, when used in conjunction with the "Use Source Mask"
- option results in the pixels around the masked area to be copied unchanged from
- the source image. With this option off, the pixels around the mask area in the
- destination image are left unchanged.
-
- Pixel Display
- =============
-
- Clicking with the Adjust (right hand) mouse button over the image window
- displays the pixel display window which shows the X and Y coordinate of the
- pixel under the pointer and also the greylevel and a display of the intensity.
- The window remains whilst the button is held down and is updated as the mouse
- is moved around the image.
-
- Processes
- =========
-
- Copy:
- -----
- This copies the image to another bank.
-
- Add:
- ----
- This adds the grey levels in the source bank to those in the destination bank.
-
- Average:
- --------
- This adds the grey levels in the source bank to those in the destination bank
- and then divides by 2.
-
- Mix:
- ----
- This mixed the image in the source bank with another to produce a third which
- can be placed in the same bank as the second source image.
-
- Clicking on "Start" on the source and destination selection window replaces it
- with a second window containing a horizontal slider. This slider allows the
- proportions of each image (shown below each end of the slider) to be changed
- by dragging the sliderbar.
-
- Normally the resulting image is only created when the "Mix" icon is clicked on
- , but if the destination Image Bank is different from both the source Image
- Banks then the "Real-time" option can be selected. This updates the resulting
- image when the mouse is released from the slider allowing different values to
- be tried out easily.
-
- Convolution:
- ------------
- This performs a NxM convolution, where N and M can be any value between 1 and
- 9, using the matrix and anchor point selected. The values of the matrix and
- anchor point can be entered by typing numbers into the icons or selecting
- pre-defined filters from the pop-up menu.
-
- The matrix size can be selected by clicking on the up and down arrows by the
- numbers indicating the current size or by clicking on one of the size buttons,
- eg. "3x3". The menu of pre-defined filters only shows the filters for the
- selected matrix size.
-
- The matrix size and anchor point values are shown as "ROWS X COLUMNS".
- For the anchor point, 0,0 is the centre of the matrix with positive
- coordinates in the right hand and upward direction.
-
- When changing the size of the matrix, if the caret is in the matrix it is
- always returned to the centre (0,0) of the matrix.
-
- The matrix is overlayed on the source pixel (positioned under the anchor
- point) and the overlapping values multiplied and summed together.
-
- As the resultant value for each pixel after the convolution is normally scaled
- in some way, the "Scale" value is provided to scale the value back to the
- 0 to 255 range of greylevels. This value is used to divide the result before
- it is written into the destination image. Clicking on the "Auto" button
- calculates the gain of the matrix and places it in the scale value. This value
- will on average return the result back into the desired range.
-
- The "Offset" value is provided to shift the grey levels up or down before
- they are written. If the gain of the matrix is zero then it removes the
- D.C. component resulting in negative as well as positive results. A positive
- offset of 128 for example will ensure that the negative results are shifted
- up and not lost.
-
- Clicking on the "Clear" button sets all the values in the matrix and anchor
- point icons to zero.
-
- Clicking on the "Save" button displays the "Save Convolution Filter As"
- dialogue. This allows the values of the filter matrix and anchor point to be
- saved to a file for later use or added to the list of filters in memory.
- See the section titled "Managing Filters" further on in this manual for more
- details.
-
- Focal Analysis:
- ---------------
- This performs various localised processes on the image.
- The size of the patch of the image around each source pixel taken for the
- process is selected in a similar way to the convolution matrix size with the
- row of size buttons.
-
- An anchor point, also like in the convolution process, is provided to offset
- the patch from the destination pixel position when it is placed over the
- source image.
-
- These processes take the pixels contained by the patch in the source image
- and process them to produce the value that is placed in the destination
- image.
-
- Mean:
- =====
-
- The mean (average) value of the set of source pixels in the patch is
- calculated and if the difference between that and the original source pixel
- is less than the threshold set in the submenu then this value is written to
- the destination image. If the difference is greater than the threshold then
- the original greylevel from the source pixel is used for the destination.
- The threshold is provided to lessen the blurring on edges where a large
- transition between grey level values occurs.
-
- L.A.C.E.:
- =========
-
- Not implemented yet :-(
-
- Median:
- =======
-
- The set of source pixels in the patch are sorted into numerical order and
- the median (middle) value is selected for the destination pixel.
-
- This is a smoothing process which is particularly suited to removing scratches
- from images.
-
- Maximum:
- ========
-
- The maximum greylevel in the source patch is selected and used for the
- destination pixel value.
-
- Minimum:
- ========
-
- The minimum greylevel in the source patch is selected and used for the
- destination pixel value.
-
- Percentage Cover:
- -----------------
- This allows ranges of greylevels to be selected and false coloured in the
- image. Beside the image window is displayed another window showing the colours
- and greylevel ranges selected as well as the percentage of the whole image
- containing pixels in each of the ranges.
-
- Colours are selected by turning on the option button beside the relevant
- colour box. This ungreys out the two writable icons into which the range of
- greylevels for that colour is typed.
-
- Clicking on "Colour" false colours the current image with the parameters
- selected.
-
- If "Copy to new image" is selected then the current image is copied to the
- "New Image" image bank before being false coloured.
-
- Closing the window attached to the image bank window that shows the
- percentages causes the image colours to revert back to the normal greyscale.
-
- The colours are preserved in the file when the false coloured image is saved
- as a Sprite. As Widget 5 ignores any palette when loading an image, reloading
- this image will result in the colours changing back to the original greyscale
- but if the image is loaded into !Paint for example then the colours can be
- seen.
-
- Levels Slice:
- -------------
- This splits the full range of used greylevels into a selected number of
- equally spaced sections. These ranges of greylevels are false coloured and
- have their percentages of pixels in each of the ranges calculated like the
- percentage cover process.
-
- Clicking on "Colour" false colours the current image using the number of
- levels selected.
-
- If "Copy to new image" is selected then the current image is copied to the
- "New Image" image bank before being false coloured.
-
- Closing the window attached to the image bank window that shows the
- percentages causes the image colours to revert back to the normal greyscale.
-
- Greylevel Edit:
- ---------------
- This allows the greylevels in the source bank to be mapped to different ones
- and the resulting image placed in another bank.
-
- Clicking on "Start" on the source and destination selection window replaces it
- with a second window that performs the actual functions.
-
- The large box shows the mapping function that maps the greylevels in the
- source image (along the bottom of the box) to the resulting image (up the
- side of the box). "0" is completely black and "255" is completely white.
-
- The mapping function can be changed by clicking in the box and drawing the
- line for the new mapping function. When you hold the button down, the
- greylevels in the source and destination images for the current point in the
- box are displayed.
-
- Levels of smoothing can be applied when drawing the mapping function.
- If "Normal Draw" is selected, then only the point in the line where the
- mouse pointer is positioned is affected.
- If either "Smooth Draw" or "V. Smooth Draw" is selected then the points
- near the mouse pointer are also affected, the latter of which producing a
- greater affect. This allows less jagged lines to be drawn.
-
- Various mapping functions can also be selected from the "Processes" menu
- displayed by pressing the "Menu" mouse button when over the window.
- "Linear" produces a resulting image identical to the source.
- "Invert" produces a negative of the source image.
- "Threshold" makes all the levels below the value black and above white.
- "Gamma" applies gamma correction using the value entered in the submenu.
- "Histogram" applies histogram equalization on the source to give the
- maximum possible contrast.
- "S.L.C.E." applies Saturating Linear Contrast Enhancement on the source to
- enhance the contrast in the image. This looks much better than histogram
- equalization as the resulting image is less harsh.
-
- Selecting "Real-time" results in the destination image being updated after
- every operation instead of just when "Map" is selected. The image is updated
- when the mouse button is released after drawing on the mapping function and
- when any of the processes have been selected.
-
- The arrow buttons on the submenus for the Threshold and Gamma processes can
- be used to adjust the values. If the SHIFT key is pressed when the arrows are
- clicked upon makes the values change faster. If the "Real Time" option is
- selected then the image is updated as the values change.
-
- Scale:
- ------
- This allows the source image to be scaled by resampling using bi-linear
- interpolation. When an image is enlarged using this process the "blockiness"
- , caused by the pixels being enlarged, is reduced.
- The new size can be selected from either a percentage of the original size,
- "To Fit" a resolution which can be typed in the two icons or to "Custom"
- x and y scaling ratios.
-
- Graphs
- ======
-
- The "Greylevel Histogram" graph shows the number of pixels using each
- greylevel in the source image.
-
- The "Cumulative Histogram" graph shows the total population of pixels in the
- source image at and below the grey level shown on the x axis. Thus if the
- greylevels are linearly allocated (ie. there is an equal number of pixels
- having each greylevel) then the graph is a straight line between the bottom
- left and top right.
-
- The greylevel and height of the currently selected bar is shown on the bottom
- of the graph. The selected bar is shown in blue instead of the normal red.
-
- Clicking on a part of the graph updates the greylevel and bar height display
- to the bar under the pointer.
-
- The up and down arrows can be used to move the currently selected bar and
- pressing the SHIFT key when clicking on the up or down arrow makes the
- greylevel move faster.
-
- Pressing the menu mouse button over the graph displays a menu that allows the
- graph data to be saved as a CSV (Comma Separated Variables) file and the size
- of the graph to be changed.
-
- ********************************************************************************
-
- Managing Filters:
- ~~~~~~~~~~~~~~~~~
-
- Widget 5 holds a set of convolution filters in memory that can be accessed by
- the pre-defined filter menu in the Convolution Process window. The filters
- are referenced by size (ie. the number of rows and columns in the matrix) and
- filter name. The filter menu only shows the filters for the selected matrix
- size, or "None Found" if none are defined for that particular size.
-
- When Widget 5 starts up it scans all the files in the default filters directory
- and loads up the filters that are present in the files to be shown in the menu.
- The location of this directory, which is by default, !Widget5.Filters, is setup
- with the system variable "<Widget5Filters$Dir>" in !Widget5.!Run. To add filters
- so that they are loaded on startup, simply place the files in the Filters
- directory (the !Widget5 application directory can be opened by double clicking
- on the filter icon with the SHIFT key pressed). If you want to place the
- directory somewhere else then just edit the !Widget5.!Run file with a text
- editor such as !Edit.
-
- By dragging a filter file to the Convolution Process window the first filter in
- the file is used to set the values of the matrix and anchor point. This allows
- a library of filters to be built up and selected easily.
-
- By dragging a filter file to the Widget 5 iconbar icon, all the filters in the
- file are loaded up into memory to appear on the filter menu.
-
- When the "Save" button in the Convolution Process window is clicked on, a copy
- of the filter matrix and anchor point coordinate is taken and the
- "Save Convolution Filter As" dialogue is displayed.
-
- The name with which the filter appears in the menu and is reference by must be
- entered in the "Filter Name" icon.
-
- This window allows the convolution filter to be saved to a filter file by either
- dragging the filter file icon to a filter window or by typing in the full
- pathname for the file and clicking on "Save". As this overwrites a file if it
- is already present, Widget 5 prompts for conformation if a file will be
- overwritten.
-
- If "Add To Current" is selected then the filter is added to the end of a filter
- file already on disc rather than replacing it. This way, more than one filter
- can be added to a particular file.
-
- If "Add To Memory" is clicked on then the filter is added to the list of filters
- stored in memory and so will appear in the filter menu. This does not mean,
- however, that the filter will be present the next time Widget 5 is loaded.
-
- If "Save To Default" is clicked on then the filter is added to the default
- filter file. This is a file in the default filters directory that holds the
- default filters. Thus by clicking on this button, the filter will be loaded next
- time Widget 5 starts. The filename of this file is also setup in the
- !Widget5.!Run file with the system variable "<Widget5$FilterDefault>". The
- default is !Widget5.Filter.Default.
-
- As the filters are referenced by size and name, two filters with the same matrix
- size and name cannot be present in memory at the same time. For this reason,
- an attempt to do this by either loading a filter file or adding a filter to
- memory using the "Save Convolution Filter As" window will result in an error
- message being displayed showing the name and size (and the filename of the file
- holding the file where applicable) of the duplicate. For this reason an error
- is also displayed if an attempt is made to add a duplicate filter to a filter
- file.
-
- ********************************************************************************
-
- Filter File Format:
- ~~~~~~~~~~~~~~~~~~~
-
- Convolution filters are stored in text files so that they can be easily edited
- and created manually.
-
- A filter definition in the file consists of a block of lines without any blank
- lines between the lines for a particular filter. Blank lines are allowed between
- different filters.
-
- Numbers in a line are separated by commas (,).
-
- Leading spaces, and spaces between the numbers and the separating commas are
- ignored.
-
- The first line of the block contains the name of the filter.
-
- The second line contains the size of the filter as "rows,columns".
-
- The third line contains the anchor point coordinates in the form "row,column".
-
- The subsequent lines contain the matrix values, one line for each row in the
- matrix.
-
- eg.
-
- Smooth
- 0,0
- 3,3
- 0,1,0
- 1,1,1
- 0,1,0
-
- Defines a 3x3 matrix called "Smooth" with an anchor point of 0,0 and a matrix,
- [ 0 1 0 ]
- [ 1 1 1 ]
- [ 0 1 0 ]
-
- ********************************************************************************
-
- Drawing Masks:
- ~~~~~~~~~~~~~~
-
- When a mask has been added to an image bank, the mask tools window is displayed,
- giving access to tools that allow the shape and position of the mask to be
- defined and the points saved as a text file for later use.
-
- Dragging a text file containing a list of points to the mask tools window, loads
- the points in as a new mask shape.
-
- The mask outline is shown as a red line over the image. The points on this shape
- are marked by either green squares or yellow triangles to indicate selected
- points.
-
- Add Point tool
- The first tool button on the left allows points to be added to the mask shape
- by clicking on the image with Select at the required position and is added on
- the shape between the two selected points. The currently selected points can
- be changed by clicking on the green squares.
-
- Move Point tool
- The next button allows points to be moved. This can be done by either dragging
- a point with the mouse to the required position or by using the arrow buttons
- on the tool window to move the selected point one pixel at a time. The
- coordinates of the selected point are shown in the tool bar together with the
- greylevel of the pixel under the point. These values are updated as the point
- is dragged or moved using the arrows. If the SHIFT key is pressed at the same
- time as the arrow icons then the point moves faster.
-
- Delete Point tool
- The next button allows points to be deleted from the mask shape by clicking on
- the relevant green squares to remove that point. Points can no be deleted
- when only two are left otherwise there is no shape!
-
- Filled Shape tool
- The next button causes the area inside the mask shape to be filled in yellow.
- This allows the shape of the masked area to be seen clearly.
-
- Memory Display
- Next along the line at the bottom is the amount of memory that the mask uses.
- This memory is freed when the mask is discarded.
-
- Copy Mask
- To the right of the memory display is a pop-up menu button that allows the
- shapes of masks present on other image banks to be copied over. If no other
- images have masks then the menu says "No masks".
-
- Save Mask
- The next button displays a save box allowing the mask points to be saved as a
- text file. This allows masks to be stored and used later by dragging them from
- the Filer window to the mask tools window.
-
- Discard Mask
- The last button removes the mask from the image bank and frees the memory that
- it takes. Don't use this if you still want to use the shape as once it is gone,
- it cannot be retrieved unless it was saved as a text file.
-
- ********************************************************************************
-
- Toolbar:
- ~~~~~~~~
- Most of these icons are self explanatory (or at least I hope so :-)
- A point worth noting, however is that the histogram button performs two
- actions, the a Select mouse click displays the Greylevel Histogram and an Adjust
- click the Cumulative Histogram.
-
- ********************************************************************************
-
- Configuration Window:
- ~~~~~~~~~~~~~~~~~~~~~~
-
- The configuration window can be opened by selecting the "Configure..." entry
- from the iconbar menu. The window allows program-wide options to be setup
- and the configuration saved so that it is used when the program is next loaded.
-
- "Process Destination"
- =====================
-
- This affect the way the destination banks are picked for the processes.
-
- "Only use free banks" only allows you to pick banks that are unused for the
- destination image.
-
- "Use free or same size banks" allows you to pick banks that are either free
- or contain an image that is the same size as the source.
-
- "Graph Size"
- ============
-
- This determines the size of the graphs that are drawn. The large size is ideal
- for 17" monitors.
-
- "Draw action"
- =============
-
- These determine the default selection of the draw action options in the
- greylevel edit process window when it is displayed.
-
- "Update"
- ========
-
- This determines the default selection of the "Real-time" option when the
- process windows that use it are displayed.
-
- "Image Memory"
- ==============
-
- This determines whether the images will be stored in a dynamic area or in the
- application's normal wimpslot. The location can only be changed when no images
- are present in memory and dynamic areas can only be selected on machines that
- support it.
-
- "Image Titles"
- ==============
-
- Turning "Show process name" on will place the name of the process and source
- image bank(s) onto the title of an image window created by a process.
-
- "Squash Sprites"
- ================
-
- Turning "Save squashed" on selects the option of saving the sprite files as
- squashed files by default when the save dialogue is displayed.
-
- "IO buffer size" is the amount of memory claimed when loading or saving a
- squashed file to be used to buffer the reads and writes to and from the disc.
- A value of 0 is not allowed in this field.
- A small value slows down compression/decompression.
-
- "Double Click Loads"
- ====================
-
- These options select which files Widget 5 will load when their icon is double
- clicked upon in the filer window.
-
- When selected that particular file will be loaded on double click unless another
- program that loads it has been loaded previous to Widget 5 (like !Paint for
- sprites) and is shown to the right of Widget 5's icon on the icon bar.
-
-
- Clicking on "Change" applies the changes made and closes the window.
-
- Clicking on "Cancel" forgets the changes made and closes the window.
-
- Clicking on "Save" applies the changes made and saves the new configuration so
- that it is used the next time the program is loaded.
-
- "Toolbar"
- =========
-
- The "Show" options selects whether the toolbar is present on the side of the
- image bank windows. If you don't like toolbars then you can turn it off.
-
- ********************************************************************************
-
- Security:
- ~~~~~~~~~
-
- If anything should go wrong with Widget5 and the program has to exit due to an
- unrecoverable internal error, the option is provided of saving any loaded images
- before the program quits.
- Clicking on 'OK' when the error message is displayed saves the images by the
- image bank number in a directory 'Widget5' in the Scrap Directory (in the
- !Scrap application).
-
- ********************************************************************************
-
- Setting the 3D bit:
- ~~~~~~~~~~~~~~~~~~~
-
- If you want to use the 3D windows in this program (and the handful of others
- that support it) then you need to set the 3D bit in the CMOS RAM.
-
- !Configure in RISC OS 3.5 allows you to change this, it is the called "2D window
- tools" in the "Window manager" window and should be off to have 3D windows
- (which is where it normally is).
-
- In RISC OS 3.1 the only way to do this is to:
-
- Cut out the following BASIC program and run it.
- Note: this program toggles the bit, so if its off and you run it twice then
- it is still off!
-
- 10REM Toggle state of '3D look' bit in CMOS
- 20REM Read byte
- 30SYS "OS_Byte",161,140 TO ,,byte%
- 40REM EOR byte with mask for bit 0
- 50byte% = byte% EOR 1
- 60REM Write byte back again
- 70SYS "OS_Byte",162,140,byte%
- 80END
-
- ********************************************************************************
-
- Credits:
- ~~~~~~~~
-
- Many thanks must go to Jeremy Cook whose suggestions, encouragement and toolbar
- sprites have made Widget 5 what it is today.
-
- ********************************************************************************
-
- The Future:
- ~~~~~~~~~~~
-
- Widget 5 is not finished! Many improvements are planned although they won't be
- implemented for a while which is why this release has been made.
-
- To wet your appetites, here is a selection from my "To Do" list:
-
- Configurable toolbar.
- Proper Dynamic Area memory management.
- Better mask control. (process inside or outside mask shape)
- L.A.C.E. on Focal Analysis process.
- Algebra process with +-/etc.
- Transformation process with rotation, mirroring, transformation etc.
- Statistics info window with s.d, mean, mode, etc.
- Optimised ARM coded processing routines (at the moment they are just ordinary C)
-
- Any suggestions will be gladly accepted, as without suggestions it cannot get
- better.
-
- ********************************************************************************
-
- Contacting the author:
- ~~~~~~~~~~~~~~~~~~~~~~
-
- I, Andrew Sellors, can be contacted either at
- 57 Boundaries Road
- Feltham
- Middlesex
- TW13 5DR
- England
-
- Or via Internet email at
- asellors@orac2.demon.co.uk
-
- Any feedback from users (bugs reports, requests for new features, praise,
- money etc.) is gladly received.
-