/* ___________________________________________________________________________
** |*************************************************************************|
** |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
** |*| Set TAB to 4 for best readable file layout.  |*|  C++ MaxonDev 4.0  |*|
** |*|______________________________________________|*|____________________|*|
** |*************************************************************************|
** |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
** |*|               |*|  $Id: ShowMsgDemo.CPP (18.11.00)                  |*|
** |*| ###### ###### |*|  RhoSigma Source based on NDK 3.1 Includes 40.15  |*|
** |*| ##  ## ##   # |*| _________________________________________________ |*|
** |*| ##  ##  ##    |*|                                                   |*|
** |*| ######   ##   |*|  Demo to show use of extra/ShowMsg() and Macros   |*|
** |*| ##      ##    |*|                                                   |*|
** |*| ##     ##   # |*| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |*|
** |*| ##     ###### |*|  Copyright © 1998-2000 RhoSigma, Roland Heyder    |*|
** |*|               |*|  All Rights Reserved.                             |*|
** |*|_______________|*|___________________________________________________|*|
** |*************************************************************************|
** ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
*/

/*
** HINWEIS:	Sollten Sie nur im Besitz eines ANSI-C-Compilers sein, oder wenn
**			ihr C++ Compiler nicht die Möglichkeit bietet, zwischenzeitlich
**			in den ANSI-C Modus zu schalten, dann müssen Sie sich behelfen,
**			indem Sie einfach die nicht benötigte Demo-Funktion, sowie deren
**			Aufruf in der main-Funktion, in einen Kommentar einschließen.
*/

/* Includes */
#include <exec/types.h>
#include <wbstartup.h>
#include <rhosigma/extradefs.h>

/* Prototypes & Pragmas */
#include <pragma/exec_lib.h>
#include <rhosigma/extra_lib.h>
void DemoC();
void DemoCPP();

struct Library *ExtraBase=NULL;

// Version-String
TEXT	vID[]	= "$VER: ShowMsgDemoCPP 1.0 (18.11.00) compiled on "__DATE__\
															  " at "__TIME__"\r\n";

void main()
{
	ExtraBase = OpenLibrary("extra.library",1);

	DemoC();		/* Anwendungsbeispiel für ANSI-C */
	DemoCPP();		/* Anwendungsbeispiel für C++	 */

	CloseLibrary(ExtraBase);
	return;
}

#pragma -		/* bei MaxonC++ runterschalten in ANSI-C Modus */
void DemoC()
{
	STRPTR teil1, teil2, teil3, teil4, param1;	/* Zeiger deklarieren */
	STRPTR teil5, teil6, teil7, teil8, param2;

	SMTEXT(teil1,100,6,linke Seite,FALSE);		/* kein END-Flag, absolute	*/
	SMTEXT(teil2,444,6,rechte Seite,FALSE);	/* X-Koordinaten			*/
	SMTEXT(teil3,SMTPOS_C,16,zentriert,FALSE);	/* kein END-Flag, zentriert	*/
	SMTEXT(teil4,SMTPOS_C,26,Ende,TRUE);		/* END-Flag, zentriert		*/

	param1=SMTJOIN(4,teil1,teil2,teil3,teil4);	/* Teilstrings zusammenfügen */
	ShowMsg(param1,NULL,40L,NULL);				/* und Alert ausführen       */
	SMTFREE(param1);							/* Parameterstring freigeben */

	SMTEXT(teil5,SMTPOS_L,6,linksbündig,FALSE);
	SMTEXT(teil6,SMTPOS_C,6,zentriert,FALSE);
	SMTEXT(teil7,SMTPOS_R,6,rechtsbündig,FALSE);
	SMTEXT(teil8,200,16,absolute X-Pos 200 v.l.,TRUE);

	param2=SMTJOIN(4,teil5,teil6,teil7,teil8);
	ShowMsg(param2,NULL,30L,NULL);
	SMTFREE(param2);

	return;
}

#pragma +		/* wieder in C++ Modus hochschalten */
void DemoCPP()
{
	/* Da es in C++ erlaubt ist Deklarationen und Anweisungen */
	/* zu mischen, kann man es in C++ auch wie folgt machen.  */

	STRPTR SMTEXT(teil1,100,6,linke Seite,FALSE);	  /* kein END-Flag, absolute	*/
	STRPTR SMTEXT(teil2,444,6,rechte Seite,FALSE);	  /* X-Koordinaten			*/
	STRPTR SMTEXT(teil3,SMTPOS_C,16,zentriert,FALSE); /* kein END-Flag, zentriert	*/
	STRPTR SMTEXT(teil4,SMTPOS_C,26,Ende,TRUE);		  /* END-Flag, zentriert		*/

	STRPTR param1=SMTJOIN(4,teil1,teil2,teil3,teil4); /* Teilstrings zusammenfügen */
	ShowMsg(param1,NULL,40L,NULL);					  /* und Alert ausführen       */
	SMTFREE(param1);								  /* Parameterstring freigeben */

	STRPTR SMTEXT(teil5,SMTPOS_L,6,linksbündig,FALSE);
	STRPTR SMTEXT(teil6,SMTPOS_C,6,zentriert,FALSE);
	STRPTR SMTEXT(teil7,SMTPOS_R,6,rechtsbündig,FALSE);
	STRPTR SMTEXT(teil8,200,16,absolute X-Pos 200 v.l.,TRUE);

	STRPTR param2=SMTJOIN(4,teil5,teil6,teil7,teil8);
	ShowMsg(param2,NULL,30L,NULL);
	SMTFREE(param2);

	STRPTR SMCOLOR(set1,3,12,0,10,FALSE);	/* einige Farben neudefinieren */
	STRPTR SMCOLOR(set2,7,0,10,14,FALSE);
	STRPTR SMCOLOR(set3,11,12,15,0,FALSE);
	STRPTR SMCOLOR(set4,12,15,13,0,FALSE);
	STRPTR SMCOLOR(set5,15,15,0,0,TRUE);

	/* mann kann die beiden Macros zur Texterstellung auch mischen */

	STRPTR SMTEXTP(teil9,SMTPOS_L,6,3,9,1,STS_Underline,STM_Outline,linksbündig,FALSE);
	STRPTR SMTEXT(teil10,SMTPOS_R,6,rechtsbündig,FALSE); /* genau wie 1.Teilsting */
	STRPTR SMTEXTP(teil11,SMTPOS_C,6,7,9,1,STS_Bold,STM_Shadow,zentriert,FALSE);
	STRPTR SMTEXTP(teil12,200,16,12,9,1,STS_Italic,STM_Normal,absolute X-Pos 200 v.l.,TRUE);

	STRPTR param3=SMTJOIN(4,teil9,teil10,teil11,teil12);
	STRPTR fatab1=SMCJOIN(5,set1,set2,set3,set4,set5);
	ShowMsg(param3,NULL,30L,fatab1);
	SMCFREE(fatab1);
	SMTFREE(param3);

	return;
}

