Universal Overlay v1.2
----------------------

Armin Diedering
letzte nderung: 29.1.2000
Tabulatorweite: 3


1. Was ist UniLay ?
===================

UniLay ist ein Overlay fr ResourceMaster ab Version 3.0. Mit Overlays ist 
es mglich, schon im Editor userdefinierte Objekte darzustellen.
UniLay verwendet dabei die ResourceMaster-eigenen Userdef-Objekte, die der 
ResourceMaster verwendet, wenn keine MagiC-Sonder-Typen verfgbar sind. Das 
hat den Vortei, da das Overlay mit seinen 2-3 kByte sehr klein ausfllt. 
Nachteilig ist es, da die Objekte im Editor nicht ganz so dargestellt 
werden, wie sie spter im Programm aussehen werden. Immerhin ist aber schon 
ein grober Eindruck mglich.


2. Installation
===============

RSM 3.0:
--------
Einfach die Dateien "unilay.ovl" und "unilay.cnf" in den RSM-"modules"-Ordner 
kopieren und in "rsm.ovl" und "rsm.cnf" umbenennen.

RSM 3.2:
--------
Einfach die Dateien "unilay.ovl" und "unilay.cnf" in den 
RSM-"modules"-Ordner kopieren. Da RSM 3.2 mehrere Overlays untersttzt, 
knnen die Dateien umbenannt werden und UniLay mehrfach in den 
"modules"-Ordner kopiert werden. Der Dateiname fr die "*.ovl" und die 
"*.cnf" mssen dabei gleich sein (z.B. "flydials.ovl" und "flydials.cnf").
Ab RSM 3.2 kann ein Overlay eigene Toolboxen anbieten. UniLay sucht im 
"modules"-Ordner nach einer Tools-Resource ("Overlay-Name.rsc"). Diese 
Resource mu ganau so aufgebaut sein, wie eine RSM-Tool-Resource -> rsm.hyp.


3. Welch Objekte werden untersttzt ?
=====================================

UniLay bzw. der ResourceMaster untersttzt derzeit 7 Sonder-Objekte

- RSM_MOVEBUTTON		Das bekannte Eselsohr um mit Dialoge zu fliegen.
- RSM_BUTTON			Ein Button mit einem unterstrichenen Buchstaben.
- RSM_CHECKBUTTON		Ein Ankreuzbutten mit/ohne unterstrichenen Buchstabe.
- RSM_RADIOBUTTON		Ein Radiobutten mit/ohne unterstrichenen Buchstabe.
- RSM_UNDERLINED		Ein unterstrichener String.
- RSM_GROUPBOX			Ein Gruppenrahmen.
- RSM_NICELINE			Eine Niceline fr Mens.

Abgesehen von RSM_MOVEBUTTON kommen die Sonder-Objekte nur zum Einsatz, wenn 
es sich um G_STRING-, G_BUTTON- oder G_TITLE-Objekte handelt. 

Bei RSM_BUTTON, RSM_CHECKBUTTON und RSM_RADIOBUTTON wird der unterstrichenen 
Buchstabe durch eine eckige Klammer im Buttontext gekennzeichnet. Oder aber 
auch MagiC-like durch das Setzen von Whitebak. Die Position wird dann durch 
die Bits 8-11 von ob_states bestimmt.
Die MagiC-Methode hat Vorrang.


4. Wie Konfiguriere ich UniLay ?
================================

UniLay ld bei der Initialisierung die Datei "unilay.cnf". In dieser 
CNF-Datei wird festgelegt, fr welche Objekte das Overlay aktiv werden soll.

Die Datei mu mit folgender Zeile eingeleitet werden!

------------Schnipp-----------
#[xxxx]
------------Schnapp-----------

Damit wird die ID des Overlays festgelegt ("xxxx" steht dabei fr 4 
beliebige Zeichen). Wer verschiedene CNF-Dateien verwenden will (oder mu), 
sollte fr jede CNF eine ID vergeben. Da die ID des Overlays auch in der 
*.rsm-Datei gespeichert wird, aktiviert RSM das Overlay nur dann, wenn die 
IDs bereinstimmen.
Um Konflikte mit ffentlichen Overlays zu vermeiden, sollten private IDs mit 
einem '_' beginnen z.B. so "#[_AO1]" (Armins Overlay Nr.1).

