예제 #1
0
파일: print_board.c 프로젝트: sweetapple/d
int print_board(void)
{
    int i=0;
    int j=0;
    memset((u32_t *)fb_v.memo,0,fb_v.w*fb_v.h*fb_v.bpp/8);
    memset(chess_board,0,B_X*B_Y);                          //清屏
    current_player=1;
    current_color=BLACK;
    for (j=10; j<ST_Y+(SPACE*B_Y); j++)                   //打印棋盘并着色
    {
        for (i=20; i<ST_X+(SPACE*B_X); i++) 
        {
            fb_one_pixel(i,j,YELLOW);
        }
    }
    for (i=0; i<B_Y; i++)                                 //给格上色
    {
        fb_line(ST_X,ST_Y+i*SPACE,ST_X+(B_X-1)*SPACE,ST_Y+i*SPACE,BLACK);
    }
    for (i=0; i<B_X; i++) 
    {
        fb_line(ST_X+i*SPACE,ST_Y,ST_X+i*SPACE,ST_Y+(B_Y-1)*SPACE,BLACK);
    }
    fb_circle(60,100,18,BLACK);
    fb_circle(60,200,18,WHITE);
    return 0;
}
예제 #2
0
파일: basic_shape.c 프로젝트: baiming/001
int fb_circle(int x0, int y0, int r, u32_t color)    //  hua yuan
{
    int x = 0;
    int y = r;
    
    int p = 3-2*r;

    while(x <= y)
    {
#if 0
        fb_one_pixel(x0+x, y0+y, color);         //hua  kong xin  huan  
        fb_one_pixel(x0+y, y0+x, color);
        fb_one_pixel(x0+x, y0-y, color);
        fb_one_pixel(x0+y, y0-x, color);
        fb_one_pixel(x0-x, y0+y, color);
        fb_one_pixel(x0-y, y0+x, color);
        fb_one_pixel(x0-x, y0-y, color);
        fb_one_pixel(x0-y, y0-x, color);
        
        
        

        fb_line(x0, y0,x0+x,y0+y, color);         //bu wan zheng de  shi xin huan
        fb_line(x0, y0,x0+y,y0+x, color);         
        fb_line(x0, y0,x0+x,y0-y, color);         
        fb_line(x0, y0,x0+y,y0-x, color);         
        fb_line(x0, y0,x0-x,y0+y, color);         
        fb_line(x0, y0,x0-y,y0+x, color);         
        fb_line(x0, y0,x0-x,y0-y, color);         
        fb_line(x0, y0,x0-y,y0-x, color);      


#endif
        fb_line(x0+x, y0+y, x0-x, y0+y, color);   // shi xin yuan
        fb_line(x0+y, y0+x, x0-y, y0+x, color);
        fb_line(x0+y, y0-x, x0-y, y0-x, color);
        fb_line(x0+x, y0-y, x0-x, y0-y, color);
        
        if(p < 0)
        {
            p += 4*x+6;
        }
        else
        {
            p += 4*(x-y) + 10;
            y--;
        }
        x++;
    
    }
    return 0;
}
예제 #3
0
int restore_shape(int x,int y)
{
    int i = 0;
    int j = 0;
    for(i=0;i<C_HEIGHT;i++)
    {
        for(j=0; j<C_WIDTH;j++)
            fb_one_pixel(x+j,y+i,shape_save[j+i*C_WIDTH]);
    }
    return 0;
}
예제 #4
0
파일: mouse_op.c 프로젝트: akaehy/Project
int restore_bg(int x, int y)
{
	int i = 0;
	int j = 0;

	for(j=0; j<C_H; j++)
	{
		for(i=0; i<C_W; i++)
		{
			fb_one_pixel(x+i,y+j,bg[i+j*C_W]);
		}
	}
	return 0;
}
예제 #5
0
int draw_cursor(int x, int y)
{
    int i = 0;
    int j = 0;
    save_bg(x, y);
    for(j=0; j<C_H; j++)
    {
        for(i=0; i<C_W; i++)
        {
            fb_one_pixel(x+i, y+j, cursor_pixel[i+j*C_W]);
        }
    }
    return 0;
}
예제 #6
0
int draw_cursor(int x,int y)
{
    int i = 0;
    int j = 0;
    save_shape(x,y);
    for(i=0;i<C_HEIGHT;i++)
    {   
        for(j=0; j<C_WIDTH;j++)
        {
            if(cursor_pixel[j+i*C_WIDTH] != 0XFFFFFFFF )
            fb_one_pixel(x+j,y+i,cursor_pixel[j+i*C_WIDTH]);
        }
   }
    return 0;
}
예제 #7
0
파일: snake.c 프로젝트: akaehy/Project
void barriar(void)
{
	int i = 0;
	int j = 0;

	for(j = 0; j<U_WALL; j++)
	{
		for(i=0; i<fb_v.w; i++)
		{
			fb_one_pixel(i, j,  BLUE|GREEN);
		}
	}
	for(j = 0; j<D_WALL; j++)
	{
		for(i=0; i<fb_v.w; i++)
		{
			fb_one_pixel(i, fb_v.h-1-j,  BLUE|GREEN);
		}
	}

	for(i = 0; i<L_WALL; i++)
	{
		for(j=0; j<fb_v.h; j++)
		{
			fb_one_pixel(i, j, BLUE|GREEN);
		}
	}
	for(i = 0; i<R_WALL; i++)
	{
		for(j=0; j<fb_v.h; j++)
		{
			fb_one_pixel(fb_v.w-1-i,j, BLUE|GREEN);
		}
	}

}
예제 #8
0
void print_circle(int x1, int y1, int r, u32_t color)
{
	int i = 0, j = 0;
	
	for(i = x1-r; i <= x1+r; i++)
	{
		for(j = y1-r; j <= y1+r; j++)
		{
			if((x1-i)*(x1-i) + (y1-j)*(y1-j) <= r*r)
			{
				fb_one_pixel(i,j,color);
			}
		}
	}

}
예제 #9
0
int fb_circle(int x0, int y0, int r, u32_t color)
{
	int x = 0;
	int y = r;
	int p = 3-2*r;
	
	while (x <= y) 
	{
//	#if 0
		fb_one_pixel(x0 + x, y0 + y, color);	
		fb_one_pixel(x0 + y, y0 + x, color);
		
		fb_one_pixel(x0 + x, y0 - y, color);	
		fb_one_pixel(x0 + y, y0 - x, color);
		
		fb_one_pixel(x0 - x, y0 + y, color);	
		fb_one_pixel(x0 - y, y0 + x, color);
	
		fb_one_pixel(x0 - x, y0 - y, color);	
		fb_one_pixel(x0 - y, y0 - x, color);
//	#endif

		fb_line(x0+x, y0+y, x0-x ,y0+y, color);
		fb_line(x0+y, y0+x, x0-y ,y0+x, color);
		fb_line(x0+y, y0-x, x0-y ,y0-x, color);
		fb_line(x0+x, y0-y, x0-x ,y0-y, color);

		if (p < 0) 
		{
			p += 4*x+6;
		}
		else 
		{
			p += 4*(x-y)+10;
			y--;
		}
		x++;
	}


	return 0;
}
예제 #10
0
파일: main.c 프로젝트: sept/guo-project
int main(int argc, const char *argv[])
{
    init_data();                              
    print_board();
    mouse_doing();
//    save_bg(500, 300);
//    draw_cursor(500, 300);
//    sleep(1);
//    restore_bg(500, 300);
//    draw_cursor(600, 500);
#if 0 
    int i, j;
    for (i = 0; i < 100; i++)                       /*纵坐标*/
    {
        for (j = 0; j < 100; j++)                   /*横坐标*/ 
        {
            fb_one_pixel(500 + j, 300 + i, 0x0000ff00);
        }
    }
#endif
//    fb_line(0, 0, fb_v.w-1, fb_v.h-1, 0x00ff0000);   
//    fb_line(fb_v.w-1, 0, 0, fb_v.h-1, 0x00ff0000);
//    fb_line(300, fb_v.h-1, 500, 0, 0x0000ff00);
//    fb_line(0, 0, fb_v.w-1, 0, 0x00ffffff);
//    fb_line(0, 0, 0, fb_v.h-1, 0x00ffffff);
//    fb_line(fb_v.w-1, fb_v.h-1, fb_v.w-1, 0, 0x00ffffff);
//    fb_line(fb_v.w-1, fb_v.h-1, 0, fb_v.h-1, 0x00ffffff);
//      fb_circle(500, 300, 300, 0x00ff0000);
#if 1
    int i;
    for (i = 0; i < fb_v.w; i++)
    {
        fb_line(0, 0+i*30, fb_v.w-1, 0+i*30, 0x00ffffff);
    }

    printf("location:\n");
    scanf("%d",&i);

    fb_circle(st_x+i*space, st_y+i*space, 10, 0x0000ff00);
#endif
    return 0;
}
예제 #11
0
void print_board(void)
{
	int i = 0;
	int j = 0;
	for(j=ST_Y-20; j<Y_NUM*SPACE+30; j++)
	{
		for(i=ST_X-80; i<X_NUM*SPACE+SPACE*2+50; i++)
		{
			fb_one_pixel(i, j, YELLOW);
		}
	}
	for(i=0; i<Y_NUM; i++)
	{
		fb_line(ST_X, ST_Y+i*SPACE, ST_X+(X_NUM-1)*SPACE, ST_Y+i*SPACE, 0x00ffff00);
	}
	for(i=0; i<X_NUM; i++)
	{
		fb_line(ST_X+i*SPACE, ST_Y, ST_X+i*SPACE, ST_Y+(Y_NUM-1)*SPACE, 0x00ffff00);
	}
}
예제 #12
0
파일: basic_shape.c 프로젝트: baiming/001
int fb_line (int x1, int y1,int x2, int y2, u32_t color)    //hua xian
{
    int dx = x2-x1;
    int dy = y2-y1;
    int inc = ((dx*dy>0) ? 1 : -1);
    int p=0;
    if(abs(dx) > abs(dy))
    {
        if(dx < 0)
        {   
            swap(&x1 ,&x2);
            swap(&y1,&y2);
            dx = -dx;
            dy = -dy;
        }
        dy = abs(dy);
        p = 2*dy-dx;
        while(x1 <= x2)
        {
            fb_one_pixel(x1, y1, color);     
            x1++;
            if(p<0)
            {
                p += 2*dy;
            }
            else
            {
                p += 2*(dy-dx);
                y1+=inc;
            }
    
        }   

    }
    else
    {
      
        if(dy < 0)
        {   
            swap(&x1 ,&x2);
            swap(&y1,&y2);
            dx = -dx;
            dy = -dy;
        }
        dx = abs(dx);
        p = 2*dx-dy;
        while(y1 <= y2)
        {
            fb_one_pixel(x1, y1, color);
            y1++;
            if(p<0)
            {
                p += 2*dx;
            }
            else
            {
                p += 2*(dx-dy);
                x1+=inc;
            }
    
        }   
    
    
    }
}
예제 #13
0
int fb_line(int x1,int y1,int x2,int y2,u32_t color)//画线函数
{
	int dx = x2-x1;//线的横坐标宽度
	int dy = y2-y1;//线的纵坐标宽度
	int inc = ((dx*dy) > 0 ? 1 : -1);
	int p = 0;
	if(abs(dx)>abs(dy))//从上往下画线
	{
		if(dx<0)//此时x2<x1  可以交换x1与x2的位置和y1与y2的位置eg:从右上角往左下角画线  可以看成时从左下角往右上角画线
		{
			swap(&x1,&x2);//调用swap函数 用来交换x1与x2
			swap(&y1,&y2);
			dx = -dx;
			dy = -dy;
		}
		dy = abs(dy);
		p = 2*dy-dx;//固定算法公式
		while(x1 <= x2)//起点坐标小于等于终点坐标时
		{
			fb_one_pixel(x1,y1,color);//起始点
			x1++;//横坐标自加
			if(p<0)//p<0时y1的値不用加
			{
				p += 2*dy;
			}
			else//p>=0时y1的値用加
			{
				y1 += inc;
				p += 2*(dy-dx);
			}
		}
	}
	else//从下往上画线
	{
		if(dy < 0)//斜率较大时 将衡纵坐标互换			
		{
			swap(&x1,&x2);
			swap(&y1,&y2);
			dx = -dx;
			dy = -dy;
		}
		dx = abs(dx);
		p = 2*dx-dy;
		while(y1 <= y2)//
		{
			fb_one_pixel(x1,y1,color);//起始点
			y1++;//横坐标自加
			if(p<0)//p<0时y1的値不用加
			{
				p += 2*dx;
			}
			else//p>=0时y1的値用加
			{
				x1 += inc;
				p += 2*(dx-dy);
			}
		}
	}
	
	return 0;
}
예제 #14
0
void fb_drawhline(PFBDEV pFbdev,int x,int y,u32_t color)
{
    int i;
    for (i = 0; i < pFbdev->fb_var.xres; i++) 
    {
        fb_drawpixel(pFbdev,i,y,color);
    }
    return;
int fb_line(int x1,int y1,int x2,int y2,u32_t color)
{

    int dx=x2-x1;
    int dy=y2-y1;
    int p=0;
    int inc=((dx*dy<0)?-1:1);
    if(abs(dx)>abs(dy))
    {
       if(dx<0)
        {
           swap(&x1,&x2);
           swap(&y1,&y2);
           dx=-dx;
           dy=-dy;
        }
        dy=abs(dy);
        p=2*dy-dx;
        while(x1<=x2)
        {
            fb_one_pixel(x1,y1,color);
            x1++;
            if(p<0)
            {
              p+=2*dy;
            }
            else
            {                                                                                y1+=inc;                                                                      p+=2*(dy-dx);
            }                                                                          }                                                                            }
       else                                                                           {                                                                                 if(dy<0)
            {                                                                                swap(&x1,&x2);                                                                swap(&y1,&y2);
               dx=-dx;                                                                       dy=-dy;
            }                                                                             dx=abs(dx);                                                                   p=2*dx-dy;
            while(y1<=y2)                                                                {                                                                               fb_one_pixel(x1,y1,color);
             y1++;
             if(p<0)
             {
              p+=2*dx;
             }
             else
             {
              x1+=inc;
              p+=2*(dx-dy);
             }
                                                                                            }                                                               }
                                                                                                     return 0;




int main(void)
{
    FBDEV fbdev;
    memset(&fbdev,0,sizeof(FBDEV));
    strcpy(fbdev.dev,"/dev/fb0");
    if (fb_open(&fbdev)==FALSE) 
    {
        printf("open frame buffer error\n");
        return;
    }
    fb_memset((void *)(fbdev.fb_mem + fbdev.fb_mem_offset),0,fbdev.fb_fix.smem_len);
    //画点
    fb_drawpixel(&fbdev,512,384,0x00FF0000);
    fb_drawpixel(&fbdev,513,384,0x00FF0000);
    fb_drawpixel(&fbdev,512,385,0x00FF0000);
    fb_drawpixel(&fbdev,513,385,0x00FF0000);
    //画垂直线
    fb_drawvline(&fbdev,511,380,0x0000ff00);
    fb_drawhline(&fbdev,380,200,0x000000ff);
    fb_close(&fbdev);
        getchar();
}
예제 #15
0
int fb_line(int x1, int y1, int x2, int y2, u32_t color) //Bresenham画线函数
{
	int dx = x2-x1;
	int dy = y2-y1;
	int inc = ((dx*dy) > 0 ? 1 : -1);
	int p = 0;
	if (abs(dx) > abs(dy))
	{
		if (dx < 0) 
		{
			swap(&x1, &x2);
			swap(&y1, &y2);
			dx = -dx;
			dy = -dy;
		}
	
		dy = abs(dy); //绝对值
	
		p = 2*dy-dx; //画线公式
		while (x1 <= x2) 
		{
			fb_one_pixel(x1, y1, color);
			x1++;
			if (p<0) 
			{
				p += 2*dy;	
			}
			else 
			{
				y1 += inc;
				p += 2*(dy - dx);
			}
		}
	}
	else 
	{
		if (dy < 0) 
		{
			swap(&x1, &x2);
			swap(&y1, &y2);
			dx = -dx;
			dy = -dy;
		}
	
		dx = abs(dx);
	
		p = 2*dx-dy; //画线公式
		while (y1 <= y2) 
		{
			fb_one_pixel(x1, y1, color);
			y1++;
			if (p<0) 
			{
				p += 2*dx;	
			}
			else 
			{
				x1 += inc;
				p += 2*(dx - dy);
			}
		}
				
	}

	return 0;
}