Mercurial > MadButterfly
annotate src/img_ldr_imlib2.c @ 1395:a768d74e5f49
Fix the svg:use. For a svg:use, it is a group which include the content it reference. It means that we can not tween it to its origin object directly. Instead, we need to ungroup it and then use the result matrix to generate the tweened transformation matrix. Therefore, we need to concate its matrix to the referenced object.
Ad center object when the bbox-x is not available.
author | wycc |
---|---|
date | Sat, 02 Apr 2011 05:36:36 +0800 |
parents | 1c64a9cec2f2 |
children |
rev | line source |
---|---|
1067
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
1 // -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 4; -*- |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
2 // vim: sw=4:ts=8:sts=4 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
3 #include <stdio.h> |
1106
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
4 #include <stdint.h> |
1067
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
5 #include <string.h> |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
6 #include <Imlib2.h> |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
7 #include "mb_graph_engine.h" |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
8 #include "mb_tools.h" |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
9 #include "mb_paint.h" |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
10 #include "mb_img_ldr.h" |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
11 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
12 /*! \brief Simple image loader. |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
13 * |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
14 */ |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
15 struct _simple_mb_img_ldr { |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
16 mb_img_ldr_t ldr; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
17 const char *repo; /*!< \brief The directory of repository. */ |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
18 }; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
19 typedef struct _simple_mb_img_ldr simple_mb_img_ldr_t; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
20 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
21 struct _simple_mb_img_data { |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
22 mb_img_data_t img; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
23 }; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
24 typedef struct _simple_mb_img_data simple_mb_img_data_t; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
25 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
26 static void simple_mb_img_ldr_img_free(mb_img_data_t *img); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
27 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
28 static |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
29 mb_img_data_t *simple_mb_img_ldr_load(mb_img_ldr_t *ldr, const char *img_id) { |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
30 simple_mb_img_ldr_t *sldr = (simple_mb_img_ldr_t *)ldr; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
31 simple_mb_img_data_t *img; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
32 Imlib_Image img_hdl; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
33 int w, h; |
1106
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
34 int i, j, pos; |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
35 uint32_t alpha; |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
36 uint32_t value; |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
37 uint32_t *data; |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
38 uint32_t *premultiple_data; |
1067
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
39 char *fname; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
40 int sz; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
41 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
42 sz = strlen(sldr->repo); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
43 sz += strlen(img_id); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
44 fname = (char *)malloc(sz + 2); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
45 if (img_id[0] != '/') |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
46 strcpy(fname, sldr->repo); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
47 else |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
48 fname[0] = 0; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
49 strcat(fname, img_id); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
50 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
51 img_hdl = imlib_load_image(fname); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
52 if(!img_hdl) |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
53 return NULL; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
54 imlib_context_set_image(img_hdl); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
55 w = imlib_image_get_width(); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
56 h = imlib_image_get_height(); |
1106
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
57 data = (uint32_t *)imlib_image_get_data_for_reading_only(); |
1067
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
58 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
59 img = O_ALLOC(simple_mb_img_data_t); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
60 if(img == NULL) { |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
61 imlib_free_image(); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
62 return NULL; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
63 } |
1106
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
64 |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
65 premultiple_data = (uint32_t *)malloc(4 * w * h); |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
66 if(premultiple_data == NULL) { |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
67 free(img); |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
68 imlib_free_image(); |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
69 return NULL; |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
70 } |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
71 memcpy(premultiple_data, data, 4 * w * h); |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
72 |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
73 /* Pre-multiply |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
74 * |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
75 * Our reference model is Cairo. In Cairo model, image is |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
76 * pre-multiplied with alpha, but imlib2 is not. So, we do it |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
77 * here. |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
78 */ |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
79 pos = 0; |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
80 for(i = 0; i < h; i++) { |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
81 for(j = 0; j < w; j++) { |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
82 value = data[pos]; |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
83 alpha = value >> 24; |
1107
1c64a9cec2f2
Improve performance of pre-multipling for imlib2 image loader
Thinker K.F. Li <thinker@codemud.net>
parents:
1106
diff
changeset
|
84 if(alpha != 0xff) { |
1c64a9cec2f2
Improve performance of pre-multipling for imlib2 image loader
Thinker K.F. Li <thinker@codemud.net>
parents:
1106
diff
changeset
|
85 if(alpha == 0) |
1c64a9cec2f2
Improve performance of pre-multipling for imlib2 image loader
Thinker K.F. Li <thinker@codemud.net>
parents:
1106
diff
changeset
|
86 value = 0; |
1c64a9cec2f2
Improve performance of pre-multipling for imlib2 image loader
Thinker K.F. Li <thinker@codemud.net>
parents:
1106
diff
changeset
|
87 else { |
1c64a9cec2f2
Improve performance of pre-multipling for imlib2 image loader
Thinker K.F. Li <thinker@codemud.net>
parents:
1106
diff
changeset
|
88 value = (value & 0xff000000) | |
1c64a9cec2f2
Improve performance of pre-multipling for imlib2 image loader
Thinker K.F. Li <thinker@codemud.net>
parents:
1106
diff
changeset
|
89 (((value & 0xff0000) * alpha / 0xff) & 0xff0000) | |
1c64a9cec2f2
Improve performance of pre-multipling for imlib2 image loader
Thinker K.F. Li <thinker@codemud.net>
parents:
1106
diff
changeset
|
90 (((value & 0xff00) * alpha / 0xff) & 0xff00) | |
1c64a9cec2f2
Improve performance of pre-multipling for imlib2 image loader
Thinker K.F. Li <thinker@codemud.net>
parents:
1106
diff
changeset
|
91 ((value & 0xff) * alpha / 0xff); |
1c64a9cec2f2
Improve performance of pre-multipling for imlib2 image loader
Thinker K.F. Li <thinker@codemud.net>
parents:
1106
diff
changeset
|
92 } |
1106
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
93 } |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
94 premultiple_data[pos++] = value; |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
95 } |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
96 } |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
97 |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
98 img->img.content = premultiple_data; |
1067
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
99 img->img.w = w; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
100 img->img.h = h; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
101 img->img.stride = w * 4; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
102 img->img.fmt = MB_IFMT_ARGB32; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
103 img->img.free = simple_mb_img_ldr_img_free; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
104 |
1106
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
105 imlib_free_image(); |
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
106 |
1067
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
107 return (mb_img_data_t *)img; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
108 } |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
109 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
110 static |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
111 void simple_mb_img_ldr_img_free(mb_img_data_t *img) { |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
112 simple_mb_img_data_t *simg = (simple_mb_img_data_t *)img; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
113 |
1106
b5145de15ace
Fix issue of alpha channel not working.
Thinker K.F. Li <thinker@codemud.net>
parents:
1067
diff
changeset
|
114 free(simg->img.content); |
1067
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
115 free(img); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
116 } |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
117 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
118 static |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
119 void simple_mb_img_ldr_free(mb_img_ldr_t *ldr) { |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
120 simple_mb_img_ldr_t *defldr = (simple_mb_img_ldr_t *)ldr; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
121 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
122 free((void *)defldr->repo); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
123 } |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
124 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
125 mb_img_ldr_t *simple_mb_img_ldr_new(const char *img_repository) { |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
126 simple_mb_img_ldr_t *ldr; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
127 int sz; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
128 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
129 if(img_repository == NULL) |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
130 return NULL; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
131 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
132 ldr = O_ALLOC(simple_mb_img_ldr_t); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
133 if(ldr == NULL) |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
134 return NULL; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
135 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
136 /* |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
137 * Copy and formalize path of image repository. |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
138 */ |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
139 sz = strlen(img_repository); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
140 ldr->repo = (const char *)malloc(sz + 2); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
141 if(ldr->repo == NULL) { |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
142 free(ldr); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
143 return NULL; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
144 } |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
145 strcpy((char *)ldr->repo, img_repository); |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
146 if(img_repository[sz - 1] != '/' && strlen(img_repository) != 0) { |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
147 ((char *)ldr->repo)[sz] = '/'; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
148 ((char *)ldr->repo)[sz + 1] = 0; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
149 } |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
150 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
151 ldr->ldr.load = simple_mb_img_ldr_load; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
152 ldr->ldr.free = simple_mb_img_ldr_free; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
153 |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
154 return (mb_img_ldr_t *)ldr; |
7b4e80ab671a
merge from default branch
Thinker K.F. Li <thinker@codemud.net>
parents:
diff
changeset
|
155 } |