1.20 2/10/2000

Ctrl-K to copy in the same place

Fix bug: Selecting nothing from a CS generated menu should return a null
string rather than "##"

Oddity with 32K colour Studio24 produced sprites being given a blank blend mask fixed.

Bug with Compo colour picker and Filter dialogue fixed.

1.18l 24/05/2000

1.18l 11/08/2000

In general

A collection of minor bugfixes and enhancements. Several new options and
features but nothing of any great consequence.

Never mind, I'll put something interesting in 1.19 to make up for it. ;-)

Graphical tweaks

Altered window templates to better fit the coloured desktop tiles and menus
which I now use.

A set of shaded 32K colour desktop icons for Compo is available in the
separate archive: here.

Download the patch to 1.18l and update your copy then download this archive
and drop the skeleton !Compo in it over version 1.18l to give you a 'new look'
set of toolbars the next time you run Compo which I personally prefer.

However, it does make Compo use slightly more memory and some people may
like the clarity of the original icons. Therefore they are still supplied
as the default.

Incidentally, no prizes for guessing what was used to make the new icons! ;-)


Creating a 32K colour dithered canvas (as opposed to changing from a 16M
canvas to a 32K canvas) went wrong - it didn't reassemble the code. :-(

Dragging a font menu over canvas containing AW files caused an error
(because the AW workspace wrote over the menu data).

New preferencess option in the PCA section "Tool always on top".
When on, and a pca tool is selected its toolbar (if it has one) is opened
on top of the canvas and on top of all of Compos toolbars - this avoids a
problem where if a PCA tool was attached to an object near the left edge
of the canvas its toolbar could get hidden away underneath Compos main

Bug-ettes related to very small canvases, and cropping to window thereof
fixed. I also did a general sort of bash of small canvases...

Bug in ADJUST on scale to go to 100% with small canvases
(didn't limit scale to minimum possible)

The 'minimum view scale enforcer' designed to keep a windows viewing
scale large enough to make room for the window furniture was a bit over
zealous. Now it only increases the minimum view scale if it absolutely has
to. Most noticable when 'crop canvas to window' is used with a minimum size
window. Now it hangs on to 100% for a bit longer.

Toggle mask edit pane didn't get the pane size quite right

MENU on the mask edit horizontal dialogue for the airbrush tool caused a
non-fatal error (un-indirected icon)

Loading a gamma table was broken by mods for the CS command 'loadcompo'

ADJUST clicking on the current view scale in mask edit and canvas
toolbars didn't correctly toggle between 100% and the last view
used that wasn't 100% (it always toggled between 100% and 50%).

PNG new options

To use any of these you will need *at least* version 0.17a of !Spr2Png
available somewhere under here.

The new options in the export dialogue box have corresponding CompoScript
fields in the export png command:

(if yes, an attempt will be made to simplify any mask)

(if yes, transparent rows/columns will be trimmed)

(if yes, an attempt will be made to produce a 1 channel greyscale PNG)

(if present the following string will be added to the spr2png command line
to allow for estoric or new options in the future)

For more information on these options please see the Spr2Png documentation.

CompoScript - other changes

Text size in the 'maketext' command may now be given in fractions
of a point.

NB: This does *NOT* yet mean that floating point variables can be used.

For example,

let mysize = 48.5

sets the mysize variable to a string with the contents "48.5".
Maketext will let you use this variable and will create the right text
size but...

let mysize = mysize + 0.5

...doesn't work. (you'll get the string "48.50.5") :-/

I'll have a think about adding floating point variables 'sometime'.

New object dotvars:

.tint.colour = colour of an objects tint.

.gamma = object global gamma*100. ie 150 is a gamma of 1.50
.gamma.red = object red gamma
.gamma.green = object green gamma
.gamma.blue = object blue gamma

Altering .gamma will set .gamma.red, .green and .blue.
Altering one of those allows independent control of each channel.

Currently the colour curve feature is not mapped thru to dotvars.

Consideration to adding this will be given if someone can come up with
a practical and sensible way of representing all of the appropriate
variables (36 for each object)...

