Variations Changelog

Base - 0.05 02/03/2002

Newest changes first.

0.41d 05 February 2008

Made user-specified crop aspect ratios work.
Fixed problem that prevented JPEGs loading in RISC OS 6
Other minor changes.

0.41c 01 August 2005

Three very small bugfixes. I can't seem to find the motivation to work on
Variations much at the moment.

The rotate button in the thumbnailer toolbar was rotating the thumbnails for
the selected images but not the images themselves. (the rotate menu
items worked correctly). Roger Darlington.

Shift-dragging all of the thumbnails to another directory produced a
spurious but harmless 'Dynamic area 0 is invalid!' error. Roger Darlington.

When using click-to-rename the program was still not advancing to the
next name correctly if the full view window was open and was over the
thumbnails window. Roger Darlington.

0.41b 07 July 2005

Improved search (search for words, search state saved with choices). Slideshow (quick cut, faster, caption text better placed).
Multi-rename by date format can now be defined.
Bugfixes (orientation data recognised again, search handles files with simple comments, redraw/sort related issues)

Export thumbnails as draw tidied up a little. Now works correctly in
'metadata' view mode and writes full info text correctly.
Obeys thumbnail sort order too.

Multi-rename: files are renamed in the order in which they are displayed
(ie. multi-rename now obeys the chosen sort order instead of always
using 'native' sort)

Multi-rename: This is a bit geeky but someone asked for it...

The format for rename by file date and rename by exif date can now be set.
An example is given as you alter these format strings. The full list of
available tokens is a bit esoteric (see SWI OS_ConvertDateTime in the
StrongHelp OS manual). In addition to these tokens a hash character inserts
the increasing number which may be set at the top of the dialogue.

Eg %24%mi%w3%dy%m3%ce%yr_# gives filenames like 1932Thu07Jly2005_001
19 = %24 (24 hour)
32 = %mi (minute in hour)
Thu= %w3 (Short form of week day)
07 = %dy (day number in month)
Jly= %m3 (Short form of month)
20 = %ce (century)
05 = %yr (year in century)
_  = _ (characters other than % prefixed tokens are passed directly)
001= #

%w3%dy%m3%ce%yr_#  = Thu07Jly2005_001...Thu07Jly2005_002...Fri08Jly2005_003...
#_%12%mi%am%mo%dy%ce%yr = 001_0932amJune062004, 002_0933amJune062004


The use of a hash (and possibly a separator) is a good idea. It makes
certain the filenames produced will all be different.

Characters other than tokens and # are passed to the renamed output so
you can insert fixed sequences of letters. You have to respect the
filing systems limitations on 'special' characters to prevent errors
when renaming. Generally, avoid " . # * $ % etc.

You can use a hard space (Alt plus space key) in place of a normal space
which is illegal in filenames. Eg. %w3 %dy %m3 %ce%yr gives 'Thu 07 Jly 2005'.
Note that some filing systems may not like hard spaces either.

If you enter an invalid time token '-invalid-' will be shown in the example
icon and the multi-rename won't work until you fix it.

Multi rename by Exif date is now classed as potentially 'dodgy'. :-/
The exif DateTimeOriginal field is stored as a string. I convert this to
five byte time format and then pass it through OS_ConvertDateTime.
My code may fail if a camera stores the DateTimeOriginal field differently
(though they shouldn't, it's a part of the exif standard). This code may
also fail to work with images from cameras without an internal clock.

Slideshow: Caption text was being printed one line higher than it needed to be.

Slideshow: When 'wait until a key or mouse button are pressed' is selected in
the slideshow control window pressing the left arrow key now has the same
effect as pressing the ADJUST mouse button. The slideshow goes back to the
previous image. (pressing any other key advances to the next image).
Changed method of scanning the keyboard to prevent images being skipped.

Slideshow: Made the program faster and more efficient. Previously it did
a lot of memory copying that it didn't really need to do and this increased
the minimum time needed to get from one image to the next.

Slideshow: New in transition 'Quick cut'. Tries to do an instantaneous transfer
between the old image and new. Needs to be able to allocate twice as much
memory to the screen as normal to work correctly. Untested on anything other
than an Iyonix. I'm hopeful that it will just display the image normally on
computers that can't manage it fully. If it crashes your box turn it off and
save choices.

