ofs | hex dump | ascii |
---|
0000 | 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | /******************************* |
0020 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
0040 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ***********./******************* |
0060 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
0080 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0a 20 20 20 20 20 20 20 20 | ***********************......... |
00a0 | 20 20 20 20 20 20 20 20 66 62 5f 67 64 6b 70 69 78 62 75 66 2e 63 20 30 2e 32 20 43 6f 70 79 72 | ........fb_gdkpixbuf.c.0.2.Copyr |
00c0 | 69 67 68 74 20 28 43 29 20 32 30 30 32 2c 20 68 69 74 6f 0a 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ight.(C).2002,.hito..*********** |
00e0 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | ******************************** |
0100 | 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2f | *******************************/ |
0120 | 0a 0a 23 69 6e 63 6c 75 64 65 20 22 66 62 2e 68 22 0a 23 69 6e 63 6c 75 64 65 20 22 66 62 5f 69 | ..#include."fb.h".#include."fb_i |
0140 | 6d 67 2e 68 22 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 73 65 74 5f 70 72 6d 28 49 4d 41 47 45 | mg.h"..static.void.set_prm(IMAGE |
0160 | 20 2a 69 6d 67 29 3b 0a 0a 49 4d 41 47 45 20 2a 66 62 5f 6c 6f 61 64 5f 69 6d 61 67 65 28 63 68 | .*img);..IMAGE.*fb_load_image(ch |
0180 | 61 72 20 2a 66 69 6c 65 6e 61 6d 65 2c 20 69 6e 74 20 77 2c 20 69 6e 74 20 68 29 0a 7b 0a 20 20 | ar.*filename,.int.w,.int.h).{... |
01a0 | 47 64 6b 50 69 78 62 75 66 20 2a 70 69 78 62 75 66 3b 0a 20 20 49 4d 41 47 45 20 2a 69 6d 67 3b | GdkPixbuf.*pixbuf;...IMAGE.*img; |
01c0 | 0a 0a 20 20 69 66 28 66 69 6c 65 6e 61 6d 65 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 72 65 74 | ....if(filename.==.NULL).....ret |
01e0 | 75 72 6e 20 4e 55 4c 4c 3b 0a 0a 20 20 69 6d 67 20 3d 20 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 | urn.NULL;....img.=.malloc(sizeof |
0200 | 28 2a 69 6d 67 29 29 3b 0a 20 20 69 66 28 69 6d 67 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 72 | (*img));...if(img.==.NULL).....r |
0220 | 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20 0a 20 20 70 69 78 62 75 66 20 3d 20 67 64 6b 5f 70 69 | eturn.NULL;......pixbuf.=.gdk_pi |
0240 | 78 62 75 66 5f 6e 65 77 5f 66 72 6f 6d 5f 66 69 6c 65 28 66 69 6c 65 6e 61 6d 65 29 3b 0a 20 20 | xbuf_new_from_file(filename);... |
0260 | 69 66 28 70 69 78 62 75 66 20 3d 3d 20 4e 55 4c 4c 29 7b 0a 20 20 20 20 66 72 65 65 28 69 6d 67 | if(pixbuf.==.NULL){.....free(img |
0280 | 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20 7d 0a 0a 20 20 69 6d 67 2d 3e | );.....return.NULL;...}....img-> |
02a0 | 70 69 78 62 75 66 20 3d 20 70 69 78 62 75 66 3b 0a 20 20 73 65 74 5f 70 72 6d 28 69 6d 67 29 3b | pixbuf.=.pixbuf;...set_prm(img); |
02c0 | 0a 0a 20 20 66 62 5f 72 65 73 69 7a 65 5f 69 6d 61 67 65 28 69 6d 67 2c 20 77 2c 20 68 29 3b 0a | ....fb_resize_image(img,.w,.h);. |
02e0 | 0a 20 20 72 65 74 75 72 6e 20 69 6d 67 3b 0a 7d 0a 0a 69 6e 74 20 66 62 5f 64 72 61 77 5f 69 6d | ...return.img;.}..int.fb_draw_im |
0300 | 61 67 65 28 49 4d 41 47 45 20 2a 69 6d 67 2c 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 69 6e | age(IMAGE.*img,.int.x,.int.y,.in |
0320 | 74 20 73 78 2c 20 69 6e 74 20 73 79 2c 20 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 | t.sx,.int.sy,.int.width,.int.hei |
0340 | 67 68 74 29 0a 7b 0a 20 20 69 6e 74 20 69 2c 20 6a 2c 20 72 2c 20 67 2c 20 62 2c 20 6f 66 66 73 | ght).{...int.i,.j,.r,.g,.b,.offs |
0360 | 65 74 2c 20 62 70 70 3b 0a 0a 20 20 69 66 28 69 6d 67 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 | et,.bpp;....if(img.==.NULL)..... |
0380 | 72 65 74 75 72 6e 20 31 3b 0a 0a 20 20 62 70 70 20 3d 20 69 6d 67 2d 3e 72 6f 77 73 74 72 69 64 | return.1;....bpp.=.img->rowstrid |
03a0 | 65 20 2f 20 69 6d 67 2d 3e 77 69 64 74 68 3b 0a 20 20 66 6f 72 28 6a 20 3d 20 73 79 3b 20 6a 20 | e./.img->width;...for(j.=.sy;.j. |
03c0 | 3c 20 73 79 20 2b 20 68 65 69 67 68 74 20 26 26 20 6a 20 3c 20 69 6d 67 2d 3e 68 65 69 67 68 74 | <.sy.+.height.&&.j.<.img->height |
03e0 | 3b 20 6a 2b 2b 29 7b 0a 20 20 20 20 6f 66 66 73 65 74 20 3d 20 6a 20 2a 20 69 6d 67 2d 3e 72 6f | ;.j++){.....offset.=.j.*.img->ro |
0400 | 77 73 74 72 69 64 65 20 2b 20 62 70 70 20 2a 20 73 78 3b 0a 20 20 20 20 66 6f 72 28 69 20 3d 20 | wstride.+.bpp.*.sx;.....for(i.=. |
0420 | 73 78 3b 20 69 20 3c 20 73 78 20 2b 20 77 69 64 74 68 20 26 26 20 69 20 3c 20 69 6d 67 2d 3e 77 | sx;.i.<.sx.+.width.&&.i.<.img->w |
0440 | 69 64 74 68 3b 20 69 2b 2b 2c 20 6f 66 66 73 65 74 20 2b 3d 20 62 70 70 29 7b 0a 20 20 20 20 20 | idth;.i++,.offset.+=.bpp){...... |
0460 | 20 72 20 3d 20 69 6d 67 2d 3e 70 69 78 65 6c 73 5b 6f 66 66 73 65 74 5d 3b 0a 20 20 20 20 20 20 | .r.=.img->pixels[offset];....... |
0480 | 67 20 3d 20 69 6d 67 2d 3e 70 69 78 65 6c 73 5b 6f 66 66 73 65 74 20 2b 20 31 5d 3b 0a 20 20 20 | g.=.img->pixels[offset.+.1];.... |
04a0 | 20 20 20 62 20 3d 20 69 6d 67 2d 3e 70 69 78 65 6c 73 5b 6f 66 66 73 65 74 20 2b 20 32 5d 3b 0a | ...b.=.img->pixels[offset.+.2];. |
04c0 | 20 20 20 20 20 20 69 66 28 69 6d 67 2d 3e 61 6c 70 68 61 20 26 26 20 69 6d 67 2d 3e 70 69 78 65 | ......if(img->alpha.&&.img->pixe |
04e0 | 6c 73 5b 6f 66 66 73 65 74 20 2b 20 33 5d 20 3d 3d 20 30 29 0a 09 66 62 5f 70 73 65 74 28 69 20 | ls[offset.+.3].==.0)..fb_pset(i. |
0500 | 2b 20 78 20 2d 20 73 78 2c 20 6a 20 2b 20 79 20 2d 20 73 79 2c 20 62 67 5f 72 2c 20 62 67 5f 67 | +.x.-.sx,.j.+.y.-.sy,.bg_r,.bg_g |
0520 | 2c 20 62 67 5f 62 29 3b 0a 20 20 20 20 20 20 65 6c 73 65 0a 09 66 62 5f 70 73 65 74 28 69 20 2b | ,.bg_b);.......else..fb_pset(i.+ |
0540 | 20 78 20 2d 20 73 78 2c 20 6a 20 2b 20 79 20 2d 20 73 79 2c 20 72 2c 20 67 2c 20 62 29 3b 0a 20 | .x.-.sx,.j.+.y.-.sy,.r,.g,.b);.. |
0560 | 20 20 20 7d 0a 20 20 7d 0a 20 20 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 69 6e 74 20 66 62 5f 72 | ...}...}...return.0;.}..int.fb_r |
0580 | 65 73 69 7a 65 5f 69 6d 61 67 65 28 49 4d 41 47 45 20 2a 69 6d 67 2c 20 69 6e 74 20 77 69 64 74 | esize_image(IMAGE.*img,.int.widt |
05a0 | 68 2c 20 69 6e 74 20 68 65 69 67 68 74 29 0a 7b 0a 20 20 47 64 6b 50 69 78 62 75 66 20 2a 70 69 | h,.int.height).{...GdkPixbuf.*pi |
05c0 | 78 62 75 66 3b 0a 20 20 69 66 28 77 69 64 74 68 20 3c 20 31 20 7c 7c 20 68 65 69 67 68 74 20 3c | xbuf;...if(width.<.1.||.height.< |
05e0 | 20 31 20 7c 7c 20 69 6d 67 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 72 65 74 75 72 6e 20 31 3b | .1.||.img.==.NULL).....return.1; |
0600 | 0a 0a 20 20 69 66 28 77 69 64 74 68 20 3d 3d 20 69 6d 67 2d 3e 77 69 64 74 68 20 26 26 20 68 65 | ....if(width.==.img->width.&&.he |
0620 | 69 67 68 74 20 3d 3d 20 69 6d 67 2d 3e 68 65 69 67 68 74 29 0a 20 20 20 20 72 65 74 75 72 6e 20 | ight.==.img->height).....return. |
0640 | 30 3b 0a 0a 20 20 70 69 78 62 75 66 20 3d 20 67 64 6b 5f 70 69 78 62 75 66 5f 73 63 61 6c 65 5f | 0;....pixbuf.=.gdk_pixbuf_scale_ |
0660 | 73 69 6d 70 6c 65 28 69 6d 67 2d 3e 70 69 78 62 75 66 2c 20 77 69 64 74 68 2c 20 68 65 69 67 68 | simple(img->pixbuf,.width,.heigh |
0680 | 74 2c 20 47 44 4b 5f 49 4e 54 45 52 50 5f 48 59 50 45 52 29 3b 0a 20 20 69 66 28 70 69 78 62 75 | t,.GDK_INTERP_HYPER);...if(pixbu |
06a0 | 66 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0a 20 20 67 64 6b 5f 70 | f.==.NULL).....return.1;...gdk_p |
06c0 | 69 78 62 75 66 5f 66 69 6e 61 6c 69 7a 65 28 69 6d 67 2d 3e 70 69 78 62 75 66 29 3b 0a 0a 20 20 | ixbuf_finalize(img->pixbuf);.... |
06e0 | 69 6d 67 2d 3e 70 69 78 62 75 66 20 3d 20 70 69 78 62 75 66 3b 0a 20 20 73 65 74 5f 70 72 6d 28 | img->pixbuf.=.pixbuf;...set_prm( |
0700 | 69 6d 67 29 3b 0a 20 20 72 65 74 75 72 6e 20 30 3b 0a 7d 0a 0a 76 6f 69 64 20 66 62 5f 66 72 65 | img);...return.0;.}..void.fb_fre |
0720 | 65 5f 69 6d 61 67 65 28 49 4d 41 47 45 20 2a 69 6d 67 29 0a 7b 0a 20 20 69 66 28 69 6d 67 20 3d | e_image(IMAGE.*img).{...if(img.= |
0740 | 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a 0a 20 20 67 64 6b 5f 70 69 78 62 75 | =.NULL).....return;....gdk_pixbu |
0760 | 66 5f 66 69 6e 61 6c 69 7a 65 28 69 6d 67 2d 3e 70 69 78 62 75 66 29 3b 0a 20 20 66 72 65 65 28 | f_finalize(img->pixbuf);...free( |
0780 | 69 6d 67 29 3b 0a 7d 0a 0a 49 4d 41 47 45 20 2a 66 62 5f 64 75 70 5f 69 6d 61 67 65 28 49 4d 41 | img);.}..IMAGE.*fb_dup_image(IMA |
07a0 | 47 45 20 2a 69 6d 67 29 0a 7b 0a 20 20 47 64 6b 50 69 78 62 75 66 20 2a 70 69 78 62 75 66 3b 0a | GE.*img).{...GdkPixbuf.*pixbuf;. |
07c0 | 20 20 49 4d 41 47 45 20 2a 6e 65 77 5f 69 6d 67 3b 0a 0a 20 20 69 66 28 69 6d 67 20 3d 3d 20 4e | ..IMAGE.*new_img;....if(img.==.N |
07e0 | 55 4c 4c 29 0a 20 20 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 0a 20 20 6e 65 77 5f 69 6d 67 | ULL).....return.NULL;....new_img |
0800 | 20 3d 20 6d 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 2a 69 6d 67 29 29 3b 0a 20 20 69 66 28 6e 65 | .=.malloc(sizeof(*img));...if(ne |
0820 | 77 5f 69 6d 67 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a | w_img.==.NULL).....return.NULL;. |
0840 | 0a 20 20 70 69 78 62 75 66 20 3d 20 67 64 6b 5f 70 69 78 62 75 66 5f 63 6f 70 79 28 69 6d 67 2d | ...pixbuf.=.gdk_pixbuf_copy(img- |
0860 | 3e 70 69 78 62 75 66 29 3b 0a 20 20 69 66 28 70 69 78 62 75 66 20 3d 3d 20 4e 55 4c 4c 29 7b 0a | >pixbuf);...if(pixbuf.==.NULL){. |
0880 | 20 20 20 20 66 72 65 65 28 6e 65 77 5f 69 6d 67 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 4e 55 | ....free(new_img);.....return.NU |
08a0 | 4c 4c 3b 0a 20 20 7d 0a 0a 20 20 6e 65 77 5f 69 6d 67 2d 3e 70 69 78 62 75 66 20 3d 20 70 69 78 | LL;...}....new_img->pixbuf.=.pix |
08c0 | 62 75 66 3b 0a 20 20 73 65 74 5f 70 72 6d 28 6e 65 77 5f 69 6d 67 29 3b 0a 20 20 72 65 74 75 72 | buf;...set_prm(new_img);...retur |
08e0 | 6e 20 6e 65 77 5f 69 6d 67 3b 0a 7d 0a 0a 69 6e 74 20 66 62 5f 72 6f 74 61 74 65 5f 69 6d 61 67 | n.new_img;.}..int.fb_rotate_imag |
0900 | 65 28 49 4d 41 47 45 20 2a 69 6d 67 2c 20 69 6e 74 20 61 6e 67 6c 65 29 0a 7b 0a 20 20 72 65 74 | e(IMAGE.*img,.int.angle).{...ret |
0920 | 75 72 6e 20 31 3b 0a 7d 0a 0a 73 74 61 74 69 63 20 76 6f 69 64 20 73 65 74 5f 70 72 6d 28 49 4d | urn.1;.}..static.void.set_prm(IM |
0940 | 41 47 45 20 2a 69 6d 67 29 0a 7b 0a 20 20 47 64 6b 50 69 78 62 75 66 20 2a 70 69 78 62 75 66 3b | AGE.*img).{...GdkPixbuf.*pixbuf; |
0960 | 0a 0a 20 20 69 66 28 69 6d 67 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a | ....if(img.==.NULL).....return;. |
0980 | 20 20 70 69 78 62 75 66 20 3d 20 69 6d 67 2d 3e 70 69 78 62 75 66 3b 0a 0a 20 20 69 6d 67 2d 3e | ..pixbuf.=.img->pixbuf;....img-> |
09a0 | 70 69 78 65 6c 73 20 3d 20 67 64 6b 5f 70 69 78 62 75 66 5f 67 65 74 5f 70 69 78 65 6c 73 28 70 | pixels.=.gdk_pixbuf_get_pixels(p |
09c0 | 69 78 62 75 66 29 3b 0a 20 20 69 6d 67 2d 3e 77 69 64 74 68 20 20 3d 20 67 64 6b 5f 70 69 78 62 | ixbuf);...img->width..=.gdk_pixb |
09e0 | 75 66 5f 67 65 74 5f 77 69 64 74 68 28 70 69 78 62 75 66 29 3b 0a 20 20 69 6d 67 2d 3e 68 65 69 | uf_get_width(pixbuf);...img->hei |
0a00 | 67 68 74 20 3d 20 67 64 6b 5f 70 69 78 62 75 66 5f 67 65 74 5f 68 65 69 67 68 74 28 70 69 78 62 | ght.=.gdk_pixbuf_get_height(pixb |
0a20 | 75 66 29 3b 0a 20 20 69 6d 67 2d 3e 61 6c 70 68 61 20 20 3d 20 67 64 6b 5f 70 69 78 62 75 66 5f | uf);...img->alpha..=.gdk_pixbuf_ |
0a40 | 67 65 74 5f 68 61 73 5f 61 6c 70 68 61 28 70 69 78 62 75 66 29 3b 0a 20 20 69 6d 67 2d 3e 72 6f | get_has_alpha(pixbuf);...img->ro |
0a60 | 77 73 74 72 69 64 65 20 3d 20 67 64 6b 5f 70 69 78 62 75 66 5f 67 65 74 5f 72 6f 77 73 74 72 69 | wstride.=.gdk_pixbuf_get_rowstri |
0a80 | 64 65 28 70 69 78 62 75 66 29 3b 0a 7d 0a 00 0a | de(pixbuf);.}... |