Short:        OOP library + misc GUI & font sourrces
Author:       pdroldan@yahoo.com (Pablo Roldan)
Uploader:     pdroldan yahoo com (Pablo Roldan)
Type:         dev/misc
Replaces:     dev/misc/geavl.lzh
Architecture: m68k-amigaos

--------------------------------------------------------------------

             GEngine shared library version 0.1
                (c)2001-2002 by Pablo Roldan

note: this archive replaces geavl.lzh (avl trees in PCQ Pascal)
      which were not working at all (I prefer not to talk about it).


1. The library
   -----------

   This library was thought at a first moment to gather all de graphic
   and GUI routines that I had written. Later on, this become into a
   library that allow AmigaOS1.3 users to create screen and font
   sensitive GUIs. Therefore allowing 1.3 programs to show a correct
   GUI in  both 1.3 and 2.0+ systems.

   Although this goal has not been achieved at the time,
   the library incorporates:

   - Colour matching routines, as GetBestPen, that returns the closest
     palette entry to the passed RGB value.

   - AVL trees routines, search, insert & delete criteria
     customizable via hooks.

   - Memory pools. Auto-expand/shrink in user defined chunks

   - Object oriented system. A copy of BOOPSI, currently only the root
     class implemented in the library.

   - Taglists routines, also a copy of the ones in utility.library

2. The pascal sources
   ------------------

   The pascal source include some test programs as well as gengine_d.i,
   a include file containing the following:

   - A custom slider gadget, capable of displaying text inside the knob
     just like the MUI ones. Also is font sensitive.
     Note: The current implementation has problems with visualprefs.

   - A scalable & rotable vector graphics engine.

   - A 'event handler', not the best one, but does it's job until now.

   - A pop-up menu, font sensitive.

   The test programs:

   - testpop.p : This is the oldest one, it demoes the sliders,
     vectors, pop-up menus and the color matching routines in
     the library.

   - test1.p : Test the color matching routines, opens 2 windows,
     the 1st contains 3 sliders, one for each primary color, at the
     right is a rectangle filled of the nearest color in the palette
     that matched the values on the sliders.
     The 2nd window display the standard GUI colors, DrawInfo like.

   - test2.p : Test the scalable-rotable vector engine. Again the
     program opens 2 windows, one contains a vector shape, the second
     2 sliders that controls the angle and size of the vector shape
     respectively.

   - test3.p : Test AVL trees, only text displayed on
     the CLI window. This is not the best test, as I discover later.

   - testtag.p : Test both the taglist routines and class adding and
     removing.

   - testiclass.p : The last one, test a pascal-implemented imageclass,
     this time 4 sliders allows you to move an image object (currently
     only a box). The image moves by using the methods GIM_ERASE,
     GM_SET and GM_DRAW.

3. The pascal includes
   -------------------

   These are the PCQ pascal includes to use the library with this
   compiler.
   Some of these have pascal source of some routines that have not been
   yet added to the shared library.

4. Compiling
   ---------

   The library has been written entirely in assembler, I use
   phxass+blink to compile and link it.

   To compile the pascal test programs you will need the PCQ pascal
   compiler, you will also need to compile gengine/asm/gengine_pcq.asm
   to gengine/asm/gengine_pcq.lib (glue routines) and 
   gengine/test/callhook.asm to gengine/asm/callhook.o (hook routines).
   Then link the object code that created the pascal compiler with this
   two files (and offcourse the pascal library).

5. Compatibility
   -------------

   Only an early version of the library has been tested on my real
   Amiga 500. The entire development of the library has been doned on
   a PeeCee running WinUAE.

   However, I has tested the library under various kickstarts and 
   workbench configurations, and only found a visual problem with the
   custom slider gadgets and the program visualprefs, this can be fixed
   by making the slider BORDERLESS and letting it to refresh it's
   border.

6. The future
   ----------

   Currently the development is temporarily stopped, as I'm busy with
   other GUI/Gfx related project. When I finish it (or get bored of it,
   whatever happens first) I will continue developing the library.

   Anyway... the future will bring us:

   - fixed color matching routines to use the same API that the
     included in kickstart v39+.

   - further development will be done in C
     (rewritting de Pascal code into asm is a REALLY slow process)

   - code will take more advantage of newer OS versions.

   - built in image class (among others)

   - finished gadget class and vector graphics engine converted into a
     built in class.

   - better docs.

   - nicer test programs.

   - and a heap of things more...

7. Distribution
   ------------

   The contents of this archive are all FREEWARE, you can use the
   library and the source codes as you want.
   If you find usefull some of this, write a program that uses the
   library or, for some obscure reason you want to continue developing
   the library, pleas e-mail me at the address listed below.

8. Contact
   -------

   You can reach me via e-mail at:
 
     pdroldan@yahoo.com

   or by snail mail:

     Rivadavia 249 dto 6B
     (9100) Trelew
     Pcia. del Chubut
     Argentina

   My web page:

     http://www.geocities.com/soft154i/index.htm

   As you can see at my web page I'm very insterested in old 8/16 bits
   computers, so any donation, either hardware, software or
   documentation *is* VERY welcome.

9. Disclaimer
   ---------

   No warranties of any kind are made as to the functionality of this
   library and programs. You are using it at YOUR own risk.