home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 28
/
amigaformatcd28.iso
/
-seriously_amiga-
/
programming
/
c
/
oui
/
readme.first
< prev
next >
Wrap
Text File
|
1998-04-23
|
5KB
|
135 lines
Object User Interface is copyright © 1998, Dominique Lorre
First, I would like to apologize for the lack of documentation.
The explanation for this is that :
- OUI has been designed to suit my needs
- The interface is changing so often that any documentation would have
become obsolete quickly.
The reasons why I am releasing OUI are :
- It may be of benefit to the Amiga community
- I am tired of coding examples programs in C, which produce very long code
and make me reinvent the wheel at each time.
A note about GNU compiler
The GNU compiler is distributed with the GNU general public license.
Making a GNU OUI version is possible via a file named fstabs.h which is
distributed under this license. This should not mean that OUI is following
this license. If this is a problem to anyone, just tell me and I will simply
remove the GNU support since the additional file is not needed by OUI but by
the GNU compiler itself.
OUI is distrbuted under Copyrighted freeware. Feel free to use and modify this
files as long as you are developping for the Amiga OS. If you want to release
add-ons for OUI, feel free to do it but your files should not be mixed with
the OUI main archive (oui.lha).
A note about GUI systems
OUI is not a GUI system, it is a C++ encapsulation of some AmigaOS functions.
Making OUI work with any GUI system should not be a problem.
What is OUI ?
OUI provides the following services for the C++ developper :
locale support (independent, locale.cc, include/locale.h)
The locale support provides a lstring class which has the ability of creating
CatComp descriptors files automatically. You can use these features without
using any other feature of OUI.
memory support (independent, new.cc, include/new.h)
The memory support provides a pool based memory allocation. It does not
handles exceptions but rather provides an Oxygene feature which is a small
amount of memory released by the application when things are going wrong.
This can help the user quitting safely its applications when memory has
gone out. A side effect of this is that OUI programs cannot be tested with
memoration since memoration will eat the Oxygene pool as soon as OUI release it.
Of course, any data allocated with new will be released on program exit wether
or not you use delete on it.
list support (independent, slist.cc, include/slist.h)
These lists are much like the AmigaOS ones. Because of the virtual functions
I decided to not declare the nodes as AmigaOS MinNodes.
screens, windows and gadgets support (the big stuff).
The principle is the following :
Each OUI application which plans to use windows must declare a screen.
A screen can be a custom screen or a lock on a public screen.
The screen class contains useful informations such as the size, the ratio
and also tries to calculate extra pens (such as RED and GREEN).
A window is opened in two step :
first you use the new operator on it with the parameters you declared in
the class (for example the size).
second, you open it with others parameters (for example the screen pointer).
When you open a window you may add gadgets to it. For this you should allocate
a gadgetlist with the maximum number of gadgets you plan to use. This is quite
boring but I did not found a better way yet (Any idea ?). Then you add the gadgets
to the gadget list. The gadets can be of gadtools, Boopsi or anywhere else.
The window class also provides support for special rendering such as background
Bitmaps, areadraw and clipping.
Many other system functions have also been encapsulated. Menu functions were
added and also the cleanup code has been carefully designed. When processing
events, you will have control on the way you want to handle these. Keyboard
support has been added.
In conclusion, the first window application I have ported from C to C++
has been reduced from 1400 lines to 700 for the same functionnalities.
Evolution of OUI.
I do not guarantee anything except this : the set() gadgets functions are planned to
move to a TagItem version and are guaranteed to change. The locale, new and slist
support should not change much. When upgrading oui, the best thing will be
to recompile every module, and sometime you will have to modify some of your code.
Of course, this warning is excessive but it happened in the past that I had to
make big modifications in the interface.
Installing OUI
The best is to create a drawer named OUI and another named Ulib and to assign
Ulib: to this drawer. Then you place the OUI code in the OUI drawer and the
library itself in Ulib:. The Oui_localise version is for making .ct and .cd
files automatically and is generally not much used.
Compiling OUI
If you use SAS/C the call is :
SMake -b smakeXXX.def where XXX is your compiler flavor.
For GNU you will find the appropriate GNUMakefile.
Compiling with OUI
Do not forget to add XXX/OUI/include and XXX/OUI/include/gadgets to your
INCLUDE path (XXX is the Path where you created the OUI drawer).
Programming example :
You should look to the envman.lha archive for a complete example of programming
with oui.
HWGRCS support
You can use the ciall file for automatical RCS support if you plan to use your custom
OUI. The ciall.lha archive will be uploaded separately.
The Author:
You can reach me at :
Dominique Lorre
le Fabary, BAT C
4, Allée des Peupliers
13100 Aix-en-Provence, FRANCE
EMAIL: dlorre@caramail.com