1.18k 24/05/2000

Only changes are:

* added a "font menu" to the openmenu command:

  Syntax: openmenu "Fonts" to <variable> [ Default <defaultfont> ]
  See doc.fontmenu for an example script (that also demos the rest...)

* added slider command

  Syntax: slider "Title:" <default value> to <variable>
  See doc.fontmenu and doc.slider for an example script.

* added colourpicker command.

  Syntax: colourpicker acorn/compo "Picker name" <default colour> to <variable>
  See doc.fontmenu and doc.picker for an example script.

1.18j 17/5/2000

Fix bug: Broken multi line YES/NO command options.

Compo backend: Dragging a draw or AW file into the mask edit
window or to the mask pane loads the file. Hold Shift down and
drag to choose to scale and/or mix the vector object
(as bitmap options).

NB. Artworks files are not rendered as well as they could be
unless the /desktop/ is placed in a 256 grey mode when loading.

I have reason to believe this is a bug in the Artworks renderer. :-(

CS: loadmask load draw/aw into mask.
    loadmask mix with current mask, scale on load etc.


Syntax		loadmask [mask] "<filename>"

The multi line section is optional. If omitted, no scaling
or mixing is done.

The following mix options may be used:
no,none,0  yes,true,1  invert,inverse,2

The following scale options may be used:
no,none,0  yes,fit,tofit,exact,1  aspect,aspectlock,toaspect,2

In other words, there are three settings for each option (mix and scale) and
each setting has several synonyms. "aspectlock" vector objects are rendered
centred in the mask. Options for control of scale, plot position and rotation
may be added - provided enough arm-twisting is done. ;-)

CS: loadimage - load draw/aw into bitmap layer option
    and options for border, scale etc.

This is now also (optionally) a multi line command.

Syntax:		loadimage "<filename>"
                Border:X,Y  (or "XxY", or "X Y" or just "X" in which case Y=X)

Default values (assumed if an option is missing) are:
Vector (layer):YES
Scale: 100%
Angle: 0
Automask: NO
no border

All of the multi line options will be ignored if the object being loaded
isn't a Draw or Artworks file.

1.18i 05/05/2000

Fix bug: Save palette

Fix bug: Objects with illegal characters in their leaf crashed main menu

CS: maketext. When the rubout field is present, and only contains one
parameter then it is assumed to be the rubout colour and the opacity
is assumed to be 100%

CS: Add new scriptoptions

scriptoptions [option]

where option is one of...

Use colourtrans colours.

Hide canvas window (move behind window stack).

Hide pane windows.

Show pane windows.

    Fullscreen "X800 Y600 C32K"
Select the given screen mode, remove title and scrollbars, centre
canvas around display. An error is returned if the desired mode
cannot be selected.

Self explanatory.


Larg(er) pointer.

Self explanatory.


    (options are all case insensitive)

1.18h 3/5/2000

CS: savemask
savemask Blend adfs::4.$.filename [filetype]
- where filetype may be left blank or one of Sprite, JPEG, PNG, Squash
- The vector file data for vector in sprite objects may be extracted
  by saving the 'data' mask.

CS: copy object (uses CSO - ie. select "foo" )
makecopy "foo2"

CS: rename image
rename "foo" "foo2"

CS: test if object exists.
ifexists "foo" then...

CS: Export command made more friendly

When exporting as a sprite, and using ChangeFSI to change colour depth
you can now specify the depth using a selection of strings instead of numbers:

0, "16m", "millions" - 16M colour sprite
1, "32k", "thousands" - 32K colour sprite
2, "256", "riscos", "255" - 256 colour RISC OS palette
3, "256g","greys","greyscale" - 256 grey sprite
4, "16c", "16", "riscos16" - 16 colour RISC OS desktop sprite
5, "b/w", "b&w", "mono", "black and white" - b/w sprite

Note that you should use and /one/ of the above in the "CFSICols:"
field of the export command.

NB. To export as a 16 colour sprite the desktop must be placed in
a 16 colour mode first (this is a ChangeFSI oddity...)


Fixed redraw problem for palette pane when main toolbar horizontal.

