The latest version of this document can be found at www.broad.ology.org.uk/amiga/sketchblock/index.html
SketchBlock 2.8 - Digital Sketching For The Amiga
Here we are at release number 2.8.
It's now more than two years since I started coding SketchBlock. The first release being on the 30th January 2012, coding starting in the atumn of 2011.
In that time the project has grown somewhat and now is spread across 2.5Mb of source code, more than 83000 lines in more than 280 files! Written in 3 languages (C Python and Arexx). (not counting the perl scripts used for build ing the documentation!. There are now more than 150 ARexx commands.
This version address a few bugs and minor feature requests and clears the tables ready for starting work on SketchBlock 3.1 Professional.
See the Changelog for a complete list of changes and read on for an overview.
SketchBlock is a developing sketching and painting package
for AmigaOS. The project is in it's very early stages but is very
bold in it's long term aims. What are those aims? To create a sophisticated
application for digital painting, with full support for graphics tablets,
layers, a wide variety of tools, configurable interface, full arexx script
support, a plugin API and much more. The bias of SketchBlock will be towards
painting and creating digital art rather than image processing, but it will
likely be usable for manipulating photos too!
Version 2.6 remains available from Download From OS4Depot version 2.7 and above now know as 'SketchBlock Lite' may be purchsed from AmiStore for only £10.00 plus VAT. The Version 3 series to be know as 'SketchBlock Professional' is in progress.
Major Changes In SketchBlock 2.8
Changes In Previous Versions
- GUI Theming
You can now setup themes for you 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.
- Smoother Scrolling
The window scrolling was unoptimised, and is now much much smoother.
- New Colour Picker Tool
As well as pressing CTRL when using the Paint tool to pick colours, you can use a new dedicated tool with more options, such as pixel avaraging, and pick alpha value.
- Pressure Sensitive Brushes
Multiframe / AnimBrushes can now have different brush images for different pressures!
- Over 100 new brush frames built into 90+ brushes
You going to have some fun trying all those out!
- Plugin GUIs save setting between usage
- Some more bug fixes
See the changelog for details.
Planned Features And Current Usage
SketchBlock may be start from either the sehell or from Workbench
SketchBlock creates an assign SketchPath: which allows
ARexx etc to find scripts, and default scripts to save to the correct dir.
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 ony 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 ect
- 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 varous 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 alook 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
- LSHIFT 1 - Begin recording Macro
- RSHIFT QUOTE ('"') - Finish Recording Macro
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 32bit ILBM to the filename chosenor 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, amd 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 privides 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 clipbaord has an image in it!
- Clear Selection
- Clears the current slection, and disables the mask
- Invert Selection
- Inverts the current slection
Alpha To Selection Sub Menu
Modify the slection with the alpha channel of the current layer.
Actions are the same as those available in the tools.
- Replace the slection entirely
- Add to the current slection
- 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 32bit 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 transperancy
- 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 Laters
- 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.
Vreate 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 forground colour to the end of the current palette
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 swet 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
- Coppies a rectagle 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 tha 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 effct
- Apply a gaussian blur to the whole active layer
- Horizontal Sobel
- Apply sobel edge detecion in the hosrizontal 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