示例#1
0
文件: bitmap.c 项目: dugoh/tcb
int bitmap_play(char * filename)
{
    char ch;

    if (fb_init())
    {
	printf ("Unable to init framebuffer device\n");
	return 2;
    }

    fb_pixel * bmp_buffer;

    if ((bmp_buffer = bitmap_load(filename)) == NULL)
    {
	fb_uninit();
	printf ("Error while reading bitmap\n");
	return 1;
    }

    fb_clear_screen(screen);

    bitmap_render(bmp_buffer);

    init_keyboard();

    ch=0;
    while (1)
    {
	if (!kbhit()) 
	{
	    ch = readch();
	    if (ch == KEY_ESC) break;
	    if (ch == KEY_UP && position_y >= JUMP_SIZE) position_y-=JUMP_SIZE;
	    if (ch == KEY_DOWN && fb_yres <= (bmp_info.bi_height-position_y-JUMP_SIZE)) position_y+=JUMP_SIZE;
	    if (ch == KEY_LEFT && position_x >= JUMP_SIZE) position_x-=JUMP_SIZE;
	    if (ch == KEY_RIGHT && fb_xres <= (bmp_info.bi_width-position_x-JUMP_SIZE)) position_x+=JUMP_SIZE;
	    ch = 0;
	    bitmap_render(bmp_buffer);
	}
    }

    close_keyboard();

    fflush(stdin);

    fb_clear_screen(screen);

    bitmap_free(bmp_buffer);
    fb_uninit();
    return 0;
}
示例#2
0
int main(int argc, char **argv)
{
	struct fb fb;
	struct pt p;
	struct sigaction sa;
	sa.sa_handler = &sighandler;
	sigaction(SIGINT, &sa, NULL);
	srand(time(NULL));
	fb_init(&fb);
	int w = fb.vinfo.xres;
	int h = fb.vinfo.yres;
	int min_r = 5;
	int max_r = 200;
	while (running) {
		set_color(&fb, rand());
		p.x = rand() % w;
		p.y = rand() % h;
		double radius = rand() % (max_r - min_r) + min_r;
		if (p.x - radius < 0 || p.x + radius >= w ||
		    p.y - radius < 0 || p.y + radius >= h) {
			continue;
		}
		fill_circle(&fb, p, radius);
		buffer_swap(&fb);
		refresh(&fb);
		usleep(100);
	}
	fb_uninit(&fb);
	return 0;
}
int main(int argc,char **argv)
{
	int ret;
	pthread_t view_id;
	pid_t view_pid=0,audio_pid=0;

       // LCD 初始化
	fb_init();
      // 触摸屏初始化
	ts_init();
       // 显示一张启动logo
	show_jpglogo("./image/welcome.jpg");
	sleep(3);
	// 显示控制主界面菜单
	show_menu();


	ret =  pthread_create(&view_id, NULL,picview_thread, NULL);
	if(ret == -1)
		goto pthread_create_err;



	while(1)
	{
		
		// 等待获取坐标
		pthread_mutex_lock(&mutex);
		printf(" main get lock!\n");
	
		m = get_motion();
		
		printf(" main put lock!\n");
		pthread_mutex_unlock(&mutex);
		usleep(1000);


		switch(m)
		{

			case button1:
				printf("button1 Prev\n");
				if(audio_pid != 0)
					kill(audio_pid,SIGKILL);
				audio_pid = start_audio(BACKWARD);
				//kill(view_pid,SIGUSR1);
				break;
				
			case button2:
				printf("button2 Next\n");
				if(audio_pid != 0)
					kill(audio_pid,SIGKILL);
				audio_pid = start_audio(FORWARD);
				//kill(view_pid,SIGUSR2);				
				break;
				
			case button3:
				printf("button3 Stop\n");
				kill(audio_pid,SIGSTOP);
				//kill(view_pid,SIGSTOP);				
				break;
				
			case button4:
				printf("button4 Continue\n");
				kill(audio_pid,SIGCONT);
				//kill(view_pid,SIGCONT);					
				break;

			case button5:
				printf("button5 Load\n");
				traverse_file_dir("/photo/dir");
				//view_pid = start_picview();
				signal(SIGCHLD,waitp);
				break;
				
		}


	}

	fb_uninit();
	ts_uninit();
	
	return 0;
	
pthread_create_err:
	printf("  pthread_create  err!\n");
	return -1;

}