// ................................................................... #include
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <corso.h>

extern XVideoData xvd;

main()
{
	int i,j;
	XColor color;
	timespec ts1,ts2;
	char titolo[16];
	
	
	// ..........................................................................
	strcpy(titolo,"Arcobaleno");
	// ..........................................................................
	StartXWindow(750,200,0,0,titolo,1);
	XSelectInput(xvd.display,xvd.win[0],ButtonPressMask|ButtonReleaseMask|
			PointerMotionMask|KeyPressMask|KeyReleaseMask|ExposureMask|
					StructureNotifyMask);
	XSync(xvd.display,TRUE);
	// ............................................................................
	
	for (i=0;i<750;i++)
	{
		j=i%250;
		if (i<250)
		{
			color.red=65535;
			color.green=(j*65535)/250;
			color.blue=0;
		}
		else if (i<500)
		{
			color.red=65535-(65535*j)/250;
			color.green=65535;
			color.blue=(j*65535)/250;
		}
		else
		{
			color.red=0;
			color.green=65535-(65535*j)/250;
			color.blue=65535;
			if (j>125) color.red=(65535*(j-125)*2)/250;
		}
		XAllocColor(xvd.display,xvd.colormap,&color);
		XSetForeground(xvd.display,xvd.gc,color.pixel);
		XDrawLine(xvd.display,xvd.backpix[0],xvd.gc,i,0,i,200);
	}
	
	XRedraw();
	// ..........................................................................
	ts1.tv_sec=0;
	ts1.tv_nsec=1000000;
	XSync(xvd.display,TRUE);
	for (;;)
	{
		if (XCheckTypedWindowEvent(xvd.display,xvd.win[0],Expose,&xvd.ev))
		{ // ...................................... redraw window if it was covered
			if (xvd.ev.xexpose.count==0) XRedraw();
			XSync(xvd.display,FALSE);
		}
		if (XCheckTypedWindowEvent(xvd.display,xvd.win[0],ButtonPress,&xvd.ev)) break;
		if (XCheckTypedWindowEvent(xvd.display,xvd.win[0],KeyPress,&xvd.ev)) break;
	  nanosleep(&ts1,&ts2);
	}
}

// ---------------------------------------------------------------------------






