/* ___________________________________________________________________________
** |*************************************************************************|
** |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
** |*| Set TAB to 4 for best readable file layout.  |*|  C++ MaxonDev 4.0  |*|
** |*|______________________________________________|*|____________________|*|
** |*************************************************************************|
** |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
** |*|               |*|  $Id: settings.h (06.05.01)                       |*|
** |*| ###### ###### |*|  RhoSigma Source based on NDK 3.1 Includes 40.15  |*|
** |*| ##  ## ##   # |*| _________________________________________________ |*|
** |*| ##  ##  ##    |*|                                                   |*|
** |*| ######   ##   |*|  Useful defines and extensions for NDK includes   |*|
** |*| ##      ##    |*|                                                   |*|
** |*| ##     ##   # |*| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |*|
** |*| ##     ###### |*|  Copyright © 1998-2001 RhoSigma, Roland Heyder    |*|
** |*|               |*|  All Rights Reserved.                             |*|
** |*|_______________|*|___________________________________________________|*|
** |*************************************************************************|
** ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
*/

#ifndef	RHOSIGMA_SETTINGS_H
#define	RHOSIGMA_SETTINGS_H

#ifndef		EXEC_TYPES_H
#include	<exec/types.h>
#endif

	/** enhanced booleans **/

#ifndef	UPPER			/* Signum-Werte zur Verwendung in */
#define	UPPER	1L		/* Variablen des Typs BOOL        */
#endif
#ifndef	EQUAL
#define	EQUAL	0L
#endif
#ifndef	LOWER
#define	LOWER	-1L
#endif

	/** intuition **/

#define DATPOS_C -1		/* Text zentrieren   */
#define DATPOS_L -2		/* Text linksbündig  */
#define DATPOS_R -3		/* Text rechtsbündig */

/*** rhosigma / DATEXT() ***
*»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
* Dieses Macro erstellt einen Teilstring des Parameterstrings der Intuition-
* Routine »DisplayAlert()«. Wahlweise kann der Text automatisch zentriert,
* oder links- bzw. rechtsbündig ausgerichtet werden.
*-----------------------------------------------------------------------------
* Definiert:	settings.h  (Copyright © 1998-2001 RhoSigma, Roland Heyder)
*
* Schablone:	Name/A, xPos/A/N, yPos/A/N, String/A, EndFlag/N/S
*
* Parameter:	Name	--> ein beliebiger Name als ID für diesen Teilstring
*
*				xPos	--> x-Position des Textes,
*								oder einer der oben definierten DATPOS-Werte.
*
*				yPos	--> y-Position des Textes,
*								Ausrichtung nach BaseLine des Fonts (topaz/8)
*
*				String	--> der Text selbst aber ohne ("") Anführungszeichen
*
*				EndFlag	--> - TRUE , dann endet hier der Parameterstring
*							- FALSE, dann MUSS noch ein weiterer Teilstring
*									 (Macro-Aufruf) folgen.
*
* Bemerkung:	Leider gestattet der Macro-Aufbau sowie die Initialisierungs-
*				Regeln in C/C++ und dazu noch die Macken einiger Compiler keinen
*				vollständigen Aufbau des Parameterstrings (Ja, ich hasse C !!).
*				Aus diesem Grunde ist es in C/C++ erforderlich, die einzelnen
*				Teilstrings vor der Benutzung noch mittels der ebenfalls hier
*				deklarierten Funktion »DAJOIN()« abschließend vorzubereiten.
*
*				Ein Beispiel für die Benutzung dieses Macros finden Sie in
*				der Datei »demo/AlertDemo.C«.
*
*   ACHTUNG:	Die einzelnen Teilstrings, die später zu einem Parameterstring
*   ¯¯¯¯¯¯¯¯	gehören, müssen auf JEDEN FALL direkt nacheinander deklariert
*				werden, während zwischen zwei kompletten Parameterstrings aber
*				durchaus auch andere Deklarationen gemacht werden können.
*
* Siehe auch:	»DAJOIN()«
*«««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««*/

#define DATEXT(Name, xPos, yPos, String, EndFlag)					\
typedef struct {													\
	WORD	da_PosX;												\
	UBYTE	da_PosY;												\
	TEXT	da_Text[sizeof(#String)+(3-((sizeof(#String)-1)&3))];	\
	UBYTE	da_Cont;												\
} datext_##Name;													\
STATIC datext_##Name Name = {xPos,yPos,#String,!EndFlag};

/*** rhosigma / DAJOIN() ***
*»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
* Diese Funktion dient der abschließenden Vorbereitung der mittels »DATEXT()«
* initialisierten Teilstrings zur Verwendung mit »DisplayAlert()«. Idealer Weise
* sollte man diese Funktion als erste innerhalb der Main-Funktion aufrufen.
*  Hier wird jetzt jedoch nur der Prototyp dieser Funktion deklariert, die ei-
* gentliche Funktion ist Bestandteil der mitgelieferten »rhosigma.c« Source und
* sollte in Ihr Projekt eingebunden werden.
*-----------------------------------------------------------------------------
* Synopsis:		VOID DAJOIN (Count, ...)
*
* Eingaben:		Count	-->	(UWORD)  Anzahl der übergebenen Teilstrings
*
*				...		--> (&ID) nacheinander die Adressen (Referenzen) der
*								  einzelnen Teilstrings
*
* Bemerkung:	Mehrfacher Aufruf für jeden einzelnen Teilstring ist möglich,
*				aber durch die variable Argumentenliste eigentlich überflüssig,
*				da man so auch alle Teilstrings auf einmal angeben kann.
*
*				Ein Beispiel für die Benutzung dieser Funktion finden Sie in
*				der Datei »demo/AlertDemo.C«.
*
*   ACHTUNG:	Diese Funktion muß auch dann aufgerufen werden, wenn nur ein
*	¯¯¯¯¯¯¯¯	einziger Teilstring benutzt wird, da das Macro »DATEXT()«
*				keine vollständige Initialisierung des gleichen vornimmt. Das
*				wird alles erst durch »DAJOIN()« erledigt !!
*
* Siehe auch:	»DATEXT()«
*«««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««*/

#ifdef __cplusplus
extern "C" {
#endif

VOID DAJOIN(UWORD Count, ...);

#ifdef __cplusplus
}
#endif

#endif	/* RHOSIGMA_SETTINGS_H */