Slideshow: 'No effect' made an out transition that you can now turn off.
You can now choose a single in transition and a single out transition
and always have it used (formerly 'no effect' would be chosen randomly
as an out transition and spoil the pattern.
Eg. Try ticking just In -> Dotfade and Out -> Fade

Slideshow: Images appear in the slideshow in the same order in which they
are displayed in the thumbnail window. This lets you sort by size and see the
biggest images appear first in the slideshow or sort by category and see the
images in the slideshow grouped by their categories.

Bugfix: Mark with tick or cross now works correctly when the sort type is not set
to 'Native' or 'By Name'. Window redraw speed/efficiency improved too.

Bugfix: exif orientation data is being read when thumbnailing once again
(broken between 0.40 and 0.41).

Bugfix: Slideshow font size saved with choices (missed in earlier versions)

Search dialogue state saved with program choices. If you habitually search
by location or category (or a combination) you can have the search dialogue
coming up with these ticked (and even a default string to search for if
you want).

The caret is automatically given to the first active writable icon in the
search dialogue when it is opened.

Three new search types added, reworded existing ones.

'Contains the text' (formerly 'Contains')
Substring search. What you enter must appear exactly within the
comment being searched to register a hit.

'Contains all of the words' (NEW)
Word search. All of the words you type must appear in the comment
to register a hit. They can appear in any order.

'Contains some of the words' (NEW)
As contains all of the words but as long as at least one of the
words you enter is found the search is considered a 'hit'.

'Doesn't contain the text' (formerly 'Does not contain')
Substring search. What you enter must not appear exactly in the comment.

'Doesn't contain the words' (NEW)
None of the words you enter must appear in the comment for it to be a 'hit'

'Is exactly the text'

'Begins with the text'

Bugfix: JPEG files with simple comments in them caused errors when searching
if a variations cache file was being used to search against.

0.41 30/6/2005


ITPC dialogue enhancements.
ITPC data for all object types.
Enhanced slideshow (new effects, can display caption or location).
Thumpinfo file import.

New features

* Sorting.
Thumbnails may now be sorted by name, size, date and category.
('Native' is also available at the moment for debugging purposes, being the
order in which the filing system gives the objects to Variations).

In 'Category' sort mode you have three sub-sort options to define how items
with the same category are sorted. (Filename, Date, and Size).

NB. Files with no category information always appear first in the thumbnail
window. This is handy when categorising a directory of images. Simply categorise
the first images displayed until the first objects are in categories and
you've done the lot.

Using categories and the sub-sorting modes it becomes very easy to find
(for example) the largest Train picture in a directory, or the oldest Holiday photo.

* ITPC format metadata can now be entered for all object types.
JPEG files have this data written into them immediately when you click on
'Write data' in the ITPC dialogue box. For other filetypes you must save
a cache file to record the information you've entered for later use. If
non-jpeg objects have had metadata assigned you will get a warning dialogue
on closing the thumbnail window or starting to thumbnail another window which
allows you to save or discard the data that you have entered.

Notes: This lets you categorise, caption and add keywords to other file types.
Even directories or applications.

Limitations: Files that aren't jpeg don't have the extra data stored inside
them. So if you make copies or modify the files this information will be lost.

* Searching.
Simple searching of itpc data is now supported. Menu over the thumbnailer,
'Search...' to open the search dialogue. By default the search starts at
the directory already thumbnailed (drag another to the window to start
looking there instead). By default any sub-directories are also searched.

Searching can be by keyword (default), category, caption or location in
any combination. When searching more than one field you can specify whether
all of the enabled search criteria have to be met (logical AND) for the
image to be deemed a 'hit' or any of the enabled criteria (logical OR).
'Match any' (a logical OR) is the default.

For example,

'Match any'

This will return any pictures where the category contains the word 'signs'
OR where the location fields contain 'London'.
Changing the search to 'Match all' returns only the pictures of signs in London.

You can also invert the sense of individual search criteria.
'Location'...'Contains'...'London' can be made into
'Location'...'Does not contain'...'London' by clicking in the
appropriate place within the window.

Another example:
'Match all'
Categories... Does not contain...'Statues'
Location... Contains...'Scotland'
This would return only those photos taken in Scotland that are not of statues.

Search results are returned as a collection of thumbnails. You can slideshow
these, edit them, copy to a directory, save as a collection etc. using the
normal thumbnailer functions. If you would like the results of multiple
searches to acrue change the 'With results' button from 'Make a collection' to
'Add to collection'.

Clicking on [Search] with Adjust keeps the dialogue box open so you can search
the same directory structure another time. Handy if the search did not turn up
with what you were looking for.

Searching is speeded up dramatically if there is a variations cache file in the
directory being searched. Searching jpeg files with no cache file the program
manages 20-30 files per second on an Iyonix. If a cache file is present this
speed jumps to ~300 files a second. Save cache files in directories containing
lots of images. You can make this automatic with an option in the choices window.

* ITPC dialogue enhancements. There are now a number of default text files for
the various ITPC sections. Clicking on the small text icon beside a
section/writable inserts the contents of the relevant text file into the
writable icons. Adjust clicking on the small text icon lets you edit the
default file. These are all stored in !Variation.ITPC.

There are also popup menus of defaults for two sections (Keywords and
Categories). Clicking on a menu entry without holding shift adds that menu
entry to the associated writable. Shift-clicking on the menu entry will
remove it from the associated writable. Adjust clicking on the menu popup
icon will let you edit the defaults.

The defaults I provide are unlikely to suit you. I suggest you modify them.

* Slideshow enhancements
When 'Wait for keypress or mouse click' is chosen ADJUST may be used to
return to the image previously displayed and MENU will exit to the desktop.
New options to display title & caption, date or location on each image as
well as the filename.

New transitions. These should all 'work' on all computers.
Some of them will not work well on standard RiscPCs. A brief rundown of the
available effects follows. If there is one you don't like you can
'turn it off' by clicking on the menu button beside 'Use transitions'
in the slideshow control window and unticking the appropriate menu entry.
Alternatively if there is one you particularly like turn the others off
to use just it. Active transitions are chosen from randomly. You can't
choose which ones get applied to which images. Yet.

It can be particularly useful to turn off all 'out' transitions so that
each new image appears over the old. All of the settings in the slideshow
control dialogue are saved with the programs choices so opening the choices
window and saving choices after making changes preserves these settings the
next time the program is loaded.

REMINDER: To get the slideshow control window Shift-Click on the Slideshow
button in the thumbnail toolbar or select thumbnails, Menu,

In transitions
- Fade. Fade from/to Black. Should work on everything though I've had a
  report from an Omega user that it doesn't work on his computer.
- Dotfade. Fade using random blocks ranging in size from single pixels to
  16x16 blocks (size chosen randomly). Should work on all computers.
  May be slow in high resolution modes on RiscPCs.
- Dottrans. Two stage dotfade. First stage is 50% opacity. Turn off all 'Out'
  transitions to fade an image over the previous one.
- Dotplink. Multistage dotfade. The idea was to simulate 'raindrops'.
  Sort of.
- Tblinds slow. Slow on anything other than an Iyonix (and even then you're
  probably best to drop the desktop resolution a bit).
- Blinds. Simple 'horizontal blinds' effect.
- Tblinds fast. A better transparent fading blinds effect. Turn off Out
  transitions for best effect. Tolerable speed at 1920x1440x16M on an Iyonix.
- Scroll up/Scroll up fast/Scroll down/Scroll down fast.
  Suitable only for computers with accelerated rectangle copy (Iyonix,
  possibly VRPC, possibly A9, possibly RiscPC+Viewfinder).
  It'll 'work' on a RiscPC but it will be horrible. Trust me.

Out transitions
- Fade. As in transitions.
- Scroll up/Scroll down. As in transitions. Iyonix or computers with
  accelerated rectangle copy only.
- BlackB left. Big black blocks from the left.
- Curtain out. What it says on the tin.
- Curtain in. Ditto.
- Red fade. Naff. To be replaced.
- Dotfade. Quite nice.
There is also another 'out transition' that doesn't appear in the menu
and as a consequence you can't turn it off. It is simply 'nothing'. :-)

* New thumbnail display mode 'Meta'. Modes available are now:
'Large' (large thumbnails).
'Small' (small thumbs).
'Camera' (formerly 'More info' - basic exif info)
'Meta' (new - ITPC metadata only)
'Full' (more extensive camera info, all comment and metadata)

* Thump info import. A 'Thump to ITPC' menu item will appear when you
thumbnail a directory with a !thumpinfo file in it. Choosing this menu
item scans the thumpinfo file and writes comment and keywords into itpc
block in the associated jpegs. NB. I have not tested this extensively.
Reports welcomed. Keep backups!

Click-to-Rename now redraws the window when necessary (when width of renamed
item is greater than the old 'widest item').

NB. Currently when renaming in this way the thumbnails are NOT automatically
re-sorted. This is because when using Click-to-rename the rename writable
icon wouldn't be able to advance to the next object sensibly if things
are shifted around after every rename.

So if you start with Alpha,Beta,Gamma, and rename Beta as Omega the writable
will advance to Gamma (thumbnail order at this point A,O,G). Choosing
sort by name from the menu again would re-order things correctly (A,G,O).

* Multi-rename window expanded to provide the add & remove /jpg (DOS) extension
functions (and these menu items have been removed). The multi-rename dialogue
will also now let you add an arbitary extension to or remove one from the
selected objects.

* GIF thumbnails are now made (more rapidly) using Intergif.

* When dragging a selection from the thumbnailer the program now attempts to
make a 'drag sprite' from (up to five of) the selected thumbnails and it
only uses the default 'package' icon if this fails due to a lack of free

* Many minor changes made to to redraw and display code designed to speed
things up a bit.


Bugfix: When dragging a selection from the thumbnailer window to the iconbar
the iconbar did not automatically pop to front even when configured to do so.
This was due to me turning on auto-scrolling of the thumbnailer window (to
allow you to copy a selection into a directory that was also thumbnailed by
dropping it over it). To get around this problem autoscrolling of the thumbnail
window is now only turned on now if you Alt-drag a selection.

Bugfix: Writing ITPC data, rotating a jpeg and rebuilding a thumbnail the
program no longer changes the date of the file to todays date.

Selection -> Thumbnail -> Rebuild
This could corrupt certain files if they wern't truly exif. If you have any
that have suffered from this they are recoverable using !Jack from David
Barrow or via the new (0.41) menu item 'Clean & repair'.
Files that suffered were those that had exif data but no thumbnail.

Bugfix: Renaming a thumbnail could corrupt cached exif data resulting in a
'Broken TIF header in file' error.

Bugfix: When using click-to-rename the program could sometimes skip an
item if you renamed a very short name as a long name or vica-versa.

Bugfix:  When using click-to-rename the thumbnail spacing didn't get
recalculated to cope with very wide names. Vari will now space out the
thumbnails if you rename one with a very long name. It won't automatically
shrink the spacing when you rename the longest name shorter. Click on the
display radio (Large, small, info, full info) to do this.

Bugfix: The program should cope with loading 180dpi sprites.

Bugfix: Loading an image from the thumbnailer and using the Fade, Shape
or Border variations effects could sometimes get the aspect ratio of
the variations thumbnails wrong.

(I refuse to call this a bugfix!).
Icons in some of the toolbars were unfilled RISC OS Select draws
these icons very differently to any other version of RISC OS (you
get white text on pale grey instead of the correct black text on grey).
Icons changed to filled ones to avoid this.

0.40b 30/5/2005

ITPC data dialogue box redesigned to work with RISC OS 4.
In addition:

If a single thumbnail is selected this is displayed in the pane on the
right of the ITPC dialogue to remind you of the image you're writing
comments into.

URL field now present in ITPC dialogue (in Location section)

'object name' itpc field renamed 'Title' and given more priority.

Windows 'title' exif fields map to itpc 'title' (object name) field.

Software tag read/written in itpc block.

Subtle change to the priority system in comment handling to ensure that ITPC
fields (if present) display ahead of EXIF and COM blocks.

Two new keyboard shortcuts for thumbnailer (when thumb window has keyboard)
 Ctrl-A = Select all
 Ctrl-Z = Clear selection

'predisplay' time (the time to calculate the width of every thumbnail and
every piece of text that will be drawn in the window to work out how many
rows and columns can be displayed in it) has been approximately halved
for more info and full info modes.

Bugfix: 0.40 could write 8BIM segments to the ITPC metadata not a multiple of
four bytes in size. This caused Photoshop to complain that the image was
broken (though it still successfully loaded it and extracted the metadata).

Redraw of selected thumbnails made more efficient.

Solid blue plinth in 'more info' and 'full info' is now optional. New option
in thumbnail section of choices 'Solid plinth'.

Info headings for full info mode may be turned off. New option in thumbnail
section of choices.

0.40 27/5/2005

* Image editing.
* ITPC metadata read/write.
* Multi-file thumbnail rename.
* Save/load 'Collections' of thumbnails.
* Thumbnailer in 'collection' mode lets you have files that are
  in different locations all in the one thumbnail window.
* Automatic rotation of thumbnails/selection of images for cameras
  with orientation sensors.
* Compare two images side by side
* Bugfixes and miscellaneous options/features requested by users.

Bugfix: Occasionally dragging from the thumbnailer to an application failed
to work (drag ignored). 

Bugfix: Using Variations 0.39 as a PCA Tool caused an error.

Bugfix: Histogram redraw was going wrong.

Bugfix: Entering values into writable fields in colour picker dialogues
caused Variations to freeze. [Colin Carnegie]

Bugfix: The compare original and thumbnail, save for web and compare two
images window had redraw problems at <100% scale.
[Originally reported by Chris Terran ages ago]

Bufix: 'EXIF Hack' option for RO<4 users: When turned on, could return
a jpeg size 4 bytes smaller than is correct.
Symptoms: garbage at extreme bottom right of thumbnails, 'Unexpected end
to jpeg stream' error when rotating images or thumbnails.

Bugfix: JPEGs saved with Adobe Photoshop < version 3.0 could cause errors
as Variations tried to parse an APP13 data block that was in a different
format. Vari now ignores such blocks.

Bugfix: JPEGs with an aborted exif header (no thumbnail) and an exif header
size that wasn't a multiple of four bytes caused all sorts of problems.
Stuart Hallidays texture jpegs which include the comment 'NOCTUA Graphics
Seamless Texture, Optimised by Pegasus Imaging Corp' were examples of these.
Vari now handles such images.

Yet another broken exif variant handled. Files with a 20 byte JFIF header
followed by a 'dummy' FF E1 (exif) marker before the real exif marker now
thumbnail without error.

large interlaced jpegs with no thumbnail in the file now thumbnail about
four times as fast.

Interactive help for: Choices, Full view window and Edit image toolbar.

Scale view options for preview area in Image -> Enhance... dialogue.

Done: Tidied up all deletes to use filer_action delete & update thumbnails.

View and thumbnailer pane redesigned to use configured desktop font
for all buttons.

Changed templates: 'Step size' becomes 'Variance' in vari. thumbnails window.
                   Rearranged choices section buttons. ['brian']

Redesigned program info window to use a jpeg file.

Saved with choices: Internal steps for effects, auto-rotate thumbs option.
Edit !Boot.Choices.Variations.Choices to alter these.

Fixed some bump arrows that acted too quickly.

New Special effect 'blur' (Choose Specials in the variations thumbnails
window, then choose blur from the popup. Large area blur effect, obeys
mask. Not all of its modes are implemented yet.

Compare two images button in main image view pane.
Drag a jpeg or sprite here to compare the two images side-by-side.
NB. Window redraw goes wrong if the dimensions of the images don't match.
[someone on csa.apps gave me the idea for this]

Scale view up and down buttons in main image view pane.

'Shy' toolbars option in thumbnailer section of choices. When on, the
thumbnailer and full view toolbars shrink whenever the pointer is moved off
them to save screen space. Try it. You'll either like it or loathe it.

Optional small version of full view toolbar. Right beside 'Shy' in the thumbnailer section of choices.
[both inspired by Roger Darlington - my ideas aimed at stopping the
programs toolbars hiding his iconbar]

Rename selection. When more than one thumbnail is selected then
Selection -> Rename -> leads to a different dialogue that allows you
to rename the selection in several different ways.

The default, 'Start no.' renames the selection as Image001, Image002 etc.
You can change the leaf name and start number. alter the number of
leading zeros in it by clicking and typing more at the start of the
number writable field. By default the number is inserted after the
leafname (default of 'Image'). Inserting a a hash character into the
leafname will allow you to place the number elsewhere within it.
'#Image' will give renames of the form '001Image', '002Image'...
'IM_#_backup' will give you the likes of 'IM_001_backup', 'IM_002_backup'...

'File date' will rename the selection with the date of each file. An example
of the format used is provided in the dialogue.

'EXIF date' will rename the selection with the exif date. If a file isn't an
exif jpeg or the 'Look for and cache exif information' option in choices is
turned off then no renaming will occur.
[Roger Darlington] 

Drag selection to the iconbar with ALT held down starts the thumbnailer in
collection mode. Images and files can then be dragged in from disparate
sources into the thumbnailer to create a 'collection'. In Collection mode
the program doesn't allow you to create a directory or save from other
programs into the thumbnailer window because it doesn't point to any one
'place' as such. Other operations on the objects within the collection
should work as normal. Double clicking on a directory inside a collection
thumbnails that directory. Collections can even contain other collections.
['brian' & me]

Thumbnailer menu. File -> Save collection ->

Collection filetype. Double clicking on one loads Vari if necessary and
displays the collection/directory that was thumbnailed. Collections have
a representative thumbnail and when thumbnailing a directory /containing/
collections this is used to give an indication of its contents. [me]

ITPC comment writing for thumbnailer. Selection -> Edit metadata...
[Stefan Bellon]

Dialogue modelled on IrfanView. Much more work to be done here, particularly
easy ways to add keywords to a selection, searching ITPC info etc.
You can keep the dialogue open and change the selection in the thumbnailer
to edit data for different images.
If more than one image is selected then all of the fields in the dialogue
are initially blank. Entering something into one and choosing 'Write' will
write that field in all of the files in the selection  - leaving those
fields that are blank in the dialogue unaltered in the selection of files.
This allows you to (eg) write the Author field to all of the files without
messing up their individual descriptions. I suggest you copy a selection
of images into a temporary directory and play with this feature to
understand how it works. Don't forget to tell Vari. to search for comments
and set the thumbnailer to display 'full view' first.

Modified behaviour of click-to-rename in thumbnailer. Clicking on a thumbnail
image now nukes the writable icon. Further modification, resizing the window
also deletes any writable instead of trying to keep it in place (something
odd about Wimp_SetCaretPosition - the caret wasn't following the moved icon
correctly). [Roger Darlington]

New choices allow you to specify the dimensions for 'new' thumbnails.
Vari creates thumbnails in these circumstances: Save as JPEG with 'exif info'
option on, Selection->Thumbnail->Rebuild.

Warn when deleting files now optional. In thumbnail section of choices.
(warning is on by default).
[Roger Darlington]

Keyboard shortcuts for thumbnailer.

      Delete = delete selection.
      < = rotate selection left.
      > = rotate selection right.
*PLEASE* be careful with these, particularly if you turn off the delete warning
as a single keystroke when the thumbnailer has the keyboard will delete the
selected files. [Roger Darlington, who never makes a mistake I presume...]

New thumbnailer menu item:
      Selection -> Auto rotate
Requires a camera with orientation sensor and exif files. Only 90 left and 90
right of 'normal' handled at present.
NB. When 'Auto-rotate thumbs' is on there isn't much visible effect from
using this option (the orientation arrows disappear, that's all).
[Peter Noble]

New thumbnailer menu items:
      Selection -> Thumbnail -> Rebuild
      Selection -> Thumbnail -> Rotate left
      Selection -> Thumbnail -> Rotate right
NB. The rotation options only rotate the thumbnail image in the exif file. The
    main image data is not rotated by these. Use when the thumbnail is out of
    step with the main image.
NB. Selection->Thumbnail->Rebuild uses the main image buffer, loads each image
    in the selection, creates a new thumbnail for it and then inserts this back
    into the jpeg file. So the last image in the selection. will be loaded at
    the end of this process.
NB. This adds a thumbnail to jpeg files that don't have one, adding a dummy
    exif header as it goes.
[Roger Darlington]

Auto-rotate exif thumbs when thumbnailing a directory. Optional (thumbnailer
section of choices). Saved with choices file. On by default. Requires a camera
with an orientation sensor and valid exif files.
NB. Still possible for the thumbnail to be out of sync if you used something
    that rotates the main image and not the thumbnail or rotates the thumbnail
    and doesn't re-write the exif orientation tag with 'upright'.
    Use Thumbnail-> rotate or rebuild options to fix if you encounter such.
[I forget who asked for this, sorry!]

Visible indication of image orientation overlayed at bottom
left of thumbnails. (only 90 left and 90 right of 'normal' handled at present)

Edit button in main image view pane. Turns on image editing mode.

Editing functions currently available:
* Paint
- Ctrl click for colour sampler.
Paint modes include:
 * Normal
 * Add
 * Subtract
 * Lighter
 * Darker
 * ColDodge
 * ColBurn
 * Hue
 * Saturation
 * Lightness
Many brush behaviour options to play with too.

* Auto-redeye
- bit simplistic but works ok with example files I have.

* Clone stamp
- Ctrl click to set sample position. Can clone from another image (sprite or
JPEG, drag it to the clone options window) and options for the clone to
obey mask at the position being read and at the position being written.
Rudimentary 'Heal' option. Tutorials and more work on this to follow.

* Paintable single step(for now) undo on Adjust and undo/redo in editing

To return normal behaviour of the full view window click on the tick button in
the editing toolbar (or close the editing toolbar).

0.39 05/01/2005

Done: Local contrast enhancement via large area USM. 'Image -> Enhance...'
Lots of options. Play with them. Run !Help if you don't know what to do.
ADJUST drag sliders to update preview on the fly. The default
(radius 50, Amount 20%) gives a gentle contrast boost.
Dialogue obeys any mask defined so you can use this to direct usm to a
particular region of the image.

Done: Added Select->Saturated and Select->Unsaturated to the mask editor to
allow you to quickly select pixels by their saturation.

Done: Dramatically speeded up (factor of 40 or even more!) common cases for
'Feather' in the mask editor. Selecting the root menu item ('Feather ->') now
applies a feathering with the dialogues current settings.

Done: The settings of 'With EXIF data and thumbnail' 'With ITPC comments
and photoshop data' and 'Write comment' in the save jpeg dialogue are now
saved when you save choices.

Done: 'Defer jpeg to sprite' option in the jpeg section of choices. When on
Variations tries to defer the process of converting a jpeg into a sprite
until it really needs to. This makes jpegs appear in the full view window
faster (though redraw of the window will actually be slower). Useful if you've
configured Variations as an image viewer.

Done: Improved thumbnailer selection display with an aim to making it more
obvious which objects are selected. This includes a blue dithered checkerboard
that is thrown over the selected thumbnails. Also, the name of the object
is now inverted (becomes yellow on blue) when it is selected.

Done: Thumbnailer. When in 'Single click' mode holding Ctrl and dragging (both
over a selection of thumbnails to save them to another application/directory
and off thumbnails to drag a box around a selection) now works.

Done: Free rotate now allows floating point values for fine control and
angles less than one degree. Clicks on the bump arrows change the value by 0.1
degrees. Use Shift-Click for one degree steps, Ctrl-Click for five degree steps.

Done: Hue variations effect speeded up dramatically (by a factor of about three).
Hue now obeys any mask that may have been created.

Done: Warp has a 'preview' option. Defaults to on. Turn off to disable
rendering of the warp after every drag.

Done: The 'Variations' button in the thumbnailer pane now works. It loads the
last image in the selection (if more than one) and displays variations of it.

Misc thumbnailer stuff:

* Thumbnailer full info mode now displays image dimensions and focal length
* Filesize of small files ( <1KB ) is correctly displayed instead of 'few KB'
* Exposures longer than one second are correctly displayed.

* Very short exposures (faster than about 1/2000th of a second) are now decoded
  correctly in 'full info' mode. In 'more info' the time given may still be slightly
  inaccurate (because of a fixed point storage rounding error).

* : 'F0 at ISO 0' doesn't get displayed now in more info and full info modes
if there is no exif data.

* In more info mode a jpeg that isn't exif or an exif with all fields missing
now has ' - no exif data found -' as was already the case in full info mode.

* 'Full info' mode doesn't waste screen space for images that aren't exif jpegs
with a long comment '[DEBUG] Not an exif jpeg or exif cache turned off."' when
that comment wasn't getting displayed anyway ('cos the file wasn't a jpeg...)

* Some cameras (eg. Nikon 775) write weird stuff to the exif description
(control characters outside the normal ASCII range) and comment tags
(120 space characters). This messes up 'full info' display as Variations
decides the column width needs to be much larger than it really does need to be.
So I've added code to sanitise these fields. Removing double spaces, trailing
right spaces and replacing unprintable control characters with spaces.

* If the thumbnail window width was less than one full column, the scrollbar was
set to display the very last image in the directory and the image was selected
and then deleted or 'hidden' an Abort on data transfer error occurred on the
next window redraw. The number of 'ifs' involved in provoking this one means it
took me most of a day to find and fix...

* 'Convert jpeg thumbs to sprites' behaviour modified slightly to not scale up
thumbnails that are less than 160x120. This improves thumbnail appearance
slightly at the cost of a larger black border around such (though
'strip borders' will remove this of course).

Bugfix: Saving as a sprite doesn't now create sprites names which include
uppercase characters. This allows Paint to function properly when editing
these sprites and may stop other programs becoming confused over them too.

Bugfix: On RISC OS 5 loading a Select Alpha channel sprite and then applying
an effect to it acted as if there was no mask (ie the effect wasn't applied!)

Bugfix: Thumbnailer. If an exif jpeg image was missing its thumbnail various
odd things would happen including data aborts, missing thumbnails and
'number too big' errors. Strictly speaking all exif jpegs should include a
thumbnail but it's better not to crash unless we have to. ;-)

Bugfix: Thumbnailer, dragging a box around a selection failed (did nothing)
      after saving thumbnails as draw.

Bugfix: Rotating sprite thumbnails that weren't a multiple of two pixels wide
would go wrong - the edges would get lopped off.

Bugfix: Rotating a selection in the thumbnailer no longer makes its window jump
to the front of the stack (adjust click on 'Selection -> rotate left' keeps
the menu in front of the window now).

Bugfix: Warp lets you enter the number of divisions with the keyboard - window
updates on a RETURN.

Bugfix: SWI Wimp_AutoScroll,0 caused an error running the softloaded wimp (RO 3.7)
in circumstances where it didn't on RISC OS 5. Modified behaviour to (hopefully)
avoid the problem.

Bugfix: Previous/Next in the full view toolbar skip files in the directory that
aren't images and also copes when an expected image has been deleted (moving
on to the next image that does exist).

Bugfix: Delete from full view toolbar now updates the thumbnails window (via a nasy
hack as I haven't gotten around to finishing off the directory watcher in

0.38 07/11/2004


Warp image
Save thumbnails as a (potentially series of) drawfile(s).
Save as jpeg optionally preserves exif and comment data and writes new thumbnail.
Save as jpeg can write a simple comment too.
Full info mode that displays any comments embedded in the jpegs.
Save thumbnail window layout and position with program choices.
Keyboard shortcuts for full view.
Lots of misc. bugfixes/changes.

Added 'full info' display mode. Large thumbnail + even more information
(jpeg comments). Comments displayed include: Windows added exif tags. EXIF
defined comment, author, software, description tags. General JPEG comment
blocks (written by The GIMP), ITPC metadata (Author, copyright, description,
(non-functional) URL etc as written by Photoshop, Irfanview and others.

Done: Added new option (ON by default) to look for and load all exif, APP13
      and comment data found inside jpeg files.
      NB.This considerably slows down thumbnailing of a directory (about
      halves the speed) so if you aren't interested in comments that may be
      in jpegs turn this option off and save program choices.
      You must have this option ON for 'full info' thumbnail display mode to
      be of much use.

Bugfix: Rotating a thumb doesn't corrupt cached comment and App13 blocks.
Bugfix: Reuse/rebuild thumbnail cache was corrupting cached exif & comment data.

Added to the Display -> submenu:
Full info
Save cache file
Delete cache file
Strip borders

Saving the cache file will preserve any 'marks' you've applied to images in
the directory. The next time you thumbnail it the same images will again
be marked with ticks or crosses.

Done: Save thumbnails (or selection) as a (possibly series of) drawfiles
in any layout. Save obeys the thumbnail view mode (so more info and full info
modes will include the extra information in the drawfile). Get to this by
MENU over directory thumbnail window and choosing 'Create drawfile...'

NB. I've more ideas for this feature - some greyed out icons in the
dialogue and an empty section entitled 'preview' will give you a clue.

Bugfix: Saving contacts as draw got the bbox wrong for jpeg thumbs extracted
from Photoshop sourced jpeg files - due to these defined as being
72dpi instead of 90.

New feature: Image -> Warp...

Play with it. I'm not sure how useful it will be. The warp is previewed
after every drag on the image. Fast enough to be tolerable with screen
size images on an Iyonix. May be a bit slow on a RiscPC so reduce the
images size or use less subdivisions. The amount of warping applied as
you drag depends on the distance from the mouse pointer.
Slider in the attached pane controls the size of the circle of influence.

HQ render mode and bezier warps to follow.

Done: Made 'convert jpeg thumbnails to sprites' work (didn't do anything before)

Done: Added new option to strip black borders from thumbnails. The above
      option should also be turned on if you want Variations to strip borders
      from EXIF camera thumbnails. Both options now saved with choices.
      Stripping is 'fuzzy' in that it will remove rows and columns that are
      not quite black (no pixels more than 10% lit in a column/row is the
      rule). In anycase it will never strip more than 20% of the width or
      height of the thumbnail away so your shots of a black cat at
      midnight are safe. :-)

Done: Option to convert to sprite and remove black borders is applied to
      new images found during a directory refresh/reuse.

Bugfix: Rotating a jpeg that has had its thumbnail turned into a sprite
and black stripped re-creates a jpeg thumbnail and writes it back to
the file.

Bugfix: Convert to sprite, remove black border, copy file into same dir -
refresh abort on data transfers during redraw. Traced to more general bug
that copes with to or more identical files with different names - wasn't
always moving data to the right place. If you had identical copies of the
same file under different names in a directory then you may have
encountered this bug in previous versions of Variations.

Done: Option to save jpeg with exif data and new thumbnail. Note that if the
original jpeg file isn't available to transfer the exif data from (if the
file you loaded wasn't an exif jpeg or you've since deleted it) then
turning this option on will save a file with a dummy exif header and
a thumbnail.

Done: Option to preserve comment and App13 (Photoshop info, ITPC comments)
      blocks when resaving as jpeg.

Done: Option to add a new simple comment when saving as jpeg.

Leave all three of the above options off to save 'simple' jpegs compatible with
all RISC OS software (though most things really should cope with loading exif
and commented jpegs these days...)

Done: Option in choices to set the thumbnail view scaling factor. This allows
larger or smaller than normal thumbnails. 'Small thumbs' and 'more info' modes
still halve the set scaling factor. Saved with choices. Suggest you stick to
doublings (50%,100%,200%,400%...) to avoid lumpy looking thumbnails.

Done: The size of the thumbnail window is now kept (if possible) when you
delete or rotate images. When you copy files into the thumbnail window it
is still resized. Comments?

Done: Variations handles longer pathnames for rotate, delete, rename, copy,
slideshow etc.

Done: Slideshow: No escape, view till end reported harmless
'BBC Basic version...' error

The four above were reported/requested by Roger Darlington.

Done: New options added to choices for default thumbnail window rows and
columns. This will be enforced when the thumbnail window is next opened or
refreshed if its current size is less than these defaults (and there are
enough thumbnails in the directory to allow it).

Done: Thumbnail window size and position now saved with program choices. When
combined with the above options this should let you set up the thumbnailer in
any default arrangement you want.

Done: Full view window doesn't pop to the front of the window stack when it

Done: New option in choices, when double clicking on a thumbnail is set to load
and display full view you can now also choose to have the full view window open
behind the thumbnail window instead of at the front of the stack.

This lets you arrange things thus:
     [         Full view      ]
     [                        ]
     [                        ]
     [                        ]
     [                        ]
     [                        ]
[            thumbnails               ]
[  **  **  **  **  **  **  **  **  ** ]
[  **  **  **  **  **  **  **  **  ** ]

Done: Fixed single click mode in thumbnailer - now obeys configuration options
introduced in 0.37 for what happens. Holding CTRL when single clicking
prevents activation of the selected object. Ctrl-Select selects the single
thumbnail under the pointer. Ctrl-Adjust clicking toggles thumbnails into
or out of the selection. [Gary Locock]

Done: More info properly calculates maximum width and height of all objects,
taking the font size into account. Font sizes in choices are now allowed to go
to 96pt - which should be enough for anyone. ;-).

Done: More info was getting the bounding box wrong when selecting thumbnails.

Done: Key shortcuts for full view. To use these the full view window must have
input focus (cream titlebar). Give it focus either by clicking in it (though
note that if variations are open this will make the thumbnails all 100% views
of the pixels where you click) or by clicking on an icon in the full view
toolbar attached to the bottom of the window.

Shortcuts are:
'Left arrow' or 'P'  - previous image.
'Right arrow' or 'N' - next image.
'Delete' or 'D' - delete image.
'V' - See variations on the image.
'S' - slideshow the directory containing the image.
'C' - crop image [opens crop window].
'<' - rotate image left.
'>' - rotate image right.
'Up arrow' or '+' - zoom in
'Down arrow' or '-' - zoom out

Misc bugfixes/changes:

Done: Calls to swi Wimp_SlotSize now always preserve 'next'.

Done: Delete a thumbnail selection now uses the filer delete (so the wastebin in
RO Select should work). [Michael Gerbracht]

Bugfix: 5x5 variations thumbs wrong on portrait aspect file.
(first nine thumbs not rendered?)  ---> offsets! ----> when
click in main set offset same for *all* thumbs even those
not being rendered right now.

Done: Variations thumb offsets/scales are now reset when an image is loaded.

Done: Loading old/no choices caused U/K var.

Done: Fullview popped to the front when it shouldn't (hiding thumbnails)

Done: Choices pane went off the top of screen in <1024 pix. high mode when
resizing down bounced it up off the bottom of the screen.

Bugfix: Fixed. Changing view modes redraws the window twice - why?

Done: When resizing the thumbnail window vertically unnecessary
window redraw removed.

Done: Modified 'odd jpeg' detector to let files produced by Photoshops 'save
      for web' through the net if 'OS can load exif' turned on as it appears
      RO5 at least can load and display these files. 'Ducky' (!) appears near
      the start of these files. This speeds thumbnailing of these files

Done: Hourglass for predisplay (made it faster too?)

Done: Now writes Orientation exif field when losslessly rotating jpegs.
This prevents programs that read this field from images taken with cameras
with an orientation sensor from rotating the image again when you load it
into them [Photoshop].

Done: When thumbnailing anything other than exif jpegs the aspect ratio of the
original object is now taken into account when deciding the aspect of the
thumb to create. ie. if the original image is taller than it is wide then
the thumbnail will be too. This slightly improves the definition of these
thumbs (rather than squeezing them all into 120 pixels high portrait
aspect images will instead have 160 vertical to play with).

Done: Speeded up loading of jpeg and other file types slightly. Knocks 0.6
seconds off the time for a 3.2MB JPEG file.

0.37 5/9/2004

Bugfix: When 'Instant effect buttons' in the Windows section of !Boot was
turned off ADJUST clicking the close icon of the thumbnail window failed to
thumbnail the parent directory (because the mouse button was released before
the close window event was delivered to Variations). Using SWI
Wimp_GetPointerInfo instead of OS_Mouse fixes this. (Gary Locock)

Bugfix: Image -> HFlip was not working.

Bugfix: In 'Original & Variation' mode, moving a shape or fade didn't shift the
original image when the effect was applied to it.

Bugfix: When multitasking thumbnailing was turned on ArtWorks, Draw and a few
other 'odd' object types were swallowing all polls (with wimp messages) so
multitasking didn't take place.

Done: There is now a warning given when loading a new image if the current
one has been modifed.

Done: 'pane' windows now stick to the edge of the screen until their parent
window goes off it.

Done: Some more RMEnsures in !Run that might help Variations run on RISC OS < 4

Done: PhotoCD support for thumbnailer and Variations proper. Loading a photocd
file opens a dialogue to let you choose the size you want to extract. If you
hold shift down while double clicking on or dragging a PCD file to Variations
the last size extracted will be used without opening the dialogue. Current
choice of PhotoCD resolution is saved with choices. Requested by Gary Locock

Done: More sensible default thumbnail jpegs for 'can't render' and
'error rendering'. If you still don't like mine replace !Variation.ethumb and
!Variation.dumthumb with your own 160x120 pixel jpegs.

Done: Rearranged choices window, added a floating pane at the top with
'section' buttons to let you go directly to a group of choices.

Done: Added new thumbnailer choices allowing you to change fonts and
fontsizes used. Added option to overlay filetype icon on thumbnails. Added
option to allow you change what happens when a thumbnail is double clicked on
('load and show variations', 'load and show full view', 'filer_run').

Done: Current slideshow window settings are now saved with program choices.
(Michael Gerbracht)

Done: free rotate. Image -> Free rotate... All options functional and most
should be self-explanatory. Experiment with the different quality settings.
Gaussian medium, Bilinear and Rectilinear (ok) are probably best at the moment.

I'll add bicubic when I find a reference/example program I can understand!
Will also think about ways to automate the process of leveling horizons. Till
then guess an angle, click Rotate with ADJUST  and if it turns out to be wrong
choose Image -> Reload from the main menu. (or just the toplevel item 'Image ->'

Done: Renamed 'Image -> Rotate +90' and 'Image -> Rotate -90' menu items to
'Rotate left' and 'Rotate right'. Rotating is now also about twice as fast
thanks to a little bit of ARM.

Done: New 'Full view' stuff. Now defaults to automatically scaling the image
so that all of it is visible. The attached toolbar is working (except for tick
and cross mark) and the function of the buttons on this should mostly be
obvious - I hope. :-)

Rotation buttons will rotate both the image in memory and (if it is a jpeg) the
original file on disc losslessly.

As well as the 'Previous' and 'Next' buttons moving you through the images in the
directory you can also roll the scrollwheel on the mouse *while it is over the
toolpane* to go forwards (scrollwheel towards you) or backwards through the images.
NB. Only tested this on an Iyonix with a cheap optical mouse and WimpScroll. May work
on other scrollwheel systems as I'm intercepting window scroll request events.

Started work: Histogram. Image -> Histogram is for information only at present (will
gain PhotoSh*p style 'levels' controls in time). Smaller histo is for the 'change'
thumbnail. Useful to see Gamma/Brightness etc. shifting the image data around.
Greylevel histogram or any combination of R,G,B.

Done: Pointillist - [Escape] now aborts a render. If you press this key when
processing the large image it'll be left partly modifed. Use Image -> Reload
(or just click on the toplevel menu item 'Image -> 'to fix it.

If updating the pointillist thumbnails takes more than one second further update
is disabled until you move the pointer off the 'pane' containing the pointillist

0.36 11/08/2004

Dragging an object from the thumbnail window to variations itself now works
(and you can shift-drag a directory from the thumbnail window to the
iconbar icon to slideshow its contents).

A potential source of a data abort error when refreshing the thumbnail
window after an item has changed has been fixed. (iyonix only)
Occurred when saving from Vari back to the thumbnail window when the name of
the object being saved put it at start of the thumbnails (eg. 'aaa' would
always provoke the error, 'zzz' never would).

It was possible to get the thumbnailer to start scanning a directory
whilst it was already scanning one. This confused the program very badly.

Saving back into the thumbnail window when the file being saved already
existed caused the thumbnails to be rebuilt before the save actually took
place (while the overwrite warning dialogue was being displayed).

Tick and cross marks no longer cause an error under RO 4.

Using F3 to save when the file already exists caused an infinate loop.

Variations uses a new version of the 'jpegtran' utility. This one uses
dynamic areas for memory allocation which hopefully alleviates problems RiscPC
users and Iyonix users running Aemulor have encountered rotating large jpegs.

Note that you will still need a lot of memory free to rotate images in a
reasonable length of time. If there isn't enough jpegtran will complete the
job using temporary files but it is very, *very* slow in this mode.
A 4MB jpeg takes almost a minute to transform on an Iyonix (cf. a couple of
seconds for the same file on the same computer when enough memory is free).
'Enough' for this file with this version of jpegtran appears to be about 48MB.
My thanks to Roger Noble for providing me with the sources in a form that
even a novice like myself could compile.

Rearranged slideshow button functions as per mailing list discussion.
SELECT to slideshow the selection, Shift-SELECT for slideshow options.
ADJUST to slideshow everything in the directory.

ToDo: keep resize/scroll offsets after a refresh of the thumbnail window.
(tricky - find objects at the bottom of the visible area and scroll to them
after the update?)

ToDo: watch directory so that saves that don't involve wimp messages get
noticed and cause a refresh.
ToDo: JPEG save options to preserve EXIF info and rewrite the thumbnail.
ToDo: Thumbnail selection-> Re-create thumbs
ToDo: Make Variations button work
ToDo: Slideshow tidyups - more effects, configurable effects.
ToDo: Full view stuff when an image has been loaded. (prev/next +keyshorts)
ToDo: Save thumbnails/print thumbnails formatted to fit 2xA5/A4?

0.35 22/07/2004
More info and the display format thumbnail submenu now work.
 exif jpegs are now scanned for basic camera information and this is displayed
 when in 'more info' mode.
 Information looked for includes: Camera model, Date/Time original (camera
 clock when the photograph was taken), Exposure time, F-number and ISO used.
 Memory is also allocated for a comment field for every object. A future
 version might display this and allow you to edit it.
 NB: I'm interested in any camera jpegs that don't include this information - or
 cause an error when thumbnailing them. If you're serious about exif data I'd
 still recommend the use of EXIFInfo instead. My code is probably wibbly. :-)

When dragging a selection of files from a filer window to the thumbnail
window and when dragging a selection of thumbnails the other way (from the
thumbnailer to to a filer window) holding Shift down now does 'move' rather
than 'copy'.

When dragging a selection from the thumbnail window hovering near the top or
bottom of the window during the drag will make it start to autoscroll. This
allows you to scroll the thumbnail window to reveal [the thumbnail
representing] a directory. Finishing the drag with the pointer over this
directory will open a dialogue box asking if you want to copy (or move)
the selection into it.

Dragging an icon from the save dialogue of Variations (or any other program)
to the thumbnail window will now save the file into the thumbnailed directory
and refresh it to show the new file(s).

You can now use the thumbnailer like a filer window in every way I think.
If you spot anything 'wrong' or 'different' please let me know.

Shift-dragging a directory to the iconbar icon will slideshow its contents
immediately. Requested by David Wisnia.

Rotating the selection left and right now work better. The thumbnail is kept
in sync with the main file. Memory related errors when processing large jpegs
fixed. EXIF jpeg files now have the rotated thumbnail written back into them.

NB: Only jpegs are rotated (you can rotate the thumbnails for other objects
to your hearts content but the files themselves aren't yet modified).

This jpeg rotation is 'lossless' - the data isn't subjected to a jpeg
decode-encode cycle. NB. Jpegs rotated in this way may not load into Photodesk.
I'm absolutely delighted to tell you that this is a Photodesk problem. :-]

Click-rename (over a thumbnail name) implemented. Keyboard navigation of
the rename icon around the thumbnail window is via Shift-left arrow and
Shift-Right arrow. Typing a new name and pressing return renames the object and
advances the rename icon (moving left-right, top to bottom). Escape will cancel
the rename icon if you accidentally activate it or don't want to rename the
rest of the files in the directory. The window will autoscroll when necessary.

If users find this annoying I'll make it Alt-click on the name instead but
thumbnails are larger than filer icons and its natural to click on the
thumbnail itself rather than on its name to select it I think.

Menu rename and copy items done (only made available if a single item is
selected though).

Thumbnailer now thumbnails draw, artworks and and png files too.

Create directory menu item done.
Faster thumbnail rebuilds (copies existing cache & reuses where possible)

As a consequence of the above cacheed thumbnail file use is now more
intelligent - reuses existing thumbnails where possible (ie. when objects
haven't changed!). Also smarter at spotting a modified file or directory.

NB: Another change means that existing cache files will be ignored the first
time around (they'll be rebuilt). Sorry, but the internal storage format
needed to change to fit extracted exif info and comments in.

New buttons added to the thumbnailers toolbar. (Variations...' doesn't work
yet, the others all do). Run !Help to find out what they do if it isn't obvious.

Done: Add and Remove /jpg extension items added to the selection menu.
Currently it only modifies the names of jpeg and png files (I should probably
use mimemap so it is useful for all filetypes with a valid DOS extension?)
Case of the extension added depends on the case of the last character of the
objects name. ie: 'MYFILE' becomes 'MYFILE/JPG' whereas 'MyFile' becomes

Ctrl-clicking on a *jpeg* in the thumbnails window gives you a 1/4 scale
preview of it. Move the pointer off this or click Adjust on it to close it.
Clicking Select on it loads the full size image into variations.
Would be useful if it were a bit faster than it is. :-/

Slideshow has a  new option. 'Show controls'.
Sensible only to turn this on for 'Wait until a key or mouse...' or 'Mark
using...' pause types. Adds a simple control panel to the bottom of each slide.
This allows you to step backwards through the slides, apply tick/cross and exit
by clicking on a button.

Slideshow knows more effects too but currently you have to modify the basic
program to see them (and they're iyonix only). So that'll be 0.36 I suppose...

(main program change)
Full file path of the original file is now put into all save dialogue
boxes by default. NB: A side effect of this change is that if you modify an
image in Variations and then save it Image -> Reload will then reload the saved
file and not the original.

Re-written behaviour if a file already exists when saving:
Displays a warning box requiring you to move the pointer a few dozen pixels and
click on 'Save' again to overwrite ***provided the 'Allow files to be
overwritten' option in choices is OFF***. If this option is ON then Vari will
behave like other standard RISC OS apps and silently overwrite existing files.

(main program change)
Double clicking on the central effect thumbnail to apply it now opens the
full view window behind the variations thumbnails window instead of in front of
it (if it was closed, if it is already open its depth does not change).
NB. Adjust-double clicking on the central thumbnail applies the effect without
opening the full view window at all.

General bugfix: Variations now behaves nicely when an attempt to claim more
memory fails. This will happen if Aemulor is running (and Variations wants
more than 28MB of memory) or if an Iyonix has 1GB of memory and Variations
tries to claim more than 512MB. The first case will probably be more common
than the second!

Thumbnail window is now less inclined to jump to the front of the window stack
when it shouldn't.

0.34 29/06/2004

Thumbnail window now autoscrolls when dragging out a box to mark a selection
(requires RISC OS 4 or later).

SpecialFX (if running) is disabled for Variations when it might corrupt
redraw (graduated fill tool and path tool in mask editing)

Bugfix: Dragging a selection from the thumbnailer to some programs didn't work.


* typo: 'sideshow' fixed.
* Slideshow can now show sprites as well as jpegs
* Slideshow works on RISC OS 4 (I'd used SWI OS_LeaveOS which is RO5 only)
* Slideshow reports any errors when it finishes, rather than just quitting
* Slideshow ignores selected objects it can't display.
* Slideshow tells you if none of the selected objects can be displayed.
* As the thumbnail selection changes the Slideshow window is updated if open
* If nothing selected slideshow window 'view' and 'save' buttons are greyed.

Unstable/unfinished: Lossless rotation of selected jpegs via jpegtran 
Available via menu items Selection -> rotate left and rotate right.
(the main image file is rotated, but the thumbnail isn't yet - leads to confusion. I'd advise you not to use it yet for this reason).

0.33 23/06/2004

0.33 summary of changes

A great deal of work on the thumbnail viewer:

In most circumstances it now acts just like a filer window as regards
selection, dragging objects to copy them or load them into other programs etc.

This has the disadvantage that to thumbnail a directory you now have to
drag it to the variations program icon or to the 'pane' attached to the bottom
of the thumbnail window. Dragging a directory into the thumbnail window now
copies it and its contents into the directory being displayed!

The thumbnailer also now has a menu structure modeled on the filer with some
useful additions.

In particular there is a built in slideshow program and slideshows can
optionally be saved as a self contained 'application' that may be run later.
There exists a method whereby the slideshow feature can be used to grade images
depending on the mouse button you click when an image is displayed.

Many bugfixes and improvements to the thumbnailer. It should now also work on
RISC OS 4.0x (possibly back as far as 3.6) provided you turn on the 'EXIF hack'
option in choices.

New thumbnailer related choices, including the option to generate cache files
for directories that take a long time to thumbnail. On the next visit there
this cache file is loaded resulting in a dramatic speedup.

For example, a directory containing 342 five megapixel mostly exif images
took 19 seconds to thumbnail normally on Iyonix.

With caching on redisplaying it later is virtually instant (less than one sec).
The cost is a 2.5MB file called ~VCache~ that is saved in the directory.

If you turn this option on (and it is off by default) *please* be careful with
it, otherwise your hard disc will quickly become littered with these cache
files. Make sure the trigger time for it is suitably high so that it only
creates cache files for your largest and slowest directories.

I suggest setting it to at least 20 seconds if you do opt to turn it on.

0.33 changelog:

Sections: [General]                    [Thumbnail display/window improvements]
          [Thumbnailing process]       [Thumbnail menu]
          [Slideshow]                  [New choices, caching]


General bugfix: If the pcasupport module got a 'high' dynamic area Variations
would fall over in some circumstances.

Bugfix: 'email' and 'web' buttons in program info work - although they now
require AcornURI from

Bugfix: Typo in !Run related to pca_appletstarted error fixed.

A little more help for the mask editor window (run !Help and move the pointer
over the icons in the toolbar and the mask editor window).

[Thumbnail display/window improvements]

Done: Auto-resizing of thumbnail window when it opens (tries to open such
that 4 x 4 thumbnails are displayed).

Done: The last directory thumbnailed is underlined if you move 'up' the filing
system. This makes it very easy to work your way through a number of
directories of images - you can see the last one you looked at when you return
to its parent. One of the few things I like about ...Windows XP.

NB. ADJUST clicking on the close icon of the thumbnail window opens its parent
directory  - just like the filer does.

To move the thumbnailer around the filing system use it like the filer:
Double click on directories to go 'down' the directory tree. To go back up the
directory tree ADJUST click on the close window icon /or/ choose 'Open parent'
from the thumbnail window menu /or/ choose 'Up' in the thumbnail pane.

Done: Thumbnail selection behaviour mimics the filer (menu over an item when
none are selected selects it. SELECT and ADJUST dragging marquee selections...)

Done: Double clicking on an application runs it, Shift-Double click to
thumbnail the contents of the application directory.

Done: Copy selection by dragging it to a normal filer window (uses Filer_Action)

 ---> to do, move files when shift is held down. Use Filer_Action for delete
      files too?

Done: Drag files/directories into the thumbnail window copies the objects into
it. To thumbnail a directory you must now drag it to the iconbar icon or the
control pane attached to the bottom of the thumbnail window. Dragging it in
to the window copies it into the directory being displayed as thumbnails.

 ---> currently does a complete thumb rebuild after a copy.
      Would be faster to use the existing thumbnails where possible.

[Thumbnailing process]

Done: Thumbnailing something that causes an error no longer messes things up.
You should get a default error thumbnail instead.

Done: Now handles truncated JPEGs with no EOI (tag value &D9) marker.
Strictly speaking these files are broken but most programs seem to
handle them and they're surprisingly common.

Done: Now handles interlaced jpegs (slowly) by feeding them through djpeg.
If you turn on the '...and interlaced too' option in jpeg choices the program
will instead assume the operating system can plot them quickly. To the best
of my knowledge only RISC OS Select can do this. RO5.06 certainly can't.

Done: 'EXIF hack' (in options) now applied to jpeg thumbnails too.
This allows the thumbnailer to work on <=RISC OS 4.02 properly.
Thanks to Peter Noble for reporting this problem.

Done: Applications are now filer_booted when they are encountered during

Done: icons for other objects (applications, text files etc.)  are now
rendered properly.

Done: Tests for no thumbnails at all in thumbnail related routines to stop
crashes, aborts etc.

[Thumbnail menu]

Done: MENU for thumbnail viewer. Few items still greyed. Those that aren't
should all now be working.

Done: Hide selected thumbnails, Delete selection

Selection -> Hide hides (removes) the thumbnails selected from the display.
The files on disc are unaffected and may be brought back by clicking on the
refresh button in the pane attached to the bottom of the thumbnail window.

Selection -> Delete deletes the thumbnails *and the associated files*.
There is a warning dialogue for this. If you carry on and delete and don't have
a backup there is a very good chance that the images will be gone for good.

 ---> Currently Delete causes a complete thumb rebuild of the directory
      which is less than ideal speed-wise...

Done: Selection -> Mark with tick, mark with cross, unmarked
Done Mark -> Select ticks, Select Crosses, Select unmarked, Clear all marks.

A quick way of marking selections of images so that you can reselect
(and copy or delete) them later.

Done: Open parent and Show Filer. Should be obvious what they do.


Done: slideshow. Select the thumbnails you want to slideshow
(or MENU, Select all). Then MENU, Selection -> Slideshow...
 ---> ToDo, Only displays JPEGs at the moment.

Options in the dialogue that opens should mostly be obvious in use:

With transitions. When off images are just displayed. When on they are faded
  between. More transitions will follow.

NB. The fade transition is untested on anything other than an Iyonix.

Loop until Escape pressed
  When on the slideshow will repeat until you press escape. When off it ends
  when all of the selected images have been displayed.

Pause between images:
  For [4] seconds. Meaning obvious, although very large files may take
  more than the specified pause time to decode.

Wait until a key or mouse button are pressed.
  Meaning obvious.

Mark using the mouse. Similar to the above but a record of the mouse
  button clicked is kept for each image. On return to the desktop the images
  are marked with a tick (select) or cross (adjust) or no mark (menu).

  Facilities to select all of the ticked thumbnails (for example) exist in the
  menu. The selection can then be dragged to a filer window to copy it there.
  A quick and relaxing way of sorting through and ranking images is to
  thumbnail a directory, select all and then slideshow them using this

Scale images to fit:

 Always. Images are always scaled to just fit within the screen. Scaling is
  'simple', missing or doubling rows or columns as necessary. Use an
  action file (or batchfsi/fsi_batch) to resize images to suit your
  intended slideshow display resolution for higher image quality.

 If larger than the screen. Images smaller than the screen are centred,
  unscaled. Images larger are scaled to just fit. [DEFAULT]

 Never. Images are centred around the screen. If larger than it you'll only
  see the central portion.

Caption with filename:
 Option and meaning of sub-options obvious. I'll get round to letting you
 choose the font colour one day too maybe. ;-)

Preferred resolution:
 Try to select 800x600x16m colours
 Use whatever the desktop uses.

Meaning obvious. I'll let you choose different 'try to select' resolutions in
a future version of the program.

Click 'View' to see the slideshow or type a name and drag the icon to save it.

When you save a slideshow an 'application' is created and all of the selected
files are copied into it - to make it portable. If you've selected a lot of
images and have a slow hard disc interface this may take a while...

Done: The slideshow program automatically tries to do the 'exif hack' to
allow exif jpegs be plotted quickly even on RISC OS <= 4.03

[New choices, new choices saved]

Done: Create cache if it takes more than ... seconds to display a directory.
If you don't mind variations cache files being created on your hard disc and
want thumbnail directories to open quickly the next time you visit them turn
this option ON. This option is OFF BY DEFAULT.
If you do turn it on I suggest a reasonably large trigger time - 20 seconds?

Done: Try hard to make thumbnails. When on, ChangeFSI is called to try
and make thumbnails for more unusual or time consuming image formats. When
this option is off it'll use a generic 'this is an image, but I don't know
what it is' thumb for anything it thinks is an image. I'll do more work on
this - eg. draw and AW files and faster thumbnailing of png and bmp.

Done: Multi-task while generating thumbnails option. Does what it says
on the tin. How successful it is depends on how fast your computer is and
what sort of files are being thumbnailed. On an Iyonix doing exif jpegs
the desktop remains quite responsive.
NB. generating a directory of thumbnails is actually slightly slower when
this option is on (because other programs are given a chance to use the CPU).

Done: ADJUST on iconbar opens a default thumbnail dir (set this via a new
choice, drag the directory to the appropriate place in the choices window
and then save choices). Requested by Gary Locock.


Known issues/ideas left for the future

ToDo: Rename, copy (within dir) thumbnails
ToDo: Create directory
ToDo: Better behaviour where an object changes - don't rebuild the whole dir.
ToDo: Save contact sheets (html, Drawfile?), rotate selection (via jpegtran?)
ToDo: Multiple thumbnail windows (possibly?)
ToDo: 'Full info' display mode.
ToDo: Selection info. (use exifinfo?)
ToDo: Apply action file to selection.
ToDo: Improve variations image 'full view' window - fit to screen, previous,
      next etc. ?
ToDo: Make the slideshow ignore files in the file list that it can't
      render (instead of repeating the last one that it could!)
ToDo: Way of going back through the images in the the slideshow - k/b control.
ToDo: Slideshow handle sprites, pngs, draw, artworks etc. files
ToDo: Variations saves jpegs with exif info - including a rebuilt thumbnail?

0.32 10/06/2004

Mainly a bugfix of yesterdays release

Bugfix - save as JPEG didn't work on Iyonix. Also calculation of JPEG size and
'Save for web' failed.

Bugfix - loading interlaced jpegs via djpeg was going wrong - sometimes.

Removed stray debugging code when the thumbnailer encountered an interlaced or
'very odd' jpeg. Added code to thumbnail these files via djpeg->ppm->sprite.

Made thumbnailing slightly faster (now claims memory in 64KB chunks rather
than for every single thumbnail). Gives any spare back at the end.

Added hourglass %age to thumbnailing.

Rearranged jpeg related choices to give them their own section.
'Fast JPEG load' becomes 'OS can handle EXIF' and added a new choice
"...and interlaced too".

Turn both of these options on if you have RISC OS Select (which I gather can
handle all sorts of JPEG files).

If you have RISC OS 5 turn the first option on and leave the second one off
to avoid errors when thumbnailing and loading interlaced jpeg files.
Currently (RO 5.05) can't display these using the OS plotting routines.

If you have RO4.0x or earlier turn 'OS can load EXIF' ON and also turn
on 'EXIF hack (RISC OS <=4.0x)'. Leave '...and interlaced too' OFF.

ARGH! :-/

0.31 09/06/2004

Thumbnailing pseudo filer. Drag a directory to the programs iconbar icon to
thumbnail it. Extracts thumbnails from EXIF jpegs and is therefore very fast
with these. Currently does not try creating thumbnails from BMP, Draw or
PNG files - to do.

Should create thumbnails from sprite files and jpegs that lack an inbuilt

Default mode of operation is 'single click' - clicking on a thumbnail
loads the image into Variations. Clicking on a directory thumbnails that
directory. Clicking on another file Filer_Runs it.

Alternative (partly written) is pseudo filer which allows multiple selections,
double click loads/runs and (to do) drag to load to another program/copy etc.
Filer like menu also still to do.

Redraw and update of thumbnail window is not yet optimal - will be faster
and there are a few GUI quirks still to exercise.

Giving it a test directory of 117 images (largest 5MB, smallest 185KB,
average around 2.8MB in size):

Thump 1.48    308 seconds
Thumbcat 3.4D 167 seconds
Variations    3 seconds

To be fair Thump and Thumbcat do other things that Variations is unlikely to
ever attempt. But still, you can see what I like about it...

0.30 28/04/2004

Thanks to Jess Hampshire, Brian Howlett and everyone else who offered for
their help and suggestions for this version (Select testing).

Border, Fade, Shape can now write to the mask (via a new radio button)
Choose 'Edit mask' from the main menu first to see what they put in there.

This mask can then be used to attenuate another variations effect or simply
saved with the image (see below or

Border gains a few options (colours, background texture).

Clicking in the main image view sets all of the thumbnails to display pixels
and centres them around the point you click - this lets you see the effect
on original pixels and is a faster and more memory frugal alternative to
'try at full size'.

Mask editing. New submenu items: 'Select -> Shadows', 'Select -> Midtones' and
'Select -> Highlights' provide a quick way of selecting regions of similar
luminance. This lets you fiddle the gamma of shadows or highlights to improve
visible detail. (The aim is a clone of the Photoshop CS 'Shadows/Highlights'
tool but I've a long way to go yet). Also may be useful to (eg) soften shadow
areas slightly as this is where digital noise is usually most evident.

Select -> Shadows
Pixels with zero luminance are set solid in the mask. Pixels with >50% luminance
are transparent. Those inbetween are inbetween.

Select -> Midtones
Pixels with 50% luminance are set solid. Pixels with > 75% or < 25% luminance
are transparent in the mask.

Select -> Highlights
100% luminance = solid in the mask. <50% luminance transparent.

(luminance is a fancy term for 'brightness' by-the-by)

PNG save/load
Save as png requires Darren Salts Spr2PNG to have been seen by the filer
- it does all the hard work.

Loads PNG files courtesy of David Jacksons delightfully named 'Thingi'.

Save as sprite can now include the mask. Options being Save sprite with no mask,
Acorn on/off mask, Select Alpha mask, Compo Alpha mask.

The Acorn 1 bit mask version is particularly lame code (no attempt to dither).

Now loads RISC OS Select Alpha sprites and uses the attached transparency mask.
NB. Currently only loads *16 million colour* Select Alpha mask sprites.

Began work on raw file importer [thumbnail preview on load]
Dragging foo/RAW looks for foo/THM and treats it as a JPEG thumbnail.
Broken. Do not use this.

bugfix - when set to animation menu clicks could select thumbs that don't exist

bugfix -  fade/shape/border where intensity > 100% could go crazy
(bitfield size problem in assembler)

bugfix - create mask, load different size image - mask could become corrupt.

Fiddled with Crop window UI slightly.

0.29 14/12/2003


- Compare effect with original at full size.
- Semi automated batch mode.
- Fully automated batch mode.
- Actions on the fullsize image are recorded in a list, can be saved as a file
  and then be re-applied to another image or a whole directory of images later.
- Watermark enhanced with EXIF JPEG information handling.
  Drawfile exif info templates/overlays.
- optional double click to load images/claiming 'run type' for sprites/jpegs.
- simple resize feature.
- bugfixes.

If you value your images never, *ever* edit the only copy of the original
files. Make a backup, preferably on write-once media (a CDR).

Variations now includes batch processing that can quickly and automatically
overwrite files with modified (posssibly low resolution) images.

There are warnings, options that must be turned on and checks to help reduce
the risk of you making a mistake but it is still possible. Modifying an image
almost always throws something away. Even if it looks better than the original
you should keep copies of it somewhere safe.

Did you read that warning above? :-)

New features

The program now has a simple concept of a 'selected thumbnail'. Clicking menu
over a thumbnail gives it a blue border and the menu items in the Thumbnail->
submenu apply to it. These are 'Try at fullsize', 'Reset offsets',
'Reset scale', 'Show pixels (100%)', 'Scale to 200%', 'Scale to 400%'
and 'Scale to 800%'

Try at fullsize creates a copy of the fullsize image (you may need lots of
free memory), processes it with the effect depicted by the selected thumbnail
and then displays it side by side with the same section of the original
image in a pannable, resizeable window. You then have options to keep or
abandon the change, tweak the effect slightly and view at other than 100%.

Panning (for this and save for web) now uses rectangle copy and is lots
faster on Iyonix and also (hopefully) Viewfinder.

Try the other submenu items and see the effect they have on the
selected thumbnail. What they do should be obvious if you've remembered that
Shift-select dragging a thumbnail moves the image around 'behind it' and Shift-
Adjust drag scales the image.

(Erk - that sentence doesn't make much sense read cold. Just try it!)

Semi-auto batch mode

Turn on 'Interactive batch mode' in choices and drag a directory to the
program icon. The number of images in the directory will be calculated
and a small batch process window added to the bottom right of the thumbnail
window. In this the arrows move through the images in the directory and the
Next button loads the next image that hasn't been loaded into variations in
this session (there is a subtle difference to clicking the right arrow).

Click on the thumbnails window to give it input focus and then use the
Keyboard controls:

Left arrow/Right arrow - move thumbnails through current effect.
Up arrow/Down arrow - change current effect.
Return - apply central thumbnail (change full size image).
F3 - Save (format determined by settings in batch mode section of choices)

If 'After saving' in batch choices is set to 'Go to next image' the next image in
the directory will automatically be loaded when you save. In this way it is
possible to process an entire directory of images making basic changes
and applying effects without touching the mouse.

Fully auto batch mode / Actions

Variations now records each change you make to the fullsize image. Not only
the effects applied but things such as resizing, trimming and rotating too.

This list of recorded actions can be shown by clicking menu and choosing
'Actions...'. Sets of actions may be saved to a file by following
File->Actions-> and these actions files can be reloaded later by dragging
them to the programs iconbar icon or windows.

The Actions... menu item opens a dialogue entitled 'Apply actions'.
This displays a list of the actions recorded. You can select one and
choose 'Delete' to remove it from the list. [Process] applies the
actions to the image. This is most useful after reloading an actions
file you've previously saved.

Drag a directory of images to the load target arrow beside 'Batch' in this
window to close it and open then Batch actions window instead. This allows
you to apply the actions list to an entire directory of images, saving the
modified images either in the same place or in a different directory.

Example: Load a digital camera image into Variations, drag the actions file
'WebFrame' (from the supplied directory 'v_actions') to the program icon and
choose [Process] in the apply actions window that opens.

Try out some of the other actions supplied too.


The Watermark function added in 0.25 (under 'Specials') has been improved.
For starters, you can now choose the font you want. :-)

Support is provided for EXIF file information overlay. To use this you
must have unmodified digital camera jpegs - the popular RISC OS utility
'JClean' removes this and the jpeg files written by variations (and by
most if not all other RISC OS software) don't include this information.

Secondly, you need Chris Terrans excellent program EXIFInfo available from:

This must have been seen by the filer in the current session. Problems with
the exif watermarking feature should be reported to me. Ropey/slow/buggy bits
are almost certainly going to be mine. Please don't pester Chris. :-)

Support is provided for overlaying the contents of an EXIF field from the
original jpeg - most useful is perhaps 'DateTimeDigitized' which will be the
exact time a photo was taken provided you've set the clock in the camera
correctly. Open the submenu and choose a different one if you want.

Alternatively, a template drawfile can be processed with exif tags in text
objects and text areas substituted for the appropriate exif tags contents
and this drawfile will then be overlayed. The default template drawfile is
called 'WaterEXIF' inside !Variations. Feel free to modify this, or simply
drag a drawfile to the load target at the bottom left of the special effect
pane window to use that instead.

Several examples are supplied in vari_exif. The default built into Variations
is for a Canon 10D (should work for 300D, 1D and 1Ds too). This camera provides
several tags which are not in the baseline exif spec. (see the image
exifdraw/jpg for an example of the sort of thing you get from one).

Other digicam users might like to replace the default !Variation.WaterEXIF with
one of the drawfiles in vari_exif instead (copy in, delete the original
WaterEXIF and rename the one you've copied as WaterEXIF).

There is lots of scope to mess around with borders, logos etc. in the drawfiles
and this exif watermarking feature is very useful as part of an action that
reduces the size of an image, sharpens it up, boosts contrast and adds camera
details. (SnapWebEXIF is an example action file).

The EXIFInfo modefile Variations uses is !Variation.exifgrab (see the extensive
exifinfo documentation Chris provides for a description of what can be done
with this). I should read some of it myself one day. :-)

Double click load image

This is optional and disabled by default. To enable turn on
'Claim double click loads' in choices and remove the comment character (the
vertical bar) from the following lines in both !Variation.!run and

| Set Alias$@RunType_C85 RUN .!Run %%*0
| Set Alias$@RunType_FF9 RUN .!Run %%*0

Next time you reset the computer and open a directory containing variations
from then on double clicking on a sprite or JPEG will load variations if
necessary and then load the image into it.

- added so someone using PicIndex can edit an image in Variations easily.

0.25 10/7/2003

- Save for Web.
- Magic wand mask creation
- Feathering dialogue and function for mask editor
- New special effects
- (experimental) Different colour spaces

New features

Save for web option and dialogue box.

Displays the image and a JPEG version at your selected quality side by
side in a window that can be panned, zoomed and resized. Makes it easy to
push the JPEG quality (hence file size) down as far as possible without
unpleasant compression artifacts appearing before saving. Very useful when
designing graphics for websites. Idea common in (and borrowed from) several
well known PC image editors.

Rearranged save menu so you don't have to go three levels deep to save
image as sprite or jpeg.

Added Size... to Image submenu, designed dialogue box but got distracted
so theres no code to go with it yet. :-)

*** Mask editing ***

Added magic wand. Proper 'fuzzy' flood fill with lots of options.
Currently much better than the one in my commercial bitmap package.

Adding (a SELECT click in the mask editing window) tolerance is how 'far' a
pixel can be from the one you clicked on for it to still be added to the mask.

Removing (an ADJUST click in mask editor) tolerance is how far a pixel can be
from the one you clicked on for it to still be removed from the mask.

Type: Grey Colour Weighted or (NYI) HSV 

This is the type of calculation that is carried out to decide on adding or
removing a pixel.

[Grey] compares the grey scale level of the test pixel with the one you clicked
on. If the difference is greater than the tolerance then the pixel is not

Occasionally useful for selecting well lit multi-coloured subjects with
a out of focus dark background (portrait shots). Use low tolerance values.

[Colour] Colour difference test. If the difference between red, green or blue of
test pixel and pixel clicked on is greater than the set tolerance then it is not
added to or removed from the mask. This is the default.

[Weighted] Weighted colour difference test. Blues can be (tolerance) distance away.
Reds (tolerance*0.50936) and Green (tolerance*0.1942). These values are derived from
the standard colour-> grey conversion and are designed to weight things in a similar
way to our eyes. We can see more green shades than red or blue.
Humans just can't handle the blues, y'know? ;-)

[HSV] - Not done yet.

Sample: Options are Pixel and Average.

Pixel uses the pixel under the pointer when you click to test the fill against.
Average takes a 2x2 average of the pixels around the one you clicked on and
uses that instead.

Anti-aliased attempts to produce an antialiased mask from the wand.
It is 'interesting' and when it works well, it works very well.

NB: A general hint about masking: Its often easier to select what you
*don't* want and then invert the mask.

NB2: Turn off 'Auto update thumbnails' if the process of re-rendering the
variation thumbnails at each change spoils the interactiveness of the magic
wand tool. Remember to turn this on again or close the mask editing window
when you're finished though!

Mask brush tool: Holding ALT down will give you a visual indication of
the brush size and what pixels it'll alter when you paint.

Feathering: Click menu over the mask and goto Feather ->

Fully functional. Lots of options. Put something in the mask and then try them.
- Still slower than it needs to be and I think I'm half a pixel out in my calculations
somewhere - the feathering isn't even on all sides.

Typical use is to mask an object out with the magic wand or path tool and then
feather the edges by a few pixels.

New fill option: 'Global scaled'
When ticked the behaviour of the graduated fills changes. The fill does not
flood from the position you drag from instead the whole mask is processed (your drag
still sets the size and angle of fill). The fill is filtered through the existing contents
of the mask. Try a doodle with the brush tool then an angled fill with this option on.

This option can be very useful when used in conjuntion with the magic wand to select objects.

Mask bugfixes: Flood fills had a nasty memory leak (memory required for the mask
          for each fill)

          Path editor - sometimes the path would not be displayed when

Crop window/dialogue:

Bugfix for redraw problems.
Bugfix for crazy aspect ratios overwriting end of writable icon and into dialogue workspace
(caused corrupt windows/crashes).


Workspace for shape and mask brush are no longer shared (pointillist won't corrupt
the mask brush).

Rotatable shapes. 'Swirl' option to rotate as the effect proceeds (slow).
Random or ordered stepping. Bugfix for sampling code.
More bells and many extra whistles!

Special effects

Choosing 'Specials' in the main set of radio icons opens another
set of effects. I'm expermenting with these and their associated
options mostly don't work (apart from watermark which is almost
entirely functional).
Special effects currently available are:

Flour bomb, Painted outlines (slow!), Watermark and 'Experiment1'
I'll be adding more and giving the good ones their own set of options
(the furniture for which is already there for most of these).

Watermark is entirely functional apart from the font menu
and text colour. In the meantime I hope you like Trinity.Bold! ;-)

(watermarking will become more useful when I get around to adding
the batch processing option I've always had planned...)

Colour spaces

...Yet another experimental feature I'm afraid!

To the left of the R G and B option buttons that in the past let you restrict
the effect to a subset of the red, green or blue components of the image you
will see a button with 'RGB' on it. Clicking on this will cycle through CMY,
YUV and HSV before returning to RGB. The option buttons to the right will also
change as you do this. This lets you process the image in different ways.
For example, switching to YUV mode and then turning off U and V will modify
only the Y (luminance) of the image. There will currently be some loss of
colour quality in YUV mode because the data is being packed back into the same
space (I'll need to move to higher precision and do special versions of all
the processing routines) and HSV Just Isn't Done.

Misc bugfixes:

Mask and main view windows jumping onto the screen when you update the full image/load another one.

Mask is now preserved across an update of the full image.

Masks transferrable from one image to another (keep the mask edit window open then load
another image of exactly the same size - that doesn't have mask info inbuilt). Useful for doing
exatly the same graduated effect on more than one image.

PCA bugfixes related to view scale.

0.21 24/5/2003

Bugfix: Save JPEG using the wimpslot memory manager (an Iyonix with 'Auto' MM)
        caused a data abort.

Bugfix: Dynamic area wasn't used for the image store on RO<5 (or when
dynamic area was forced as the memory manager on Iyonix). It is now.

Default maximum image size in this event is therefore now 128MB. Modify the
last value of Variations$AddressSpaces in !Variation.!Run if you want to
change this.

NEW: JPEG size calculation. When you open the save JPEG dialogue the program
attempts to work out the size of the JPEG file that would be saved in
and (when finished) will display this in the dialogue box. Changing the
JPEG quality causes it to repeat this exercise.

If you're short of memory or don't like this feature (...or it causes problems)
turn the new option off in Choices (Calculate JPEG size)

NEW: Simple drawing path tool in mask edit window. Choose drawing tool
in attached pane then trace round the edges of a well defined object
in the image by dragging out lines. Deform the lines into bezier curves
by Adjust dragging control points (zoom in for fine control). When happy
MENU and choose 'Draw' or follow submenu arrow for dialogue box.
'Clear' in the menu works. Save does not (yet).

( evenings work so handle this bit with care.)

0.20 20/5/2003

--- a slightly messy version, you may want to keep a backup of 0.18
    somewhere safe out of the way until you're familiar with the
    warts this version has... :-)

Window size & position saved with choices

(Handy for Iyonix or Viewfinder users, for whom the hardwired
default is a bit small...)

Shift-Adjust dragging a thumbnail now rescales the image within it.
(useful for seeing fine detail of the changes effects like filter will have)
Reminder: Shift-Select dragging moved the image behind the thumbnail in 0.18

Change: Previously, clicking on a thumbnail to make it the central one also
transferred its offsets to the central one too. Now this doesn't occur so
if you want to move a thumbnail to make the image position nicely behind a
fade or shape move the *central* thumbnail (one surrounded in red)

NB. Unfixed BUG: Scaling thumbnails makes things go wrong with
fades/shapes/borders (switch to another effect and hit 'Reset' to get
things back to normal if you accidentally do this.) Use the border
size control in choices instead to scale the border/fades.

Weightings for colourise/tint effect. Requested by someone (I forget who).
This allows you to modify the amounts of red, green and blue (or their
'weights') in converting to greyscale/contone.

Simple image transformations. Rotate +/-90°, Flip horizontally, vertically,
Crop. Requested by yet another person (sorry, I'm terrible with names!)

The last opens an interesting window (mostly functional). Drag a corner/side
to change the size of the cropped area. Drag over the image to move the region
to be kept around. Size/aspect are controlled depending on setting of the
radio buttons in the attached pane. Few small oddities here still, and still
to do: Adjust drag to drag out a new region, arrow key fine control.

*Lots* of work on Pointillise (and a spelling fix!). Have a play with
the new options in the attached pane (and don't forget the variations
are cross blends back to the original so you may want to click a bit there).

Pointillise objects are now drawfiles (directory 'Pointill' inside the
program. New ones will be picked up...I'm trying a new scheme for finding
these so they can have *any* name unlike fades/shapes). Probably build a
menu of them too at some stage rather than making you click on the button
to move through.

Mode controls the rendering effect used (only makes sense to use anything other
than normal if 'Clear first' is *off*). Negative gaps can be used to produce
some nice effects (particularly with 'darker' mode but they can make things
very slow. (Up to several minutes to process a large fullsize image on
Iyonix where -gaps=sizes).

Several new choices and associated features:

High quality interactive scale and move

When on, the effect is rendered when you're moving/scaling a thumbnail.
When off (default) it is only rendered when you stop dragging. Iyonix users
can have this option on -most of the time-. Everyone else will probably want to
leave it off as it'll make moving/scaling slow. :-)

Choices Misc section:

Fast JPEG loading

When off, if Variations thinks there is anything 'odd' about a jpeg being
loaded it pipes it through a program called 'djpeg' which can handle
virtually anything. It is very slow with big files though. When this option
is on Variations assumes the OS plotting routines can handle the JPEG file
being loaded.

You may however then get an error loading EXIF (digital camera) JPEGs on
RISC OS < Select or 5.02 with this option turned on...if you do, try turning
on 'EXIF hack' as well. If *that* fails turn both options off and try
again...if it is valid the JPEG should load....

...oh heavens!

*I* can't understand that! :-)

Maybe this'll help:

                 *  Fast JPEG loading  *  EXIF hack  *
                 *                     *             *
Select / RO5.03  *       ON            *     OFF     *
                 *                     *             *
RISC OS =5.02    *       ON            *     ON      *
                 *                     *             *
RISC OS <=4.02   *       ON            *     ON      *
                 *                     *             *
Problems?        *       OFF           *     OFF     *
                 *                     *             *

Its worth playing about with these. On a large test JPEG the difference is
considerable -  3 seconds to load with these options on and 14 with them
both off...

Keyboard controls

When on, keyboard controls as added in 0.18 (see below) work. When off
(default) they don't - instead you get a reminder dialogue if you press a key.

Bouncy crop edges

This influences the way the crop area behaves (in the crop window) when you
drag it to the edge of the image - when on, the other side moves away.

New memory management. By default 'Auto' chooses Application slot on Iyonix,
Dynamic areas on older hardware. This may be forced either way and the size
of dynamic areas created by modifying system variables in !Variations.!Run

...if this bit is all greek to you just ignore it!

I've added some other stuff too but its all way toooo buggy and is turned
off or hidden for this release. :-p

0.18 21/1/2003

Bugfixes, lots!


* Iyonix specific problems in the masking code introduced to 0.17
* Broken code to load & convert sprites other than 16M
* Stray hourglass offs
* reduced usage of dynamic areas still further.
* problems with mask editing gui (sliders misbehaving) fixed.

Fixed Artworks code so that these shapes/fades should now render on Iyonix

Split filters up into three groups (small, medium, large) and added
quite a few more.

Added experimental code for noise removal - removed it from release
because its not as good as it could be. :-)

GIF animation output could sometimes save as a sprite when it shouldn't

Added new "pixelise/pontillist" effect - very simple currently, but fun!

Added limited keyboard control/input

When the variations window has input focus (titlebar is cream):

"<-" = move central thumbnail one place "backwards" in the effect

"->" = move central thumbnail one place "forwards" in the effect

RETURN = "Process image"

f3 = "save image under original name as a sprite"

Shift-f3 = "save image under original name as JPEG"

NB. Treat these functions with care, and please ensure that a backup of
the original unmodified image exists elsewhere!

(I may make these functions optional and disabled by default in a
future version as I feel they are potentially dangerous and could
lead to lost original images, but they were requested by someone...)

0.17 26/12/2002

Loading a 32bpp sprite will search for alpha (mask) information embedded
and if its found, use it.

Masking - see below for details.

Bugfix: Original and Variation could be one step out from where
they were supposed to be in certain circumstances.

Bugfix: Creating a GIF animation now recognises the state of
the "loop" option, and makes a looping gif if its on.

"Original and Variation" and "Animation" modes now update the thumbnails a
bit faster than they did in 0.16.

"Filter" is slightly faster in 0.17 than it was in 0.16

Removed non-functional "compare" and "undo" from the menu (until they
do something).

Reorganised filters. These are now stored in the text file

The format of this file should be easy enough to work out and with care
you can now modify the inbuilt set of filters yourself.
If you know what the numbers mean. :-)

Two more filters added - 9x9 and 11x11 box filters for fuzzier smudged effects.

Major new function: Masking

The following effects take notice of a mask if one is present
and use it to attenuate and control the effect on a pixel by pixel

Saturation, Brightness, Gamma, Contrast, Sepia/Tint and Filter

(Currently Hue, Border, Fade and Shape ignore any mask
...probably will be fixed, but I'm not sure what use masking
would be for Border etc. Hue is too slow and horrible to be
usable and internals of this will be re-written from scratch)

Masks allow you to alter user defined regions of the image
and leave the rest of it untouched.

To edit an existing mask (or create one if it doesn't exist) click menu
over the variations window and choose "Edit mask..."

MENU over the mask window that opens gives you a simple menu.
The function of items in this should be pretty obvious (but save mask
doesn't work yet). Invert can be particularly useful once you've created
a masked region.

Click and drag in the window to paint using the chosen tool (available tools
are in the toolbar to the left of this window. Clicking on a tool in this
toolbar will also usually also open a settings window for it).

Tools are [from left-right, top-bottom] :

Mask options
Just opens mask options window.

"Mix image and mask", when on displays a combination of the mask and
the image. This uses more memory and is slightly slower to redraw
but lets you see what pixels in the image will be altered by the mask.
Associated options let you set the colour used to represent the mask,
and an intensity slider so you can see partly through it if you wish.

When the "Mix image and mask" option is off the mask is represented by
grey pixels. Black=transparent, white = solid (you don't see the image).

"Auto update thumbnails", when on, updates the variations thumbnails
after each change made to the mask (the effect applied to these is
filtered through the mask).

When off, thumbnails are only updated when the mask window is closed.

Magic wand
Magic wand region selector. *NOT YET IMPLIMENTED*

Brush (Default)
Select click in the mask to paint "solid", Adjust click to paint "transparent".
Amount of each applied is controlled by the Brush option "Opacity"

The brush options window is opened by clicking on the brush icon
(highlighted initially) in the pane attached to the left of the mask editor.

Brush size, softness, opacity and step options are available via sliders/bump
arrows (writables are not fully working yet - don't type numbers in and expect
them to be recognised...I hardly ever use writables...can you tell? ;-).

Experiment with these sliders. Try dragging one to one extreme, painting in
the mask, then going to the other and see if you can work out what they do.
Then try playing with combinations of different settings [size and softness].

Turning on Coordinate "Smoothing" lets you draw smooth curves in the mask at
the cost of the painting stroke lagging behind the mouse a little. Alter
the number of smoothing steps to get a setting you feel comfortable with.

Select regions by drawing around them. *NOT YET IMPLEMENTED*

(no user interface for options, does something but may be buggy)


Fill tool giving options of flat, graduated [default] or circular fills.
Contents of the options window that opens should be self-explanatory.
Click and drag out in the mask editing window to do a grad. fill.

Current view scale

This is the view scale onto the mask (1:1 is 100% view).
Click on this to return the view scale to 1:1

Bump arrows for view scale

Let you adjust the scale of the view onto the mask and zoom in for
pixel-by-pixel control.

In addition to the above tools the mask is also offered up to the PCA system.

If you have available other PCA compliant tools that can edit 256 level
greyscale sprites they will appear in a dialogue box attached to the bottom
of the mask edit window and clicking on one will activate it.

Via this route some users will already have available useful drawing, stamper
(cutout), painting and multi line text object tools which may be used to
alter and create masks.

[I am working to try and make these tools available for all]

0.16 17/12/2002

Bugfix: Antialiased thumbnails were not rendered correctly
(thats geek-speak for "not at all" ;-) on some machines.

Thanks to Rosemary Miskin and Sendu Bala for their help in fixing this long
standing and annoying bug.

Now only checks for ArtWorksRenderer before complaining that artworks
modules can't be found. - druck.

Error reporting code tweaked. - druck.

Will now will find JCompMod in System.

!Run file now looks for PCASupport 0.33 (pcares modified too)

Now copes more neatly if ChangeFSI can't be found.

Image filtering code modified to improve behaviour near the
edges of the image.

Bugs and requests from Stuart Halliday:

Ctrl-Clicking on a bump arrow no longer causes an error.

Effect scale doesn't cause unnecessary redraw when the main window is closed (faster bump arrow behaviour).

Ability to go >100% in Effect scale.

New features

New menu item and related window "Statistics..." gives details of image size
and rendering times. Useful for speed testing, perhaps?

New choice "No border" - when on, the blue border that surrounds thumbnails
to correct for the aspect ratio of the window isn't used - thumbs have the
same aspect ratio as the fullsize image.

New thumbnail choice: "Original and variation"
This displays a thumbnail of the original image on the left and a single variation
on the right. In this mode clicking on the right thumbnail auto-repeats (hold down
select to move in one direction, adjust to move in the other). When the variation
looks "better" than the original simply release the mouse button. Drag the scale
slider to alter the step size if the autorepeat is too fast, or too slow.

This mode is particularly useful for the "filter" variation and allows you to check
sharpness against the original.

Click on Update Image to make the change (nb. double clicking doesn't work in
this display mode).

Adjust-dragging the Intensity slider for Fade and Shape now interactively regenerates
thumbnails as you go. RiscPC users will probably only find this useable in
"Original and variation" thumbnail mode. Iyonix Users may be able to tolerate it
regenerating 3x3 or even 5x5 thumbnails interactively as the slider is dragged?

New thumbnail choice & mode: "Animation"

Broadly similar to original and variation except now its "start frame" and
"end frame" and the animation between these playing in the middle.

A range of options and effects are available. I suggest you experiment.
MPEG generation is not yet supported. Sprite and GIF are working.

For best quality the image should be scaled using something like
ChangeFSI and then the animation produced at "original" size rather than
relying on Variations thumbnailing to scale it down as that doesn't do
as good a job.

NB. *Very* large animation files (much larger than available memory) can be
produced quite easily. Use with care.

Intergif is required to produce gif animations (variations produces a
temporary spritefile and then passes this to intergif to create the gif).

0.15 05/12/2002

Modified ARM code to (hopefully) be 32bit clean so that the program will
work on an Iyonix...maybe. ;-)


This contains modules PCA 0.33 and CompoSupport 0.79  - Iyonix ALPHAs.
If you're reading this a significant period of time after December 2002 then
please see if you can find a later version of PCARes and/or variations.
There may be new bugs introduced into this version. At the time of writing I
don't have an Iyonix so changes are speculative. The program and modules
appear to still work okay on RISC OS 4.02.

Tidied up Border a bit and made it work for fullsize as well as thumbnail.
...though currently it uses lots of memory when rendering fullsize.
Planning to improve this and make it strip render if there isn't enough.

Made Shift-drag move the image around within the thumbnail. This is
particularly useful for fade, shape and border. Try it, you'll soon see why.

Made reload original in the menu work.

Added options to restrict the effect of Saturation, Brightness, Gamma and
Contrast to any combination of the red, green, or blue image channels.

Added the menu to the thumbnails window too.

Added menu items for saving the thumbnails as a drawfile or spritefile and the
code to make these features work.

Added new choice for fade/shape/border scaling. This is the scale at which the
relevant vector image will be plotted (centred) over the image. Reduce this and
then drag a thumbnail around with shift-drag to produce interesting effects.
X and Y scale are initially linked but may be 'broken' to allow independant

0.12 06/04/2002

Maintenance release - I'm shortly off on a bit of a holiday so if I don't
reply to an email within 24 hours please allow up to six weeks for it to
arrive. :-)

Bugfix for machines with lots of memory/Select If you couldn't load a
sprite or JPEG and got a "Redirection to invalid sprite" error try it now.

JPEGs with extra data (Exif and interlaced jpegs) are now converted using
djpeg in the background and can be loaded. It'll be a little slower to
load these than using OS JPEG plotting routines though.

"This software is based in part on the work of the Independent JPEG Group".

Files other than Sprites or JPEGs dragged to the iconbar icon or into the
window are now thrown at ChangeFSI in the background in the hope that it'll
understand them and return a 16M sprite. The upshot is that Variations will
now load GIFs, BMPs, TIFs (well, some) and other "odd" graphics files.

Fixed save with a leafname >10 characters long being truncated to <10

Tidied up one or two minor things.

NB. "Border" is currently unfinished and "Emboss" isn't there at all
(in fact, it'll change to another process as embossing can be achieved
via the filter/sharpness feature).

0.11 28/3/2002

3x1 thumbnail grid

redraw titlebar when new image loaded

interactive help

popup help

popup help option in choices

save choices (and load, obviously!)

default choices

Artworks files may be used as fades or shapes
NB. You'll need the latest AWViewer from
(and lots of free memory)

Added a few more fades and shapes
Changed a couple of draw fades for artworks ones

Now works as a PCA tool

Started work on Borders

Now copes with spritefiles of any number of colours and converts
them automatically to 16M if necessary.

Closing the window now no longer removes the file, a select click will
reopen the variations window.

Added (very simple and hence, fallible) 'web' and 'email' buttons to
the program info window. May only work with MessengerPro and Oregano, because
thats what I've tested it on.

Designed a pretty(?) logo graphic.

0.10 13/03/2002

Added Sharpness/filter feature, range of filters and the option
to limit the filter to any combination of the red, green and blue channels.
NB. Experiment with different levels in the variations dialogue before writing
some of these filters off (they work differently depending "where" you are).

Added different tint/colourise types.

Added "auto fix cast" to tint dialogue box. Selects detint and "guesses"
a colour cast for the image.

Fixed a few small bugs.

Added more fades and shapes.

Added option to invert fades/shapes (small button - I couldn't fit a larger
one and didn't want to redesign the dialogue box).

0.08 07/03/2002

Modified fade rendering code to be faster when calculating thumbnails,
particularly when using a texture.

Added tint/sepia effect and user interface.

Updated "ReadMe" file.

0.07 - 06/03/2002

Fixed fade and shape sliders that were broken in 0.06.

Made  work in step sliders writable.

Fixed inter-thumbnail offset code.

Made choices for inter-thumbnail offsets work in choices window.

Added medium quality antialiasing option.
(and made it the default as it is faster and uses less than half the memory
of HQ and most people won't notice the difference anyway).

Made antialias quality settings a Choice in the choices window.

Added option of having the "hot" thumbnail at the top left rather than
the centre.

Made double clicking on the "hot" thumbnail do an [Update image] and a
[View full]. Adjust-double clicking won't open the full view window.

Made Step size slider interactive if you ADJUST drag
- though its too slow to be properly usable IMO.

Added Stuart Hallidays drawfiles to Shapes and Fades.

0.06 - 05/03/2002

Made step size slider work, added writable icon and bump arrows.

Rearranged window templates to suit new fade pane strategy.

Added Sepia/Tint radio (non-functional).

Redesigned fade pane to fit within variations pane.
Added scale slider (long one!) and made it work.

Added shape pane, similar to fade pane.

Added choices window, choices item to iconbar menu

Choices made available are Thumbnail layout and antialiasing.
No way to save them yet though. ;-)

Tweaked thumbnail redraw/layout code a little.
(but still not right - space between thumbnails should ideally always be even)