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

extern XVideoData xvd;

main()
{
	int dalpha,alpha1,alpha2,dx,dy,i,ii,it,ix,iy,j;
	clock_t musec1,musec2;
	timespec ts1,ts2;
	double tt;
	double interv=0.07;
	
	// ..........................................................................
	ts1.tv_sec=0;
	// ......................................................... apri la finestra
	StartXWindow(800,600,0,0,"Bruco",1);
	XSync(xvd.display,FALSE);
	// ........................................................... scegli l'input
	XSelectInput(xvd.display,xvd.win[0],KeyPressMask);
	// ..................................................................... loop
	ii=0;
	for (;;ii++)
	{
		musec1=clock();
		i=ii%xvd.width[0];
		dx=21+int(4.0*sin(0.5*double(i)));
		dy=21-int(4.0*sin(0.5*double(i)));
		dalpha=int(2560.0*sin(0.5*double(i)));//
		alpha1=23040-dalpha;
		alpha2=dalpha;
		// .................................................... pulisci la finestra
		XSetForeground(xvd.display,xvd.gc,xvd.white);
		XFillRectangle(xvd.display,xvd.backpix[0],xvd.gc,0,0,xvd.width[0],
									 xvd.height[0]);
		// ...................................................... disegna lo sfondo
		XSetForeground(xvd.display,xvd.gc,xvd.black);
		XFillRectangle(xvd.display,xvd.backpix[0],xvd.gc,0,330,xvd.width[0],4);
		// ........................................................................
		XSetForeground(xvd.display,xvd.gc,xvd.green[2]);
		ix=i-dx;
		for (j=0;j<6;j++)
		{
			ix=(ix+(dx-2))%xvd.width[0];
			iy=300+int(5.0*sin(0.5*double(ix)));
			XFillArc(xvd.display,xvd.backpix[0],xvd.gc,ix,iy,dx,dy,0,23040);
		}
		XSetForeground(xvd.display,xvd.gc,xvd.white);
		XFillArc(xvd.display,xvd.backpix[0],xvd.gc,ix,iy,dx,dy,alpha1,alpha2);
		XSetForeground(xvd.display,xvd.gc,xvd.black);
		XFillArc(xvd.display,xvd.backpix[0],xvd.gc,ix+12,iy+4,4,4,0,23040);
		XDrawLine(xvd.display,xvd.backpix[0],xvd.gc,ix+10,iy,ix+20,iy-20);
		XDrawLine(xvd.display,xvd.backpix[0],xvd.gc,ix+10,iy,ix+30,iy-20);
		XRedraw();
		musec2=clock();
		ts1.tv_nsec=30000000-(musec2-musec1)*1000;
		if (ts1.tv_nsec>0) nanosleep(&ts1,&ts2);
		if (Xkbhit(0)) break;
	}
	// .................................................................. aspetta
	XWait(0);
	// ....................................................... chiudi la finestra
	CloseXWindow();
}

