/*
        Mouse-Coords
       --------------

 Autor : Maik Jablonski (1989)

 Aztec-C 3.4 : 
		cc mc.c +L
		ln mc.o -lc32
*/

#include <functions.h>
#include <intuition/intuitionbase.h>

struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct Window *w,*w1;
struct Screen *s,*s1;
struct IntuiMessage *mes;

struct NewWindow nw=
{0,0,110,25,-1,-1,CLOSEWINDOW|MOUSEMOVE,
WINDOWCLOSE|WINDOWDEPTH|WINDOWDRAG|REPORTMOUSE|ACTIVATE,
0,0,"MC",0,0,0,0,640,256,WBENCHSCREEN};

main(argc,argv)
int argc;
char *argv[];
{
	ULONG class;
	UBYTE line[13];
	SHORT x,y;

	if(argc!=2)
	{
		printf("Syntax : MouseCoords Window-Title\n");
		exit(1);
	}
		
	IntuitionBase=OpenLibrary("intuition.library",0);
	GfxBase=OpenLibrary("graphics.library",0);

	s1=s=IntuitionBase->ActiveScreen;
	w1=s->FirstWindow;

	for(;;)
	{
		while(w1 && (strcmp(w1->Title,argv[1])))
			w1=w1->NextWindow;

		if(!w1)
		{
			ScreenToBack(s);
			s=IntuitionBase->FirstScreen;
			if(s1==s)
				break;
			nw.Type=CUSTOMSCREEN;
			nw.Screen=s;
			w1=s->FirstWindow;
		}
		else break;
	}

	if(!w1)
	{
		printf("Window <%s> nicht in System-Liste !\n",argv[1]);
		CloseIt();
	}

	w=OpenWindow(&nw);

	while(class!=CLOSEWINDOW)
	{
		Wait(1<<(w->UserPort->mp_SigBit));
		while((mes=GetMsg(w->UserPort)))
		{
			class=mes->Class;
			ReplyMsg(mes);

			x=w1->MouseX;
			y=w1->MouseY;

			if(w1->Flags&GIMMEZEROZERO)
			{	
				x-=w1->BorderLeft;
				y-=w1->BorderTop;
			}

			sprintf(line,"%4d , %4d",x,y);
			Move(w->RPort,12,20);
			Text(w->RPort,line,11);
		}
	}
	CloseIt();
}

CloseIt()
{
	if(w)
		CloseWindow(w);
	CloseLibrary(IntuitionBase);
	CloseLibrary(GfxBase);
	exit(1);
}
