diff options
Diffstat (limited to 'w3mimg/fb')
-rw-r--r-- | w3mimg/fb/fb.c | 1044 | ||||
-rw-r--r-- | w3mimg/fb/fb_gdkpixbuf.c | 182 | ||||
-rw-r--r-- | w3mimg/fb/fb_img.c | 20 | ||||
-rw-r--r-- | w3mimg/fb/fb_imlib2.c | 209 |
4 files changed, 784 insertions, 671 deletions
diff --git a/w3mimg/fb/fb.c b/w3mimg/fb/fb.c index f7fd04f..fc2e19b 100644 --- a/w3mimg/fb/fb.c +++ b/w3mimg/fb/fb.c @@ -1,4 +1,4 @@ -/* $Id: fb.c,v 1.2 2002/07/18 15:01:31 ukai Exp $ */ +/* $Id: fb.c,v 1.3 2002/07/18 15:10:52 ukai Exp $ */ /************************************************************************** fb.c 0.2 Copyright (C) 2002, hito **************************************************************************/ @@ -21,581 +21,673 @@ #define FALSE 0 #define TRUE 1 -static struct fb_cmap* fb_cmap_create(struct fb_fix_screeninfo*, struct fb_var_screeninfo *); -static void fb_cmap_destroy(struct fb_cmap *cmap); -static int fb_fscrn_get(int fbfp, struct fb_fix_screeninfo *scinfo); +static struct fb_cmap *fb_cmap_create(struct fb_fix_screeninfo *, + struct fb_var_screeninfo *); +static void fb_cmap_destroy(struct fb_cmap *cmap); +static int fb_fscrn_get(int fbfp, struct fb_fix_screeninfo *scinfo); static void *fb_mmap(int fbfp, struct fb_fix_screeninfo *scinfo); -static int fb_munmap(void* buf,struct fb_fix_screeninfo *scinfo); -static int fb_vscrn_get(int fbfp, struct fb_var_screeninfo *scinfo); +static int fb_munmap(void *buf, struct fb_fix_screeninfo *scinfo); +static int fb_vscrn_get(int fbfp, struct fb_var_screeninfo *scinfo); -static struct fb_fix_screeninfo fscinfo; -static struct fb_var_screeninfo vscinfo; +static struct fb_fix_screeninfo fscinfo; +static struct fb_var_screeninfo vscinfo; static struct fb_cmap *cmap = NULL; static int is_open = FALSE; static int fbfp = -1; -static unsigned char *buf=NULL; +static unsigned char *buf = NULL; -int fb_open(void){ - char *fbdev = {FB_DEFDEV}; +int +fb_open(void) +{ + char *fbdev = { FB_DEFDEV }; - if(is_open == TRUE) - return 1; + if (is_open == TRUE) + return 1; - if(getenv(FB_ENV)){ - fbdev=getenv(FB_ENV); - } - - if((fbfp = open(fbdev,O_RDWR))==-1){ - fprintf(stderr, "open %s error\n",fbdev); - goto ERR_END; - } - - if(fb_fscrn_get(fbfp,&fscinfo)){ - goto ERR_END; - } - - if(fb_vscrn_get(fbfp,&vscinfo)){ - goto ERR_END; - } - - if((cmap = fb_cmap_create(&fscinfo,&vscinfo)) == (struct fb_cmap*) -1){ - goto ERR_END; - } - - if(!(buf = fb_mmap(fbfp,&fscinfo))){ - fprintf(stderr, "Can't allocate memory.\n"); - goto ERR_END; - } - - if(fscinfo.type!=FB_TYPE_PACKED_PIXELS){ - fprintf(stderr, "This type of framebuffer is not supported.\n"); - goto ERR_END; - } - - /* - if(fscinfo.visual == FB_VISUAL_PSEUDOCOLOR){ - printf("FB_VISUAL_PSEUDOCOLOR\n"); - if(vscinfo.bits_per_pixel!=8){ - fprintf(stderr, "未対応フレームバッファ\n"); - goto ERR_END; + if (getenv(FB_ENV)) { + fbdev = getenv(FB_ENV); } - if(fb_cmap_get(fbfp,cmap)){ - fprintf(stderr, "カラーマップ獲得失敗\n"); - // fb_cmap_destroy(cmap); - goto ERR_END; + if ((fbfp = open(fbdev, O_RDWR)) == -1) { + fprintf(stderr, "open %s error\n", fbdev); + goto ERR_END; } - // fb_cmap_disp(cmap); - if(cmap->len <(LINUX_LOGO_COLORS + LOGO_COLOR_OFFSET)){ - fprintf(stderr, "色の割付領域が不足しています\n"); - goto ERR_END; + if (fb_fscrn_get(fbfp, &fscinfo)) { + goto ERR_END; } - cmap->start = LOGO_COLOR_OFFSET; - cmap->len = LINUX_LOGO_COLORS; - - for(lp = 0; lp < LINUX_LOGO_COLORS; lp++){ - if(cmap->red){ - *(cmap->red+lp) = (linux_logo_red[lp]<<CHAR_BIT)+linux_logo_red[lp]; - } - if(cmap->green){ - *(cmap->green+lp)= (linux_logo_green[lp]<<CHAR_BIT)+linux_logo_green[lp]; - } - if(cmap->blue){ - *(cmap->blue+lp)= (linux_logo_blue[lp]<<CHAR_BIT)+linux_logo_blue[lp]; - } + if (fb_vscrn_get(fbfp, &vscinfo)) { + goto ERR_END; } - if(fb_cmap_set(fbfp,cmap)){ - fb_cmap_destroy(cmap); - fprintf(stderr, "カラーマップ獲得失敗\n"); - goto ERR_END; + + if ((cmap = fb_cmap_create(&fscinfo, &vscinfo)) == (struct fb_cmap *)-1) { + goto ERR_END; } - } - */ - - if(!(fscinfo.visual == FB_VISUAL_TRUECOLOR && - (vscinfo.bits_per_pixel == 15 || - vscinfo.bits_per_pixel == 16 || - vscinfo.bits_per_pixel == 24 || - vscinfo.bits_per_pixel == 32))){ - fprintf(stderr,"This type of framebuffer is not supported.\n"); - goto ERR_END; - } - - is_open = TRUE; - return 0; - - ERR_END: - fb_close(); - return 1; -} -void fb_close(void) -{ - if(is_open != TRUE) - return; + if (!(buf = fb_mmap(fbfp, &fscinfo))) { + fprintf(stderr, "Can't allocate memory.\n"); + goto ERR_END; + } - if(cmap != NULL){ - fb_cmap_destroy(cmap); - cmap = NULL; - } - if(buf != NULL){ - fb_munmap(buf,&fscinfo); - buf = NULL; - } + if (fscinfo.type != FB_TYPE_PACKED_PIXELS) { + fprintf(stderr, "This type of framebuffer is not supported.\n"); + goto ERR_END; + } - if(fbfp >= 0){ - close(fbfp); - } +#if 0 + if (fscinfo.visual == FB_VISUAL_PSEUDOCOLOR) { + printf("FB_VISUAL_PSEUDOCOLOR\n"); + if (vscinfo.bits_per_pixel != 8) { + fprintf(stderr, "未対応フレームバッファ\n"); + goto ERR_END; + } - is_open = FALSE; -} + if (fb_cmap_get(fbfp, cmap)) { + fprintf(stderr, "カラーマップ獲得失敗\n"); + // fb_cmap_destroy(cmap); + goto ERR_END; + } + // fb_cmap_disp(cmap); -void fb_pset(int x, int y, int r, int g, int b) -{ - unsigned long work; - int offset; - static size_t size = 0; + if (cmap->len < (LINUX_LOGO_COLORS + LOGO_COLOR_OFFSET)) { + fprintf(stderr, "色の割付領域が不足しています\n"); + goto ERR_END; + } - if(is_open != TRUE || x >= vscinfo.xres || y >= vscinfo.yres) - return; + cmap->start = LOGO_COLOR_OFFSET; + cmap->len = LINUX_LOGO_COLORS; + + for (lp = 0; lp < LINUX_LOGO_COLORS; lp++) { + if (cmap->red) { + *(cmap->red + lp) = + (linux_logo_red[lp] << CHAR_BIT) + linux_logo_red[lp]; + } + if (cmap->green) { + *(cmap->green + lp) = + (linux_logo_green[lp] << CHAR_BIT) + linux_logo_green[lp]; + } + if (cmap->blue) { + *(cmap->blue + lp) = + (linux_logo_blue[lp] << CHAR_BIT) + linux_logo_blue[lp]; + } + } + if (fb_cmap_set(fbfp, cmap)) { + fb_cmap_destroy(cmap); + fprintf(stderr, "カラーマップ獲得失敗\n"); + goto ERR_END; + } + } +#endif + + if (!(fscinfo.visual == FB_VISUAL_TRUECOLOR && + (vscinfo.bits_per_pixel == 15 || + vscinfo.bits_per_pixel == 16 || + vscinfo.bits_per_pixel == 24 || vscinfo.bits_per_pixel == 32))) { + fprintf(stderr, "This type of framebuffer is not supported.\n"); + goto ERR_END; + } - if(size == 0) - size = (vscinfo.bits_per_pixel + 7) / CHAR_BIT; + is_open = TRUE; + return 0; - offset = fscinfo.line_length * y + size * x; + ERR_END: + fb_close(); + return 1; +} - if(offset >= fscinfo.smem_len) - return; +void +fb_close(void) +{ + if (is_open != TRUE) + return; + + if (cmap != NULL) { + fb_cmap_destroy(cmap); + cmap = NULL; + } + if (buf != NULL) { + fb_munmap(buf, &fscinfo); + buf = NULL; + } + + if (fbfp >= 0) { + close(fbfp); + } - work= - ((r >> (CHAR_BIT - vscinfo.red.length )) << vscinfo.red.offset)+ - ((g >> (CHAR_BIT - vscinfo.green.length)) << vscinfo.green.offset)+ - ((b >> (CHAR_BIT - vscinfo.blue.length )) << vscinfo.blue.offset); - memcpy(buf + offset, &work, size); + is_open = FALSE; } -int fb_get_color(int x, int y, int *r, int *g, int *b) +void +fb_pset(int x, int y, int r, int g, int b) { - unsigned long work = 0; - int offset; - static size_t size = 0; + unsigned long work; + int offset; + static size_t size = 0; - if(is_open != TRUE || x >= vscinfo.xres || y >= vscinfo.yres) - return 1; + if (is_open != TRUE || x >= vscinfo.xres || y >= vscinfo.yres) + return; - if(size == 0) - size = (vscinfo.bits_per_pixel + 7) / CHAR_BIT; + if (size == 0) + size = (vscinfo.bits_per_pixel + 7) / CHAR_BIT; - offset = fscinfo.line_length * y + size * x; - if(offset >= fscinfo.smem_len) - return 1; + offset = fscinfo.line_length * y + size * x; - memcpy(&work, buf + offset, size); + if (offset >= fscinfo.smem_len) + return; - *r = ((work >> vscinfo.red.offset) & (0x000000ff >> (CHAR_BIT - vscinfo.red.length))) - << (CHAR_BIT - vscinfo.red.length); - *g = ((work >> vscinfo.green.offset) & (0x000000ff >> (CHAR_BIT - vscinfo.green.length))) - <<(CHAR_BIT - vscinfo.green.length); - *b = ((work >> vscinfo.blue.offset) & (0x000000ff >> (CHAR_BIT - vscinfo.blue.length))) - << (CHAR_BIT - vscinfo.blue.length); - return 0; + work = + ((r >> (CHAR_BIT - vscinfo.red.length)) << vscinfo.red.offset) + + ((g >> (CHAR_BIT - vscinfo.green.length)) << vscinfo.green.offset) + + ((b >> (CHAR_BIT - vscinfo.blue.length)) << vscinfo.blue.offset); + memcpy(buf + offset, &work, size); } -void fb_clear(void) +int +fb_get_color(int x, int y, int *r, int *g, int *b) { - if(is_open != TRUE) - return; - - memset(buf, 0, (vscinfo.xres * vscinfo.yres * vscinfo.bits_per_pixel) / CHAR_BIT); + unsigned long work = 0; + int offset; + static size_t size = 0; + + if (is_open != TRUE || x >= vscinfo.xres || y >= vscinfo.yres) + return 1; + + if (size == 0) + size = (vscinfo.bits_per_pixel + 7) / CHAR_BIT; + + offset = fscinfo.line_length * y + size * x; + if (offset >= fscinfo.smem_len) + return 1; + + memcpy(&work, buf + offset, size); + + *r = ((work >> vscinfo.red. + offset) & (0x000000ff >> (CHAR_BIT - vscinfo.red.length))) + << (CHAR_BIT - vscinfo.red.length); + *g = ((work >> vscinfo.green. + offset) & (0x000000ff >> (CHAR_BIT - vscinfo.green.length))) + << (CHAR_BIT - vscinfo.green.length); + *b = ((work >> vscinfo.blue. + offset) & (0x000000ff >> (CHAR_BIT - vscinfo.blue.length))) + << (CHAR_BIT - vscinfo.blue.length); + return 0; } -int fb_width(void) +void +fb_clear(void) { - if(is_open != TRUE) - return 0; + if (is_open != TRUE) + return; - return vscinfo.xres; + memset(buf, 0, + (vscinfo.xres * vscinfo.yres * vscinfo.bits_per_pixel) / CHAR_BIT); } -int fb_height(void) +int +fb_width(void) { - if(is_open != TRUE) - return 0; + if (is_open != TRUE) + return 0; - return vscinfo.yres; + return vscinfo.xres; } -void fb_cmap_disp(void) +int +fb_height(void) { - int lp; + if (is_open != TRUE) + return 0; - if(is_open != TRUE) - return; + return vscinfo.yres; +} - printf("cmap DUMP\n"); - printf("start :[%08x]\n", cmap->start); - printf("len :[%08x]\n", cmap->len); - printf("red :[%8p]\n", cmap->red); - if(cmap->red){ - for(lp=0;lp<cmap->len;lp++){ - if((lp+1)%16==0) printf("%04x\n",*(cmap->red+lp)); - else printf("%04x ",*(cmap->red+lp)); +void +fb_cmap_disp(void) +{ + int lp; + + if (is_open != TRUE) + return; + + printf("cmap DUMP\n"); + printf("start :[%08x]\n", cmap->start); + printf("len :[%08x]\n", cmap->len); + printf("red :[%8p]\n", cmap->red); + if (cmap->red) { + for (lp = 0; lp < cmap->len; lp++) { + if ((lp + 1) % 16 == 0) + printf("%04x\n", *(cmap->red + lp)); + else + printf("%04x ", *(cmap->red + lp)); + } + if (lp % 16) + printf("\n"); } - if(lp%16) printf("\n"); - } - printf("green :[%8p]\n",cmap->green); - if(cmap->green){ - for(lp=0;lp<cmap->len;lp++){ - if((lp+1)%16==0) printf("%04x\n",*(cmap->green+lp)); - else printf("%04x ",*(cmap->green+lp)); + printf("green :[%8p]\n", cmap->green); + if (cmap->green) { + for (lp = 0; lp < cmap->len; lp++) { + if ((lp + 1) % 16 == 0) + printf("%04x\n", *(cmap->green + lp)); + else + printf("%04x ", *(cmap->green + lp)); + } + if (lp % 16) + printf("\n"); } - if(lp%16) printf("\n"); - } - printf("blue :[%8p]\n",cmap->blue); - if(cmap->blue){ - for(lp=0;lp<cmap->len;lp++){ - if((lp+1)%16==0) printf("%04x\n",*(cmap->blue+lp)); - else printf("%04x ",*(cmap->blue+lp)); + printf("blue :[%8p]\n", cmap->blue); + if (cmap->blue) { + for (lp = 0; lp < cmap->len; lp++) { + if ((lp + 1) % 16 == 0) + printf("%04x\n", *(cmap->blue + lp)); + else + printf("%04x ", *(cmap->blue + lp)); + } + if (lp % 16) + printf("\n"); } - if(lp%16) printf("\n"); - } - printf("transp :[%8p]\n",cmap->transp); - if(cmap->transp){ - for(lp=0;lp<cmap->len;lp++){ - if((lp+1)%16==0) printf("%04x\n",*(cmap->transp+lp)); - else printf("%04x ",*(cmap->transp+lp)); + printf("transp :[%8p]\n", cmap->transp); + if (cmap->transp) { + for (lp = 0; lp < cmap->len; lp++) { + if ((lp + 1) % 16 == 0) + printf("%04x\n", *(cmap->transp + lp)); + else + printf("%04x ", *(cmap->transp + lp)); + } + if (lp % 16) + printf("\n"); } - if(lp%16) printf("\n"); - } - return; + return; } -void fb_fscrn_disp(void) +void +fb_fscrn_disp(void) { - if(is_open != TRUE) + if (is_open != TRUE) + return; + + printf("scinfo[%8p] DUMP\n", &fscinfo); + printf("id :[%s]\n", fscinfo.id); + printf("smem_start :[%08lx]\n", fscinfo.smem_start); + printf("smem_len :[%d]\n", fscinfo.smem_len); + printf("type :[%d] ", fscinfo.type); + switch (fscinfo.type) { + case FB_TYPE_PACKED_PIXELS: + printf("FB_TYPE_PACKED_PIXELS\n"); + break; + case FB_TYPE_PLANES: + printf("FB_TYPE_PLANES\n"); + break; + case FB_TYPE_INTERLEAVED_PLANES: + printf("FB_TYPE_INTERLEAVED_PLANES\n"); + break; + case FB_TYPE_TEXT: + printf("FB_TYPE_TEXT\n"); + break; + default: + printf("Unknown type.\n"); + } + printf("type_aux :[%d] ", fscinfo.type_aux); + switch (fscinfo.type_aux) { + case FB_AUX_TEXT_MDA: + printf("FB_AUX_TEXT_MDA\n"); + break; + case FB_AUX_TEXT_CGA: + printf("FB_AUX_TEXT_CGA\n"); + break; + case FB_AUX_TEXT_S3_MMIO: + printf("FB_AUX_TEXT_S3_MMIO\n"); + break; + case FB_AUX_TEXT_MGA_STEP16: + printf("FB_AUX_TEXT_MGA_STEP16\n"); + break; + case FB_AUX_TEXT_MGA_STEP8: + printf("FB_AUX_TEXT_MGA_STEP8\n"); + break; + default: + printf("Unknown type_aux.\n"); + } + printf("visual :[%d] ", fscinfo.visual); + switch (fscinfo.visual) { + case FB_VISUAL_MONO01: + printf("FB_VISUAL_MONO01\n"); + break; + case FB_VISUAL_MONO10: + printf("FB_VISUAL_MONO10\n"); + break; + case FB_VISUAL_TRUECOLOR: + printf("FB_VISUAL_TRUECOLOR\n"); + break; + case FB_VISUAL_PSEUDOCOLOR: + printf("FB_VISUAL_PSEUDOCOLOR\n"); + break; + case FB_VISUAL_DIRECTCOLOR: + printf("FB_VISUAL_DIRECTCOLOR\n"); + break; + case FB_VISUAL_STATIC_PSEUDOCOLOR: + printf("FB_VISUAL_STATIC_PSEUDOCOLOR\n"); + break; + default: + printf("Unknown Visual mode.\n"); + } + printf("xpanstep :[%d]\n", fscinfo.xpanstep); + printf("ypanstep :[%d]\n", fscinfo.ypanstep); + printf("ywrapstep :[%d]\n", fscinfo.ywrapstep); + printf("line_length :[%d]\n", fscinfo.line_length); + printf("mmio_start :[%08lx]\n", fscinfo.mmio_start); + printf("mmio_len :[%d]\n", fscinfo.mmio_len); + printf("accel :[%d] ", fscinfo.accel); + switch (fscinfo.accel) { + case FB_ACCEL_NONE: + printf("FB_ACCEL_NONE\n"); + break; + case FB_ACCEL_ATARIBLITT: + printf("FB_ACCEL_ATARIBLITT\n"); + break; + case FB_ACCEL_AMIGABLITT: + printf("FB_ACCEL_AMIGABLITT\n"); + break; + case FB_ACCEL_S3_TRIO64: + printf("FB_ACCEL_S3_TRIO64\n"); + break; + case FB_ACCEL_NCR_77C32BLT: + printf("FB_ACCEL_NCR_77C32BLT\n"); + break; + case FB_ACCEL_S3_VIRGE: + printf("FB_ACCEL_S3_VIRGE\n"); + break; + case FB_ACCEL_ATI_MACH64GX: + printf("FB_ACCEL_ATI_MACH64GX\n"); + break; + case FB_ACCEL_DEC_TGA: + printf("FB_ACCEL_DEC_TGA\n"); + break; + case FB_ACCEL_ATI_MACH64CT: + printf("FB_ACCEL_ATI_MACH64CT\n"); + break; + case FB_ACCEL_ATI_MACH64VT: + printf("FB_ACCEL_ATI_MACH64VT\n"); + break; + case FB_ACCEL_ATI_MACH64GT: + printf("FB_ACCEL_ATI_MACH64GT\n"); + break; + case FB_ACCEL_SUN_CREATOR: + printf("FB_ACCEL_SUN_CREATOR\n"); + break; + case FB_ACCEL_SUN_CGSIX: + printf("FB_ACCEL_SUN_CGSIX\n"); + break; + case FB_ACCEL_SUN_LEO: + printf("FB_ACCEL_SUN_LEO\n"); + break; + case FB_ACCEL_IMS_TWINTURBO: + printf("FB_ACCEL_IMS_TWINTURBO\n"); + break; + case FB_ACCEL_3DLABS_PERMEDIA2: + printf("FB_ACCEL_3DLABS_PERMEDIA2\n"); + break; + case FB_ACCEL_MATROX_MGA2064W: + printf("FB_ACCEL_MATROX_MGA2064W\n"); + break; + case FB_ACCEL_MATROX_MGA1064SG: + printf("FB_ACCEL_MATROX_MGA1064SG\n"); + break; + case FB_ACCEL_MATROX_MGA2164W: + printf("FB_ACCEL_MATROX_MGA2164W\n"); + break; + case FB_ACCEL_MATROX_MGA2164W_AGP: + printf("FB_ACCEL_MATROX_MGA2164W_AGP\n"); + break; + case FB_ACCEL_MATROX_MGAG100: + printf("FB_ACCEL_MATROX_MGAG100\n"); + break; + case FB_ACCEL_MATROX_MGAG200: + printf("FB_ACCEL_MATROX_MGAG200\n"); + break; + case FB_ACCEL_SUN_CG14: + printf("FB_ACCEL_SUN_CG14\n"); + break; + case FB_ACCEL_SUN_BWTWO: + printf("FB_ACCEL_SUN_BWTWO\n"); + break; + case FB_ACCEL_SUN_CGTHREE: + printf("FB_ACCEL_SUN_CGTHREE\n"); + break; + case FB_ACCEL_SUN_TCX: + printf("FB_ACCEL_SUN_TCX\n"); + break; + default: + printf("Unknown Visual mode.\n"); + } return; - - printf("scinfo[%8p] DUMP\n", &fscinfo); - printf("id :[%s]\n", fscinfo.id); - printf("smem_start :[%08lx]\n", fscinfo.smem_start); - printf("smem_len :[%d]\n", fscinfo.smem_len); - printf("type :[%d] ", fscinfo.type); - switch(fscinfo.type){ - case FB_TYPE_PACKED_PIXELS: - printf("FB_TYPE_PACKED_PIXELS\n");break; - case FB_TYPE_PLANES: - printf("FB_TYPE_PLANES\n");break; - case FB_TYPE_INTERLEAVED_PLANES: - printf("FB_TYPE_INTERLEAVED_PLANES\n");break; - case FB_TYPE_TEXT: - printf("FB_TYPE_TEXT\n");break; - default:printf("Unknown type.\n"); - } - printf("type_aux :[%d] ",fscinfo.type_aux); - switch(fscinfo.type_aux){ - case FB_AUX_TEXT_MDA: - printf("FB_AUX_TEXT_MDA\n");break; - case FB_AUX_TEXT_CGA: - printf("FB_AUX_TEXT_CGA\n");break; - case FB_AUX_TEXT_S3_MMIO: - printf("FB_AUX_TEXT_S3_MMIO\n");break; - case FB_AUX_TEXT_MGA_STEP16: - printf("FB_AUX_TEXT_MGA_STEP16\n");break; - case FB_AUX_TEXT_MGA_STEP8: - printf("FB_AUX_TEXT_MGA_STEP8\n");break; - default:printf("Unknown type_aux.\n"); - } - printf("visual :[%d] ",fscinfo.visual); - switch(fscinfo.visual){ - case FB_VISUAL_MONO01: - printf("FB_VISUAL_MONO01\n");break; - case FB_VISUAL_MONO10: - printf("FB_VISUAL_MONO10\n");break; - case FB_VISUAL_TRUECOLOR: - printf("FB_VISUAL_TRUECOLOR\n");break; - case FB_VISUAL_PSEUDOCOLOR: - printf("FB_VISUAL_PSEUDOCOLOR\n");break; - case FB_VISUAL_DIRECTCOLOR: - printf("FB_VISUAL_DIRECTCOLOR\n");break; - case FB_VISUAL_STATIC_PSEUDOCOLOR: - printf("FB_VISUAL_STATIC_PSEUDOCOLOR\n");break; - default:printf("Unknown Visual mode.\n"); - } - printf("xpanstep :[%d]\n",fscinfo.xpanstep); - printf("ypanstep :[%d]\n",fscinfo.ypanstep); - printf("ywrapstep :[%d]\n",fscinfo.ywrapstep); - printf("line_length :[%d]\n",fscinfo.line_length); - printf("mmio_start :[%08lx]\n",fscinfo.mmio_start); - printf("mmio_len :[%d]\n",fscinfo.mmio_len); - printf("accel :[%d] ",fscinfo.accel); - switch(fscinfo.accel){ - case FB_ACCEL_NONE: - printf("FB_ACCEL_NONE\n");break; - case FB_ACCEL_ATARIBLITT: - printf("FB_ACCEL_ATARIBLITT\n");break; - case FB_ACCEL_AMIGABLITT: - printf("FB_ACCEL_AMIGABLITT\n");break; - case FB_ACCEL_S3_TRIO64: - printf("FB_ACCEL_S3_TRIO64\n");break; - case FB_ACCEL_NCR_77C32BLT: - printf("FB_ACCEL_NCR_77C32BLT\n");break; - case FB_ACCEL_S3_VIRGE: - printf("FB_ACCEL_S3_VIRGE\n");break; - case FB_ACCEL_ATI_MACH64GX: - printf("FB_ACCEL_ATI_MACH64GX\n");break; - case FB_ACCEL_DEC_TGA: - printf("FB_ACCEL_DEC_TGA\n");break; - case FB_ACCEL_ATI_MACH64CT: - printf("FB_ACCEL_ATI_MACH64CT\n");break; - case FB_ACCEL_ATI_MACH64VT: - printf("FB_ACCEL_ATI_MACH64VT\n");break; - case FB_ACCEL_ATI_MACH64GT: - printf("FB_ACCEL_ATI_MACH64GT\n");break; - case FB_ACCEL_SUN_CREATOR: - printf("FB_ACCEL_SUN_CREATOR\n");break; - case FB_ACCEL_SUN_CGSIX: - printf("FB_ACCEL_SUN_CGSIX\n");break; - case FB_ACCEL_SUN_LEO: - printf("FB_ACCEL_SUN_LEO\n");break; - case FB_ACCEL_IMS_TWINTURBO: - printf("FB_ACCEL_IMS_TWINTURBO\n");break; - case FB_ACCEL_3DLABS_PERMEDIA2: - printf("FB_ACCEL_3DLABS_PERMEDIA2\n");break; - case FB_ACCEL_MATROX_MGA2064W: - printf("FB_ACCEL_MATROX_MGA2064W\n");break; - case FB_ACCEL_MATROX_MGA1064SG: - printf("FB_ACCEL_MATROX_MGA1064SG\n");break; - case FB_ACCEL_MATROX_MGA2164W: - printf("FB_ACCEL_MATROX_MGA2164W\n");break; - case FB_ACCEL_MATROX_MGA2164W_AGP: - printf("FB_ACCEL_MATROX_MGA2164W_AGP\n");break; - case FB_ACCEL_MATROX_MGAG100: - printf("FB_ACCEL_MATROX_MGAG100\n");break; - case FB_ACCEL_MATROX_MGAG200: - printf("FB_ACCEL_MATROX_MGAG200\n");break; - case FB_ACCEL_SUN_CG14: - printf("FB_ACCEL_SUN_CG14\n");break; - case FB_ACCEL_SUN_BWTWO: - printf("FB_ACCEL_SUN_BWTWO\n");break; - case FB_ACCEL_SUN_CGTHREE: - printf("FB_ACCEL_SUN_CGTHREE\n");break; - case FB_ACCEL_SUN_TCX: - printf("FB_ACCEL_SUN_TCX\n");break; - default:printf("Unknown Visual mode.\n"); - } - return; } -void fb_vscrn_disp(void) +void +fb_vscrn_disp(void) { - if(is_open != TRUE) + if (is_open != TRUE) + return; + printf("vscinfo DUMP\n"); + printf("xres :[%d]\n", vscinfo.xres); + printf("yres :[%d]\n", vscinfo.yres); + printf("xres_virtual :[%d]\n", vscinfo.xres_virtual); + printf("yres_virtual :[%d]\n", vscinfo.yres_virtual); + printf("xoffset :[%d]\n", vscinfo.xoffset); + printf("yoffset :[%d]\n", vscinfo.yoffset); + printf("bits_per_pixel :[%d]\n", vscinfo.bits_per_pixel); + printf("grayscale :[%d]\n", vscinfo.grayscale); + printf("red.offset :[%d]\n", vscinfo.red.offset); + printf("red.length :[%d]\n", vscinfo.red.length); + printf("red.msb_right :[%d]\n", vscinfo.red.msb_right); + printf("green.offset :[%d]\n", vscinfo.green.offset); + printf("green.length :[%d]\n", vscinfo.green.length); + printf("green.msb_right :[%d]\n", vscinfo.green.msb_right); + printf("blue.offset :[%d]\n", vscinfo.blue.offset); + printf("blue.length :[%d]\n", vscinfo.blue.length); + printf("blue.msb_right :[%d]\n", vscinfo.blue.msb_right); + printf("transp.offset :[%d]\n", vscinfo.transp.offset); + printf("transp.length :[%d]\n", vscinfo.transp.length); + printf("transp.msb_right:[%d]\n", vscinfo.transp.msb_right); + printf("nonstd :[%d]\n", vscinfo.nonstd); + printf("activate :[%d]\n", vscinfo.activate); + printf("height :[%d]\n", vscinfo.height); + printf("width :[%d]\n", vscinfo.width); + printf("accel_flags :[%d]\n", vscinfo.accel_flags); + printf("pixclock :[%d]\n", vscinfo.pixclock); + printf("left_margin :[%d]\n", vscinfo.left_margin); + printf("right_margin :[%d]\n", vscinfo.right_margin); + printf("upper_margin :[%d]\n", vscinfo.upper_margin); + printf("lower_margin :[%d]\n", vscinfo.lower_margin); + printf("hsync_len :[%d]\n", vscinfo.hsync_len); + printf("vsync_len :[%d]\n", vscinfo.vsync_len); + printf("sync :[%d]\n", vscinfo.sync); + printf("vmode :[%d]\n", vscinfo.vmode); return; - printf("vscinfo DUMP\n"); - printf("xres :[%d]\n",vscinfo.xres); - printf("yres :[%d]\n",vscinfo.yres); - printf("xres_virtual :[%d]\n",vscinfo.xres_virtual); - printf("yres_virtual :[%d]\n",vscinfo.yres_virtual); - printf("xoffset :[%d]\n",vscinfo.xoffset); - printf("yoffset :[%d]\n",vscinfo.yoffset); - printf("bits_per_pixel :[%d]\n",vscinfo.bits_per_pixel); - printf("grayscale :[%d]\n",vscinfo.grayscale); - printf("red.offset :[%d]\n",vscinfo.red.offset); - printf("red.length :[%d]\n",vscinfo.red.length); - printf("red.msb_right :[%d]\n",vscinfo.red.msb_right); - printf("green.offset :[%d]\n",vscinfo.green.offset); - printf("green.length :[%d]\n",vscinfo.green.length); - printf("green.msb_right :[%d]\n",vscinfo.green.msb_right); - printf("blue.offset :[%d]\n",vscinfo.blue.offset); - printf("blue.length :[%d]\n",vscinfo.blue.length); - printf("blue.msb_right :[%d]\n",vscinfo.blue.msb_right); - printf("transp.offset :[%d]\n",vscinfo.transp.offset); - printf("transp.length :[%d]\n",vscinfo.transp.length); - printf("transp.msb_right:[%d]\n",vscinfo.transp.msb_right); - printf("nonstd :[%d]\n",vscinfo.nonstd); - printf("activate :[%d]\n",vscinfo.activate); - printf("height :[%d]\n",vscinfo.height); - printf("width :[%d]\n",vscinfo.width); - printf("accel_flags :[%d]\n",vscinfo.accel_flags); - printf("pixclock :[%d]\n",vscinfo.pixclock); - printf("left_margin :[%d]\n",vscinfo.left_margin); - printf("right_margin :[%d]\n",vscinfo.right_margin); - printf("upper_margin :[%d]\n",vscinfo.upper_margin); - printf("lower_margin :[%d]\n",vscinfo.lower_margin); - printf("hsync_len :[%d]\n",vscinfo.hsync_len); - printf("vsync_len :[%d]\n",vscinfo.vsync_len); - printf("sync :[%d]\n",vscinfo.sync); - printf("vmode :[%d]\n",vscinfo.vmode); - return; } /********* static functions **************/ /* - (struct fb_cmap)デバイスに依存しないカラーマップ情報 - - fb_cmap_create() 新規のカラーマップ情報 - fb_cmap_destroy() カラーマップ情報の破棄 - fb_cmap_disp() 情報の表示 - fb_cmap_get() 情報の獲得 - fb_cmap_set() 情報の設定 -*/ + * (struct fb_cmap)デバイスに依存しないカラーマップ情報 + * + * fb_cmap_create() 新規のカラーマップ情報 + * fb_cmap_destroy() カラーマップ情報の破棄 + * fb_cmap_disp() 情報の表示 + * fb_cmap_get() 情報の獲得 + * fb_cmap_set() 情報の設定 + */ #define LUT_MAX (256) -static struct fb_cmap* fb_cmap_create(struct fb_fix_screeninfo* fscinfo, - struct fb_var_screeninfo *vscinfo) +static struct fb_cmap * +fb_cmap_create(struct fb_fix_screeninfo *fscinfo, + struct fb_var_screeninfo *vscinfo) { - struct fb_cmap* cmap; - int cmaplen=LUT_MAX; - - /* カラーマップの存在チェック */ - if(fscinfo->visual==FB_VISUAL_MONO01 || - fscinfo->visual==FB_VISUAL_MONO10 || - fscinfo->visual==FB_VISUAL_TRUECOLOR) return NULL; - - cmap=(struct fb_cmap*)malloc(sizeof(struct fb_cmap)); - if(!cmap){ - perror("cmap malloc error\n"); - return (struct fb_cmap*)-1; - } - memset(cmap,0,sizeof(struct fb_cmap)); - - /* 各分色が存在しそうだったらカラーマップ用の領域を確保 */ - if(vscinfo->red.length){ - cmap->red=(__u16*)malloc(sizeof(__u16)*cmaplen); - if(!cmap->red){ - perror("red lut malloc error\n"); - return (struct fb_cmap*)-1; - } + struct fb_cmap *cmap; + int cmaplen = LUT_MAX; + + /* カラーマップの存在チェック */ + if (fscinfo->visual == FB_VISUAL_MONO01 || + fscinfo->visual == FB_VISUAL_MONO10 || + fscinfo->visual == FB_VISUAL_TRUECOLOR) + return NULL; + + cmap = (struct fb_cmap *)malloc(sizeof(struct fb_cmap)); + if (!cmap) { + perror("cmap malloc error\n"); + return (struct fb_cmap *)-1; + } + memset(cmap, 0, sizeof(struct fb_cmap)); + + /* 各分色が存在しそうだったらカラーマップ用の領域を確保 */ + if (vscinfo->red.length) { + cmap->red = (__u16 *) malloc(sizeof(__u16) * cmaplen); + if (!cmap->red) { + perror("red lut malloc error\n"); + return (struct fb_cmap *)-1; } - if(vscinfo->green.length){ - cmap->green=(__u16*)malloc(sizeof(__u16)*cmaplen); - if(!cmap->green){ - if(vscinfo->red.length) free(cmap->red); - perror("green lut malloc error\n"); - return (struct fb_cmap*)-1; - } + } + if (vscinfo->green.length) { + cmap->green = (__u16 *) malloc(sizeof(__u16) * cmaplen); + if (!cmap->green) { + if (vscinfo->red.length) + free(cmap->red); + perror("green lut malloc error\n"); + return (struct fb_cmap *)-1; } - if(vscinfo->blue.length){ - cmap->blue=(__u16*)malloc(sizeof(__u16)*cmaplen); - if(!cmap->blue){ - if(vscinfo->red.length) free(cmap->red); - if(vscinfo->green.length) free(cmap->green); - perror("blue lut malloc error\n"); - return (struct fb_cmap*)-1; - } + } + if (vscinfo->blue.length) { + cmap->blue = (__u16 *) malloc(sizeof(__u16) * cmaplen); + if (!cmap->blue) { + if (vscinfo->red.length) + free(cmap->red); + if (vscinfo->green.length) + free(cmap->green); + perror("blue lut malloc error\n"); + return (struct fb_cmap *)-1; } - if(vscinfo->transp.length){ - cmap->transp=(__u16*)malloc(sizeof(__u16)*cmaplen); - if(!cmap->transp){ - if(vscinfo->red.length) free(cmap->red); - if(vscinfo->green.length) free(cmap->green); - if(vscinfo->blue.length) free(cmap->blue); - perror("transp lut malloc error\n"); - return (struct fb_cmap*)-1; - } + } + if (vscinfo->transp.length) { + cmap->transp = (__u16 *) malloc(sizeof(__u16) * cmaplen); + if (!cmap->transp) { + if (vscinfo->red.length) + free(cmap->red); + if (vscinfo->green.length) + free(cmap->green); + if (vscinfo->blue.length) + free(cmap->blue); + perror("transp lut malloc error\n"); + return (struct fb_cmap *)-1; } - cmap->len=cmaplen; - return cmap; + } + cmap->len = cmaplen; + return cmap; } -static void fb_cmap_destroy(struct fb_cmap* cmap) +static void +fb_cmap_destroy(struct fb_cmap *cmap) { - if(cmap->red) free(cmap->red); - if(cmap->green) free(cmap->green); - if(cmap->blue) free(cmap->blue); - if(cmap->transp) free(cmap->transp); - free(cmap); + if (cmap->red) + free(cmap->red); + if (cmap->green) + free(cmap->green); + if (cmap->blue) + free(cmap->blue); + if (cmap->transp) + free(cmap->transp); + free(cmap); } -/* -static int fb_cmap_get(int fbfp,struct fb_cmap* cmap) +#if 0 +static int +fb_cmap_get(int fbfp, struct fb_cmap *cmap) { - if(ioctl(fbfp,FBIOGETCMAP,cmap)){ - perror("ioctl FBIOGETCMAP error\n"); - return -1; - } - return 0; + if (ioctl(fbfp, FBIOGETCMAP, cmap)) { + perror("ioctl FBIOGETCMAP error\n"); + return -1; + } + return 0; } -static int fb_cmap_set(int fbfp,struct fb_cmap* cmap) +static int +fb_cmap_set(int fbfp, struct fb_cmap *cmap) { - if(ioctl(fbfp,FBIOPUTCMAP,cmap)){ - perror("ioctl FBIOPUTCMAP error\n"); - return -1; - } - return 0; + if (ioctl(fbfp, FBIOPUTCMAP, cmap)) { + perror("ioctl FBIOPUTCMAP error\n"); + return -1; + } + return 0; } -*/ +#endif /* - フレームバッファに対するアクセス - - fb_mmap() フレームバッファのメモリ上へのマップ - fb_munmap() フレームバッファのメモリ上からのアンマップ -*/ - -static void *fb_mmap(int fbfp, struct fb_fix_screeninfo* scinfo) + * フレームバッファに対するアクセス + * + * fb_mmap() フレームバッファのメモリ上へのマップ + * fb_munmap() フレームバッファのメモリ上からのアンマップ + */ + +static void * +fb_mmap(int fbfp, struct fb_fix_screeninfo *scinfo) { - void *buf; - if((buf=(unsigned char*) - mmap(NULL, scinfo->smem_len, PROT_READ|PROT_WRITE,MAP_SHARED, fbfp, (off_t)0)) - ==MAP_FAILED){ - perror("mmap error"); - return NULL; - } - return buf; + void *buf; + if ((buf = (unsigned char *) + mmap(NULL, scinfo->smem_len, PROT_READ | PROT_WRITE, MAP_SHARED, fbfp, + (off_t) 0)) + == MAP_FAILED) { + perror("mmap error"); + return NULL; + } + return buf; } -static int fb_munmap(void* buf,struct fb_fix_screeninfo* scinfo) +static int +fb_munmap(void *buf, struct fb_fix_screeninfo *scinfo) { - return munmap(buf,scinfo->smem_len); + return munmap(buf, scinfo->smem_len); } /* - (struct fb_fix_screeninfo)デバイスに依存しない固定された情報 - - fb_fscrn_disp() 情報の表示 - fb_fscrn_get() 情報の獲得 -*/ - - -static int fb_fscrn_get(int fbfp,struct fb_fix_screeninfo* scinfo) + * (struct fb_fix_screeninfo)デバイスに依存しない固定された情報 + * + * fb_fscrn_disp() 情報の表示 + * fb_fscrn_get() 情報の獲得 + */ +static int +fb_fscrn_get(int fbfp, struct fb_fix_screeninfo *scinfo) { - if(ioctl(fbfp,FBIOGET_FSCREENINFO,scinfo)){ - perror("ioctl FBIOGET_FSCREENINFO error\n"); - return -1; - } - return 0; + if (ioctl(fbfp, FBIOGET_FSCREENINFO, scinfo)) { + perror("ioctl FBIOGET_FSCREENINFO error\n"); + return -1; + } + return 0; } /* - (struct fb_var_screeninfo)デバイスに依存しない変更可能な情報 - - fb_vscrn_disp() 情報の表示 - fb_vscrn_get() 情報の獲得 - fb_vscrn_set() 情報の設定 -*/ - - -static int fb_vscrn_get(int fbfp,struct fb_var_screeninfo* scinfo) + * (struct fb_var_screeninfo)デバイスに依存しない変更可能な情報 + * + * fb_vscrn_disp() 情報の表示 + * fb_vscrn_get() 情報の獲得 + * fb_vscrn_set() 情報の設定 + */ +static int +fb_vscrn_get(int fbfp, struct fb_var_screeninfo *scinfo) { - if(ioctl(fbfp,FBIOGET_VSCREENINFO,scinfo)){ - perror("ioctl FBIOGET_VSCREENINFO error\n"); - return -1; - } - return 0; + if (ioctl(fbfp, FBIOGET_VSCREENINFO, scinfo)) { + perror("ioctl FBIOGET_VSCREENINFO error\n"); + return -1; + } + return 0; } -/* -static int fb_vscrn_set(int fbfp,struct fb_var_screeninfo* scinfo) +#if 0 +static int +fb_vscrn_set(int fbfp, struct fb_var_screeninfo *scinfo) { - if(ioctl(fbfp,FBIOPUT_VSCREENINFO,scinfo)){ - perror("ioctl FBIOPUT_VSCREENINFO error\n"); - return -1; - } - return 0; + if (ioctl(fbfp, FBIOPUT_VSCREENINFO, scinfo)) { + perror("ioctl FBIOPUT_VSCREENINFO error\n"); + return -1; + } + return 0; } -*/ +#endif diff --git a/w3mimg/fb/fb_gdkpixbuf.c b/w3mimg/fb/fb_gdkpixbuf.c index 1799df6..46a0bf6 100644 --- a/w3mimg/fb/fb_gdkpixbuf.c +++ b/w3mimg/fb/fb_gdkpixbuf.c @@ -1,4 +1,4 @@ -/* $Id: fb_gdkpixbuf.c,v 1.4 2002/07/18 15:01:31 ukai Exp $ */ +/* $Id: fb_gdkpixbuf.c,v 1.5 2002/07/18 15:12:06 ukai Exp $ */ /************************************************************************** fb_gdkpixbuf.c 0.2 Copyright (C) 2002, hito **************************************************************************/ @@ -6,124 +6,132 @@ #include "fb.h" #include "fb_img.h" -static void set_prm(IMAGE *img); +static void set_prm(IMAGE * img); -IMAGE *fb_load_image(char *filename, int w, int h) +IMAGE * +fb_load_image(char *filename, int w, int h) { - GdkPixbuf *pixbuf; - IMAGE *img; - - if(filename == NULL) - return NULL; - - img = malloc(sizeof(*img)); - if(img == NULL) - return NULL; - - pixbuf = gdk_pixbuf_new_from_file(filename); - if(pixbuf == NULL){ - free(img); - return NULL; - } + GdkPixbuf *pixbuf; + IMAGE *img; - img->pixbuf = pixbuf; - set_prm(img); + if (filename == NULL) + return NULL; - fb_resize_image(img, w, h); + img = malloc(sizeof(*img)); + if (img == NULL) + return NULL; - return img; -} + pixbuf = gdk_pixbuf_new_from_file(filename); + if (pixbuf == NULL) { + free(img); + return NULL; + } -int fb_draw_image(IMAGE *img, int x, int y, int sx, int sy, int width, int height) -{ - int i, j, r, g, b, offset, bpp; + img->pixbuf = pixbuf; + set_prm(img); - if(img == NULL) - return 1; + fb_resize_image(img, w, h); + + return img; +} - bpp = img->rowstride / img->width; - for(j = sy; j < sy + height && j < img->height; j++){ - offset = j * img->rowstride + bpp * sx; - for(i = sx; i < sx + width && i < img->width; i++, offset += bpp){ - r = img->pixels[offset]; - g = img->pixels[offset + 1]; - b = img->pixels[offset + 2]; - if(img->alpha && img->pixels[offset + 3] == 0) - fb_pset(i + x - sx, j + y - sy, bg_r, bg_g, bg_b); - else - fb_pset(i + x - sx, j + y - sy, r, g, b); +int +fb_draw_image(IMAGE * img, int x, int y, int sx, int sy, int width, int height) +{ + int i, j, r, g, b, offset, bpp; + + if (img == NULL) + return 1; + + bpp = img->rowstride / img->width; + for (j = sy; j < sy + height && j < img->height; j++) { + offset = j * img->rowstride + bpp * sx; + for (i = sx; i < sx + width && i < img->width; i++, offset += bpp) { + r = img->pixels[offset]; + g = img->pixels[offset + 1]; + b = img->pixels[offset + 2]; + if (img->alpha && img->pixels[offset + 3] == 0) + fb_pset(i + x - sx, j + y - sy, bg_r, bg_g, bg_b); + else + fb_pset(i + x - sx, j + y - sy, r, g, b); + } } - } - return 0; + return 0; } -int fb_resize_image(IMAGE *img, int width, int height) +int +fb_resize_image(IMAGE * img, int width, int height) { - GdkPixbuf *pixbuf; - if(width < 1 || height < 1 || img == NULL) - return 1; + GdkPixbuf *pixbuf; + if (width < 1 || height < 1 || img == NULL) + return 1; - if(width == img->width && height == img->height) - return 0; + if (width == img->width && height == img->height) + return 0; - pixbuf = gdk_pixbuf_scale_simple(img->pixbuf, width, height, GDK_INTERP_HYPER); - if(pixbuf == NULL) - return 1; - gdk_pixbuf_finalize(img->pixbuf); + pixbuf = + gdk_pixbuf_scale_simple(img->pixbuf, width, height, GDK_INTERP_HYPER); + if (pixbuf == NULL) + return 1; + gdk_pixbuf_finalize(img->pixbuf); - img->pixbuf = pixbuf; - set_prm(img); - return 0; + img->pixbuf = pixbuf; + set_prm(img); + return 0; } -void fb_free_image(IMAGE *img) +void +fb_free_image(IMAGE * img) { - if(img == NULL) - return; + if (img == NULL) + return; - gdk_pixbuf_finalize(img->pixbuf); - free(img); + gdk_pixbuf_finalize(img->pixbuf); + free(img); } -IMAGE *fb_dup_image(IMAGE *img) +IMAGE * +fb_dup_image(IMAGE * img) { - GdkPixbuf *pixbuf; - IMAGE *new_img; + GdkPixbuf *pixbuf; + IMAGE *new_img; - if(img == NULL) - return NULL; + if (img == NULL) + return NULL; - new_img = malloc(sizeof(*img)); - if(new_img == NULL) - return NULL; + new_img = malloc(sizeof(*img)); + if (new_img == NULL) + return NULL; - pixbuf = gdk_pixbuf_copy(img->pixbuf); - if(pixbuf == NULL){ - free(new_img); - return NULL; - } + pixbuf = gdk_pixbuf_copy(img->pixbuf); + if (pixbuf == NULL) { + free(new_img); + return NULL; + } - new_img->pixbuf = pixbuf; - set_prm(new_img); - return new_img; + new_img->pixbuf = pixbuf; + set_prm(new_img); + return new_img; } -int fb_rotate_image(IMAGE *img, int angle) +int +fb_rotate_image(IMAGE * img, int angle) { - return 1; + return 1; } -static void set_prm(IMAGE *img) +static void +set_prm(IMAGE * img) { - GdkPixbuf *pixbuf; + GdkPixbuf *pixbuf; - if(img == NULL) - return; - pixbuf = img->pixbuf; + if (img == NULL) + return; + pixbuf = img->pixbuf; - img->pixels = gdk_pixbuf_get_pixels(pixbuf); - img->width = gdk_pixbuf_get_width(pixbuf); - img->height = gdk_pixbuf_get_height(pixbuf); - img->alpha = gdk_pixbuf_get_has_alpha(pixbuf); - img->rowstride = gdk_pixbuf_get_rowstride(pixbuf); + img->pixels = gdk_pixbuf_get_pixels(pixbuf); + img->width = gdk_pixbuf_get_width(pixbuf); + img->height = gdk_pixbuf_get_height(pixbuf); + img->alpha = gdk_pixbuf_get_has_alpha(pixbuf); + img->rowstride = gdk_pixbuf_get_rowstride(pixbuf); } diff --git a/w3mimg/fb/fb_img.c b/w3mimg/fb/fb_img.c index d62b2fd..5ff2a28 100644 --- a/w3mimg/fb/fb_img.c +++ b/w3mimg/fb/fb_img.c @@ -1,4 +1,4 @@ -/* $Id: fb_img.c,v 1.2 2002/07/18 15:01:31 ukai Exp $ */ +/* $Id: fb_img.c,v 1.3 2002/07/18 15:13:13 ukai Exp $ */ #include <stdio.h> #include <stdlib.h> #include <sys/types.h> @@ -10,21 +10,23 @@ static int bg_r = 0, bg_g = 0, bg_b = 0; #if defined(USE_IMLIB2) - #include "w3mimg/fb/fb_imlib2.c" +#include "w3mimg/fb/fb_imlib2.c" #elif defined(USE_GDKPIXBUF) - #include "w3mimg/fb/fb_gdkpixbuf.c" +#include "w3mimg/fb/fb_gdkpixbuf.c" #else #error no Imlib2 and GdkPixbuf support #endif -int fb_draw_image_simple(IMAGE *img, int x, int y) +int +fb_draw_image_simple(IMAGE * img, int x, int y) { - return fb_draw_image(img, x, y, 0, 0, img->width, img->height); + return fb_draw_image(img, x, y, 0, 0, img->width, img->height); } -void fb_set_bg(int r, int g, int b) +void +fb_set_bg(int r, int g, int b) { - bg_r = r; - bg_g = g; - bg_b = b; + bg_r = r; + bg_g = g; + bg_b = b; } diff --git a/w3mimg/fb/fb_imlib2.c b/w3mimg/fb/fb_imlib2.c index bfc23f7..3041594 100644 --- a/w3mimg/fb/fb_imlib2.c +++ b/w3mimg/fb/fb_imlib2.c @@ -1,4 +1,4 @@ -/* $Id: fb_imlib2.c,v 1.4 2002/07/18 15:01:31 ukai Exp $ */ +/* $Id: fb_imlib2.c,v 1.5 2002/07/18 15:14:21 ukai Exp $ */ /************************************************************************** fb_imlib2.c 0.2 Copyright (C) 2002, hito **************************************************************************/ @@ -6,146 +6,157 @@ #include "fb.h" #include "fb_img.h" -static void set_prm(IMAGE *img); +static void set_prm(IMAGE * img); -IMAGE *fb_load_image(char *filename, int w, int h) +IMAGE * +fb_load_image(char *filename, int w, int h) { - Imlib_Image image; - IMAGE *img; + Imlib_Image image; + IMAGE *img; - if(filename == NULL) - return NULL; + if (filename == NULL) + return NULL; - img = malloc(sizeof(*img)); - if(img == NULL) - return NULL; + img = malloc(sizeof(*img)); + if (img == NULL) + return NULL; - image = imlib_load_image(filename); - if(image == NULL){ - free(img); - return NULL; - } + image = imlib_load_image(filename); + if (image == NULL) { + free(img); + return NULL; + } - imlib_context_set_image(image); + imlib_context_set_image(image); - img->image = image; - set_prm(img); + img->image = image; + set_prm(img); - fb_resize_image(img, w, h); + fb_resize_image(img, w, h); - return img; + return img; } -int fb_draw_image(IMAGE *img, int x, int y, int sx, int sy, int width, int height) +int +fb_draw_image(IMAGE * img, int x, int y, int sx, int sy, int width, int height) { - int i, j, r, g, b, a = 0, offset; - - if(img == NULL) - return 1; - - for(j = sy; j < sy + height && j < img->height; j++){ - offset = j * img->width; - for(i = sx; i < sx + width && i < img->width; i++){ - a = (img->data[offset + i] >> 24) & 0x000000ff; - r = (img->data[offset + i] >> 16) & 0x000000ff; - g = (img->data[offset + i] >> 8) & 0x000000ff; - b = (img->data[offset + i] ) & 0x000000ff; - - if(a == 0) - fb_pset(i + x - sx, j + y - sy, bg_r, bg_g, bg_b); - else - fb_pset(i + x - sx, j + y - sy, r, g, b); + int i, j, r, g, b, a = 0, offset; + + if (img == NULL) + return 1; + + for (j = sy; j < sy + height && j < img->height; j++) { + offset = j * img->width; + for (i = sx; i < sx + width && i < img->width; i++) { + a = (img->data[offset + i] >> 24) & 0x000000ff; + r = (img->data[offset + i] >> 16) & 0x000000ff; + g = (img->data[offset + i] >> 8) & 0x000000ff; + b = (img->data[offset + i]) & 0x000000ff; + + if (a == 0) + fb_pset(i + x - sx, j + y - sy, bg_r, bg_g, bg_b); + else + fb_pset(i + x - sx, j + y - sy, r, g, b); + } } - } - return 0; + return 0; } -int fb_resize_image(IMAGE *img, int width, int height) +int +fb_resize_image(IMAGE * img, int width, int height) { - Imlib_Image image; + Imlib_Image image; - if(width < 1 || height < 1 || img == NULL) - return 1; + if (width < 1 || height < 1 || img == NULL) + return 1; - if(width == img->width && height == img->height) - return 0; + if (width == img->width && height == img->height) + return 0; - image = imlib_create_cropped_scaled_image(0, 0, img->width, img->height, width, height); - if(image == NULL) - return 1; + image = + imlib_create_cropped_scaled_image(0, 0, img->width, img->height, width, + height); + if (image == NULL) + return 1; - imlib_context_set_image(img->image); - imlib_free_image(); + imlib_context_set_image(img->image); + imlib_free_image(); - img->image = image; - set_prm(img); - return 0; + img->image = image; + set_prm(img); + return 0; } -void fb_free_image(IMAGE *img) +void +fb_free_image(IMAGE * img) { - if(img == NULL) - return; + if (img == NULL) + return; - imlib_context_set_image(img->image); - imlib_free_image(); - free(img); + imlib_context_set_image(img->image); + imlib_free_image(); + free(img); } -IMAGE *fb_dup_image(IMAGE *img) +IMAGE * +fb_dup_image(IMAGE * img) { - Imlib_Image image; - IMAGE *new_img; + Imlib_Image image; + IMAGE *new_img; - if(img == NULL) - return NULL; + if (img == NULL) + return NULL; - new_img = malloc(sizeof(*img)); - if(new_img == NULL) - return NULL; + new_img = malloc(sizeof(*img)); + if (new_img == NULL) + return NULL; - imlib_context_set_image(img->image); - image = imlib_clone_image(); + imlib_context_set_image(img->image); + image = imlib_clone_image(); - if(image == NULL){ - free(new_img); - return NULL; - } + if (image == NULL) { + free(new_img); + return NULL; + } - new_img->image = image; - set_prm(new_img); - return new_img; + new_img->image = image; + set_prm(new_img); + return new_img; } -int fb_rotate_image(IMAGE *img, int angle) +int +fb_rotate_image(IMAGE * img, int angle) { - int orientation; + int orientation; - if(img == NULL) - return 1; + if (img == NULL) + return 1; - imlib_context_set_image(img->image); + imlib_context_set_image(img->image); - if(angle == 90){ - orientation = 1; - }else if(angle == -90){ - orientation = 3; - }else{ - return 1; - } + if (angle == 90) { + orientation = 1; + } + else if (angle == -90) { + orientation = 3; + } + else { + return 1; + } - imlib_image_orientate(orientation); - set_prm(img); - return 0; + imlib_image_orientate(orientation); + set_prm(img); + return 0; } -static void set_prm(IMAGE *img) +static void +set_prm(IMAGE * img) { - if(img == NULL) - return; + if (img == NULL) + return; - imlib_context_set_image(img->image); - img->data = imlib_image_get_data_for_reading_only(); - img->width = imlib_image_get_width(); - img->height = imlib_image_get_height(); + imlib_context_set_image(img->image); + img->data = imlib_image_get_data_for_reading_only(); + img->width = imlib_image_get_width(); + img->height = imlib_image_get_height(); } |