devs/devilhorns/wayland_egl
parent
9e610f2bc3
commit
8a740e5fa4
8 changed files with 1094 additions and 0 deletions
@ -1,2 +1,3 @@ |
||||
#undef HAVE_GL |
||||
#undef HAVE_GLU |
||||
#undef HAVE_RENDER |
||||
|
@ -0,0 +1,787 @@ |
||||
#include "evas_render_routines.h" |
||||
|
||||
|
||||
#ifdef HAVE_RENDER |
||||
|
||||
static void __evas_render_image_cache_flush(Display *disp); |
||||
static int __evas_anti_alias = 1; |
||||
static Evas_List drawable_list = NULL; |
||||
|
||||
/*****************************************************************************/ |
||||
/* image internals ***********************************************************/ |
||||
/*****************************************************************************/ |
||||
|
||||
static void |
||||
__evas_render_image_cache_flush(Display *disp) |
||||
{ |
||||
int size; |
||||
|
||||
size = imlib_get_cache_size(); |
||||
imlib_set_cache_size(0); |
||||
imlib_set_cache_size(size); |
||||
} |
||||
|
||||
/*****************************************************************************/ |
||||
/* image externals ***********************************************************/ |
||||
/*****************************************************************************/ |
||||
|
||||
Evas_Render_Image * |
||||
__evas_render_image_new_from_file(Display *disp, char *file) |
||||
{
|
||||
return NULL; |
||||
} |
||||
|
||||
void |
||||
__evas_render_image_free(Evas_Render_Image *im) |
||||
{ |
||||
} |
||||
|
||||
void |
||||
__evas_render_image_cache_empty(Display *disp) |
||||
{ |
||||
int size; |
||||
|
||||
size = imlib_get_cache_size(); |
||||
imlib_set_cache_size(0); |
||||
imlib_set_cache_size(size); |
||||
} |
||||
|
||||
void |
||||
__evas_render_image_cache_set_size(Display *disp, int size) |
||||
{ |
||||
imlib_set_cache_size(size); |
||||
} |
||||
|
||||
int |
||||
__evas_render_image_cache_get_size(Display *disp) |
||||
{ |
||||
return imlib_get_cache_size(); |
||||
} |
||||
|
||||
void |
||||
__evas_render_image_draw(Evas_Render_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, |
||||
int cr, int cg, int cb, int ca) |
||||
{ |
||||
Evas_List l; |
||||
|
||||
if (ca == 0) return; |
||||
|
||||
for(l = drawable_list; l; l = l->next) |
||||
{ |
||||
Evas_Render_Drawable *dr; |
||||
|
||||
dr = l->data; |
||||
|
||||
if ((dr->win == w) && (dr->disp == disp)) |
||||
{ |
||||
Evas_List ll; |
||||
|
||||
for (ll = dr->tmp_images; ll; ll = ll->next) |
||||
{ |
||||
Evas_Render_Update *up; |
||||
|
||||
up = ll->data; |
||||
|
||||
/* if image intersects image update - render */ |
||||
if (RECTS_INTERSECT(up->x, up->y, up->w, up->h, |
||||
dst_x, dst_y, dst_w, dst_h)) |
||||
{ |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
int |
||||
__evas_render_image_get_width(Evas_Render_Image *im) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
int |
||||
__evas_render_image_get_height(Evas_Render_Image *im) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
void |
||||
__evas_render_image_set_borders(Evas_Render_Image *im, int left, int right, |
||||
int top, int bottom) |
||||
{ |
||||
} |
||||
|
||||
void |
||||
__evas_render_image_set_smooth_scaling(int on) |
||||
{ |
||||
__evas_anti_alias = on; |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/ |
||||
/* font internals ************************************************************/ |
||||
/*****************************************************************************/ |
||||
|
||||
/*****************************************************************************/ |
||||
/* font externals ************************************************************/ |
||||
/*****************************************************************************/ |
||||
|
||||
Evas_Render_Font * |
||||
__evas_render_text_font_new(Display *disp, char *font, int size) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
void |
||||
__evas_render_text_font_free(Evas_Render_Font *fn) |
||||
{ |
||||
} |
||||
|
||||
int |
||||
__evas_render_text_font_get_ascent(Evas_Render_Font *fn) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
int |
||||
__evas_render_text_font_get_descent(Evas_Render_Font *fn) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
int |
||||
__evas_render_text_font_get_max_ascent(Evas_Render_Font *fn) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
int |
||||
__evas_render_text_font_get_max_descent(Evas_Render_Font *fn) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
void |
||||
__evas_render_text_font_get_advances(Evas_Render_Font *fn, char *text, |
||||
int *advance_horiz, |
||||
int *advance_vert) |
||||
{ |
||||
} |
||||
|
||||
int |
||||
__evas_render_text_font_get_first_inset(Evas_Render_Font *fn, char *text) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
void |
||||
__evas_render_text_font_add_path(char *path) |
||||
{ |
||||
} |
||||
|
||||
void |
||||
__evas_render_text_font_del_path(char *path) |
||||
{ |
||||
} |
||||
|
||||
char ** |
||||
__evas_render_text_font_list_paths(int *count) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
void |
||||
__evas_render_text_cache_empty(Display *disp) |
||||
{ |
||||
} |
||||
|
||||
void |
||||
__evas_render_text_cache_set_size(Display *disp, int size) |
||||
{ |
||||
} |
||||
|
||||
int |
||||
__evas_render_text_cache_get_size(Display *disp) |
||||
{ |
||||
return 0; |
||||
} |
||||
|
||||
void |
||||
__evas_render_text_draw(Evas_Render_Font *fn, Display *disp, Imlib_Image dstim, Window win,
|
||||
int win_w, int win_h, int x, int y, char *text,
|
||||
int r, int g, int b, int a) |
||||
{ |
||||
Evas_List l; |
||||
int w, h; |
||||
|
||||
if ((!fn) || (!text)) return; |
||||
for(l = drawable_list; l; l = l->next) |
||||
{ |
||||
Evas_Render_Drawable *dr; |
||||
|
||||
dr = l->data; |
||||
|
||||
if ((dr->win == win) && (dr->disp == disp)) |
||||
{ |
||||
Evas_List ll; |
||||
|
||||
for (ll = dr->tmp_images; ll; ll = ll->next) |
||||
{ |
||||
Evas_Render_Update *up; |
||||
|
||||
up = ll->data; |
||||
|
||||
/* if image intersects image update - render */ |
||||
if (RECTS_INTERSECT(up->x, up->y, up->w, up->h, |
||||
x, y, w, h)) |
||||
{ |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
void |
||||
__evas_render_text_get_size(Evas_Render_Font *fn, char *text, int *w, int *h) |
||||
{ |
||||
if ((!fn) || (!text))
|
||||
{ |
||||
*w = 0; *h = 0; |
||||
return; |
||||
} |
||||
} |
||||
|
||||
int |
||||
__evas_render_text_get_character_at_pos(Evas_Render_Font *fn, char *text,
|
||||
int x, int y,
|
||||
int *cx, int *cy, int *cw, int *ch) |
||||
{ |
||||
return -1; |
||||
} |
||||
|
||||
void |
||||
__evas_render_text_get_character_number(Evas_Render_Font *fn, char *text,
|
||||
int num,
|
||||
int *cx, int *cy, int *cw, int *ch) |
||||
{ |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/ |
||||
/* rectangle externals *******************************************************/ |
||||
/*****************************************************************************/ |
||||
|
||||
void __evas_render_rectangle_draw(Display *disp, Imlib_Image dstim, Window win, |
||||
int win_w, int win_h, |
||||
int x, int y, int w, int h, |
||||
int r, int g, int b, int a) |
||||
{ |
||||
Evas_List l; |
||||
for(l = drawable_list; l; l = l->next) |
||||
{ |
||||
Evas_Render_Drawable *dr; |
||||
|
||||
dr = l->data; |
||||
|
||||
if ((dr->win == win) && (dr->disp == disp)) |
||||
{ |
||||
Evas_List ll; |
||||
|
||||
for (ll = dr->tmp_images; ll; ll = ll->next) |
||||
{ |
||||
Evas_Render_Update *up; |
||||
|
||||
up = ll->data; |
||||
|
||||
/* if image intersects image update - render */ |
||||
if (RECTS_INTERSECT(up->x, up->y, up->w, up->h, |
||||
x, y, w, h)) |
||||
{ |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/ |
||||
/* rectangle externals *******************************************************/ |
||||
/*****************************************************************************/ |
||||
|
||||
void __evas_render_line_draw(Display *disp, Imlib_Image dstim, Window win, |
||||
int win_w, int win_h, |
||||
int x1, int y1, int x2, int y2, |
||||
int r, int g, int b, int a) |
||||
{ |
||||
Evas_List l; |
||||
int x, y, w, h; |
||||
|
||||
w = x2 - x1; |
||||
if (w < 0) w = -w; |
||||
h = y2 - y1; |
||||
if (h < 0) h = -h; |
||||
if (x1 < x2) x = x1; |
||||
else x = x2; |
||||
if (y1 < y2) y = y1; |
||||
else y = y2; |
||||
w++; h++; |
||||
for(l = drawable_list; l; l = l->next) |
||||
{ |
||||
Evas_Render_Drawable *dr; |
||||
|
||||
dr = l->data; |
||||
|
||||
if ((dr->win == win) && (dr->disp == disp)) |
||||
{ |
||||
Evas_List ll; |
||||
|
||||
for (ll = dr->tmp_images; ll; ll = ll->next) |
||||
{ |
||||
Evas_Render_Update *up; |
||||
|
||||
up = ll->data; |
||||
|
||||
/* if image intersects image update - render */ |
||||
if (RECTS_INTERSECT(up->x, up->y, up->w, up->h, |
||||
x, y, w, h)) |
||||
{ |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/****************************************************************************/ |
||||
/* gradient externals ********************************************************/ |
||||
/*****************************************************************************/ |
||||
|
||||
|
||||
Evas_Render_Graident * |
||||
__evas_render_gradient_new(Display *disp) |
||||
{ |
||||
return NULL; |
||||
} |
||||
|
||||
void |
||||
__evas_render_gradient_free(Evas_Render_Graident *gr) |
||||
{ |
||||
} |
||||
|
||||
void |
||||
__evas_render_gradient_color_add(Evas_Render_Graident *gr, int r, int g, int b, int a, int dist) |
||||
{ |
||||
} |
||||
|
||||
void |
||||
__evas_render_gradient_draw(Evas_Render_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; |
||||
|
||||
for(l = drawable_list; l; l = l->next) |
||||
{ |
||||
Evas_Render_Drawable *dr; |
||||
|
||||
dr = l->data; |
||||
|
||||
if ((dr->win == win) && (dr->disp == disp)) |
||||
{ |
||||
Evas_List ll; |
||||
|
||||
for (ll = dr->tmp_images; ll; ll = ll->next) |
||||
{ |
||||
Evas_Render_Update *up; |
||||
|
||||
up = ll->data; |
||||
|
||||
/* if image intersects image update - render */ |
||||
if (RECTS_INTERSECT(up->x, up->y, up->w, up->h, |
||||
x, y, w, h)) |
||||
{ |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
/************/ |
||||
/* polygons */ |
||||
/************/ |
||||
void |
||||
__evas_render_poly_draw (Display *disp, Imlib_Image dstim, Window win,
|
||||
int win_w, int win_h,
|
||||
Evas_List points,
|
||||
int r, int g, int b, int a) |
||||
{ |
||||
Evas_List l, l2; |
||||
int x, y, w, h; |
||||
|
||||
x = y = w = h = 0; |
||||
if (points) |
||||
{ |
||||
Evas_Point p; |
||||
|
||||
p = points->data; |
||||
x = p->x; |
||||
y = p->y; |
||||
w = 1; |
||||
h = 1; |
||||
} |
||||
for (l2 = points; l2; l2 = l2->next) |
||||
{ |
||||
Evas_Point p; |
||||
|
||||
p = l2->data; |
||||
if (p->x < x)
|
||||
{ |
||||
w += x - p->x; |
||||
x = p->x; |
||||
} |
||||
if (p->x > (x + w))
|
||||
w = p->x - x; |
||||
if (p->y < y)
|
||||
{ |
||||
h += y - p->y; |
||||
y = p->y; |
||||
} |
||||
if (p->y > (y + h))
|
||||
h = p->y - y; |
||||
} |
||||
for(l = drawable_list; l; l = l->next) |
||||
{ |
||||
Evas_Render_Drawable *dr; |
||||
|
||||
dr = l->data; |
||||
|
||||
if ((dr->win == win) && (dr->disp == disp)) |
||||
{ |
||||
Evas_List ll; |
||||
|
||||
for (ll = dr->tmp_images; ll; ll = ll->next) |
||||
{ |
||||
Evas_Render_Update *up; |
||||
|
||||
up = ll->data; |
||||
|
||||
/* if image intersects image update - render */ |
||||
if (RECTS_INTERSECT(up->x, up->y, up->w, up->h, |
||||
x, y, w, h)) |
||||
{ |
||||
} |
||||
} |
||||
} |
||||
} |
||||
} |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*****************************************************************************/ |
||||
/* general externals *********************************************************/ |
||||
/*****************************************************************************/ |
||||
|
||||
static Visual *__evas_visual = NULL; |
||||
static Colormap __evas_cmap = 0; |
||||
|
||||
void |
||||
__evas_render_sync(Display *disp) |
||||
{ |
||||
XSync(disp, False); |
||||
} |
||||
|
||||
void |
||||
__evas_render_flush_draw(Display *disp, Imlib_Image dstim, Window win) |
||||
{ |
||||
Evas_List l; |
||||
|
||||
for(l = drawable_list; l; l = l->next) |
||||
{ |
||||
Evas_Render_Drawable *dr; |
||||
|
||||
dr = l->data; |
||||
|
||||
if ((dr->win == win) && (dr->disp == disp)) |
||||
{ |
||||
Evas_List ll; |
||||
|
||||
for (ll = dr->tmp_images; ll; ll = ll->next) |
||||
{ |
||||
Evas_Render_Update *up; |
||||
|
||||
up = ll->data; |
||||
|
||||
free(up); |
||||
} |
||||
if (dr->tmp_images) |
||||
dr->tmp_images = evas_list_free(dr->tmp_images); |
||||
} |
||||
free(dr); |
||||
} |
||||
if (drawable_list) |
||||
drawable_list = evas_list_free(drawable_list); |
||||
drawable_list = NULL; |
||||
} |
||||
|
||||
|
||||
int |
||||
__evas_render_capable(Display *disp) |
||||
{ |
||||
return 1; |
||||
} |
||||
|
||||
Visual * |
||||
__evas_render_get_visual(Display *disp, int screen) |
||||
{ |
||||
int depth; |
||||
|
||||
__evas_visual = imlib_get_best_visual(disp, screen, &depth); |
||||
return __evas_visual; |
||||
} |
||||
|
||||
XVisualInfo * |
||||
__evas_render_get_visual_info(Display *disp, int screen) |
||||
{ |
||||
static XVisualInfo *vi = NULL; |
||||
XVisualInfo vi_template; |
||||
int n; |
||||
|
||||
if (vi) return vi; |
||||
vi_template.visualid = (__evas_render_get_visual(disp, screen))->visualid; |
||||
vi_template.screen = screen; |
||||
vi = XGetVisualInfo(disp, VisualIDMask | VisualScreenMask, &vi_template ,&n); |
||||
return vi; |
||||
} |
||||
|
||||
Colormap |
||||
__evas_render_get_colormap(Display *disp, int screen) |
||||
{ |
||||
Visual *v; |
||||
|
||||
if (__evas_cmap) return __evas_cmap; |
||||
v = __evas_render_get_visual(disp, screen); |
||||
__evas_cmap = DefaultColormap(disp, screen); |
||||
return __evas_cmap; |
||||
__evas_cmap = XCreateColormap(disp, RootWindow(disp, screen), v, AllocNone); |
||||
return __evas_cmap; |
||||
} |
||||
|
||||
void |
||||
__evas_render_init(Display *disp, int screen, int colors) |
||||
{ |
||||
static int initted = 0; |
||||
|
||||
if (!initted) |
||||
{ |
||||
initted = 1; |
||||
} |
||||
} |
||||
|
||||
void |
||||
__evas_render_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_Render_Drawable *dr; |
||||
|
||||
dr = l->data; |
||||
|
||||
if ((dr->win == win) && (dr->disp == disp)) |
||||
{ |
||||
Evas_Render_Update *up; |
||||
|
||||
up = malloc(sizeof(Evas_Render_Update)); |
||||
up->x = x; |
||||
up->y = y; |
||||
up->w = w; |
||||
up->h = h; |
||||
dr->tmp_images = evas_list_append(dr->tmp_images, up); |
||||
} |
||||
return; |
||||
} |
||||
{ |
||||
Evas_Render_Drawable *dr; |
||||
Evas_Render_Update *up; |
||||
|
||||
dr = malloc(sizeof(Evas_Render_Drawable)); |
||||
dr->win = win; |
||||
dr->disp = disp; |
||||
dr->tmp_images = NULL; |
||||
up = malloc(sizeof(Evas_Render_Update)); |
||||
up->x = x; |
||||
up->y = y; |
||||
up->w = w; |
||||
up->h = h; |
||||
drawable_list = evas_list_append(drawable_list, dr); |
||||
dr->tmp_images = evas_list_append(dr->tmp_images, up); |
||||
} |
||||
} |
||||
|
||||
#else |
||||
|
||||
/***************/ |
||||
/* image stuff */ |
||||
/***************/ |
||||
Evas_Render_Image *__evas_render_image_new_from_file(Display *disp, char *file){return NULL;} |
||||
void __evas_render_image_free(Evas_Render_Image *im){} |
||||
void __evas_render_image_cache_empty(Display *disp){} |
||||
void __evas_render_image_cache_set_size(Display *disp, int size){} |
||||
int __evas_render_image_cache_get_size(Display *disp){return 0;} |
||||
int __evas_render_image_get_width(Evas_Render_Image *im){return 0;} |
||||
int __evas_render_image_get_height(Evas_Render_Image *im){return 0;} |
||||
void __evas_render_image_set_borders(Evas_Render_Image *im, int left, int right, int top, int bottom){} |
||||
void __evas_render_image_set_smooth_scaling(int on){} |
||||
void __evas_render_image_draw(Evas_Render_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, int cr, int cg, int cb, int ca){} |
||||
|
||||
/********/ |
||||
/* text */ |
||||
/********/ |
||||
Evas_Render_Font *__evas_render_text_font_new(Display *disp, char *font, int size){return NULL;} |
||||
void __evas_render_text_font_free(Evas_Render_Font *fn){} |
||||
void __evas_render_text_font_add_path(char *path){} |
||||
int __evas_render_text_font_get_ascent(Evas_Render_Font *fn){return 0;} |
||||
int __evas_render_text_font_get_descent(Evas_Render_Font *fn){return 0;} |
||||
int __evas_render_text_font_get_max_ascent(Evas_Render_Font *fn){return 0;} |
||||
int __evas_render_text_font_get_max_descent(Evas_Render_Font *fn){return 0;} |
||||
void __evas_render_text_font_get_advances(Evas_Render_Font *fn, char *text, int *advance_horiz, int *advance_vert){} |
||||
int __evas_render_text_font_get_first_inset(Evas_Render_Font *fn, char *text){return 0;} |
||||
void __evas_render_text_font_del_path(char *path){} |
||||
char **__evas_render_text_font_list_paths(int *count){return NULL;} |
||||
void __evas_render_text_cache_empty(Display *disp){} |
||||
void __evas_render_text_cache_set_size(Display *disp, int size){} |
||||
int __evas_render_text_cache_get_size(Display *disp){return 0;} |
||||
void __evas_render_text_get_size(Evas_Render_Font *fn, char *text, int *w, int *h){} |
||||
int __evas_render_text_get_character_at_pos(Evas_Render_Font *fn, char *text, int x, int y, int *cx, int *cy, int *cw, int *ch){return 0;} |
||||
void __evas_render_text_get_character_number(Evas_Render_Font *fn, char *text, int num, int *cx, int *cy, int *cw, int *ch){} |
||||
void __evas_render_text_draw(Evas_Render_Font *fn, Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, char *text, int r, int g, int b, int a){} |
||||
|
||||
/**************/ |
||||
/* rectangles */ |
||||
/**************/ |
||||
void __evas_render_rectangle_draw(Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, int w, int h, int r, int g, int b, int a){} |
||||
|
||||
/*********/ |
||||
/* lines */ |
||||
/*********/ |
||||
void __evas_render_line_draw(Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x1, int y1, int x2, int y2, int r, int g, int b, int a){} |
||||
|
||||
/*************/ |
||||
/* gradients */ |
||||
/*************/ |
||||
Evas_Render_Graident *__evas_render_gradient_new(Display *disp){return NULL;} |
||||
void __evas_render_gradient_free(Evas_Render_Graident *gr){} |
||||
void __evas_render_gradient_color_add(Evas_Render_Graident *gr, int r, int g, int b, int a, int dist){} |
||||
void __evas_render_gradient_draw(Evas_Render_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){} |
||||
|
||||
/************/ |
||||
/* polygons */ |
||||
/************/ |
||||
void __evas_render_poly_draw (Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, Evas_List points, int r, int g, int b, int a) {} |
||||
|
||||
/***********/ |
||||
/* drawing */ |
||||
/***********/ |
||||
void __evas_render_init(Display *disp, int screen, int colors){} |
||||
int __evas_render_capable(Display *disp){return 0;} |
||||
void __evas_render_flush_draw(Display *disp, Imlib_Image dstim, Window win){} |
||||
void __evas_render_sync(Display *disp){} |
||||
Visual *__evas_render_get_visual(Display *disp, int screen){return NULL;} |
||||
XVisualInfo *__evas_render_get_visual_info(Display *disp, int screen){return NULL;} |
||||
Colormap __evas_render_get_colormap(Display *disp, int screen){return 0;} |
||||
void __evas_render_draw_add_rect(Display *disp, Imlib_Image dstim, Window win, int x, int y, int w, int h){} |
||||
|
||||
#endif |
@ -0,0 +1,122 @@ |
||||
#include "config.h" |
||||
#include <stdio.h> |
||||
#include <unistd.h> |
||||
#include <stdlib.h> |
||||
#include <string.h> |
||||
#include <math.h> |
||||
#include <sys/time.h> |
||||
#include <unistd.h> |
||||
|
||||
#include <X11/X.h> |
||||
#include <X11/Xlib.h> |
||||
#include <X11/Xatom.h> |
||||
#include <X11/Xutil.h> |
||||
|
||||
#include "Evas_private.h" |
||||
#include "Evas.h" |
||||
|
||||
#include <Imlib2.h> |
||||
|
||||
#ifdef HAVE_RENDER |
||||
#else |
||||
#endif |
||||
|
||||
#ifndef SPANS_COMMON |
||||
# define SPANS_COMMON(x1, w1, x2, w2) \ |
||||
(!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1))))) |
||||
#define RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) \ |
||||
((SPANS_COMMON((x), (w), (xx), (ww))) && (SPANS_COMMON((y), (h), (yy), (hh)))) |
||||
#endif |
||||
|
||||
typedef void Evas_Render_Image; |
||||
typedef void Evas_Render_Font; |
||||
typedef void Evas_Render_Graident; |
||||
|
||||
typedef struct _evas_render_drawable Evas_Render_Drawable; |
||||
typedef struct _evas_render_update Evas_Render_Update; |
||||
|
||||
struct _evas_render_drawable |
||||
{ |
||||
Display *disp; |
||||
Window win; |
||||
Evas_List tmp_images; |
||||
}; |
||||
|
||||
struct _evas_render_update |
||||
{ |
||||
int x, y, w, h; |
||||
}; |
||||
|
||||
/***************/ |
||||
/* image stuff */ |
||||
/***************/ |
||||
Evas_Render_Image *__evas_render_image_new_from_file(Display *disp, char *file); |
||||
void __evas_render_image_free(Evas_Render_Image *im); |
||||
void __evas_render_image_cache_empty(Display *disp); |
||||
void __evas_render_image_cache_set_size(Display *disp, int size); |
||||
int __evas_render_image_cache_get_size(Display *disp); |
||||
int __evas_render_image_get_width(Evas_Render_Image *im); |
||||
int __evas_render_image_get_height(Evas_Render_Image *im); |
||||
void __evas_render_image_set_borders(Evas_Render_Image *im, int left, int right, int top, int bottom); |
||||
void __evas_render_image_set_smooth_scaling(int on); |
||||
void __evas_render_image_draw(Evas_Render_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, int cr, int cg, int cb, int ca); |
||||
|
||||
/********/ |
||||
/* text */ |
||||
/********/ |
||||
Evas_Render_Font *__evas_render_text_font_new(Display *disp, char *font, int size); |
||||
void __evas_render_text_font_free(Evas_Render_Font *fn); |
||||
int __evas_render_text_font_get_ascent(Evas_Render_Font *fn); |
||||
int __evas_render_text_font_get_descent(Evas_Render_Font *fn); |
||||
int __evas_render_text_font_get_max_ascent(Evas_Render_Font *fn); |
||||
int __evas_render_text_font_get_max_descent(Evas_Render_Font *fn); |
||||
void __evas_render_text_font_get_advances(Evas_Render_Font *fn, char *text, int *advance_horiz, int *advance_vert); |
||||
int __evas_render_text_font_get_first_inset(Evas_Render_Font *fn, char *text); |
||||
void __evas_render_text_font_add_path(char *path); |
||||
void __evas_render_text_font_del_path(char *path); |
||||
char **__evas_render_text_font_list_paths(int *count); |
||||
void __evas_render_text_cache_empty(Display *disp); |
||||
void __evas_render_text_cache_set_size(Display *disp, int size); |
||||
int __evas_render_text_cache_get_size(Display *disp); |
||||
void __evas_render_text_get_size(Evas_Render_Font *fn, char *text, int *w, int *h); |
||||
int __evas_render_text_get_character_at_pos(Evas_Render_Font *fn, char *text, int x, int y, int *cx, int *cy, int *cw, int *ch); |
||||
void __evas_render_text_get_character_number(Evas_Render_Font *fn, char *text, int num, int *cx, int *cy, int *cw, int *ch); |
||||
void __evas_render_text_draw(Evas_Render_Font *fn, Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, char *text, int r, int g, int b, int a); |
||||
|
||||
/**************/ |
||||
/* rectangles */ |
||||
/**************/ |
||||
|
||||
void __evas_render_rectangle_draw(Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x, int y, int w, int h, int r, int g, int b, int a); |
||||
|
||||
/*********/ |
||||
/* lines */ |
||||
/*********/ |
||||
|
||||
void __evas_render_line_draw(Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, int x1, int y1, int x2, int y2, int r, int g, int b, int a); |
||||
|
||||
/*************/ |
||||
/* gradients */ |
||||
/*************/ |
||||
Evas_Render_Graident *__evas_render_gradient_new(Display *disp); |
||||
void __evas_render_gradient_free(Evas_Render_Graident *gr); |
||||
void __evas_render_gradient_color_add(Evas_Render_Graident *gr, int r, int g, int b, int a, int dist); |
||||
void __evas_render_gradient_draw(Evas_Render_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); |
||||
|
||||
/************/ |
||||
/* polygons */ |
||||
/************/ |
||||
void __evas_render_poly_draw (Display *disp, Imlib_Image dstim, Window win, int win_w, int win_h, Evas_List points, int r, int g, int b, int a); |
||||
|
||||
/***********/ |
||||
/* drawing */ |
||||
/***********/ |
||||
void __evas_render_init(Display *disp, int screen, int colors); |
||||
int __evas_render_capable(Display *disp); |
||||
void __evas_render_flush_draw(Display *disp, Imlib_Image dstim, Window win); |
||||
void __evas_render_sync(Display *disp); |
||||
Visual *__evas_render_get_visual(Display *disp, int screen); |
||||
XVisualInfo *__evas_render_get_visual_info(Display *disp, int screen); |
||||
Colormap __evas_render_get_colormap(Display *disp, int screen); |
||||
void __evas_render_draw_add_rect(Display *disp, Imlib_Image dstim, Window win, int x, int y, int w, int h); |
||||
|
Loading…
Reference in new issue