diff --git a/legacy/evas/src/evas_image_routines.c b/legacy/evas/src/evas_image_routines.c index b1f69154c8..19125f221d 100644 --- a/legacy/evas/src/evas_image_routines.c +++ b/legacy/evas/src/evas_image_routines.c @@ -1,7 +1,6 @@ +#include "evas_image_routines.h" -#include "evas_imlib_routines.h" - -static void __evas_imlib_image_cache_flush(Display *disp); +static void __evas_image_image_cache_flush(Display *disp); static int __evas_anti_alias = 1; static Evas_List drawable_list = NULL; @@ -21,7 +20,7 @@ static int __evas_clip_a = 0; /*****************************************************************************/ static void -__evas_imlib_image_cache_flush(Display *disp) +__evas_image_image_cache_flush(Display *disp) { int size; @@ -34,21 +33,21 @@ __evas_imlib_image_cache_flush(Display *disp) /* image externals ***********************************************************/ /*****************************************************************************/ -Evas_Imlib_Image * -__evas_imlib_image_new_from_file(Display *disp, char *file) +Evas_Image_Image * +__evas_image_image_new_from_file(Display *disp, char *file) { - return (Evas_Imlib_Image *)imlib_load_image(file); + return (Evas_Image_Image *)imlib_load_image(file); } void -__evas_imlib_image_free(Evas_Imlib_Image *im) +__evas_image_image_free(Evas_Image_Image *im) { imlib_context_set_image((Imlib_Image)im); imlib_free_image(); } void -__evas_imlib_image_cache_empty(Display *disp) +__evas_image_image_cache_empty(Display *disp) { int size; @@ -58,19 +57,19 @@ __evas_imlib_image_cache_empty(Display *disp) } void -__evas_imlib_image_cache_set_size(Display *disp, int size) +__evas_image_image_cache_set_size(Display *disp, int size) { imlib_set_cache_size(size); } int -__evas_imlib_image_cache_get_size(Display *disp) +__evas_image_image_cache_get_size(Display *disp) { return imlib_get_cache_size(); } void -__evas_imlib_image_draw(Evas_Imlib_Image *im, +__evas_image_image_draw(Evas_Image_Image *im, Display *disp, Imlib_Image dstim, Window w, int win_w, int win_h, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, @@ -113,17 +112,17 @@ __evas_imlib_image_draw(Evas_Imlib_Image *im, imlib_context_set_blend(1); for(l = drawable_list; l; l = l->next) { - Evas_Imlib_Drawable *dr; + Evas_Image_Drawable *dr; dr = l->data; - if ((dr->win == w) && (dr->disp == disp)) + if (dr->im == dstim) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Imlib_Update *up; + Evas_Image_Update *up; up = ll->data; @@ -138,8 +137,20 @@ __evas_imlib_image_draw(Evas_Imlib_Image *im, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - up->image = imlib_create_image(up->w, up->h); + if (!up->image) + { + DATA32 *data; + + up->image = imlib_create_image(up->w, up->h); + if (up->image) + { + imlib_context_set_image(up->image); + data = imlib_image_get_data(); + memset(data, 0, up->w * up->h * sizeof(DATA32)); + imlib_image_put_back_data(data); + imlib_image_set_has_alpha(1); + } + } imlib_context_set_image(up->image); imlib_blend_image_onto_image(im, 0, src_x, src_y, src_w, src_h, @@ -156,21 +167,21 @@ __evas_imlib_image_draw(Evas_Imlib_Image *im, } int -__evas_imlib_image_get_width(Evas_Imlib_Image *im) +__evas_image_image_get_width(Evas_Image_Image *im) { imlib_context_set_image((Imlib_Image)im); return imlib_image_get_width(); } int -__evas_imlib_image_get_height(Evas_Imlib_Image *im) +__evas_image_image_get_height(Evas_Image_Image *im) { imlib_context_set_image((Imlib_Image)im); return imlib_image_get_height(); } void -__evas_imlib_image_set_borders(Evas_Imlib_Image *im, int left, int right, +__evas_image_image_set_borders(Evas_Image_Image *im, int left, int right, int top, int bottom) { Imlib_Border bd; @@ -184,7 +195,7 @@ __evas_imlib_image_set_borders(Evas_Imlib_Image *im, int left, int right, } void -__evas_imlib_image_set_smooth_scaling(int on) +__evas_image_image_set_smooth_scaling(int on) { __evas_anti_alias = on; } @@ -223,52 +234,52 @@ __evas_imlib_image_set_smooth_scaling(int on) /* font externals ************************************************************/ /*****************************************************************************/ -Evas_Imlib_Font * -__evas_imlib_text_font_new(Display *disp, char *font, int size) +Evas_Image_Font * +__evas_image_text_font_new(Display *disp, char *font, int size) { char buf[4096]; sprintf(buf, "%s/%i", font, size); - return (Evas_Imlib_Font *)imlib_load_font(buf); + return (Evas_Image_Font *)imlib_load_font(buf); } void -__evas_imlib_text_font_free(Evas_Imlib_Font *fn) +__evas_image_text_font_free(Evas_Image_Font *fn) { imlib_context_set_font((Imlib_Font)fn); imlib_free_font(); } int -__evas_imlib_text_font_get_ascent(Evas_Imlib_Font *fn) +__evas_image_text_font_get_ascent(Evas_Image_Font *fn) { imlib_context_set_font((Imlib_Font)fn); return imlib_get_font_ascent(); } int -__evas_imlib_text_font_get_descent(Evas_Imlib_Font *fn) +__evas_image_text_font_get_descent(Evas_Image_Font *fn) { imlib_context_set_font((Imlib_Font)fn); return imlib_get_font_descent(); } int -__evas_imlib_text_font_get_max_ascent(Evas_Imlib_Font *fn) +__evas_image_text_font_get_max_ascent(Evas_Image_Font *fn) { imlib_context_set_font((Imlib_Font)fn); return imlib_get_maximum_font_ascent(); } int -__evas_imlib_text_font_get_max_descent(Evas_Imlib_Font *fn) +__evas_image_text_font_get_max_descent(Evas_Image_Font *fn) { imlib_context_set_font((Imlib_Font)fn); return imlib_get_maximum_font_descent(); } void -__evas_imlib_text_font_get_advances(Evas_Imlib_Font *fn, char *text, +__evas_image_text_font_get_advances(Evas_Image_Font *fn, char *text, int *advance_horiz, int *advance_vert) { @@ -277,32 +288,32 @@ __evas_imlib_text_font_get_advances(Evas_Imlib_Font *fn, char *text, } int -__evas_imlib_text_font_get_first_inset(Evas_Imlib_Font *fn, char *text) +__evas_image_text_font_get_first_inset(Evas_Image_Font *fn, char *text) { imlib_context_set_font((Imlib_Font)fn); return imlib_get_text_inset(text); } void -__evas_imlib_text_font_add_path(char *path) +__evas_image_text_font_add_path(char *path) { imlib_add_path_to_font_path(path); } void -__evas_imlib_text_font_del_path(char *path) +__evas_image_text_font_del_path(char *path) { imlib_remove_path_from_font_path(path); } char ** -__evas_imlib_text_font_list_paths(int *count) +__evas_image_text_font_list_paths(int *count) { return imlib_list_font_path(count); } void -__evas_imlib_text_cache_empty(Display *disp) +__evas_image_text_cache_empty(Display *disp) { int size; @@ -312,19 +323,19 @@ __evas_imlib_text_cache_empty(Display *disp) } void -__evas_imlib_text_cache_set_size(Display *disp, int size) +__evas_image_text_cache_set_size(Display *disp, int size) { imlib_set_font_cache_size(size); } int -__evas_imlib_text_cache_get_size(Display *disp) +__evas_image_text_cache_get_size(Display *disp) { return imlib_get_font_cache_size(); } void -__evas_imlib_text_draw(Evas_Imlib_Font *fn, Display *disp, Imlib_Image dstim, Window win, +__evas_image_text_draw(Evas_Image_Font *fn, Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, char *text, int cr, int cg, int cb, int ca) { @@ -351,17 +362,17 @@ __evas_imlib_text_draw(Evas_Imlib_Font *fn, Display *disp, Imlib_Image dstim, Wi imlib_get_text_size(text, &w, &h); for(l = drawable_list; l; l = l->next) { - Evas_Imlib_Drawable *dr; + Evas_Image_Drawable *dr; dr = l->data; - if ((dr->win == win) && (dr->disp == disp)) + if (dr->im == dstim) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Imlib_Update *up; + Evas_Image_Update *up; up = ll->data; @@ -375,8 +386,20 @@ __evas_imlib_text_draw(Evas_Imlib_Font *fn, Display *disp, Imlib_Image dstim, Wi __evas_clip_w, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - up->image = imlib_create_image(up->w, up->h); + if (!up->image) + { + DATA32 *data; + + up->image = imlib_create_image(up->w, up->h); + if (up->image) + { + imlib_context_set_image(up->image); + data = imlib_image_get_data(); + memset(data, 0, up->w * up->h * sizeof(DATA32)); + imlib_image_put_back_data(data); + imlib_image_set_has_alpha(1); + } + } imlib_context_set_image(up->image); imlib_text_draw(x - up->x, y - up->y, text); } @@ -386,7 +409,7 @@ __evas_imlib_text_draw(Evas_Imlib_Font *fn, Display *disp, Imlib_Image dstim, Wi } void -__evas_imlib_text_get_size(Evas_Imlib_Font *fn, char *text, int *w, int *h) +__evas_image_text_get_size(Evas_Image_Font *fn, char *text, int *w, int *h) { if ((!fn) || (!text)) { @@ -398,7 +421,7 @@ __evas_imlib_text_get_size(Evas_Imlib_Font *fn, char *text, int *w, int *h) } int -__evas_imlib_text_get_character_at_pos(Evas_Imlib_Font *fn, char *text, +__evas_image_text_get_character_at_pos(Evas_Image_Font *fn, char *text, int x, int y, int *cx, int *cy, int *cw, int *ch) { @@ -407,7 +430,7 @@ __evas_imlib_text_get_character_at_pos(Evas_Imlib_Font *fn, char *text, } void -__evas_imlib_text_get_character_number(Evas_Imlib_Font *fn, char *text, +__evas_image_text_get_character_number(Evas_Image_Font *fn, char *text, int num, int *cx, int *cy, int *cw, int *ch) { @@ -443,7 +466,7 @@ __evas_imlib_text_get_character_number(Evas_Imlib_Font *fn, char *text, /* rectangle externals *******************************************************/ /*****************************************************************************/ -void __evas_imlib_rectangle_draw(Display *disp, Imlib_Image dstim, Window win, +void __evas_image_rectangle_draw(Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, int w, int h, int cr, int cg, int cb, int ca) @@ -467,17 +490,17 @@ void __evas_imlib_rectangle_draw(Display *disp, Imlib_Image dstim, imlib_context_set_blend(1); for(l = drawable_list; l; l = l->next) { - Evas_Imlib_Drawable *dr; + Evas_Image_Drawable *dr; dr = l->data; - if ((dr->win == win) && (dr->disp == disp)) + if (dr->im == dstim) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Imlib_Update *up; + Evas_Image_Update *up; up = ll->data; @@ -487,8 +510,20 @@ void __evas_imlib_rectangle_draw(Display *disp, Imlib_Image dstim, { if (__evas_clip) imlib_context_set_cliprect(__evas_clip_x - up->x, __evas_clip_y - up->y, __evas_clip_w, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - up->image = imlib_create_image(up->w, up->h); + if (!up->image) + { + DATA32 *data; + + up->image = imlib_create_image(up->w, up->h); + if (up->image) + { + imlib_context_set_image(up->image); + data = imlib_image_get_data(); + memset(data, 0, up->w * up->h * sizeof(DATA32)); + imlib_image_put_back_data(data); + imlib_image_set_has_alpha(1); + } + } imlib_context_set_image(up->image); imlib_image_fill_rectangle(x - up->x, y - up->y, w, h); } @@ -517,7 +552,7 @@ void __evas_imlib_rectangle_draw(Display *disp, Imlib_Image dstim, /* rectangle externals *******************************************************/ /*****************************************************************************/ -void __evas_imlib_line_draw(Display *disp, Imlib_Image dstim, Window win, +void __evas_image_line_draw(Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x1, int y1, int x2, int y2, int cr, int cg, int cb, int ca) @@ -551,17 +586,17 @@ void __evas_imlib_line_draw(Display *disp, Imlib_Image dstim, Windo w++; h++; for(l = drawable_list; l; l = l->next) { - Evas_Imlib_Drawable *dr; + Evas_Image_Drawable *dr; dr = l->data; - if ((dr->win == win) && (dr->disp == disp)) + if (dr->im == dstim) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Imlib_Update *up; + Evas_Image_Update *up; up = ll->data; @@ -571,8 +606,20 @@ void __evas_imlib_line_draw(Display *disp, Imlib_Image dstim, Windo { if (__evas_clip) imlib_context_set_cliprect(__evas_clip_x - up->x, __evas_clip_y - up->y, __evas_clip_w, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - up->image = imlib_create_image(up->w, up->h); + if (!up->image) + { + DATA32 *data; + + up->image = imlib_create_image(up->w, up->h); + if (up->image) + { + imlib_context_set_image(up->image); + data = imlib_image_get_data(); + memset(data, 0, up->w * up->h * sizeof(DATA32)); + imlib_image_put_back_data(data); + imlib_image_set_has_alpha(1); + } + } imlib_context_set_image(up->image); imlib_image_draw_line(x1 - up->x, y1 - up->y, x2 - up->x, y2 - up->y, 0); } @@ -602,17 +649,17 @@ void __evas_imlib_line_draw(Display *disp, Imlib_Image dstim, Windo /*****************************************************************************/ -Evas_Imlib_Graident * -__evas_imlib_gradient_new(Display *disp) +Evas_Image_Graident * +__evas_image_gradient_new(Display *disp) { - Evas_Imlib_Graident *gr; + Evas_Image_Graident *gr; - gr = malloc(sizeof(Evas_Imlib_Graident)); + gr = malloc(sizeof(Evas_Image_Graident)); gr->colors = NULL; } void -__evas_imlib_gradient_free(Evas_Imlib_Graident *gr) +__evas_image_gradient_free(Evas_Image_Graident *gr) { Evas_List l; @@ -628,11 +675,11 @@ __evas_imlib_gradient_free(Evas_Imlib_Graident *gr) } void -__evas_imlib_gradient_color_add(Evas_Imlib_Graident *gr, int r, int g, int b, int a, int dist) +__evas_image_gradient_color_add(Evas_Image_Graident *gr, int r, int g, int b, int a, int dist) { - Evas_Imlib_Color *cl; + Evas_Image_Color *cl; - cl = malloc(sizeof(Evas_Imlib_Color)); + cl = malloc(sizeof(Evas_Image_Color)); cl->r = r; cl->g = g; cl->b = b; @@ -642,7 +689,7 @@ __evas_imlib_gradient_color_add(Evas_Imlib_Graident *gr, int r, int g, int b, in } void -__evas_imlib_gradient_draw(Evas_Imlib_Graident *gr, Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, int w, int h, double angle) +__evas_image_gradient_draw(Evas_Image_Graident *gr, Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, int w, int h, double angle) { Evas_List l; Imlib_Color_Range cr; @@ -661,7 +708,7 @@ __evas_imlib_gradient_draw(Evas_Imlib_Graident *gr, Display *disp, Imlib_Image d for (l = gr->colors; l; l = l->next) { - Evas_Imlib_Color *cl; + Evas_Image_Color *cl; cl = l->data; if (__evas_clip) @@ -676,17 +723,17 @@ __evas_imlib_gradient_draw(Evas_Imlib_Graident *gr, Display *disp, Imlib_Image d } for(l = drawable_list; l; l = l->next) { - Evas_Imlib_Drawable *dr; + Evas_Image_Drawable *dr; dr = l->data; - if ((dr->win == win) && (dr->disp == disp)) + if (dr->im == dstim) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Imlib_Update *up; + Evas_Image_Update *up; up = ll->data; @@ -696,8 +743,20 @@ __evas_imlib_gradient_draw(Evas_Imlib_Graident *gr, Display *disp, Imlib_Image d { if (__evas_clip) imlib_context_set_cliprect(__evas_clip_x - up->x, __evas_clip_y - up->y, __evas_clip_w, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - up->image = imlib_create_image(up->w, up->h); + if (!up->image) + { + DATA32 *data; + + up->image = imlib_create_image(up->w, up->h); + if (up->image) + { + imlib_context_set_image(up->image); + data = imlib_image_get_data(); + memset(data, 0, up->w * up->h * sizeof(DATA32)); + imlib_image_put_back_data(data); + imlib_image_set_has_alpha(1); + } + } imlib_context_set_image(up->image); imlib_image_fill_color_range_rectangle(x - up->x, y - up->y, w, h, angle); } @@ -714,7 +773,7 @@ __evas_imlib_gradient_draw(Evas_Imlib_Graident *gr, Display *disp, Imlib_Image d /* polygons */ /************/ void -__evas_imlib_poly_draw (Display *disp, Imlib_Image dstim, Window win, +__evas_image_poly_draw (Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, Evas_List points, int cr, int cg, int cb, int ca) @@ -771,17 +830,17 @@ __evas_imlib_poly_draw (Display *disp, Imlib_Image dstim, Window win, } for(l = drawable_list; l; l = l->next) { - Evas_Imlib_Drawable *dr; + Evas_Image_Drawable *dr; dr = l->data; - if ((dr->win == win) && (dr->disp == disp)) + if (dr->im == dstim) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Imlib_Update *up; + Evas_Image_Update *up; up = ll->data; @@ -794,8 +853,20 @@ __evas_imlib_poly_draw (Display *disp, Imlib_Image dstim, Window win, if (__evas_clip) imlib_context_set_cliprect(__evas_clip_x - up->x, __evas_clip_y - up->y, __evas_clip_w, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - up->image = imlib_create_image(up->w, up->h); + if (!up->image) + { + DATA32 *data; + + up->image = imlib_create_image(up->w, up->h); + if (up->image) + { + imlib_context_set_image(up->image); + data = imlib_image_get_data(); + memset(data, 0, up->w * up->h * sizeof(DATA32)); + imlib_image_put_back_data(data); + imlib_image_set_has_alpha(1); + } + } imlib_context_set_image(up->image); pol = imlib_polygon_new(); for (l2 = points; l2; l2 = l2->next) @@ -833,7 +904,7 @@ static Visual *__evas_visual = NULL; static Colormap __evas_cmap = 0; void -__evas_imlib_set_clip_rect(int on, int x, int y, int w, int h, int r, int g, int b, int a) +__evas_image_set_clip_rect(int on, int x, int y, int w, int h, int r, int g, int b, int a) { __evas_clip = on; __evas_clip_x = x; @@ -847,43 +918,43 @@ __evas_imlib_set_clip_rect(int on, int x, int y, int w, int h, int r, int g, int } void -__evas_imlib_sync(Display *disp) +__evas_image_sync(Display *disp) { - XSync(disp, False); } void -__evas_imlib_flush_draw(Display *disp, Imlib_Image dstim, Window win) +__evas_image_flush_draw(Display *disp, Imlib_Image dstim, Window win) { Evas_List l; - imlib_context_set_display(disp); - imlib_context_set_visual(__evas_visual); - imlib_context_set_colormap(__evas_cmap); - imlib_context_set_drawable(win); - imlib_context_set_dither(1); - imlib_context_set_blend(0); + imlib_context_set_blend(1); for(l = drawable_list; l; l = l->next) { - Evas_Imlib_Drawable *dr; + Evas_Image_Drawable *dr; dr = l->data; - if ((dr->win == win) && (dr->disp == disp)) + if (dr->im == dstim) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Imlib_Update *up; + Evas_Image_Update *up; up = ll->data; if (up->image) { + int w, h; + + w = up->w; h = up->h; + imlib_context_set_image(dr->im); + imlib_blend_image_onto_image(up->image, 1, + 0, 0, w, h, + up->x, up->y, w, h); imlib_context_set_image(up->image); - imlib_render_image_on_drawable(up->x, up->y); imlib_free_image(); } free(up); @@ -899,14 +970,14 @@ __evas_imlib_flush_draw(Display *disp, Imlib_Image dstim, Window win) } - int -__evas_imlib_capable(Display *disp) +int +__evas_image_capable(Display *disp) { return 1; } Visual * -__evas_imlib_get_visual(Display *disp, int screen) +__evas_image_get_visual(Display *disp, int screen) { int depth; @@ -915,26 +986,26 @@ __evas_imlib_get_visual(Display *disp, int screen) } XVisualInfo * -__evas_imlib_get_visual_info(Display *disp, int screen) +__evas_image_get_visual_info(Display *disp, int screen) { static XVisualInfo *vi = NULL; XVisualInfo vi_template; int n; if (vi) return vi; - vi_template.visualid = (__evas_imlib_get_visual(disp, screen))->visualid; + vi_template.visualid = (__evas_image_get_visual(disp, screen))->visualid; vi_template.screen = screen; vi = XGetVisualInfo(disp, VisualIDMask | VisualScreenMask, &vi_template ,&n); return vi; } Colormap -__evas_imlib_get_colormap(Display *disp, int screen) +__evas_image_get_colormap(Display *disp, int screen) { Visual *v; if (__evas_cmap) return __evas_cmap; - v = __evas_imlib_get_visual(disp, screen); + v = __evas_image_get_visual(disp, screen); __evas_cmap = DefaultColormap(disp, screen); return __evas_cmap; __evas_cmap = XCreateColormap(disp, RootWindow(disp, screen), v, AllocNone); @@ -942,37 +1013,35 @@ __evas_imlib_get_colormap(Display *disp, int screen) } void -__evas_imlib_init(Display *disp, int screen, int colors) +__evas_image_init(Display *disp, int screen, int colors) { static int initted = 0; if (!initted) { - imlib_set_color_usage(colors); imlib_set_font_cache_size(1024 * 1024); imlib_set_cache_size(8 * 1024 * 1024); initted = 1; } - imlib_set_color_usage(colors); } void -__evas_imlib_draw_add_rect(Display *disp, Imlib_Image dstim, Window win, +__evas_image_draw_add_rect(Display *disp, Imlib_Image dstim, Window win, int x, int y, int w, int h) { Evas_List l; for(l = drawable_list; l; l = l->next) { - Evas_Imlib_Drawable *dr; + Evas_Image_Drawable *dr; dr = l->data; - if ((dr->win == win) && (dr->disp == disp)) + if (dr->im == dstim) { - Evas_Imlib_Update *up; + Evas_Image_Update *up; - up = malloc(sizeof(Evas_Imlib_Update)); + up = malloc(sizeof(Evas_Image_Update)); up->x = x; up->y = y; up->w = w; @@ -983,14 +1052,13 @@ __evas_imlib_draw_add_rect(Display *disp, Imlib_Image dstim, Window win, return; } { - Evas_Imlib_Drawable *dr; - Evas_Imlib_Update *up; + Evas_Image_Drawable *dr; + Evas_Image_Update *up; - dr = malloc(sizeof(Evas_Imlib_Drawable)); - dr->win = win; - dr->disp = disp; + dr = malloc(sizeof(Evas_Image_Drawable)); + dr->im = dstim; dr->tmp_images = NULL; - up = malloc(sizeof(Evas_Imlib_Update)); + up = malloc(sizeof(Evas_Image_Update)); up->x = x; up->y = y; up->w = w; diff --git a/legacy/evas/src/evas_imlib_routines.c b/legacy/evas/src/evas_imlib_routines.c index 19125f221d..b1f69154c8 100644 --- a/legacy/evas/src/evas_imlib_routines.c +++ b/legacy/evas/src/evas_imlib_routines.c @@ -1,6 +1,7 @@ -#include "evas_image_routines.h" -static void __evas_image_image_cache_flush(Display *disp); +#include "evas_imlib_routines.h" + +static void __evas_imlib_image_cache_flush(Display *disp); static int __evas_anti_alias = 1; static Evas_List drawable_list = NULL; @@ -20,7 +21,7 @@ static int __evas_clip_a = 0; /*****************************************************************************/ static void -__evas_image_image_cache_flush(Display *disp) +__evas_imlib_image_cache_flush(Display *disp) { int size; @@ -33,21 +34,21 @@ __evas_image_image_cache_flush(Display *disp) /* image externals ***********************************************************/ /*****************************************************************************/ -Evas_Image_Image * -__evas_image_image_new_from_file(Display *disp, char *file) +Evas_Imlib_Image * +__evas_imlib_image_new_from_file(Display *disp, char *file) { - return (Evas_Image_Image *)imlib_load_image(file); + return (Evas_Imlib_Image *)imlib_load_image(file); } void -__evas_image_image_free(Evas_Image_Image *im) +__evas_imlib_image_free(Evas_Imlib_Image *im) { imlib_context_set_image((Imlib_Image)im); imlib_free_image(); } void -__evas_image_image_cache_empty(Display *disp) +__evas_imlib_image_cache_empty(Display *disp) { int size; @@ -57,19 +58,19 @@ __evas_image_image_cache_empty(Display *disp) } void -__evas_image_image_cache_set_size(Display *disp, int size) +__evas_imlib_image_cache_set_size(Display *disp, int size) { imlib_set_cache_size(size); } int -__evas_image_image_cache_get_size(Display *disp) +__evas_imlib_image_cache_get_size(Display *disp) { return imlib_get_cache_size(); } void -__evas_image_image_draw(Evas_Image_Image *im, +__evas_imlib_image_draw(Evas_Imlib_Image *im, Display *disp, Imlib_Image dstim, Window w, int win_w, int win_h, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, @@ -112,17 +113,17 @@ __evas_image_image_draw(Evas_Image_Image *im, imlib_context_set_blend(1); for(l = drawable_list; l; l = l->next) { - Evas_Image_Drawable *dr; + Evas_Imlib_Drawable *dr; dr = l->data; - if (dr->im == dstim) + if ((dr->win == w) && (dr->disp == disp)) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Image_Update *up; + Evas_Imlib_Update *up; up = ll->data; @@ -137,20 +138,8 @@ __evas_image_image_draw(Evas_Image_Image *im, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - { - DATA32 *data; - - up->image = imlib_create_image(up->w, up->h); - if (up->image) - { - imlib_context_set_image(up->image); - data = imlib_image_get_data(); - memset(data, 0, up->w * up->h * sizeof(DATA32)); - imlib_image_put_back_data(data); - imlib_image_set_has_alpha(1); - } - } + if (!up->image) + up->image = imlib_create_image(up->w, up->h); imlib_context_set_image(up->image); imlib_blend_image_onto_image(im, 0, src_x, src_y, src_w, src_h, @@ -167,21 +156,21 @@ __evas_image_image_draw(Evas_Image_Image *im, } int -__evas_image_image_get_width(Evas_Image_Image *im) +__evas_imlib_image_get_width(Evas_Imlib_Image *im) { imlib_context_set_image((Imlib_Image)im); return imlib_image_get_width(); } int -__evas_image_image_get_height(Evas_Image_Image *im) +__evas_imlib_image_get_height(Evas_Imlib_Image *im) { imlib_context_set_image((Imlib_Image)im); return imlib_image_get_height(); } void -__evas_image_image_set_borders(Evas_Image_Image *im, int left, int right, +__evas_imlib_image_set_borders(Evas_Imlib_Image *im, int left, int right, int top, int bottom) { Imlib_Border bd; @@ -195,7 +184,7 @@ __evas_image_image_set_borders(Evas_Image_Image *im, int left, int right, } void -__evas_image_image_set_smooth_scaling(int on) +__evas_imlib_image_set_smooth_scaling(int on) { __evas_anti_alias = on; } @@ -234,52 +223,52 @@ __evas_image_image_set_smooth_scaling(int on) /* font externals ************************************************************/ /*****************************************************************************/ -Evas_Image_Font * -__evas_image_text_font_new(Display *disp, char *font, int size) +Evas_Imlib_Font * +__evas_imlib_text_font_new(Display *disp, char *font, int size) { char buf[4096]; sprintf(buf, "%s/%i", font, size); - return (Evas_Image_Font *)imlib_load_font(buf); + return (Evas_Imlib_Font *)imlib_load_font(buf); } void -__evas_image_text_font_free(Evas_Image_Font *fn) +__evas_imlib_text_font_free(Evas_Imlib_Font *fn) { imlib_context_set_font((Imlib_Font)fn); imlib_free_font(); } int -__evas_image_text_font_get_ascent(Evas_Image_Font *fn) +__evas_imlib_text_font_get_ascent(Evas_Imlib_Font *fn) { imlib_context_set_font((Imlib_Font)fn); return imlib_get_font_ascent(); } int -__evas_image_text_font_get_descent(Evas_Image_Font *fn) +__evas_imlib_text_font_get_descent(Evas_Imlib_Font *fn) { imlib_context_set_font((Imlib_Font)fn); return imlib_get_font_descent(); } int -__evas_image_text_font_get_max_ascent(Evas_Image_Font *fn) +__evas_imlib_text_font_get_max_ascent(Evas_Imlib_Font *fn) { imlib_context_set_font((Imlib_Font)fn); return imlib_get_maximum_font_ascent(); } int -__evas_image_text_font_get_max_descent(Evas_Image_Font *fn) +__evas_imlib_text_font_get_max_descent(Evas_Imlib_Font *fn) { imlib_context_set_font((Imlib_Font)fn); return imlib_get_maximum_font_descent(); } void -__evas_image_text_font_get_advances(Evas_Image_Font *fn, char *text, +__evas_imlib_text_font_get_advances(Evas_Imlib_Font *fn, char *text, int *advance_horiz, int *advance_vert) { @@ -288,32 +277,32 @@ __evas_image_text_font_get_advances(Evas_Image_Font *fn, char *text, } int -__evas_image_text_font_get_first_inset(Evas_Image_Font *fn, char *text) +__evas_imlib_text_font_get_first_inset(Evas_Imlib_Font *fn, char *text) { imlib_context_set_font((Imlib_Font)fn); return imlib_get_text_inset(text); } void -__evas_image_text_font_add_path(char *path) +__evas_imlib_text_font_add_path(char *path) { imlib_add_path_to_font_path(path); } void -__evas_image_text_font_del_path(char *path) +__evas_imlib_text_font_del_path(char *path) { imlib_remove_path_from_font_path(path); } char ** -__evas_image_text_font_list_paths(int *count) +__evas_imlib_text_font_list_paths(int *count) { return imlib_list_font_path(count); } void -__evas_image_text_cache_empty(Display *disp) +__evas_imlib_text_cache_empty(Display *disp) { int size; @@ -323,19 +312,19 @@ __evas_image_text_cache_empty(Display *disp) } void -__evas_image_text_cache_set_size(Display *disp, int size) +__evas_imlib_text_cache_set_size(Display *disp, int size) { imlib_set_font_cache_size(size); } int -__evas_image_text_cache_get_size(Display *disp) +__evas_imlib_text_cache_get_size(Display *disp) { return imlib_get_font_cache_size(); } void -__evas_image_text_draw(Evas_Image_Font *fn, Display *disp, Imlib_Image dstim, Window win, +__evas_imlib_text_draw(Evas_Imlib_Font *fn, Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, char *text, int cr, int cg, int cb, int ca) { @@ -362,17 +351,17 @@ __evas_image_text_draw(Evas_Image_Font *fn, Display *disp, Imlib_Image dstim, Wi imlib_get_text_size(text, &w, &h); for(l = drawable_list; l; l = l->next) { - Evas_Image_Drawable *dr; + Evas_Imlib_Drawable *dr; dr = l->data; - if (dr->im == dstim) + if ((dr->win == win) && (dr->disp == disp)) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Image_Update *up; + Evas_Imlib_Update *up; up = ll->data; @@ -386,20 +375,8 @@ __evas_image_text_draw(Evas_Image_Font *fn, Display *disp, Imlib_Image dstim, Wi __evas_clip_w, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - { - DATA32 *data; - - up->image = imlib_create_image(up->w, up->h); - if (up->image) - { - imlib_context_set_image(up->image); - data = imlib_image_get_data(); - memset(data, 0, up->w * up->h * sizeof(DATA32)); - imlib_image_put_back_data(data); - imlib_image_set_has_alpha(1); - } - } + if (!up->image) + up->image = imlib_create_image(up->w, up->h); imlib_context_set_image(up->image); imlib_text_draw(x - up->x, y - up->y, text); } @@ -409,7 +386,7 @@ __evas_image_text_draw(Evas_Image_Font *fn, Display *disp, Imlib_Image dstim, Wi } void -__evas_image_text_get_size(Evas_Image_Font *fn, char *text, int *w, int *h) +__evas_imlib_text_get_size(Evas_Imlib_Font *fn, char *text, int *w, int *h) { if ((!fn) || (!text)) { @@ -421,7 +398,7 @@ __evas_image_text_get_size(Evas_Image_Font *fn, char *text, int *w, int *h) } int -__evas_image_text_get_character_at_pos(Evas_Image_Font *fn, char *text, +__evas_imlib_text_get_character_at_pos(Evas_Imlib_Font *fn, char *text, int x, int y, int *cx, int *cy, int *cw, int *ch) { @@ -430,7 +407,7 @@ __evas_image_text_get_character_at_pos(Evas_Image_Font *fn, char *text, } void -__evas_image_text_get_character_number(Evas_Image_Font *fn, char *text, +__evas_imlib_text_get_character_number(Evas_Imlib_Font *fn, char *text, int num, int *cx, int *cy, int *cw, int *ch) { @@ -466,7 +443,7 @@ __evas_image_text_get_character_number(Evas_Image_Font *fn, char *text, /* rectangle externals *******************************************************/ /*****************************************************************************/ -void __evas_image_rectangle_draw(Display *disp, Imlib_Image dstim, Window win, +void __evas_imlib_rectangle_draw(Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, int w, int h, int cr, int cg, int cb, int ca) @@ -490,17 +467,17 @@ void __evas_image_rectangle_draw(Display *disp, Imlib_Image dstim, imlib_context_set_blend(1); for(l = drawable_list; l; l = l->next) { - Evas_Image_Drawable *dr; + Evas_Imlib_Drawable *dr; dr = l->data; - if (dr->im == dstim) + if ((dr->win == win) && (dr->disp == disp)) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Image_Update *up; + Evas_Imlib_Update *up; up = ll->data; @@ -510,20 +487,8 @@ void __evas_image_rectangle_draw(Display *disp, Imlib_Image dstim, { if (__evas_clip) imlib_context_set_cliprect(__evas_clip_x - up->x, __evas_clip_y - up->y, __evas_clip_w, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - { - DATA32 *data; - - up->image = imlib_create_image(up->w, up->h); - if (up->image) - { - imlib_context_set_image(up->image); - data = imlib_image_get_data(); - memset(data, 0, up->w * up->h * sizeof(DATA32)); - imlib_image_put_back_data(data); - imlib_image_set_has_alpha(1); - } - } + if (!up->image) + up->image = imlib_create_image(up->w, up->h); imlib_context_set_image(up->image); imlib_image_fill_rectangle(x - up->x, y - up->y, w, h); } @@ -552,7 +517,7 @@ void __evas_image_rectangle_draw(Display *disp, Imlib_Image dstim, /* rectangle externals *******************************************************/ /*****************************************************************************/ -void __evas_image_line_draw(Display *disp, Imlib_Image dstim, Window win, +void __evas_imlib_line_draw(Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x1, int y1, int x2, int y2, int cr, int cg, int cb, int ca) @@ -586,17 +551,17 @@ void __evas_image_line_draw(Display *disp, Imlib_Image dstim, Windo w++; h++; for(l = drawable_list; l; l = l->next) { - Evas_Image_Drawable *dr; + Evas_Imlib_Drawable *dr; dr = l->data; - if (dr->im == dstim) + if ((dr->win == win) && (dr->disp == disp)) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Image_Update *up; + Evas_Imlib_Update *up; up = ll->data; @@ -606,20 +571,8 @@ void __evas_image_line_draw(Display *disp, Imlib_Image dstim, Windo { if (__evas_clip) imlib_context_set_cliprect(__evas_clip_x - up->x, __evas_clip_y - up->y, __evas_clip_w, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - { - DATA32 *data; - - up->image = imlib_create_image(up->w, up->h); - if (up->image) - { - imlib_context_set_image(up->image); - data = imlib_image_get_data(); - memset(data, 0, up->w * up->h * sizeof(DATA32)); - imlib_image_put_back_data(data); - imlib_image_set_has_alpha(1); - } - } + if (!up->image) + up->image = imlib_create_image(up->w, up->h); imlib_context_set_image(up->image); imlib_image_draw_line(x1 - up->x, y1 - up->y, x2 - up->x, y2 - up->y, 0); } @@ -649,17 +602,17 @@ void __evas_image_line_draw(Display *disp, Imlib_Image dstim, Windo /*****************************************************************************/ -Evas_Image_Graident * -__evas_image_gradient_new(Display *disp) +Evas_Imlib_Graident * +__evas_imlib_gradient_new(Display *disp) { - Evas_Image_Graident *gr; + Evas_Imlib_Graident *gr; - gr = malloc(sizeof(Evas_Image_Graident)); + gr = malloc(sizeof(Evas_Imlib_Graident)); gr->colors = NULL; } void -__evas_image_gradient_free(Evas_Image_Graident *gr) +__evas_imlib_gradient_free(Evas_Imlib_Graident *gr) { Evas_List l; @@ -675,11 +628,11 @@ __evas_image_gradient_free(Evas_Image_Graident *gr) } void -__evas_image_gradient_color_add(Evas_Image_Graident *gr, int r, int g, int b, int a, int dist) +__evas_imlib_gradient_color_add(Evas_Imlib_Graident *gr, int r, int g, int b, int a, int dist) { - Evas_Image_Color *cl; + Evas_Imlib_Color *cl; - cl = malloc(sizeof(Evas_Image_Color)); + cl = malloc(sizeof(Evas_Imlib_Color)); cl->r = r; cl->g = g; cl->b = b; @@ -689,7 +642,7 @@ __evas_image_gradient_color_add(Evas_Image_Graident *gr, int r, int g, int b, in } void -__evas_image_gradient_draw(Evas_Image_Graident *gr, Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, int w, int h, double angle) +__evas_imlib_gradient_draw(Evas_Imlib_Graident *gr, Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, int w, int h, double angle) { Evas_List l; Imlib_Color_Range cr; @@ -708,7 +661,7 @@ __evas_image_gradient_draw(Evas_Image_Graident *gr, Display *disp, Imlib_Image d for (l = gr->colors; l; l = l->next) { - Evas_Image_Color *cl; + Evas_Imlib_Color *cl; cl = l->data; if (__evas_clip) @@ -723,17 +676,17 @@ __evas_image_gradient_draw(Evas_Image_Graident *gr, Display *disp, Imlib_Image d } for(l = drawable_list; l; l = l->next) { - Evas_Image_Drawable *dr; + Evas_Imlib_Drawable *dr; dr = l->data; - if (dr->im == dstim) + if ((dr->win == win) && (dr->disp == disp)) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Image_Update *up; + Evas_Imlib_Update *up; up = ll->data; @@ -743,20 +696,8 @@ __evas_image_gradient_draw(Evas_Image_Graident *gr, Display *disp, Imlib_Image d { if (__evas_clip) imlib_context_set_cliprect(__evas_clip_x - up->x, __evas_clip_y - up->y, __evas_clip_w, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - { - DATA32 *data; - - up->image = imlib_create_image(up->w, up->h); - if (up->image) - { - imlib_context_set_image(up->image); - data = imlib_image_get_data(); - memset(data, 0, up->w * up->h * sizeof(DATA32)); - imlib_image_put_back_data(data); - imlib_image_set_has_alpha(1); - } - } + if (!up->image) + up->image = imlib_create_image(up->w, up->h); imlib_context_set_image(up->image); imlib_image_fill_color_range_rectangle(x - up->x, y - up->y, w, h, angle); } @@ -773,7 +714,7 @@ __evas_image_gradient_draw(Evas_Image_Graident *gr, Display *disp, Imlib_Image d /* polygons */ /************/ void -__evas_image_poly_draw (Display *disp, Imlib_Image dstim, Window win, +__evas_imlib_poly_draw (Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, Evas_List points, int cr, int cg, int cb, int ca) @@ -830,17 +771,17 @@ __evas_image_poly_draw (Display *disp, Imlib_Image dstim, Window win, } for(l = drawable_list; l; l = l->next) { - Evas_Image_Drawable *dr; + Evas_Imlib_Drawable *dr; dr = l->data; - if (dr->im == dstim) + if ((dr->win == win) && (dr->disp == disp)) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Image_Update *up; + Evas_Imlib_Update *up; up = ll->data; @@ -853,20 +794,8 @@ __evas_image_poly_draw (Display *disp, Imlib_Image dstim, Window win, if (__evas_clip) imlib_context_set_cliprect(__evas_clip_x - up->x, __evas_clip_y - up->y, __evas_clip_w, __evas_clip_h); else imlib_context_set_cliprect(0, 0, 0, 0); - if (!up->image) - { - DATA32 *data; - - up->image = imlib_create_image(up->w, up->h); - if (up->image) - { - imlib_context_set_image(up->image); - data = imlib_image_get_data(); - memset(data, 0, up->w * up->h * sizeof(DATA32)); - imlib_image_put_back_data(data); - imlib_image_set_has_alpha(1); - } - } + if (!up->image) + up->image = imlib_create_image(up->w, up->h); imlib_context_set_image(up->image); pol = imlib_polygon_new(); for (l2 = points; l2; l2 = l2->next) @@ -904,7 +833,7 @@ static Visual *__evas_visual = NULL; static Colormap __evas_cmap = 0; void -__evas_image_set_clip_rect(int on, int x, int y, int w, int h, int r, int g, int b, int a) +__evas_imlib_set_clip_rect(int on, int x, int y, int w, int h, int r, int g, int b, int a) { __evas_clip = on; __evas_clip_x = x; @@ -918,43 +847,43 @@ __evas_image_set_clip_rect(int on, int x, int y, int w, int h, int r, int g, int } void -__evas_image_sync(Display *disp) +__evas_imlib_sync(Display *disp) { + XSync(disp, False); } void -__evas_image_flush_draw(Display *disp, Imlib_Image dstim, Window win) +__evas_imlib_flush_draw(Display *disp, Imlib_Image dstim, Window win) { Evas_List l; - imlib_context_set_blend(1); + imlib_context_set_display(disp); + imlib_context_set_visual(__evas_visual); + imlib_context_set_colormap(__evas_cmap); + imlib_context_set_drawable(win); + imlib_context_set_dither(1); + imlib_context_set_blend(0); for(l = drawable_list; l; l = l->next) { - Evas_Image_Drawable *dr; + Evas_Imlib_Drawable *dr; dr = l->data; - if (dr->im == dstim) + if ((dr->win == win) && (dr->disp == disp)) { Evas_List ll; for (ll = dr->tmp_images; ll; ll = ll->next) { - Evas_Image_Update *up; + Evas_Imlib_Update *up; up = ll->data; if (up->image) { - int w, h; - - w = up->w; h = up->h; - imlib_context_set_image(dr->im); - imlib_blend_image_onto_image(up->image, 1, - 0, 0, w, h, - up->x, up->y, w, h); imlib_context_set_image(up->image); + imlib_render_image_on_drawable(up->x, up->y); imlib_free_image(); } free(up); @@ -970,14 +899,14 @@ __evas_image_flush_draw(Display *disp, Imlib_Image dstim, Window win) } -int -__evas_image_capable(Display *disp) + int +__evas_imlib_capable(Display *disp) { return 1; } Visual * -__evas_image_get_visual(Display *disp, int screen) +__evas_imlib_get_visual(Display *disp, int screen) { int depth; @@ -986,26 +915,26 @@ __evas_image_get_visual(Display *disp, int screen) } XVisualInfo * -__evas_image_get_visual_info(Display *disp, int screen) +__evas_imlib_get_visual_info(Display *disp, int screen) { static XVisualInfo *vi = NULL; XVisualInfo vi_template; int n; if (vi) return vi; - vi_template.visualid = (__evas_image_get_visual(disp, screen))->visualid; + vi_template.visualid = (__evas_imlib_get_visual(disp, screen))->visualid; vi_template.screen = screen; vi = XGetVisualInfo(disp, VisualIDMask | VisualScreenMask, &vi_template ,&n); return vi; } Colormap -__evas_image_get_colormap(Display *disp, int screen) +__evas_imlib_get_colormap(Display *disp, int screen) { Visual *v; if (__evas_cmap) return __evas_cmap; - v = __evas_image_get_visual(disp, screen); + v = __evas_imlib_get_visual(disp, screen); __evas_cmap = DefaultColormap(disp, screen); return __evas_cmap; __evas_cmap = XCreateColormap(disp, RootWindow(disp, screen), v, AllocNone); @@ -1013,35 +942,37 @@ __evas_image_get_colormap(Display *disp, int screen) } void -__evas_image_init(Display *disp, int screen, int colors) +__evas_imlib_init(Display *disp, int screen, int colors) { static int initted = 0; if (!initted) { + imlib_set_color_usage(colors); imlib_set_font_cache_size(1024 * 1024); imlib_set_cache_size(8 * 1024 * 1024); initted = 1; } + imlib_set_color_usage(colors); } void -__evas_image_draw_add_rect(Display *disp, Imlib_Image dstim, Window win, +__evas_imlib_draw_add_rect(Display *disp, Imlib_Image dstim, Window win, int x, int y, int w, int h) { Evas_List l; for(l = drawable_list; l; l = l->next) { - Evas_Image_Drawable *dr; + Evas_Imlib_Drawable *dr; dr = l->data; - if (dr->im == dstim) + if ((dr->win == win) && (dr->disp == disp)) { - Evas_Image_Update *up; + Evas_Imlib_Update *up; - up = malloc(sizeof(Evas_Image_Update)); + up = malloc(sizeof(Evas_Imlib_Update)); up->x = x; up->y = y; up->w = w; @@ -1052,13 +983,14 @@ __evas_image_draw_add_rect(Display *disp, Imlib_Image dstim, Window win, return; } { - Evas_Image_Drawable *dr; - Evas_Image_Update *up; + Evas_Imlib_Drawable *dr; + Evas_Imlib_Update *up; - dr = malloc(sizeof(Evas_Image_Drawable)); - dr->im = dstim; + dr = malloc(sizeof(Evas_Imlib_Drawable)); + dr->win = win; + dr->disp = disp; dr->tmp_images = NULL; - up = malloc(sizeof(Evas_Image_Update)); + up = malloc(sizeof(Evas_Imlib_Update)); up->x = x; up->y = y; up->w = w;