home *** CD-ROM | disk | FTP | other *** search
- Dreamscape version 1.15 (28th September 1996)
- =========================
-
- Introduction
- ------------
-
- Dreamscape is a C++ class library for RISC OS 3. The current version uses the
- Toolbox, although a future version may be written to use the Wimp directly.
- Dreamscape has a lot more functionality than the other class libraries for
- RISC OS, and it is also better designed.
-
- Some Dreamscape routines are also usable from C as well as C++. Dreamscape's
- event handling routines are much better than those provided with the Toolbox
- and are worth making use of even if you don't use C++.
-
- See the Dreamscape hope page on the Web for more information:
- http://www.argonet.co.uk/users/mseaborn/dscape.html
-
-
- Requirements
- ------------
- Dreamscape has been written for use with Acorn's CFront-based C++ compiler
- supplied with Acorn C/C++ (Cv5), and has not been tested with GNU C++ or
- Beebug's Easy C++. This is not much of a problem as you will need ResEd,
- which comes with Acorn C/C++, to write Toolbox applications, as there are no
- Freeware resource editors. However, if anyone tries using Dreamscape with
- another compiler, I would be very interested in the results.
-
- Dreamscape uses OSLib, available from Acorn's FTP site
- (ftp://ftp.acorn.co.uk/). It also uses Julian Smith's make utility Makatic 2,
- avaialble from Hensa (ftp://micros.hensa.ac.uk/ or
- ftp://ftp.demon.co.uk/pub/mirrors/hensa/) under package e040. The latest
- version of Makatic, version 2.17, is needed.
-
- A set of improved stubs for the Shared C Library ("asstubs") are used by the
- Dreamscape example programs. They are available with SDLS (the Straylight
- Dynamic Linking System) under package d052 on Hensa. If you don't want to
- bother with downloading this file, you could replace "asstubs" in each
- makefile with "stubs" or, more preferably, just make a copy of the "stubs"
- file called "asstubs".
-
-
- Long filenames
- --------------
- If you have long filenames on your computer, run the 'ExpandHdrs' file in the
- Utilities directory. This will give the header files their long filenames so
- that they can be accessed properly using long filenames. If you don't have
- long filenames on your computer, #including the headers using the long
- filename will work (providing the truncate filenames option is configured on)
- - you should always specify the long filename instead of the truncated
- filename.
-
-
- Compiling Dreamscape
- --------------------
- To save on space, this release of Dreamscape has not been compiled and does
- not come with the object files or library files, so you will have to compile
- it first to use it, although you can download the object code separately if
- you want. If you install Makatic 2, it would make things a lot easier to do
- this, as all you would have to do is double-click on !Makefile.
-
- The best way to start off using Dreamscape would be to use the MakeApp
- utility to create a minimal application and experiment with it. You're
- welcome to look at the source code of the other examples and copy it if you
- want. Bear in mind that TestProg is more of a test program than an example,
- though, and is a bit of a mess.
-
-
- StrongHelp manual
- -----------------
- There is now a StrongHelp manual file for Dreamscape. The abstract, GUI
- object and gadget classes are now all documented, although the low-level,
- graphics and utilities classes are not.
-
- To install the StringHelp manual, copy the Dreamscape manual file into the
- HelpData directory inside !StrongHlp. You will now be able to access the
- manual from StrongHelp’s main menu.
-
- If you use StrongEd or Zap as your text editor, you will be able to get
- instant help on a keyword by placing the caret over the word and pressing F1
- (usually, depending on how the editor is set up). Zap is not, by default, set
- up to do this, so you may have to change the keymap file so that a spare key
- is set to execute the ‘mje_helpcontext’ command.
-
- To get the page for a class, put the cursor over the class name and press you
- help key. Most of the time this will bring up the help page for the class,
- unless the class is nested inside another. However, you cannot get help for
- most methods this way, apart from a few methods that are common to many
- classes. The help pages for some classes have links to small pages for their
- methods (notably the BBox class where the purpose of the methods isn't so
- obvious).
-
- If you still can't find the information you want, look at the header file.
- There may be classes or methods that aren't documented in the StrongHelp
- manual yet. Of course, with header files you have to wade through the private
- parts of classes and the contents of inline functions, so this isn't
- recommended most of the time.
-
-
- What is and isn't implemented
- -----------------------------
- Dreamscape has the following so far:
- - pseudo exception handling based on setjmp/longjmp
- - a string class (probably not ANSI C++ compliant though)
- - STL-style linked list classes
- - safe and efficient Toolbox event handling and Wimp event/message handling
- (accessible from C as well as C++)
- - classes for co-ordinates, bounding boxes, transformation matrices, etc.
- - abstract window class
- - all Toolbox objects except quit, DCS and print dbox
- - all Toolbox gadgets except the draggable gadget
- - abstract graphic class
- - graphics classes for:
- - draw files
- - JPEG files
- - sprite files
- - the window class has the following:
- - redraw handling
- - click handling (including triple-click and double-drag handling)
- - keyboard input handling
- - drag handling (within a window)
- - file/data loading
- - global clipboard handling (copy and paste)
- - data loading and saving (via other objects)
- - memory file transfer, both send and receive
- - null event handling
- - methods to read screen dimensions and pixel sizes
- - document and view classes (for scalable views)
- - dialogue box class to handle OK, Cancel and (optionally) Save buttons
- - two different types of pane handling
- - list window class
- - deferred delete template functions
- - ...and more!
-
- Things that need to be implemented include:
- - hotkey handling (for aborting drags with Escape)
- - no special key code handling (no handling of control-letter-keys)
- - other Toolbox objects (just quit, DCS and print dbox)
- - other Toolbox gadgets (just the draggable gadget now)
- - drag and drop protocol (simple local dragging already done)
- - shutdown and desktop save protocol handling
- - print protocol and other print handling
- - device claim protocol
- - graphics class for ArtWorks files (I'll have to ask CC for documentation)
- - sound and video playing (to play samples, tracks, MIDI, etc.)
- - dynamic area handling
- - object linking and embedding (OLE) using External Edit protocol
- - support for Clares' PCA protocol
- - automatic file conversion
- - shifting heap handling (with Dynamite)
- - multi-threading (using Simtec's API to allow the use of the Hydra)
- - compression and decompression support
- - ANSI C++ compliant string class
- - extra list templates for easy and safe event handling
- - graphics and font handling
- - ...and support for lots of other things!
-
-
- Acknowledgements
- ----------------
- The header files algorithm.h and list.h were written by Paul Field
- (paul.field@dial.pipex.com), and are not technically a part of Dreamscape,
- although they may be distributed freely.
-
-
- And finally...
- --------------
- Documentation for Dreamscape is still incomplete and a little on the sparse
- side at the moment, so feel free to contact me if you have any problems with
- the library.
-
- You can contact me via e-mail at this address:
- mseaborn@argonet.co.uk
-
- You can also contact me via snail mail, although e-mail is preferred:
- 102 Wilmot Way,
- Banstead,
- Surrey,
- SM7 2QD.
- (England)
-
-
- Mark Seaborn
- mailto:mseaborn@argonet.co.uk
- http://www.argonet.co.uk/users/mseaborn/
-