#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#include <snd.h>
#include <egb.h>

#include <..\concorde.h>


#define XBUF 16
#define SRAND 79154726  /* wДԍ(^_^;) */
#define TIMES 1000
#define EDGES 5
#define LNG 480

char EGB_work[EgbWorkSize];

int vx1=10;
int vy1=10;
int vx2=309;
int vy2=229;

short para[64];

void frame()
{
	EGB_clearScreen(EGB_work);
	EGB_paintMode(EGB_work,0x22);

	EGB_color(EGB_work,0,32767);
	EGB_color(EGB_work,2,32767);
	para[0]=0;
	para[1]=0;
	para[2]=319;
	para[3]=239;
	EGB_viewport(EGB_work,(char *)para);
	EGB_rectangle(EGB_work,(char *)para);

	EGB_color(EGB_work,0,0);
	EGB_color(EGB_work,2,0);
	para[0]=vx1;
	para[1]=vy1;
	para[2]=vx2;
	para[3]=vy2;
	EGB_rectangle(EGB_work,(char *)para);
	EGB_viewport(EGB_work,(char *)para);
}

void main()
{
	PAGE p;
	int ar[16*LNG],ed[4],x,y,r;
	int j,ms;
	short para[4];

	EGB_init(EGB_work,EgbWorkSize);
	EGB_resolution(EGB_work,0,10);
	EGB_resolution(EGB_work,1,10);

	EGB_writePage(EGB_work,0);
	EGB_displayStart(EGB_work,0,0,0);
	EGB_displayStart(EGB_work,2,2,2);
	EGB_displayStart(EGB_work,3,320,240);
	EGB_clearScreen(EGB_work);

	EGB_writePage(EGB_work,1);
	EGB_displayStart(EGB_work,0,0,0);
	EGB_displayStart(EGB_work,2,2,2);
	EGB_displayStart(EGB_work,3,320,240);
	EGB_clearScreen(EGB_work);

	EGB_displayPage(EGB_work,1,2);

	YGH_initPage(&p,SEG_VRAMP,0x40000,512,256);
	YGH_viewPort(&p,vx1,vy1,vx2,vy2);


	srand(SRAND);

	frame();

	ms=clock();
	EGB_paintMode(EGB_work,0x20);
	for(j=0; j<TIMES; j++)
	{
		EGB_color(EGB_work,2,rand()%32768);
		para[0]=rand()%320;
		para[1]=rand()%240;
		para[2]=rand()%50;
		EGB_circle(EGB_work,(char *)para);
	}
	ms=(clock()-ms)*1000/CLOCKS_PER_SEC;

	printf("EGB Filled Circle\n");
	printf("%d ms as %d circles.\n",ms,TIMES);
	printf("%d ms as a circle.\n",ms/TIMES);
	printf("%d clocks as a circle.\n",16000*ms/TIMES);



	srand(SRAND);

	frame();

	ms=clock();
	for(j=0; j<TIMES; j++)
	{
		YGH_color(&p,rand()%32768);
		x=rand()%320;
		y=rand()%240;
		r=rand()%50;
		YGH_circleArea(&p,ar,ed,x,y,r);
		YGH_areaPaint(&p,ar,ed);
	}
	ms=(clock()-ms)*1000/CLOCKS_PER_SEC;

	printf("YGHIGH Filled Circle\n");
	printf("%d ms as %d circles.\n",ms,TIMES);
	printf("%d ms as a circle.\n",ms/TIMES);
	printf("%d clocks as a circle.\n",16000*ms/TIMES);
}
