
#include <exec/types.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <graphics/gfxbase.h>
#include <clib/exec_protos.h>
#include <clib/intuition_protos.h>
#include "/includes/struct.h"


struct	IntuitionBase	*IntuitionBase;
struct	GfxBase	*GfxBase;
struct	Screen	*scr;

BPTR	hd=0;
struct NewWindow    Window = {
    439,
    10,
    200,
    150,0,1,
    IDCMP_GADGETDOWN|IDCMP_GADGETUP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW|IDCMP_INTUITICKS,
    WFLG_ACTIVATE|WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET,
    0l,0,"SDark info",0,0,5,5,-1,-1,WBENCHSCREEN};

void	my_print(rp,x,y,pt)
struct	RastPort	*rp;
int	x,y;
char	*pt;
{
	SetAPen(rp,1L);
	Move(rp,x,y);
	Text(rp,pt,strlen(pt));
}

main()
{
   struct	Window	*win;
   struct	RastPort *rp;
   struct	IntuiMessage *msg;
   struct	MsgPort	*mp,*old_mp;
   struct	appel_proc	*p_data_proc;
   struct my_data	*p_info;
   int		class;
   int	flg_end;
   char	buffer[100];

   IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0);
   GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",0);
   old_mp=0;
   printf("Version:%d Revision:%d\n",
					GfxBase->LibNode.lib_Version,
					GfxBase->LibNode.lib_Revision);
   printf("Id:%lx\n", GetVPModeID( &IntuitionBase->FirstScreen->ViewPort ));

	hd=(BPTR)Open("con:0/10/438/150/Superdark debug window",MODE_OLDFILE);
	if (  win = OpenWindow(&Window )){

		rp=win->RPort;
		flg_end=FALSE;
		while(flg_end!=TRUE){
			if((msg=(struct IntuiMessage *)GetMsg(win->UserPort))!=0){
				class=msg->Class;
				ReplyMsg((struct Message *)msg);
				switch(class){
					case CLOSEWINDOW:
						flg_end=TRUE;
						break;
					default:
						break;
				}
			}else{
			   Delay(10);
			   if((mp=FindPort("That's Dark!"))!=0){

/*				
				if(old_mp==0){
					SetRast(rp,0);
				}
*/
				/*********************************************/
				/* On recupere les informaitons ainsi passee */
				/*********************************************/
				p_data_proc=(struct appel_proc *)mp;
				p_data_proc->out_hd=hd;
				p_info=p_data_proc->p_info;

				sprintf(buffer,"flg_stop     :%1d",p_info->flg_stop);
				my_print(rp,10,20,buffer);
				sprintf(buffer,"flg_send     :%1d",p_info->flg_send);
				my_print(rp,10,30,buffer);
				sprintf(buffer,"tempo        :%2d",p_info->tempo);
				my_print(rp,10,40,buffer);
				sprintf(buffer,"tempo_end    :%4d",p_info->tempo_end);
				my_print(rp,10,50,buffer);
				sprintf(buffer,"debug1(tempo):%4d",p_info->debug1);
				my_print(rp,10,60,buffer);
				sprintf(buffer,"flg_alea     :%1d",p_info->flg_alea);
				my_print(rp,10,70,buffer);
				sprintf(buffer,"sigstart     :%x",1<<p_info->sigstart);
				my_print(rp,10,80,buffer);
				sprintf(buffer,"sigstop      :%x",1<<p_info->sigstop);
				my_print(rp,10,90,buffer);
				sprintf(buffer,"signext      :%x",1<<p_info->signext);
				my_print(rp,10,100,buffer);
				sprintf(buffer,"sigtimeout   :%x",1<<p_info->sigtimeout);
				my_print(rp,10,110,buffer);
				sprintf(buffer,"posx:%08d ",p_info->debug2);
				my_print(rp,10,120,buffer);

				scr = IntuitionBase->FirstScreen;

				sprintf(buffer,"Height:%08d ",scr->Height);
				my_print(rp,10,130,buffer);
				old_mp=rp;
			    }else{
				if(old_mp!=0){
					SetRast(rp,0);
					old_mp=0;
				}
				my_print(rp,10,20,"SuperDark not here");
			    }				
			}
			old_mp=mp;
		}
		CloseWindow( win );
	}
	Close(hd);
}
