#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


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 x1,y1,x2,y2;
	int j,ms;

	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();

	para[0]=2;
	ms=clock();
	for(j=0; j<TIMES; j++)
	{
		EGB_color(EGB_work,0,rand()%32768);
		para[1]=rand()%320;
		para[2]=rand()%240;
		para[3]=rand()%320;
		para[4]=rand()%240;
		EGB_connect(EGB_work,(char *)para);
	}
	ms=(clock()-ms)*1000/CLOCKS_PER_SEC;

	printf("EGB\n");
	printf("%d ms as %d lines.\n",ms,TIMES);
	printf("%d ms as a line.\n",ms/TIMES);
	printf("%d clocks as a line.\n",16000*ms/TIMES);



	srand(SRAND);

	frame();

	ms=clock();
	for(j=0; j<TIMES; j++)
	{
		YGH_color(&p,rand()%32768);
		x1=rand()%320;
		y1=rand()%240;
		x2=rand()%320;
		y2=rand()%240;
		YGH_line(&p,x1,y1,x2,y2);
	}
	ms=(clock()-ms)*1000/CLOCKS_PER_SEC;

	printf("YGHIGH\n");
	printf("%d ms as %d lines.\n",ms,TIMES);
	printf("%d ms as a line.\n",ms/TIMES);
	printf("%d clocks as a line.\n",16000*ms/TIMES);
}
