void fb_drawwline(PFBDEV pFbdev,int x, int y, u32_t color) { int i; for (i = 0; i < pFbdev->fb_var.yres; i++) { fb_drawpixel(pFbdev,i,384,0x0000ff00); } }
int mouse_restore(const pinfo_t fb, int x, int y) { int i, j; for (j = 0; j < C_HEIGHT; ++j) for (i = 0; i < C_WIDTH; ++i) fb_drawpixel(fb, x+i, y+j, save_cursor[i + j*C_WIDTH]); return 0; }
void fb_drawvline(PFBDEV pFbdev,int x, int y, u32_t color) { int i; for (i = 0; i < pFbdev->fb_var.yres; i++) { fb_drawpixel(pFbdev,x,i,color); } }
void fb_drawxline(PFBDEV pFbdev,int x,int y,u32_t color) { int i=0; int j=0; for (i=0, j=0; i<1024, j<768; i++, j++) { fb_drawpixel(pFbdev,i,j,color); } }
int mouse_draw(const pinfo_t fb, int x, int y) { int i, j; mouse_save(fb, x, y); for (j = 0; j < C_HEIGHT; ++j) for (i = 0; i < C_WIDTH; ++i) if (cursor_pixel[i + j*C_WIDTH] != T___) fb_drawpixel(fb, x+i, y+j, cursor_pixel[i + j*C_WIDTH]); return 0; }
void 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_drawline(&fbdev,200,100,0x0000ff00); fb_line(&fbdev,100,200,300,500,0x000000ff); fb_circle(&fbdev,512,348,50,0x00ff0000); fb_close(&fbdev); getchar(); }
void fb_drawline(PFBDEV pFbdev,int x,int y,u32_t color) { int i; int j; for (i = 0; i < pFbdev->fb_var.yres; i++) { fb_drawpixel(pFbdev,x,i,color); } for (i = 0; i < pFbdev->fb_var.xres; i++) { fb_drawpixel(pFbdev,i,y,color); } for (i = y; i < pFbdev->fb_var.yres-y; i++) { for (j = x; j < pFbdev->fb_var.xres-x; j++) { if (i%10==9) { fb_drawpixel(pFbdev,j,i,0x00ff0000); } else if (j%10==9) { fb_drawpixel(pFbdev,j,i,0x00ff0000); } else { fb_drawpixel(pFbdev,j,i,color); } } } }
int fb_circle(PFBDEV pFbdev,int x0,int y0,int r,u32_t color) { int x = 0; int y = r; int p = 3-2*r; while(x <= y) { //fb_line(pFbdev,x0+x,y0+y,x0-x,y0+y,color); //fb_line(pFbdev,x0+y,y0+x,x0-y,y0+x,color); //fb_line(pFbdev,x0+x,y0-y,x0-x,y0-y,color); //fb_line(pFbdev,x0+y,y0-x,x0-y,y0-x,color); fb_drawpixel(pFbdev,x0+x,y0+y,color); fb_drawpixel(pFbdev,x0-y,y0+x,color); fb_drawpixel(pFbdev,x0+x,y0-y,color); fb_drawpixel(pFbdev,x0-y,y0-x,color); fb_drawpixel(pFbdev,x0-x,y0+y,color); fb_drawpixel(pFbdev,x0+y,y0+x,color); fb_drawpixel(pFbdev,x0-x,y0-y,color); fb_drawpixel(pFbdev,x0+y,y0-x,color); if (p<0) { p += 4*x+6; } else { y--; p += 4*(x-y)+10; } x++; } return 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(); }
int fb_line(PFBDEV pFbdev,int x1,int y1,int x2,int y2,u32_t color) { int p = 0; int dx = x2-x1; int dy = y2-y1; 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_drawpixel(pFbdev,x1,y1,color); x1++; if (p<0) { p += 2*dy; } if (p>=0) { 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_drawpixel(pFbdev,x1,y1,color); y1++; if (p<0) { p += 2*dx; } if (p>=0) { x1 += inc; p += 2*(dx-dy); } } } return 0; }