diff options
Diffstat (limited to '')
-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 | ||||
-rw-r--r-- | w3mimg/w3mimg.c | 7 | ||||
-rw-r--r-- | w3mimg/w3mimg.h | 32 | ||||
-rw-r--r-- | w3mimg/x11/x11_w3mimg.c | 53 |
7 files changed, 830 insertions, 717 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(); } diff --git a/w3mimg/w3mimg.c b/w3mimg/w3mimg.c index a898187..540c679 100644 --- a/w3mimg/w3mimg.c +++ b/w3mimg/w3mimg.c @@ -1,8 +1,10 @@ -/* $Id: w3mimg.c,v 1.1 2002/07/18 06:07:39 ukai Exp $ */ +/* $Id: w3mimg.c,v 1.2 2002/07/18 15:14:36 ukai Exp $ */ #include "w3mimg/w3mimg.h" -w3mimg_op *w3mimg_open() { +w3mimg_op * +w3mimg_open() +{ w3mimg_op *w_op = NULL; #ifdef USE_W3MIMG_X11 if (w_op == NULL) @@ -14,4 +16,3 @@ w3mimg_op *w3mimg_open() { #endif return w_op; } - diff --git a/w3mimg/w3mimg.h b/w3mimg/w3mimg.h index eb89eda..998fdc2 100644 --- a/w3mimg/w3mimg.h +++ b/w3mimg/w3mimg.h @@ -1,4 +1,4 @@ -/* $Id: w3mimg.h,v 1.2 2002/07/18 06:07:25 ukai Exp $ */ +/* $Id: w3mimg.h,v 1.3 2002/07/18 15:14:51 ukai Exp $ */ #include "config.h" #ifdef USE_W3MIMG_FB @@ -7,28 +7,28 @@ #endif typedef struct { - void *pixmap; /* driver specific */ + void *pixmap; /* driver specific */ int width; int height; } W3MImage; typedef struct _w3mimg_op { - void *priv; /* driver specific data */ - int width, height; /* window width, height */ - int offset_x, offset_y; /* offset */ + void *priv; /* driver specific data */ + int width, height; /* window width, height */ + int offset_x, offset_y; /* offset */ - int (*init)(struct _w3mimg_op *self); - int (*finish)(struct _w3mimg_op *self); - int (*active)(struct _w3mimg_op *self); - void (*set_background)(struct _w3mimg_op *self, char *background); - void (*sync)(struct _w3mimg_op *self); - void (*close)(struct _w3mimg_op *self); + int (*init) (struct _w3mimg_op * self); + int (*finish) (struct _w3mimg_op * self); + int (*active) (struct _w3mimg_op * self); + void (*set_background) (struct _w3mimg_op * self, char *background); + void (*sync) (struct _w3mimg_op * self); + void (*close) (struct _w3mimg_op * self); - int (*load_image)(struct _w3mimg_op *self, W3MImage *img, char *fname, - int w, int h); - int (*show_image)(struct _w3mimg_op *self, W3MImage *img, - int sx, int sy, int sw, int sh, int x, int y); - void (*free_image)(struct _w3mimg_op *self, W3MImage *img); + int (*load_image) (struct _w3mimg_op * self, W3MImage * img, char *fname, + int w, int h); + int (*show_image) (struct _w3mimg_op * self, W3MImage * img, + int sx, int sy, int sw, int sh, int x, int y); + void (*free_image) (struct _w3mimg_op * self, W3MImage * img); } w3mimg_op; #ifdef USE_W3MIMG_X11 diff --git a/w3mimg/x11/x11_w3mimg.c b/w3mimg/x11/x11_w3mimg.c index bb142a1..9e8c601 100644 --- a/w3mimg/x11/x11_w3mimg.c +++ b/w3mimg/x11/x11_w3mimg.c @@ -1,4 +1,4 @@ -/* $Id: x11_w3mimg.c,v 1.3 2002/07/18 14:32:12 ukai Exp $ */ +/* $Id: x11_w3mimg.c,v 1.4 2002/07/18 15:15:32 ukai Exp $ */ #include <stdio.h> #include <stdlib.h> #include <ctype.h> @@ -19,7 +19,7 @@ struct x11_info { }; static int -x11_init(w3mimg_op *self) +x11_init(w3mimg_op * self) { struct x11_info *xi; if (self == NULL) @@ -27,21 +27,21 @@ x11_init(w3mimg_op *self) xi = (struct x11_info *)self->priv; if (xi == NULL) return 0; - if (! xi->id) { + if (!xi->id) { xi->id = Imlib_init(xi->display); - if (! xi->id) + if (!xi->id) return 0; } - if (! xi->imageGC) { + if (!xi->imageGC) { xi->imageGC = XCreateGC(xi->display, xi->parent, 0, NULL); - if (! xi->imageGC) + if (!xi->imageGC) return 0; } return 1; } static int -x11_finish(w3mimg_op *self) +x11_finish(w3mimg_op * self) { struct x11_info *xi; if (self == NULL) @@ -57,7 +57,7 @@ x11_finish(w3mimg_op *self) } static int -x11_active(w3mimg_op *self) +x11_active(w3mimg_op * self) { struct x11_info *xi; if (self == NULL) @@ -65,13 +65,13 @@ x11_active(w3mimg_op *self) xi = (struct x11_info *)self->priv; if (xi == NULL) return 0; - if (! xi->imageGC) + if (!xi->imageGC) return 0; return 1; } static void -x11_set_background(w3mimg_op *self, char *background) +x11_set_background(w3mimg_op * self, char *background) { XColor screen_def, exact_def; struct x11_info *xi; @@ -81,7 +81,7 @@ x11_set_background(w3mimg_op *self, char *background) if (xi == NULL) return; - if (background && + if (background && XAllocNamedColor(xi->display, DefaultColormap(xi->display, 0), background, &screen_def, &exact_def)) xi->background_pixel = screen_def.pixel; @@ -90,11 +90,11 @@ x11_set_background(w3mimg_op *self, char *background) GC gc; XImage *i; - p = XCreatePixmap(xi->display, xi->window, 1, 1, + p = XCreatePixmap(xi->display, xi->window, 1, 1, DefaultDepth(xi->display, 0)); gc = XCreateGC(xi->display, xi->window, 0, NULL); if (!p || !gc) - exit(1); /* XXX */ + exit(1); /* XXX */ XCopyArea(xi->display, xi->window, p, gc, (self->offset_x >= 1) ? (self->offset_x - 1) : 0, (self->offset_y >= 1) ? (self->offset_y - 1) : 0, @@ -110,7 +110,7 @@ x11_set_background(w3mimg_op *self, char *background) } static void -x11_sync(w3mimg_op *self) +x11_sync(w3mimg_op * self) { struct x11_info *xi; if (self == NULL) @@ -122,13 +122,13 @@ x11_sync(w3mimg_op *self) } static void -x11_close(w3mimg_op *self) +x11_close(w3mimg_op * self) { /* XCloseDisplay(xi->display); */ } static int -x11_load_image(w3mimg_op *self, W3MImage *img, char *fname, int w, int h) +x11_load_image(w3mimg_op * self, W3MImage * img, char *fname, int w, int h) { struct x11_info *xi; ImlibImage *im; @@ -148,11 +148,11 @@ x11_load_image(w3mimg_op *self, W3MImage *img, char *fname, int w, int h) h = im->rgb_height; img->pixmap = (void *)XCreatePixmap(xi->display, xi->parent, w, h, DefaultDepth(xi->display, 0)); - if (! img->pixmap) + if (!img->pixmap) return 0; XSetForeground(xi->display, xi->imageGC, xi->background_pixel); - XFillRectangle(xi->display, (Pixmap)img->pixmap, xi->imageGC, 0, 0, w, h); - Imlib_paste_image(xi->id, im, (Pixmap)img->pixmap, 0, 0, w, h); + XFillRectangle(xi->display, (Pixmap) img->pixmap, xi->imageGC, 0, 0, w, h); + Imlib_paste_image(xi->id, im, (Pixmap) img->pixmap, 0, 0, w, h); Imlib_kill_image(xi->id, im); img->width = w; img->height = h; @@ -160,8 +160,8 @@ x11_load_image(w3mimg_op *self, W3MImage *img, char *fname, int w, int h) } static int -x11_show_image(w3mimg_op *self, W3MImage *img, int sx, int sy, int sw, int sh, - int x, int y) +x11_show_image(w3mimg_op * self, W3MImage * img, int sx, int sy, int sw, + int sh, int x, int y) { struct x11_info *xi; if (self == NULL) @@ -170,16 +170,15 @@ x11_show_image(w3mimg_op *self, W3MImage *img, int sx, int sy, int sw, int sh, if (xi == NULL) return 0; - XCopyArea(xi->display, (Pixmap)img->pixmap, xi->window, xi->imageGC, - sx, sy, + XCopyArea(xi->display, (Pixmap) img->pixmap, xi->window, xi->imageGC, + sx, sy, (sw ? sw : img->width), - (sh ? sh : img->height), - x + self->offset_x, y + self->offset_y); + (sh ? sh : img->height), x + self->offset_x, y + self->offset_y); return 1; } static void -x11_free_image(w3mimg_op *self, W3MImage *img) +x11_free_image(w3mimg_op * self, W3MImage * img) { struct x11_info *xi; if (self == NULL) @@ -188,7 +187,7 @@ x11_free_image(w3mimg_op *self, W3MImage *img) if (xi == NULL) return; if (img && img->pixmap) { - XFreePixmap(xi->display, (Pixmap)img->pixmap); + XFreePixmap(xi->display, (Pixmap) img->pixmap); img->pixmap = NULL; img->width = 0; img->height = 0; |