The latest version of this document can be found at www.broad.ology.org.uk/amiga/sketchblock/index.html
SketchBlock 3.3 - Digital Sketching For The Amiga
Here we are at release number 3.3.
It's now more than seven years since I started coding SketchBlock. The first release being on the 30th January 2012, coding starting in the autumn of 2011, and I am now proud to announce the first release of SketchBlock Professional Edition.
Now at over 100,000 lines of code this is major step forward for SketchBlock, introducing new features and significantly enhancing existing ones.
See the Changelog for a complete list of changes and read on for an overview.
SketchBlock is a powerful digital painting package for AmigaOS 4.1, offering smooth, responsive tools to create images in High Dynamic Range colour.
Version 2.6 remains available from Download From OS4Depot and may be thought of as a basic demo, though the feature set has moved on way past this older version.
The Version 3 series to be known as 'SketchBlock Professional Edition' will be available to purchase from the AmiStore for £15.00 plus VAT with a discount for registered users of 'SketchBlock Lite'.
Updates for 3.3
- Dynamic loading of brush data. The full set of brushes can use up to 100Mb of memory when loaded on startup, so now brushes are loaded on demand.
- Add Erase filter. This allows eraseing selected areas of layers to the background colour / transparent. Ad some standard menu items using this function
- Textures. Drawing operations can now be modified by a texture. Any layer can be used as a texture, but a custom list of dedicated texture layers is also maintained.
Some example textures cane be loaded via the new textures menu. Currently only the paint tool supports the texture operation, and this can be enabled via two new switches at the bottom of it's settings.
Updates for 3.2
- Paint tool extended to add pressure sensitive stamp intervals allowing yet greater flexibilty in brush stroke design. Works well with progressive mode
- Extensions to the path editor. Individual polygons can now be moved, copied and scaled.
- Snapshot windows now saves the weight bar values, enabling the tools and brushes areas to be set as desired
- Added controls to vary paint strolke opacity from the key board whilst painting Z decrease X increase
- Additional ARexx commands
- Misc bug fixes
Major Features In SketchBlock Professional 3.1
- High Dynamic Range or 32 bit colour
When setting up a project you can now choose between High Dynamic Range colour and standard 32 bit colour.
The former allows the smoothest colour transitions, whilst the latter make better usage of system memory
for those projects that don't need the full HDR treatment. HDR projects are slightly faster to work with as plugins and filters work in floating point HDR internally.
- Paging for larger projects
With todays modern image formats and sizes you can quickly run short of memory, especially when working in HDR.
SketchBlock offers two ways to page the internal buffers allowing much larger projects to be loaded.
- Extended Memory Paging: Since AmigaOS 4.1 FE Extended Memory is available to allow applications to use memory from beyond the 2 Gb address space limit.
SketchBlock can use this for fast paging. This is available on any AmigaOne machine with more than 2 Gb of memory. (CAVEAT: At AmigaOS 4.1 FE Update 1 on the X1000 the cfeide.device must be disabled for ExtMem to work correctly, this should hopefully be fixed in a later version of the OS).
- Disk Based Paging: On any AmigaOS 4 system disk based paging is available. Tiles of buffer memory are paged out to disk on a Least Recently Used basis allowing almost arbitrarily large projects to be created. Naturally this is'nt as fast as ExtMem paging but can be useful to load and scale down larger images for further work.
- Powerful Paint Tool
The paint tool has been extended to add many new features, as well as the
previous pressure sensitive, blend modes, jitter and progressive modes, the
updated tool adds modulation over the brush stroke, smooth stroke, constraining to straight lines,
and integrates with the new colour picker tool.
- New Colour Picker Tool
The colour picker tool now supports picking from the current layer or the merged project value, picking the alpha value and sample averaging over a given radius, useful when picking colours from noisier images.
- Selection Tools
The selection tools remain basically the same but add the option to convert the alpha channel into a selection mask and vice verca.
- Convolution Filters
SketchBlock Pro adds some new dedicated and optimised convolution based filters.
- Gaussian Blur: the classic blur function with variable radius
- Unsharp Mask: Another classic image process filter.
- Bilateral Filter: This one is a bit special, performing convolution in both the space and frequency domains, it allows to reduce noise in an image whilst retaining the contrast of edges. With extreme settings it might render a photograph in almost cartoon like way, or more subtly tighten that noisy photo where the light was bit low.
- Plugin Based Importers and Exporters
New plugins allow the import of a wider range of image formats with much greater control, falling back to datatypes for import of currently unsupported images.
More formats are planned...
- Open JPEG / JPEG 2000: Supports loading of 8,12 and 16 bit data and alpha channel
- Info: Loads direct mapped image data from Amiga Icons.
- Open JPEG/ JPEG 2000: Supports saving in 8,12 or 16 bits depth with alpha channel.
- JPEG: Traditional jpeg, with adjustable quality value
- PNG: Portable Network Graphics format with alpha support.
- ILBM: Supports saving with or without alpha, useful for exporting to applications like Wordworth that don't understand ILBM32 but do load ILBM 24 bits.
- Info: Save project into an icon. Project must have 1 or 2 layers of equal size less than 256 square.
- More Example Scripts
The range od scripts to found in the REXX drawer and accessible from the menus has been increased. Most recent addition is the Add Glow. Combined with the above INFO importers and exporters SketchBlock is now your favourite icon editor.
- GUI improvements
New custom gadgets allow for easier window resizing when large numbers of brushes are loaded.
- GUI Theming
You can setup themes for your SketchBlock GUI, to enable you to use the gadget image set of your choice. Two themes are provided as standard the AISSTheme by 'Mason' and the KSTheme from Kevin Saunders.
- More to discover when you get stuck into Sketching...
SketchBlock may be start from either the shell or from Workbench
SketchBlock creates an assign SketchPath: which allows
ARexx etc to find scripts, and default scripts to save to the correct directory.
The assign is removed after the program exits.
NB: PROGDIR: cannot be used for this as this only applies to the SketchBlock
executable. ARExx, python, perl et al have their own 'PROGDIR:'
Some debug info may be printed to the console, but usually only in the case of an error.
SketchBlock makes use of many support scripts written in both ARexx and python.
These scripts use ProAction for a GUI. Some make us of PIL (The Python Imaging Library).
To get the best out of SketchBlock please install the latest versions of these utilities.
The GUI is currently divided into 3 windows, the default layout has one large
window containing the Sketch, where sketching and other editing is done, and
two other windows, Tools on the left and Layers on the right. These windows can
be hidden or revealed at anytime by pressing the TAB key.
This is where the main sketching action takes place, it should be fairly
intuitive, simply click with the mouse and drag to paint. Less obvious will
that you can pick a colour from the current pixel by pressing CTRL at the same
time as you left click with the mouse (or stylus if you have a graphics tablet).
Gadgets And Controls
- Window Title
- The window title displays useful info about the project, such as project
name, modification status, filename etc.
- Pick Colour
- Press CTRL whilst left clicking with the mouse or graphics tablet stylus.
- The zoom gadget is at the bottom left of the Sketch Window, enter the
desired zoom level in percent. The best graphical performance is obtained for
multiples of 2. ie. 25% 50% 100% 200% 400% etc but any zoom percentage may be
As well as the various menu shortcuts additional shortcuts can be defined in the prefs.xml file.
These are intended to be user definable but a useful set of defaults are defined.
Similarly to menus keyboard shortcuts can trigger commands, ARexx scripts or python scripts,
indeed scripts written in any language.
Please have a look at the prefs file and the scripts it calls to inspire your own customisations.
- TAB - Toggles Tools windows.
- CTRL Z - Undo last operation
- CTRL Y - Redo last undo operation
- P - Set current tool to "Paint".
- E - Set current tool to "Erase".
- S - Swap foreground and background colours
- COMMA (',') - Decrease brush size
- PERIOD ('.') - Increase brush size
- RALT COMMA (',') - Lighten foreground colour
- RALT PERIOD ('.') - Darken foreground colour
- ZDecrease paint tool opacity
- XIncrease paint tool opacity
- LSHIFT 1 - Begin recording Macro
- RSHIFT QUOTE ('"') - Finish Recording Macro
- ZDecrease paint tool opacity
- XIncrease paint tool opacity
This window will remain as simple as possible so as to give the largest
sketching space. However, a popup with Zoom presets wouldn't go amiss!
All windows share the same set of menus, these are defined via an xml preferences file, and can be user customised by editing that file.
The following are the defaults supplied, you should customise them to your needs.
The default project menu contains the following entries
- Brings up the New Project Window to allow and new Sketch Project to be created
- Opens a requester to allow an existing sketch file to opened and loaded
- Save a sketch to it's file, if a new sketch, opens a requestor to allow a new filename to be selected
- Save As
- Save the active sketch to a new file
- Save AS Brush
- Save the project as a SketchBrush
- Export As
- Flatten the project and export as a 32 bit ILBM to the filename chosen or if PIL and ProAction are installed the option to choose from a range of formats will be offered
- Import an image via the datatypes system
- Postscript Print
- "Print" the current project to a file as postcript. The GUI will offer various formats, postscript, eps, and pdf.
- Close the active sketch, if the active sketch has been modified since last save, a requester suggesting saving before closing will show
- Quit the entire application, currently no waning requester is show (will be implemented later!)
The edit menu provides entries control editing the project
- Undo one action in the active layers undo stack
- Redo one action in the active layers redo stack
- Copies the currently active layer into the system clipboard as an IFF image.
- Pastes the contents of the system clipboard into the active project as a new layer. Only works if the clipboard has an image in it!
- Clear Selection
- Clears the current selection, and disables the mask
- Invert Selection
- Inverts the current selection
Alpha To Selection Sub Menu
Modify the selection with the alpha channel of the current layer.
Actions are the same as those available in the tools.
- Replace the selection entirely
- Add to the current selection
- Subtract from the current selection
- errm any guesses?
Zoom related commands.
- Zoom to the preset percentages
- Fit To Window
- Zoom project so as to fit the whole project into the window.
- Fill Window
- Zoom project so that the whole window is filled. If the projects aspect ratio is not the same as the window, then parts of it will be clipped (scrollable of course).
- Save Zoom State
- Save the current zoom level and scroll bar offsets.
- Restore Zoom State
- Restores the zoom to the state saved with the above command. This is very useful if you wish to zoom in on part of the image, then zoom out to see the whole, then quickly zoom back to do some more close work.
Image level commands and actions.
- Scale Image
- Brings up the Scale Image With Contents script
Layer manipulation actions.
- Import Layer
- Import an image via the datatypes system and add it to the current project.
- Export layer
- Export the currently active layer as a 32 bit ILBM
- Add Alpha Channel
- Creates an Alpha channel in the active layer, but does not other wise change the image
- Colour To Alpha
- Remove the current background colour from the image and replace with transparency
- Selection To Alpha
- Creates an alpha channel from the current selection mask
- Remove Alpha Channel
- Removes the alpha channel from the active layer, and replaces it with the current background colour
Path manipulation and loading saving etc.
- Load Path
- Load a path from disk, make it the active path
- Save Path
- Save the active path to disk
- New Path
- Start the path editor with a fresh path
- Edit Active Path
- Start the path editor, with the active path
- Fill Active
- Fill the active path with the foreground colour, operates on the active layer
- Stroke Active
- Stroke the active path with the current brush
Window manipulation Actions
- Toggle Tools
- Toggle Layers
- Toggle the open and close state of the Tool and Layers windows
- Snapshot Windows
- Snapshots the positions of the active project, tools and layers windows
Create and select presets
- Make Preset
- Brings up a ProAction based requester to enable you to create a preset from the current tools settings. You may choose which settings you want restored when the preset is selected.
- Preset list...
- A list of currently available presets. Presets are stored as mini ARexx scripts that set the required state.
Create a load / save palettes.
- New Palette
- Creates a new empty palette and adds it to the application palette list as the active palette.
- Load Palette
- Load a palette from a file, makes it the currently active palette
- Save Palette
- Save the current palette to a file
- Add To Palette
- Adds the current foreground colour to the end of the current palette
A list of sample textures that can be loaded by invoking the menu itms.
Select and remove input wedges and other miscellaneous scripts. These are script based plugins that add significant functionality to SketchBlock.
- Draw Straight Lines with the current brush
- Draw rectangular boxes using the current brush and paint tool settings.
- Curves (new for 1.8)
- An advanced plugin that allows you to draw bezier curves using the current brush.
The plugins is controlled by the mouse /tablet and the keyboard
Keyboard controls are as follows
- N -- Start a new curve. Stroke the mouse after pressing N to define a new starting curving
- SPACE -- Stroke the current curve
- S -- toggle size fading
- C -- toggle colour fading
- O -- toggle opacity fading
- H -- toggles hardness fading
- ESC -- quit plugin
Click and drag mouse near the controls points (shown as dots) to move the ends of the curve and adjust its shape
- Circles (new in 2.5)
CTRL click to set the centre then drag to set the size of the circle. Press SPACE to stroke with current brush or SHIFT SPACE to fill with the current colour.
Under the bonnet this script uses a path to simulate a circle, this is not 100% accurate but for most uses you'll hardly detect the difference.
- Filled Boxes (new for 1.8)
Another advance plugin, this time with a ProAction GUI. It allows you to draw boxes, which may be filled, the outlined may be stroked with the current brush, the corners maybe rounded. etc etc.
The location of the box id shown by dotted lines in the sketch window. It can be positioned via the GUI or by dragging the edges with the mouse. When working in the sketchwindow press "D" to draw the box or "C" to cancel.
Or press the corresponding gadgets in the GUI window.
- Copy Box
- Copies a rectangle in the active layer into a new layer. Just drag the mouse to select the area. This is a one of wedge, it removes itself after a completed copy.
- Move Layer
- Left click on the active layer and drag to it's new location then release
- Scale Layer
- Allows you to resize the active layer. Use the mouse to resize the layer by dragging the edges or corners and press RETURN or SPACE to scale or ESC to quit
- Remove Wedge
- Removes the currently active input wedge.
- Perform an emboss convolution of the active layer
- This convolution creates the illusion of a deep chiselled effect
- Apply a gaussian blur to the whole active layer
- Horizontal Sobel
- Apply sobel edge detection in the horizontal direction
- Vertical Sobel
- Apply sobel edge detection in the vertical direction
- Full Sobel
- An advance script that combines the above two actions. The script itself
performs extensive calculations using the READPIXELS and WRITEPIXELS functions to access layer data.
Can create a cartoon like effect depending on the image, but will be slow on larger images. Be patient!
The latest version of this document can be found at www.broad.ology.org.uk/amiga/sketchblock/index.html