A Secret History of DrawWorks Part 3
As I discussed last time around the first CD version of DrawWorks was DrawWorks Millennium. This bought together DrawWorks, Mr Clippy, Typography and a host of clip art and utilities all on one CD. This proved to be a very popular product and it was obvious that we would need to produce a new version after listening to the customer suggestions.
One of the main problems with older versions of DrawWorks was the lack of communication between DrawWorks and Draw. DrawWorks would issue a command and then simply hope that Draw would play ball. In a few instances (such as saving a file) DrawWorks could monitor what Draw was up to and take appropriate action, but in most cases all DrawWorks could do was send the commands and assume all was well. An example of this would be selecting a font size from the DrawWorks font menu. This would send the appropriate click to Draw, but DrawWorks couldn't then check back to make sure the command had been accepted. Not only that but DrawWorks had no way of knowing what font size was already selected and so couldn't tick it's own menus to match those shown by Draw, or to match what was even on screen! This was plainly unacceptable in a program that was continually growing in complexity and had to be resolved.
The problem is that RISC OS simply doesn't support proper inter-application co-operation. There is no method for us to ask Draw what it's doing. So we decided to invent one. After a good deal of experimentation we discovered that you could find out what Draw was doing by poking into it's workspace to find out what options were ticked on its menus and were being displayed in it's writable dialogue boxes. The problem was that as far as any application is concerned it's sitting at the same address space in memory. As the WIMP multi-tasks it pages applications into and out of this memory space, so each program might as well be running on a single tasking computer. To solve this we wrote a module that allowed us to intercept the Wimp_CreateMenu SWI and we could then read or modify the contents of Draws menus.
As an example this would allow us to read back the currently selected font size and then update DrawWorks so that it knew what size font Draw had selected. We could also read back the current line width and a host of other options. This allowed lots of new features to be incorporated into DrawWorks, including the facility to set the default Draw line width (by writing a value in just after Draw had started). Another new feature that could now be added were "nudge" buttons that could slowly increase or decrease a value, such as font size. DrawWorks could now read a value, increase it by a fixed amount (usually 0.25) and then write the value back. Assuming the user had an item selected in the Draw window, for example a piece of text, we could read the size, increase it slightly, write the value back, then fool Draw into thinking the user had just clicked menu and typed in a new font size. The result was a set of simple buttons that could alter the size of objects (not just text), change the line width and even rotate things on screen without the user ever being aware of how they worked.
Having got the special menu intercept module some other major changes were made to DrawWorks based on user feedback. Firstly we implemented an anti-aliased display by using a licensed version of Computer Concepts ArtWorks rendering modules. We were also able to add back ground font blending to a number of the DrawWorks utilities by creating a special version of the Draw rendering module. In the end a great many changes were made, all based on customer feedback, at last we had a version of DrawWorks that we were really happy with, DrawWorks New Millennium was a major step forward for DrawWorks and offered many more features.
As a final point of interest in digging around I found the original updates list that showed the changes between DrawWorks Millennium and New Millennium and thought it might be of interest.
New Features List
- On screen anti-aliasing.
- Background font blending
- Set the default line width for Draw.
- User selectable Grade and Interpolate levels.
- Line width scalling nudge buttons.
- Preferences option for Draws default grade & interpolate levels.
- Writable options for grid spacing and divisions.
- Colour coded on screen manuals.
- New "Copper" or Standard RISCOS window templates.
- Autoscrolling toolbars that follow the mouse pointer.
- Nudge buttons for font size, height and line width.
- Shows currently selected font size and line width ticked on menus.
- Writable pointsize & height options on font menus.
- Extended versions of Draws line width and point size menus.
- 24 bit TIFF export at up to 1200dpi.
- OLE editing of Sprite & JPEG images.
- OLE editing of text areas.
- Bolt-on toolbar, allows other apps to be integrated into DrawWorks.
- Metaliser tool to shade objects with metallic tones.
- Object spacing and positioning tool.
- Set the leading (line spacing) for text objects.
- FontFiend replaces Dr Fonty as font editor.
- Tracing of Bitmap images to convert them to vectors.
- Replace any colour with any other colour.
- Keep one colour intact while replacing other colours.
- Colour fitter - convert colours to their nearest named or Puretint equivalents.
- Object rotation dialogue box.
- Nudge buttons to rotate in 1 degree steps.
- Flip objects in both X and Y Axis.
- Object scaling dialogue box plus 5% nudge buttons.
- Scale an objects line widths without altering its size.
- iDesigner font suggestion tool now integrated into DrawWorks.
Improvements to existing features
- Soft edged shadows.
- Use PureTint and named colours for shadows.
- Use PureTint and named colours in the lining tool.
- Automatically produce darker shades of named colours.
- Control over grey component replacement when producing CMYK separations.
- Anti-aliasing of JPEG images.
- Export of sprites and GIFs at up to 1200dpi.
- Import bitmap images as either 8 or 24bpp.
- Import ArtWorks files as bitmaps.
EPS (PostScript) improvements
- Improved EPS importer.
- Adobe Illustrator 7 PostScript previews.
- Include sprites in Illustrator EPS files.
- Produce PostScript Type 1 fonts with full hinting.
- Integrated PostScript compatible font names database.
Additional features (using supplied bolt-on applications)
- Improved on screen rendering & dithering in 256 colour modes.
- Drawing of other shapes such as polygons, stars and crosses.
- Simple perspective drawing tool.
- Produce rotated and transformed patterns from objects.
- Gamma colour control for RISC PC monitors.
- Design on screen graph paper.
- Produce spirograph type patterns.
- Text based scripting langauge for producing Drawfiles.
- Export as WMF files.
- Now fully ImageFS2 compatible.
- Auto conversion of upper case clip names from a CD.
- Over 800 new high quality clip art examples.
- New ClippyCopy - transfer clip art groups from old versions of Mr Clippy.
- Background font blending in drawfile clips now supported.
- Over 350 new fully hinted and kerned fonts.
- PostScript Type1 font export with hinting.
- Automatic character builder with EURO symbol support.
You can see that DrawWorks New Millennium had a lot of changes when compared to the earlier DrawWorks Millennium and it took a long time to write and for the first time included custom versions of some modules to impliment some of the changes. Next time we will take a look at DrawWorks Third Millennium and DrawWorks Select.