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 69 6d 6c 69 62 32 2e 63 20 30 2e 32 20 43 6f 70 79 72 69 67 68 | ........fb_imlib2.c.0.2.Copyrigh |
00c0 | 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 2a 2a 2a | t.(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 2f 0a 0a 23 | ****************************/..# |
0120 | 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 6d 67 2e | include."fb.h".#include."fb_img. |
0140 | 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 20 2a 69 | h"..static.void.set_prm(IMAGE.*i |
0160 | 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 61 72 20 | mg);..IMAGE.*fb_load_image(char. |
0180 | 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 49 6d 6c | *filename,.int.w,.int.h).{...Iml |
01a0 | 69 62 5f 49 6d 61 67 65 20 69 6d 61 67 65 3b 0a 20 20 49 4d 41 47 45 20 2a 69 6d 67 3b 0a 0a 20 | ib_Image.image;...IMAGE.*img;... |
01c0 | 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 75 72 6e | .if(filename.==.NULL).....return |
01e0 | 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 28 2a 69 | .NULL;....img.=.malloc(sizeof(*i |
0200 | 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 65 74 75 | mg));...if(img.==.NULL).....retu |
0220 | 72 6e 20 4e 55 4c 4c 3b 0a 0a 20 20 69 6d 61 67 65 20 3d 20 69 6d 6c 69 62 5f 6c 6f 61 64 5f 69 | rn.NULL;....image.=.imlib_load_i |
0240 | 6d 61 67 65 28 66 69 6c 65 6e 61 6d 65 29 3b 0a 20 20 69 66 28 69 6d 61 67 65 20 3d 3d 20 4e 55 | mage(filename);...if(image.==.NU |
0260 | 4c 4c 29 7b 0a 20 20 20 20 66 72 65 65 28 69 6d 67 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 4e | LL){.....free(img);.....return.N |
0280 | 55 4c 4c 3b 0a 20 20 7d 0a 0a 20 20 69 6d 6c 69 62 5f 63 6f 6e 74 65 78 74 5f 73 65 74 5f 69 6d | ULL;...}....imlib_context_set_im |
02a0 | 61 67 65 28 69 6d 61 67 65 29 3b 0a 0a 20 20 69 6d 67 2d 3e 69 6d 61 67 65 20 3d 20 69 6d 61 67 | age(image);....img->image.=.imag |
02c0 | 65 3b 0a 20 20 73 65 74 5f 70 72 6d 28 69 6d 67 29 3b 0a 0a 20 20 66 62 5f 72 65 73 69 7a 65 5f | e;...set_prm(img);....fb_resize_ |
02e0 | 69 6d 61 67 65 28 69 6d 67 2c 20 77 2c 20 68 29 3b 0a 0a 20 20 72 65 74 75 72 6e 20 69 6d 67 3b | image(img,.w,.h);....return.img; |
0300 | 0a 7d 0a 0a 69 6e 74 20 66 62 5f 64 72 61 77 5f 69 6d 61 67 65 28 49 4d 41 47 45 20 2a 69 6d 67 | .}..int.fb_draw_image(IMAGE.*img |
0320 | 2c 20 69 6e 74 20 78 2c 20 69 6e 74 20 79 2c 20 69 6e 74 20 73 78 2c 20 69 6e 74 20 73 79 2c 20 | ,.int.x,.int.y,.int.sx,.int.sy,. |
0340 | 69 6e 74 20 77 69 64 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 29 0a 7b 0a 20 20 69 6e 74 20 69 | int.width,.int.height).{...int.i |
0360 | 2c 20 6a 2c 20 72 2c 20 67 2c 20 62 2c 20 61 20 3d 20 30 2c 20 6f 66 66 73 65 74 3b 0a 0a 20 20 | ,.j,.r,.g,.b,.a.=.0,.offset;.... |
0380 | 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 20 31 3b 0a 0a 20 | if(img.==.NULL).....return.1;... |
03a0 | 20 66 6f 72 28 6a 20 3d 20 73 79 3b 20 6a 20 3c 20 73 79 20 2b 20 68 65 69 67 68 74 20 26 26 20 | .for(j.=.sy;.j.<.sy.+.height.&&. |
03c0 | 6a 20 3c 20 69 6d 67 2d 3e 68 65 69 67 68 74 3b 20 6a 2b 2b 29 7b 0a 20 20 20 20 6f 66 66 73 65 | j.<.img->height;.j++){.....offse |
03e0 | 74 20 3d 20 6a 20 2a 20 69 6d 67 2d 3e 77 69 64 74 68 3b 0a 20 20 20 20 66 6f 72 28 69 20 3d 20 | t.=.j.*.img->width;.....for(i.=. |
0400 | 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 |
0420 | 69 64 74 68 3b 20 69 2b 2b 29 7b 0a 20 20 20 20 20 20 61 20 3d 20 28 69 6d 67 2d 3e 64 61 74 61 | idth;.i++){.......a.=.(img->data |
0440 | 5b 6f 66 66 73 65 74 20 2b 20 69 5d 20 3e 3e 20 32 34 29 20 26 20 30 78 30 30 30 30 30 30 66 66 | [offset.+.i].>>.24).&.0x000000ff |
0460 | 3b 0a 20 20 20 20 20 20 72 20 3d 20 28 69 6d 67 2d 3e 64 61 74 61 5b 6f 66 66 73 65 74 20 2b 20 | ;.......r.=.(img->data[offset.+. |
0480 | 69 5d 20 3e 3e 20 31 36 29 20 26 20 30 78 30 30 30 30 30 30 66 66 3b 0a 20 20 20 20 20 20 67 20 | i].>>.16).&.0x000000ff;.......g. |
04a0 | 3d 20 28 69 6d 67 2d 3e 64 61 74 61 5b 6f 66 66 73 65 74 20 2b 20 69 5d 20 3e 3e 20 20 38 29 20 | =.(img->data[offset.+.i].>>..8). |
04c0 | 26 20 30 78 30 30 30 30 30 30 66 66 3b 0a 20 20 20 20 20 20 62 20 3d 20 28 69 6d 67 2d 3e 64 61 | &.0x000000ff;.......b.=.(img->da |
04e0 | 74 61 5b 6f 66 66 73 65 74 20 2b 20 69 5d 20 20 20 20 20 20 29 20 26 20 30 78 30 30 30 30 30 30 | ta[offset.+.i]......).&.0x000000 |
0500 | 66 66 3b 0a 0a 20 20 20 20 20 20 69 66 28 61 20 3d 3d 20 30 29 0a 09 66 62 5f 70 73 65 74 28 69 | ff;........if(a.==.0)..fb_pset(i |
0520 | 20 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 | .+.x.-.sx,.j.+.y.-.sy,.bg_r,.bg_ |
0540 | 67 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 | g,.bg_b);.......else..fb_pset(i. |
0560 | 2b 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 | +.x.-.sx,.j.+.y.-.sy,.r,.g,.b);. |
0580 | 20 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 | ....}...}...return.0;.}..int.fb_ |
05a0 | 72 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 | resize_image(IMAGE.*img,.int.wid |
05c0 | 74 68 2c 20 69 6e 74 20 68 65 69 67 68 74 29 0a 7b 0a 20 20 49 6d 6c 69 62 5f 49 6d 61 67 65 20 | th,.int.height).{...Imlib_Image. |
05e0 | 69 6d 61 67 65 3b 0a 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 | image;....if(width.<.1.||.height |
0600 | 20 3c 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 | .<.1.||.img.==.NULL).....return. |
0620 | 31 3b 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 | 1;....if(width.==.img->width.&&. |
0640 | 68 65 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 | height.==.img->height).....retur |
0660 | 6e 20 30 3b 0a 0a 20 20 69 6d 61 67 65 20 3d 20 69 6d 6c 69 62 5f 63 72 65 61 74 65 5f 63 72 6f | n.0;....image.=.imlib_create_cro |
0680 | 70 70 65 64 5f 73 63 61 6c 65 64 5f 69 6d 61 67 65 28 30 2c 20 30 2c 20 69 6d 67 2d 3e 77 69 64 | pped_scaled_image(0,.0,.img->wid |
06a0 | 74 68 2c 20 69 6d 67 2d 3e 68 65 69 67 68 74 2c 20 77 69 64 74 68 2c 20 68 65 69 67 68 74 29 3b | th,.img->height,.width,.height); |
06c0 | 0a 20 20 69 66 28 69 6d 61 67 65 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 72 65 74 75 72 6e 20 | ...if(image.==.NULL).....return. |
06e0 | 31 3b 0a 0a 20 20 69 6d 6c 69 62 5f 63 6f 6e 74 65 78 74 5f 73 65 74 5f 69 6d 61 67 65 28 69 6d | 1;....imlib_context_set_image(im |
0700 | 67 2d 3e 69 6d 61 67 65 29 3b 0a 20 20 69 6d 6c 69 62 5f 66 72 65 65 5f 69 6d 61 67 65 28 29 3b | g->image);...imlib_free_image(); |
0720 | 0a 0a 20 20 69 6d 67 2d 3e 69 6d 61 67 65 20 3d 20 69 6d 61 67 65 3b 0a 20 20 73 65 74 5f 70 72 | ....img->image.=.image;...set_pr |
0740 | 6d 28 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 | m(img);...return.0;.}..void.fb_f |
0760 | 72 65 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 | ree_image(IMAGE.*img).{...if(img |
0780 | 20 3d 3d 20 4e 55 4c 4c 29 0a 20 20 20 20 72 65 74 75 72 6e 3b 0a 0a 20 20 69 6d 6c 69 62 5f 63 | .==.NULL).....return;....imlib_c |
07a0 | 6f 6e 74 65 78 74 5f 73 65 74 5f 69 6d 61 67 65 28 69 6d 67 2d 3e 69 6d 61 67 65 29 3b 0a 20 20 | ontext_set_image(img->image);... |
07c0 | 69 6d 6c 69 62 5f 66 72 65 65 5f 69 6d 61 67 65 28 29 3b 0a 20 20 66 72 65 65 28 69 6d 67 29 3b | imlib_free_image();...free(img); |
07e0 | 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 47 45 20 2a 69 | .}..IMAGE.*fb_dup_image(IMAGE.*i |
0800 | 6d 67 29 0a 7b 0a 20 20 49 6d 6c 69 62 5f 49 6d 61 67 65 20 69 6d 61 67 65 3b 0a 20 20 49 4d 41 | mg).{...Imlib_Image.image;...IMA |
0820 | 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 55 4c 4c 29 0a | GE.*new_img;....if(img.==.NULL). |
0840 | 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 20 3d 20 6d 61 | ....return.NULL;....new_img.=.ma |
0860 | 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 77 5f 69 6d 67 | lloc(sizeof(*img));...if(new_img |
0880 | 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 0a 20 20 69 6d | .==.NULL).....return.NULL;....im |
08a0 | 6c 69 62 5f 63 6f 6e 74 65 78 74 5f 73 65 74 5f 69 6d 61 67 65 28 69 6d 67 2d 3e 69 6d 61 67 65 | lib_context_set_image(img->image |
08c0 | 29 3b 0a 20 20 69 6d 61 67 65 20 3d 20 69 6d 6c 69 62 5f 63 6c 6f 6e 65 5f 69 6d 61 67 65 28 29 | );...image.=.imlib_clone_image() |
08e0 | 3b 0a 0a 20 20 69 66 28 69 6d 61 67 65 20 3d 3d 20 4e 55 4c 4c 29 7b 0a 20 20 20 20 66 72 65 65 | ;....if(image.==.NULL){.....free |
0900 | 28 6e 65 77 5f 69 6d 67 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 4e 55 4c 4c 3b 0a 20 20 7d 0a | (new_img);.....return.NULL;...}. |
0920 | 0a 20 20 6e 65 77 5f 69 6d 67 2d 3e 69 6d 61 67 65 20 3d 20 69 6d 61 67 65 3b 0a 20 20 73 65 74 | ...new_img->image.=.image;...set |
0940 | 5f 70 72 6d 28 6e 65 77 5f 69 6d 67 29 3b 0a 20 20 72 65 74 75 72 6e 20 6e 65 77 5f 69 6d 67 3b | _prm(new_img);...return.new_img; |
0960 | 0a 7d 0a 0a 69 6e 74 20 66 62 5f 72 6f 74 61 74 65 5f 69 6d 61 67 65 28 49 4d 41 47 45 20 2a 69 | .}..int.fb_rotate_image(IMAGE.*i |
0980 | 6d 67 2c 20 69 6e 74 20 61 6e 67 6c 65 29 0a 7b 0a 20 20 69 6e 74 20 6f 72 69 65 6e 74 61 74 69 | mg,.int.angle).{...int.orientati |
09a0 | 6f 6e 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 72 65 74 75 72 | on;....if(img.==.NULL).....retur |
09c0 | 6e 20 31 3b 0a 0a 20 20 69 6d 6c 69 62 5f 63 6f 6e 74 65 78 74 5f 73 65 74 5f 69 6d 61 67 65 28 | n.1;....imlib_context_set_image( |
09e0 | 69 6d 67 2d 3e 69 6d 61 67 65 29 3b 0a 0a 20 20 69 66 28 61 6e 67 6c 65 20 3d 3d 20 39 30 29 7b | img->image);....if(angle.==.90){ |
0a00 | 0a 20 20 20 20 6f 72 69 65 6e 74 61 74 69 6f 6e 20 3d 20 31 3b 0a 20 20 7d 65 6c 73 65 20 69 66 | .....orientation.=.1;...}else.if |
0a20 | 28 61 6e 67 6c 65 20 3d 3d 20 2d 39 30 29 7b 0a 20 20 20 20 6f 72 69 65 6e 74 61 74 69 6f 6e 20 | (angle.==.-90){.....orientation. |
0a40 | 3d 20 33 3b 0a 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0a 20 20 7d 0a | =.3;...}else{.....return.1;...}. |
0a60 | 0a 20 20 69 6d 6c 69 62 5f 69 6d 61 67 65 5f 6f 72 69 65 6e 74 61 74 65 28 6f 72 69 65 6e 74 61 | ...imlib_image_orientate(orienta |
0a80 | 74 69 6f 6e 29 3b 0a 20 20 73 65 74 5f 70 72 6d 28 69 6d 67 29 3b 0a 20 20 72 65 74 75 72 6e 20 | tion);...set_prm(img);...return. |
0aa0 | 30 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 41 47 45 20 | 0;.}..static.void.set_prm(IMAGE. |
0ac0 | 2a 69 6d 67 29 0a 7b 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 | *img).{...if(img.==.NULL).....re |
0ae0 | 74 75 72 6e 3b 0a 0a 20 20 69 6d 6c 69 62 5f 63 6f 6e 74 65 78 74 5f 73 65 74 5f 69 6d 61 67 65 | turn;....imlib_context_set_image |
0b00 | 28 69 6d 67 2d 3e 69 6d 61 67 65 29 3b 0a 20 20 69 6d 67 2d 3e 64 61 74 61 20 20 20 3d 20 69 6d | (img->image);...img->data...=.im |
0b20 | 6c 69 62 5f 69 6d 61 67 65 5f 67 65 74 5f 64 61 74 61 5f 66 6f 72 5f 72 65 61 64 69 6e 67 5f 6f | lib_image_get_data_for_reading_o |
0b40 | 6e 6c 79 28 29 3b 0a 20 20 69 6d 67 2d 3e 77 69 64 74 68 20 20 3d 20 69 6d 6c 69 62 5f 69 6d 61 | nly();...img->width..=.imlib_ima |
0b60 | 67 65 5f 67 65 74 5f 77 69 64 74 68 28 29 3b 0a 20 20 69 6d 67 2d 3e 68 65 69 67 68 74 20 3d 20 | ge_get_width();...img->height.=. |
0b80 | 69 6d 6c 69 62 5f 69 6d 61 67 65 5f 67 65 74 5f 68 65 69 67 68 74 28 29 3b 0a 7d 0a 00 0a | imlib_image_get_height();.}... |