Dann kommen die Objekt-Zeilen.
Jede gltige Objekt-Zeile hat folgenden Aufbau:

------------Schnipp-----------
#00 0000 0000 0000 0000 0000 0000	Kommentar
------------Schnapp-----------

Also sie wird immer mit einem Doppelkreuz (am Anfang der Zeile) eingeleitet. 
Dem Doppelkreuz folgen 7 hexadezimal codierte und durch Leerzeichen 
getrennte Zahlen. Dabei ist die Erste immer zweistellig und der Rest 
vierstellig. Ein optionaler Kommentar mu durch Leerzeichen oder TABs von 
der letzten Zahl getrennt sein.

Die Erste Zahl bestimmt die Sonder-Objekt-Nummer. Dabei gilt:
	0 -> NICHTS_ZEICHNEN
	2 -> RSM_MOVEBUTTON
	3 -> RSM_BUTTON
	4 -> RSM_CHECKBUTTON
	5 -> RSM_RADIOBUTTON
	6 -> RSM_UNDERLINED
	7 -> RSM_GROUPBOX
	8 -> RSM_NICELINE

Die folgenden 6 Zahlen sind in 3 Paare aufgeteilt. Jedes Zahlenpaar enthlt 
eine Maske und einen Vergleichswert. Diese Zahlenpaare gelten jeweils fr 
die OBJECT-Komponenten Typ, Flags und States.

Beispiel: 
---------
1. Das Overlay soll die Darstellung eins RSM_CHECKBUTTON bernehmen wenn:
	- der Erweiterte Typ = 22 (hex 16)
	- der Objekttyp = G_STRING (28 bzw. hex 1c)

	#03 ffff 161c 0000 0000 0000 0000
   --- ---- ---- -------------------
    |   |     |           |
    |   |     |          Flags und States spielen keine Rolle
    |   |    Erw.Typ=22 und Typ=G_STRING?
    |  alle bits von ob_type beachten
   RSM_CHECKBUTTON 

2. Da nur ein Checkbutton gezeichnet werden soll, wenn das EXIT-Flag nicht 
   gesetzt ist, brauchen wir noch eine Zweite Zeile.
   
   #00 ffff 161c 0004 0004 0000 0000
   ---           ---- ----
    |             |     |
    |             |    ist EXIT gesetzt?
    |            nur das EXIT-Flag auswerten
   NICHTS_ZEICHNEN
   
   Diese Zeile mu unbedingt vor der RSM_CHECKBUTTON-Zeile stehen.

3. Ein RSM_RADIOBUTTON soll bei den gleichen Bedingungen wie oben gezeichnet 
	werden, wenn das RADIO-Flag gesetzt ist.
	
   #04 ffff 161c 0010 0010 0000 0000
   ---           ---- ----
    |             |     |
    |             |    ist RADIO gesetzt?
    |            nur das RADIO-Flag auswerten
   RSM_RADIOBUTTON
   
   Auch Diese Zeile mu vor der RSM_CHECKBUTTON-Zeile aber nach der 
   NICHTS_ZEICHNEN-Zeile stehen.
	
4. Um es zusammen zu fassen: 
	- der Erweiterte Typ = 22 (hex 16)
	- der Objekttyp = G_STRING (28 bzw. hex 1c)
	- wenn EXIT-Flag soll nix gezeichnet werden
	- wenn RADIO-Flag dann RSM_RADIOBUTTON sonst RSM_CHECKBUTTON
	
	------------Schnipp-----------
   #00 ffff 161c 0004 0004 0000 0000	Wenn Exit nix Zeichnen
   #04 ffff 161c 0010 0010 0000 0000	Wenn RADIO -> RSM_RADIOBUTTON
	#03 ffff 161c 0000 0000 0000 0000	Wenn kein EXIT und auch kein RADIO 
													dann RSM_CHECKBUTTON
	------------Schnapp-----------