Made scripts pane obey TAB (hide toolbars).

Script pane is draggable and behaves like other toolbars.
Bonus: Try double clicking on the drag bar thingy
(felt like experimenting - add to other toolbars - or not?)

Ctrl-Clicking on a script button loads it into a text editor.

If no comments for sprite and help are present suitable defaults are used.

maketext command modified to allow 'sprite through text' effects.

Select the sprite to be masked and simply omit the text object name
in the maketext command. 'DoTo' may of course be used to mask a
selection of objects with text.


select "sprite"

To create normal text you have to supply an name for the new object.
- maketext "sometext"

When masking a sprite the text size field has been enhanced to
support 'fitting'.

Either or both width and height may be replaced with the keyword 'FIT'
which will set the font size to fit into the sprite (taking account of
any borders you ask for in the maketext command).


Size: FIT
- fits as best as possible (but keeping a 100% text aspect ratio)

- fits exactly (allowing a non-100% text aspect ratio)

Size: Fit,48
- fits the width to that of the sprite being masked. The height is 48

Size: 48xFIT
- width 48. Height fits height of sprite.

NB. The "Fit to sprite button" in the text dialogue uses the same
(new) code and is now more accurate.

The size of the text object created is now slightly different (and
at long last, /correctly/ takes account of the borders you specify).

1.18f  28/4/2000

A couple of nasty bugs in 1.18e fixed (particularly the expression evaluator)
I've been trying to put 1.18e on the crosswinds site for a couple of weeks
but couldn't get into their ftp server. Every cloud has a silver lining. ;-)

New CompoScript toolbar.

On startup Compo iconsprites !Compo.Resources.Scripts.!!CSIcon
and then scans this directory for CompoScripts

The first three lines of each script should be comments and
in the form:

#Make shadowed text

The first line is a normal CS header. The second defines the unpressed and
pressed icons to use for the button which activates this script. Typically
these will be in !!CSIcon. The third line is the interactive help which will
be displayed when the pointer moves over this script button.

Compo builds a toolbar of CS buttons from the available scripts and
attaches it to the right of the document window. Clicking on a button runs
the appropriate script. Click menu over this window to open the scripts
directory or refresh the toolbar (when a new script has been added).

Example: Create a canvas, make some text, select it and click on the 'S' button
to give it a soft shadow. The 'T' buttons let you quickly create shadowed text
in a pre-defined font style.

Obviously, an option for turning this toolbar off will be provided in due
course. At this stage I'd like to know:

1. If you approve of the general idea. :-)
2. Should Compo build these scripts into its main menu as well?
3. Position and size of toolbar - is there anywhere else I should
   put it instead?
4. Other ideas? ;-)

1.18e 19/4/2000

Compo backend tweaks:

Revert to base could get scaling wrong (TIF)

Delete = Ctrl-X

Shift-paint in mask = invert colour (JIM)

Ctrl-Drag sliders in Compo picker to set grey level.

Tweaked position of colpicker in Shadow dialogue (avoids problem when
you go for the ok and stray off the picker causing it to close) and
fixed bug on Acorn picker for this dialogue.

Added primitive gif (and sprite) animation support. Doesn't work properly
when animated object is scaled/trimmed etc. - a gimmick for the moment.

Also scans for animation masks and supports alpha channel masks for
nice 16M sprite animations.


Multi tasking
Debug/script progress window
Simple throwback (may be buggy - works okay with StrongED) Click on line
that error occurred in to load script into editor etc.

"loadcompo" and "savecompo" commands added

"input" command added.

"mouseover" command added.
NB. Currently you can't switch off a mouseover and there is a limit
of 10 active at once. Also, they do impact on the speed of script execution.

added dotvars
.animation.frames READ ONLY
.animation.currentframe READ/WRITE

Changing the latter for an animated object lets you combine and
manipulate gif animations.

tweaked variable lookup/testing to allow the following:

let the_cows_come_home = 0
proc wibble
until the_cows_come_home
defproc wibble
let the_cows_come_home = 1

Upshot: In CompoScript zero is 'false' and one is 'true'