void OSystem_GP32::delayMillis(uint msecs) {
	int startTime = GpTickCountGet();
	while (GpTickCountGet() < startTime + msecs);
}
示例#2
0
文件: showImg.cpp 项目: r043v/yAnl
void	showImg(uchar * img, ushort largeur, ushort hauteur)
{		Gft * fnt = &nfont ;
		uchar * rotate_data=img ;
		ulong	cptx, cpty, startx, starty ;
		int		cpt ;//draw_pal = 0, cpt ;
		int	decalagex, size_draw_x ;
		int	decalagey, size_draw_y ;
		//int start_drax_x,start_drax_y, color ;
		int		scrool_speed = 8 ;
		ulong	scrool_time=0, speed_time=0, zoom_time=0 ;
		int		zoom  = 1	;
		int		nzoom = 2	;
		char buffer[512] ;
		int draw_pal=0 ;

		startx = (320-largeur)>>1 ;
		starty = (240-hauteur)>>1 ;

		decalagex=0 ;
		decalagey=0 ;

		size_draw_x = largeur ;
		size_draw_y = hauteur ;

		if(hauteur>240) {  starty=0 ;  size_draw_y = 240 ; }
		if(largeur>320) {  startx=0 ;  size_draw_x = 320 ; }
		loading=0 ;
		if(rotate_data)
		do {
			refreshKey() ;

			if(startx||starty)	clrScr() ;

			if(!zoom) // zoom 1/2
			{			
				  for(cptx=decalagex*nzoom;cptx<decalagex*nzoom+size_draw_x;cptx+=nzoom)
					for(cpty=decalagey*nzoom;cpty<decalagey*nzoom+size_draw_y;cpty+=nzoom)
					{	//*(screen[nflip] + (startx+(cptx/nzoom)-decalagex)*240 + (239-(starty+(cpty/nzoom)-decalagey))) = get_color_buffer(cptx, cpty, hauteur, rotate_data) ;
					} ;
			}
			else
			{
				if(zoom==1)
				{	  for(cptx=decalagex;cptx<decalagex+size_draw_x;cptx++)
						for(cpty=decalagey;cpty<decalagey+size_draw_y;cpty++)
						{	*(screen[nflip] + (startx+cptx-decalagex)*240 + (239-(starty+cpty-decalagey))) = get_color_buffer(cptx, cpty, hauteur, rotate_data) ;
						} ;
				} else {
					  for(cptx=decalagex;cptx<decalagex+(size_draw_x/zoom);cptx++)
						for(cpty=decalagey;cpty<decalagey+(size_draw_y/zoom);cpty++)
						{	rectFill(startx+(cptx-decalagex)*zoom,starty+(cpty-decalagey)*zoom,zoom,zoom,get_color_buffer(cptx, cpty, hauteur, rotate_data)) ;
						} ;
					}
			}

			if(!keyPush(kSelect))
			{
				if(keyPush(kRight)) // right
				{
					if(zoom) {	for(cpt=0;cpt<scrool_speed;cpt++)	if(decalagex+(size_draw_x/zoom)<largeur)	decalagex++ ; }
					else	{	if(!startx) for(cpt=0;cpt<scrool_speed;cpt++)	if(decalagex < largeur/2-320)		decalagex++ ;
							//if((size_draw_x+decalagex)*nzoom>largeur*nzoom) decalagex -= ((decalagex+size_draw_x)*nzoom-(largeur*nzoom)) ;
						}					
					scrool_time = GpTickCountGet() ;
				}
	
				if(keyPush(kLeft)) // left
				{
					for(cpt=0;cpt<scrool_speed;cpt++)	if(decalagex)	decalagex-- ;
					
					scrool_time = GpTickCountGet() ;
				}
				
				if(keyPush(kDown)) // down
				{
					if(zoom) {	for(cpt=0;cpt<scrool_speed;cpt++)	if(decalagey+(size_draw_y/zoom)<hauteur)	decalagey++ ; }
					else	{	if(!starty) for(cpt=0;cpt<scrool_speed;cpt++)	if(decalagey < hauteur/2-240)		decalagey++ ;
							//if((startx+size_draw_y+decalagey)*nzoom>hauteur*nzoom) decalagey -= ((startx+decalagey+size_draw_y)*nzoom-(hauteur*nzoom)) ;
						}


					scrool_time = GpTickCountGet() ;
				}
				
				if(keyPush(kUp)) // up
				{
					for(cpt=0;cpt<scrool_speed;cpt++)	if(decalagey)	decalagey-- ;
					
					scrool_time = GpTickCountGet() ;
				}
			} else {
				if(keyUp(kDown)) // down, zoom -
				{
					if(zoom>1)
					{
						short old, _new, dif, cpt ;
						
						old = (size_draw_x/zoom) ;
						_new = (size_draw_x/(zoom-1)) ;
						dif = (_new-old)/2 ;
						
						for(cpt=0;cpt<dif;cpt++)
							if(decalagex)	decalagex-- ;
						
						old = (size_draw_y/zoom) ;
						_new = (size_draw_y/(zoom-1)) ;
						dif = (_new-old)/2 ;

						for(cpt=0;cpt<dif;cpt++)
							if(decalagey)	decalagey-- ;

						zoom-- ;
						
						startx = (320-largeur*zoom)>>1 ;
						starty = (240-hauteur*zoom)>>1 ;
				
						size_draw_y = hauteur*zoom ;
						size_draw_x = largeur*zoom ;
				
						if(hauteur*zoom>240) {  starty=0 ;  size_draw_y = 240 ; }
						if(largeur*zoom>320) {  startx=0 ;  size_draw_x = 320 ; }
						
						if(size_draw_x/zoom+decalagex>largeur) decalagex -= (decalagex+size_draw_x/zoom)-largeur ;
						if(decalagey+size_draw_y/zoom>hauteur) decalagey -= (decalagey+size_draw_y/zoom)-hauteur ;
					}		/*else if(zoom==1)
							{
								short cpt ;
		
								for(cpt=0;cpt<size_draw_x/2;cpt++)
									if(decalagex)	decalagex-- ;
		
								for(cpt=0;cpt<size_draw_y/2;cpt++)
									if(decalagey)	decalagey-- ;
		
								zoom=0 ;
		
								startx = (320-largeur/2)>>1 ;
								starty = (240-hauteur/2)>>1 ;
						
								size_draw_y = hauteur ;
								size_draw_x = largeur ;
						
								if(hauteur/2>240) {  starty=0 ;  size_draw_y = 240*2 ; }
								if(largeur/2>320) {  startx=0 ;  size_draw_x = 320*2 ; }

								if(size_draw_x*2+decalagex>largeur*2) decalagex -= (decalagex+size_draw_x*2)-largeur*2 ;
								if(decalagey+size_draw_y*2>hauteur*2) decalagey -= (decalagey+size_draw_y*2)-hauteur*2 ;
								
								if(decalagey > hauteur/2-240) decalagey = hauteur/2-240 ;
								if(decalagex > largeur/2-320) decalagex = largeur/2-320 ;	
							}*/

					zoom_time = GpTickCountGet() ;
				}
				
				if(keyUp(kUp)) // up, zoom +
				{					
					if(zoom < 20)
					{
						short old, _new, dif, cpt ;
						
						if(zoom)
						{
							old = (size_draw_x/zoom) ;
							_new = (size_draw_x/(zoom+1)) ;
							dif = (old-_new)/2 ;

							for(cpt=0;cpt<dif;cpt++)
								if(decalagex+(size_draw_x/zoom)<largeur)	decalagex++ ;

							old = (size_draw_y/zoom) ;
							_new = (size_draw_y/(zoom+1)) ;
							dif = (old-_new)/2 ;
	
							for(cpt=0;cpt<dif;cpt++)
								if(decalagey+(size_draw_y/zoom)<hauteur)	decalagey++ ;
						}
						else
						{
							size_draw_y/=2 ;
							size_draw_x/=2 ;
							
							old = (size_draw_x*2) ;
							_new = (size_draw_x/2) ;
							dif = (old-_new)/2 ;
							
							for(cpt=0;cpt<dif;cpt++)
								if(decalagex+(size_draw_x*2)<largeur)	decalagex++ ;
								
							old = (size_draw_y*2) ;
							_new = (size_draw_y/2) ;
							dif = (old-_new)/2 ;
	
							for(cpt=0;cpt<dif;cpt++)
								if(decalagey+(size_draw_y*2)<hauteur)	decalagey++ ;
						}

						zoom++ ;
						
						startx = (320-largeur*zoom)>>1 ;
						starty = (240-hauteur*zoom)>>1 ;
				
						size_draw_y = hauteur*zoom ;
						size_draw_x = largeur*zoom ;
				
						if(hauteur*zoom>240) {  starty=0 ;  size_draw_y = 240 ; }
						if(largeur*zoom>320) {  startx=0 ;  size_draw_x = 320 ; }
					}
					
					zoom_time = GpTickCountGet() ;
				}
			}
uint32 OSystem_GP32::getMillis() {
	return GpTickCountGet();
}