errr - beat me dead with a large possum - but somehow these 2 files got

swapped (in their contents) - thank god it still worked & compiled - but
well... that wasn't very good now was it? :)


SVN revision: 4104
This commit is contained in:
Carsten Haitzler 2001-01-07 21:04:32 +00:00
parent 9cf4dd7c8c
commit 38c00cc88b
2 changed files with 296 additions and 296 deletions

View File

@ -1,7 +1,6 @@
#include "evas_image_routines.h"
#include "evas_imlib_routines.h" static void __evas_image_image_cache_flush(Display *disp);
static void __evas_imlib_image_cache_flush(Display *disp);
static int __evas_anti_alias = 1; static int __evas_anti_alias = 1;
static Evas_List drawable_list = NULL; static Evas_List drawable_list = NULL;
@ -21,7 +20,7 @@ static int __evas_clip_a = 0;
/*****************************************************************************/ /*****************************************************************************/
static void static void
__evas_imlib_image_cache_flush(Display *disp) __evas_image_image_cache_flush(Display *disp)
{ {
int size; int size;
@ -34,21 +33,21 @@ __evas_imlib_image_cache_flush(Display *disp)
/* image externals ***********************************************************/ /* image externals ***********************************************************/
/*****************************************************************************/ /*****************************************************************************/
Evas_Imlib_Image * Evas_Image_Image *
__evas_imlib_image_new_from_file(Display *disp, char *file) __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 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_context_set_image((Imlib_Image)im);
imlib_free_image(); imlib_free_image();
} }
void void
__evas_imlib_image_cache_empty(Display *disp) __evas_image_image_cache_empty(Display *disp)
{ {
int size; int size;
@ -58,19 +57,19 @@ __evas_imlib_image_cache_empty(Display *disp)
} }
void 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); imlib_set_cache_size(size);
} }
int int
__evas_imlib_image_cache_get_size(Display *disp) __evas_image_image_cache_get_size(Display *disp)
{ {
return imlib_get_cache_size(); return imlib_get_cache_size();
} }
void 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, 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 src_x, int src_y, int src_w, int src_h,
int dst_x, int dst_y, int dst_w, int dst_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); imlib_context_set_blend(1);
for(l = drawable_list; l; l = l->next) for(l = drawable_list; l; l = l->next)
{ {
Evas_Imlib_Drawable *dr; Evas_Image_Drawable *dr;
dr = l->data; dr = l->data;
if ((dr->win == w) && (dr->disp == disp)) if (dr->im == dstim)
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Imlib_Update *up; Evas_Image_Update *up;
up = ll->data; up = ll->data;
@ -138,8 +137,20 @@ __evas_imlib_image_draw(Evas_Imlib_Image *im,
__evas_clip_h); __evas_clip_h);
else imlib_context_set_cliprect(0, 0, 0, 0); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
up->image = imlib_create_image(up->w, up->h); {
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_context_set_image(up->image);
imlib_blend_image_onto_image(im, 0, imlib_blend_image_onto_image(im, 0,
src_x, src_y, src_w, src_h, src_x, src_y, src_w, src_h,
@ -156,21 +167,21 @@ __evas_imlib_image_draw(Evas_Imlib_Image *im,
} }
int 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); imlib_context_set_image((Imlib_Image)im);
return imlib_image_get_width(); return imlib_image_get_width();
} }
int 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); imlib_context_set_image((Imlib_Image)im);
return imlib_image_get_height(); return imlib_image_get_height();
} }
void 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) int top, int bottom)
{ {
Imlib_Border bd; Imlib_Border bd;
@ -184,7 +195,7 @@ __evas_imlib_image_set_borders(Evas_Imlib_Image *im, int left, int right,
} }
void void
__evas_imlib_image_set_smooth_scaling(int on) __evas_image_image_set_smooth_scaling(int on)
{ {
__evas_anti_alias = on; __evas_anti_alias = on;
} }
@ -223,52 +234,52 @@ __evas_imlib_image_set_smooth_scaling(int on)
/* font externals ************************************************************/ /* font externals ************************************************************/
/*****************************************************************************/ /*****************************************************************************/
Evas_Imlib_Font * Evas_Image_Font *
__evas_imlib_text_font_new(Display *disp, char *font, int size) __evas_image_text_font_new(Display *disp, char *font, int size)
{ {
char buf[4096]; char buf[4096];
sprintf(buf, "%s/%i", font, size); sprintf(buf, "%s/%i", font, size);
return (Evas_Imlib_Font *)imlib_load_font(buf); return (Evas_Image_Font *)imlib_load_font(buf);
} }
void 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_context_set_font((Imlib_Font)fn);
imlib_free_font(); imlib_free_font();
} }
int 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); imlib_context_set_font((Imlib_Font)fn);
return imlib_get_font_ascent(); return imlib_get_font_ascent();
} }
int 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); imlib_context_set_font((Imlib_Font)fn);
return imlib_get_font_descent(); return imlib_get_font_descent();
} }
int 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); imlib_context_set_font((Imlib_Font)fn);
return imlib_get_maximum_font_ascent(); return imlib_get_maximum_font_ascent();
} }
int 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); imlib_context_set_font((Imlib_Font)fn);
return imlib_get_maximum_font_descent(); return imlib_get_maximum_font_descent();
} }
void 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_horiz,
int *advance_vert) int *advance_vert)
{ {
@ -277,32 +288,32 @@ __evas_imlib_text_font_get_advances(Evas_Imlib_Font *fn, char *text,
} }
int 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); imlib_context_set_font((Imlib_Font)fn);
return imlib_get_text_inset(text); return imlib_get_text_inset(text);
} }
void void
__evas_imlib_text_font_add_path(char *path) __evas_image_text_font_add_path(char *path)
{ {
imlib_add_path_to_font_path(path); imlib_add_path_to_font_path(path);
} }
void void
__evas_imlib_text_font_del_path(char *path) __evas_image_text_font_del_path(char *path)
{ {
imlib_remove_path_from_font_path(path); imlib_remove_path_from_font_path(path);
} }
char ** char **
__evas_imlib_text_font_list_paths(int *count) __evas_image_text_font_list_paths(int *count)
{ {
return imlib_list_font_path(count); return imlib_list_font_path(count);
} }
void void
__evas_imlib_text_cache_empty(Display *disp) __evas_image_text_cache_empty(Display *disp)
{ {
int size; int size;
@ -312,19 +323,19 @@ __evas_imlib_text_cache_empty(Display *disp)
} }
void 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); imlib_set_font_cache_size(size);
} }
int int
__evas_imlib_text_cache_get_size(Display *disp) __evas_image_text_cache_get_size(Display *disp)
{ {
return imlib_get_font_cache_size(); return imlib_get_font_cache_size();
} }
void 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 win_w, int win_h, int x, int y, char *text,
int cr, int cg, int cb, int ca) 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); imlib_get_text_size(text, &w, &h);
for(l = drawable_list; l; l = l->next) for(l = drawable_list; l; l = l->next)
{ {
Evas_Imlib_Drawable *dr; Evas_Image_Drawable *dr;
dr = l->data; dr = l->data;
if ((dr->win == win) && (dr->disp == disp)) if (dr->im == dstim)
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Imlib_Update *up; Evas_Image_Update *up;
up = ll->data; 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_w,
__evas_clip_h); __evas_clip_h);
else imlib_context_set_cliprect(0, 0, 0, 0); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
up->image = imlib_create_image(up->w, up->h); {
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_context_set_image(up->image);
imlib_text_draw(x - up->x, y - up->y, text); 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 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)) if ((!fn) || (!text))
{ {
@ -398,7 +421,7 @@ __evas_imlib_text_get_size(Evas_Imlib_Font *fn, char *text, int *w, int *h)
} }
int 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 x, int y,
int *cx, int *cy, int *cw, int *ch) 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 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 num,
int *cx, int *cy, int *cw, int *ch) 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 *******************************************************/ /* 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 win_w, int win_h,
int x, int y, int w, int h, int x, int y, int w, int h,
int cr, int cg, int cb, int ca) 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); imlib_context_set_blend(1);
for(l = drawable_list; l; l = l->next) for(l = drawable_list; l; l = l->next)
{ {
Evas_Imlib_Drawable *dr; Evas_Image_Drawable *dr;
dr = l->data; dr = l->data;
if ((dr->win == win) && (dr->disp == disp)) if (dr->im == dstim)
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Imlib_Update *up; Evas_Image_Update *up;
up = ll->data; 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); 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); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
up->image = imlib_create_image(up->w, up->h); {
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_context_set_image(up->image);
imlib_image_fill_rectangle(x - up->x, y - up->y, w, h); 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 *******************************************************/ /* 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 win_w, int win_h,
int x1, int y1, int x2, int y2, int x1, int y1, int x2, int y2,
int cr, int cg, int cb, int ca) 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++; w++; h++;
for(l = drawable_list; l; l = l->next) for(l = drawable_list; l; l = l->next)
{ {
Evas_Imlib_Drawable *dr; Evas_Image_Drawable *dr;
dr = l->data; dr = l->data;
if ((dr->win == win) && (dr->disp == disp)) if (dr->im == dstim)
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Imlib_Update *up; Evas_Image_Update *up;
up = ll->data; 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); 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); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
up->image = imlib_create_image(up->w, up->h); {
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_context_set_image(up->image);
imlib_image_draw_line(x1 - up->x, y1 - up->y, x2 - up->x, y2 - up->y, 0); 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_Image_Graident *
__evas_imlib_gradient_new(Display *disp) __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; gr->colors = NULL;
} }
void void
__evas_imlib_gradient_free(Evas_Imlib_Graident *gr) __evas_image_gradient_free(Evas_Image_Graident *gr)
{ {
Evas_List l; Evas_List l;
@ -628,11 +675,11 @@ __evas_imlib_gradient_free(Evas_Imlib_Graident *gr)
} }
void 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->r = r;
cl->g = g; cl->g = g;
cl->b = b; cl->b = b;
@ -642,7 +689,7 @@ __evas_imlib_gradient_color_add(Evas_Imlib_Graident *gr, int r, int g, int b, in
} }
void 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; Evas_List l;
Imlib_Color_Range cr; 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) for (l = gr->colors; l; l = l->next)
{ {
Evas_Imlib_Color *cl; Evas_Image_Color *cl;
cl = l->data; cl = l->data;
if (__evas_clip) 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) for(l = drawable_list; l; l = l->next)
{ {
Evas_Imlib_Drawable *dr; Evas_Image_Drawable *dr;
dr = l->data; dr = l->data;
if ((dr->win == win) && (dr->disp == disp)) if (dr->im == dstim)
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Imlib_Update *up; Evas_Image_Update *up;
up = ll->data; 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); 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); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
up->image = imlib_create_image(up->w, up->h); {
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_context_set_image(up->image);
imlib_image_fill_color_range_rectangle(x - up->x, y - up->y, w, h, angle); 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 */ /* polygons */
/************/ /************/
void 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, int win_w, int win_h,
Evas_List points, Evas_List points,
int cr, int cg, int cb, int ca) 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) for(l = drawable_list; l; l = l->next)
{ {
Evas_Imlib_Drawable *dr; Evas_Image_Drawable *dr;
dr = l->data; dr = l->data;
if ((dr->win == win) && (dr->disp == disp)) if (dr->im == dstim)
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Imlib_Update *up; Evas_Image_Update *up;
up = ll->data; 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); 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); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
up->image = imlib_create_image(up->w, up->h); {
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_context_set_image(up->image);
pol = imlib_polygon_new(); pol = imlib_polygon_new();
for (l2 = points; l2; l2 = l2->next) for (l2 = points; l2; l2 = l2->next)
@ -833,7 +904,7 @@ static Visual *__evas_visual = NULL;
static Colormap __evas_cmap = 0; static Colormap __evas_cmap = 0;
void 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 = on;
__evas_clip_x = x; __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 void
__evas_imlib_sync(Display *disp) __evas_image_sync(Display *disp)
{ {
XSync(disp, False);
} }
void 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; Evas_List l;
imlib_context_set_display(disp); imlib_context_set_blend(1);
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) for(l = drawable_list; l; l = l->next)
{ {
Evas_Imlib_Drawable *dr; Evas_Image_Drawable *dr;
dr = l->data; dr = l->data;
if ((dr->win == win) && (dr->disp == disp)) if (dr->im == dstim)
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Imlib_Update *up; Evas_Image_Update *up;
up = ll->data; up = ll->data;
if (up->image) 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_context_set_image(up->image);
imlib_render_image_on_drawable(up->x, up->y);
imlib_free_image(); imlib_free_image();
} }
free(up); free(up);
@ -899,14 +970,14 @@ __evas_imlib_flush_draw(Display *disp, Imlib_Image dstim, Window win)
} }
int int
__evas_imlib_capable(Display *disp) __evas_image_capable(Display *disp)
{ {
return 1; return 1;
} }
Visual * Visual *
__evas_imlib_get_visual(Display *disp, int screen) __evas_image_get_visual(Display *disp, int screen)
{ {
int depth; int depth;
@ -915,26 +986,26 @@ __evas_imlib_get_visual(Display *disp, int screen)
} }
XVisualInfo * XVisualInfo *
__evas_imlib_get_visual_info(Display *disp, int screen) __evas_image_get_visual_info(Display *disp, int screen)
{ {
static XVisualInfo *vi = NULL; static XVisualInfo *vi = NULL;
XVisualInfo vi_template; XVisualInfo vi_template;
int n; int n;
if (vi) return vi; 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_template.screen = screen;
vi = XGetVisualInfo(disp, VisualIDMask | VisualScreenMask, &vi_template ,&n); vi = XGetVisualInfo(disp, VisualIDMask | VisualScreenMask, &vi_template ,&n);
return vi; return vi;
} }
Colormap Colormap
__evas_imlib_get_colormap(Display *disp, int screen) __evas_image_get_colormap(Display *disp, int screen)
{ {
Visual *v; Visual *v;
if (__evas_cmap) return __evas_cmap; 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); __evas_cmap = DefaultColormap(disp, screen);
return __evas_cmap; return __evas_cmap;
__evas_cmap = XCreateColormap(disp, RootWindow(disp, screen), v, AllocNone); __evas_cmap = XCreateColormap(disp, RootWindow(disp, screen), v, AllocNone);
@ -942,37 +1013,35 @@ __evas_imlib_get_colormap(Display *disp, int screen)
} }
void void
__evas_imlib_init(Display *disp, int screen, int colors) __evas_image_init(Display *disp, int screen, int colors)
{ {
static int initted = 0; static int initted = 0;
if (!initted) if (!initted)
{ {
imlib_set_color_usage(colors);
imlib_set_font_cache_size(1024 * 1024); imlib_set_font_cache_size(1024 * 1024);
imlib_set_cache_size(8 * 1024 * 1024); imlib_set_cache_size(8 * 1024 * 1024);
initted = 1; initted = 1;
} }
imlib_set_color_usage(colors);
} }
void 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) int x, int y, int w, int h)
{ {
Evas_List l; Evas_List l;
for(l = drawable_list; l; l = l->next) for(l = drawable_list; l; l = l->next)
{ {
Evas_Imlib_Drawable *dr; Evas_Image_Drawable *dr;
dr = l->data; 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->x = x;
up->y = y; up->y = y;
up->w = w; up->w = w;
@ -983,14 +1052,13 @@ __evas_imlib_draw_add_rect(Display *disp, Imlib_Image dstim, Window win,
return; return;
} }
{ {
Evas_Imlib_Drawable *dr; Evas_Image_Drawable *dr;
Evas_Imlib_Update *up; Evas_Image_Update *up;
dr = malloc(sizeof(Evas_Imlib_Drawable)); dr = malloc(sizeof(Evas_Image_Drawable));
dr->win = win; dr->im = dstim;
dr->disp = disp;
dr->tmp_images = NULL; dr->tmp_images = NULL;
up = malloc(sizeof(Evas_Imlib_Update)); up = malloc(sizeof(Evas_Image_Update));
up->x = x; up->x = x;
up->y = y; up->y = y;
up->w = w; up->w = w;

View File

@ -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 int __evas_anti_alias = 1;
static Evas_List drawable_list = NULL; static Evas_List drawable_list = NULL;
@ -20,7 +21,7 @@ static int __evas_clip_a = 0;
/*****************************************************************************/ /*****************************************************************************/
static void static void
__evas_image_image_cache_flush(Display *disp) __evas_imlib_image_cache_flush(Display *disp)
{ {
int size; int size;
@ -33,21 +34,21 @@ __evas_image_image_cache_flush(Display *disp)
/* image externals ***********************************************************/ /* image externals ***********************************************************/
/*****************************************************************************/ /*****************************************************************************/
Evas_Image_Image * Evas_Imlib_Image *
__evas_image_image_new_from_file(Display *disp, char *file) __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 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_context_set_image((Imlib_Image)im);
imlib_free_image(); imlib_free_image();
} }
void void
__evas_image_image_cache_empty(Display *disp) __evas_imlib_image_cache_empty(Display *disp)
{ {
int size; int size;
@ -57,19 +58,19 @@ __evas_image_image_cache_empty(Display *disp)
} }
void 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); imlib_set_cache_size(size);
} }
int int
__evas_image_image_cache_get_size(Display *disp) __evas_imlib_image_cache_get_size(Display *disp)
{ {
return imlib_get_cache_size(); return imlib_get_cache_size();
} }
void 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, 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 src_x, int src_y, int src_w, int src_h,
int dst_x, int dst_y, int dst_w, int dst_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); imlib_context_set_blend(1);
for(l = drawable_list; l; l = l->next) for(l = drawable_list; l; l = l->next)
{ {
Evas_Image_Drawable *dr; Evas_Imlib_Drawable *dr;
dr = l->data; dr = l->data;
if (dr->im == dstim) if ((dr->win == w) && (dr->disp == disp))
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Image_Update *up; Evas_Imlib_Update *up;
up = ll->data; up = ll->data;
@ -137,20 +138,8 @@ __evas_image_image_draw(Evas_Image_Image *im,
__evas_clip_h); __evas_clip_h);
else imlib_context_set_cliprect(0, 0, 0, 0); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
{ up->image = imlib_create_image(up->w, up->h);
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_context_set_image(up->image);
imlib_blend_image_onto_image(im, 0, imlib_blend_image_onto_image(im, 0,
src_x, src_y, src_w, src_h, src_x, src_y, src_w, src_h,
@ -167,21 +156,21 @@ __evas_image_image_draw(Evas_Image_Image *im,
} }
int 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); imlib_context_set_image((Imlib_Image)im);
return imlib_image_get_width(); return imlib_image_get_width();
} }
int 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); imlib_context_set_image((Imlib_Image)im);
return imlib_image_get_height(); return imlib_image_get_height();
} }
void 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) int top, int bottom)
{ {
Imlib_Border bd; Imlib_Border bd;
@ -195,7 +184,7 @@ __evas_image_image_set_borders(Evas_Image_Image *im, int left, int right,
} }
void void
__evas_image_image_set_smooth_scaling(int on) __evas_imlib_image_set_smooth_scaling(int on)
{ {
__evas_anti_alias = on; __evas_anti_alias = on;
} }
@ -234,52 +223,52 @@ __evas_image_image_set_smooth_scaling(int on)
/* font externals ************************************************************/ /* font externals ************************************************************/
/*****************************************************************************/ /*****************************************************************************/
Evas_Image_Font * Evas_Imlib_Font *
__evas_image_text_font_new(Display *disp, char *font, int size) __evas_imlib_text_font_new(Display *disp, char *font, int size)
{ {
char buf[4096]; char buf[4096];
sprintf(buf, "%s/%i", font, size); sprintf(buf, "%s/%i", font, size);
return (Evas_Image_Font *)imlib_load_font(buf); return (Evas_Imlib_Font *)imlib_load_font(buf);
} }
void 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_context_set_font((Imlib_Font)fn);
imlib_free_font(); imlib_free_font();
} }
int 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); imlib_context_set_font((Imlib_Font)fn);
return imlib_get_font_ascent(); return imlib_get_font_ascent();
} }
int 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); imlib_context_set_font((Imlib_Font)fn);
return imlib_get_font_descent(); return imlib_get_font_descent();
} }
int 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); imlib_context_set_font((Imlib_Font)fn);
return imlib_get_maximum_font_ascent(); return imlib_get_maximum_font_ascent();
} }
int 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); imlib_context_set_font((Imlib_Font)fn);
return imlib_get_maximum_font_descent(); return imlib_get_maximum_font_descent();
} }
void 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_horiz,
int *advance_vert) int *advance_vert)
{ {
@ -288,32 +277,32 @@ __evas_image_text_font_get_advances(Evas_Image_Font *fn, char *text,
} }
int 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); imlib_context_set_font((Imlib_Font)fn);
return imlib_get_text_inset(text); return imlib_get_text_inset(text);
} }
void void
__evas_image_text_font_add_path(char *path) __evas_imlib_text_font_add_path(char *path)
{ {
imlib_add_path_to_font_path(path); imlib_add_path_to_font_path(path);
} }
void void
__evas_image_text_font_del_path(char *path) __evas_imlib_text_font_del_path(char *path)
{ {
imlib_remove_path_from_font_path(path); imlib_remove_path_from_font_path(path);
} }
char ** char **
__evas_image_text_font_list_paths(int *count) __evas_imlib_text_font_list_paths(int *count)
{ {
return imlib_list_font_path(count); return imlib_list_font_path(count);
} }
void void
__evas_image_text_cache_empty(Display *disp) __evas_imlib_text_cache_empty(Display *disp)
{ {
int size; int size;
@ -323,19 +312,19 @@ __evas_image_text_cache_empty(Display *disp)
} }
void 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); imlib_set_font_cache_size(size);
} }
int int
__evas_image_text_cache_get_size(Display *disp) __evas_imlib_text_cache_get_size(Display *disp)
{ {
return imlib_get_font_cache_size(); return imlib_get_font_cache_size();
} }
void 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 win_w, int win_h, int x, int y, char *text,
int cr, int cg, int cb, int ca) 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); imlib_get_text_size(text, &w, &h);
for(l = drawable_list; l; l = l->next) for(l = drawable_list; l; l = l->next)
{ {
Evas_Image_Drawable *dr; Evas_Imlib_Drawable *dr;
dr = l->data; dr = l->data;
if (dr->im == dstim) if ((dr->win == win) && (dr->disp == disp))
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Image_Update *up; Evas_Imlib_Update *up;
up = ll->data; 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_w,
__evas_clip_h); __evas_clip_h);
else imlib_context_set_cliprect(0, 0, 0, 0); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
{ up->image = imlib_create_image(up->w, up->h);
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_context_set_image(up->image);
imlib_text_draw(x - up->x, y - up->y, text); 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 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)) if ((!fn) || (!text))
{ {
@ -421,7 +398,7 @@ __evas_image_text_get_size(Evas_Image_Font *fn, char *text, int *w, int *h)
} }
int 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 x, int y,
int *cx, int *cy, int *cw, int *ch) 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 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 num,
int *cx, int *cy, int *cw, int *ch) 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 *******************************************************/ /* 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 win_w, int win_h,
int x, int y, int w, int h, int x, int y, int w, int h,
int cr, int cg, int cb, int ca) 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); imlib_context_set_blend(1);
for(l = drawable_list; l; l = l->next) for(l = drawable_list; l; l = l->next)
{ {
Evas_Image_Drawable *dr; Evas_Imlib_Drawable *dr;
dr = l->data; dr = l->data;
if (dr->im == dstim) if ((dr->win == win) && (dr->disp == disp))
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Image_Update *up; Evas_Imlib_Update *up;
up = ll->data; 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); 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); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
{ up->image = imlib_create_image(up->w, up->h);
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_context_set_image(up->image);
imlib_image_fill_rectangle(x - up->x, y - up->y, w, h); 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 *******************************************************/ /* 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 win_w, int win_h,
int x1, int y1, int x2, int y2, int x1, int y1, int x2, int y2,
int cr, int cg, int cb, int ca) 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++; w++; h++;
for(l = drawable_list; l; l = l->next) for(l = drawable_list; l; l = l->next)
{ {
Evas_Image_Drawable *dr; Evas_Imlib_Drawable *dr;
dr = l->data; dr = l->data;
if (dr->im == dstim) if ((dr->win == win) && (dr->disp == disp))
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Image_Update *up; Evas_Imlib_Update *up;
up = ll->data; 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); 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); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
{ up->image = imlib_create_image(up->w, up->h);
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_context_set_image(up->image);
imlib_image_draw_line(x1 - up->x, y1 - up->y, x2 - up->x, y2 - up->y, 0); 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_Imlib_Graident *
__evas_image_gradient_new(Display *disp) __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; gr->colors = NULL;
} }
void void
__evas_image_gradient_free(Evas_Image_Graident *gr) __evas_imlib_gradient_free(Evas_Imlib_Graident *gr)
{ {
Evas_List l; Evas_List l;
@ -675,11 +628,11 @@ __evas_image_gradient_free(Evas_Image_Graident *gr)
} }
void 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->r = r;
cl->g = g; cl->g = g;
cl->b = b; cl->b = b;
@ -689,7 +642,7 @@ __evas_image_gradient_color_add(Evas_Image_Graident *gr, int r, int g, int b, in
} }
void 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; Evas_List l;
Imlib_Color_Range cr; 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) for (l = gr->colors; l; l = l->next)
{ {
Evas_Image_Color *cl; Evas_Imlib_Color *cl;
cl = l->data; cl = l->data;
if (__evas_clip) 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) for(l = drawable_list; l; l = l->next)
{ {
Evas_Image_Drawable *dr; Evas_Imlib_Drawable *dr;
dr = l->data; dr = l->data;
if (dr->im == dstim) if ((dr->win == win) && (dr->disp == disp))
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Image_Update *up; Evas_Imlib_Update *up;
up = ll->data; 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); 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); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
{ up->image = imlib_create_image(up->w, up->h);
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_context_set_image(up->image);
imlib_image_fill_color_range_rectangle(x - up->x, y - up->y, w, h, angle); 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 */ /* polygons */
/************/ /************/
void 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, int win_w, int win_h,
Evas_List points, Evas_List points,
int cr, int cg, int cb, int ca) 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) for(l = drawable_list; l; l = l->next)
{ {
Evas_Image_Drawable *dr; Evas_Imlib_Drawable *dr;
dr = l->data; dr = l->data;
if (dr->im == dstim) if ((dr->win == win) && (dr->disp == disp))
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Image_Update *up; Evas_Imlib_Update *up;
up = ll->data; 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); 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); else imlib_context_set_cliprect(0, 0, 0, 0);
if (!up->image) if (!up->image)
{ up->image = imlib_create_image(up->w, up->h);
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_context_set_image(up->image);
pol = imlib_polygon_new(); pol = imlib_polygon_new();
for (l2 = points; l2; l2 = l2->next) for (l2 = points; l2; l2 = l2->next)
@ -904,7 +833,7 @@ static Visual *__evas_visual = NULL;
static Colormap __evas_cmap = 0; static Colormap __evas_cmap = 0;
void 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 = on;
__evas_clip_x = x; __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 void
__evas_image_sync(Display *disp) __evas_imlib_sync(Display *disp)
{ {
XSync(disp, False);
} }
void 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; 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) for(l = drawable_list; l; l = l->next)
{ {
Evas_Image_Drawable *dr; Evas_Imlib_Drawable *dr;
dr = l->data; dr = l->data;
if (dr->im == dstim) if ((dr->win == win) && (dr->disp == disp))
{ {
Evas_List ll; Evas_List ll;
for (ll = dr->tmp_images; ll; ll = ll->next) for (ll = dr->tmp_images; ll; ll = ll->next)
{ {
Evas_Image_Update *up; Evas_Imlib_Update *up;
up = ll->data; up = ll->data;
if (up->image) 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_context_set_image(up->image);
imlib_render_image_on_drawable(up->x, up->y);
imlib_free_image(); imlib_free_image();
} }
free(up); free(up);
@ -970,14 +899,14 @@ __evas_image_flush_draw(Display *disp, Imlib_Image dstim, Window win)
} }
int int
__evas_image_capable(Display *disp) __evas_imlib_capable(Display *disp)
{ {
return 1; return 1;
} }
Visual * Visual *
__evas_image_get_visual(Display *disp, int screen) __evas_imlib_get_visual(Display *disp, int screen)
{ {
int depth; int depth;
@ -986,26 +915,26 @@ __evas_image_get_visual(Display *disp, int screen)
} }
XVisualInfo * XVisualInfo *
__evas_image_get_visual_info(Display *disp, int screen) __evas_imlib_get_visual_info(Display *disp, int screen)
{ {
static XVisualInfo *vi = NULL; static XVisualInfo *vi = NULL;
XVisualInfo vi_template; XVisualInfo vi_template;
int n; int n;
if (vi) return vi; 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_template.screen = screen;
vi = XGetVisualInfo(disp, VisualIDMask | VisualScreenMask, &vi_template ,&n); vi = XGetVisualInfo(disp, VisualIDMask | VisualScreenMask, &vi_template ,&n);
return vi; return vi;
} }
Colormap Colormap
__evas_image_get_colormap(Display *disp, int screen) __evas_imlib_get_colormap(Display *disp, int screen)
{ {
Visual *v; Visual *v;
if (__evas_cmap) return __evas_cmap; 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); __evas_cmap = DefaultColormap(disp, screen);
return __evas_cmap; return __evas_cmap;
__evas_cmap = XCreateColormap(disp, RootWindow(disp, screen), v, AllocNone); __evas_cmap = XCreateColormap(disp, RootWindow(disp, screen), v, AllocNone);
@ -1013,35 +942,37 @@ __evas_image_get_colormap(Display *disp, int screen)
} }
void void
__evas_image_init(Display *disp, int screen, int colors) __evas_imlib_init(Display *disp, int screen, int colors)
{ {
static int initted = 0; static int initted = 0;
if (!initted) if (!initted)
{ {
imlib_set_color_usage(colors);
imlib_set_font_cache_size(1024 * 1024); imlib_set_font_cache_size(1024 * 1024);
imlib_set_cache_size(8 * 1024 * 1024); imlib_set_cache_size(8 * 1024 * 1024);
initted = 1; initted = 1;
} }
imlib_set_color_usage(colors);
} }
void 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) int x, int y, int w, int h)
{ {
Evas_List l; Evas_List l;
for(l = drawable_list; l; l = l->next) for(l = drawable_list; l; l = l->next)
{ {
Evas_Image_Drawable *dr; Evas_Imlib_Drawable *dr;
dr = l->data; 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->x = x;
up->y = y; up->y = y;
up->w = w; up->w = w;
@ -1052,13 +983,14 @@ __evas_image_draw_add_rect(Display *disp, Imlib_Image dstim, Window win,
return; return;
} }
{ {
Evas_Image_Drawable *dr; Evas_Imlib_Drawable *dr;
Evas_Image_Update *up; Evas_Imlib_Update *up;
dr = malloc(sizeof(Evas_Image_Drawable)); dr = malloc(sizeof(Evas_Imlib_Drawable));
dr->im = dstim; dr->win = win;
dr->disp = disp;
dr->tmp_images = NULL; dr->tmp_images = NULL;
up = malloc(sizeof(Evas_Image_Update)); up = malloc(sizeof(Evas_Imlib_Update));
up->x = x; up->x = x;
up->y = y; up->y = y;
up->w = w; up->w = w;