Enlightenment CVS committal Author : raster Project : e17 Module : libs/evas
Dir : e17/libs/evas/src/modules/engines/gl_x11 Modified Files: evas_engine.c Log Message: 1. add new api calls to 1. set a "native surface" for image objects. this currently does nothing and i have kept it VEEERY generic it's a pointer to a native surface which can be just about anything - each engine will probably define a format of its own you need to use VIA the native surface type. 2. add calls to set/get colorspace - moving this down into the engine level. so far engines do nothing at all with it - but api is there. 3. clean up gl engine a bit - make it more standard. =================================================================== RCS file: /cvs/e/e17/libs/evas/src/modules/engines/gl_x11/evas_engine.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -3 -r1.16 -r1.17 --- evas_engine.c 30 Sep 2006 10:18:34 -0000 1.16 +++ evas_engine.c 9 Dec 2006 08:52:08 -0000 1.17 @@ -8,108 +8,8 @@ #include "Evas_Engine_GL_X11.h" #include "evas_gl_common.h" -static void *eng_info(Evas *e); -static void eng_info_free(Evas *e, void *info); -static void eng_setup(Evas *e, void *info); -static void *eng_output_setup(int w, int h, Display *disp, Drawable draw, Visual *vis, Colormap cmap, int depth); -static void eng_output_free(void *data); -static void eng_output_resize(void *data, int w, int h); -static void eng_output_tile_size_set(void *data, int w, int h); -static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h); -static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h); -static void eng_output_redraws_clear(void *data); -static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch); -static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h); -static void eng_output_flush(void *data); - -static void *eng_context_new(void *data); -static void eng_context_free(void *data, void *context); -static void eng_context_clip_set(void *data, void *context, int x, int y, int w, int h); -static void eng_context_clip_clip(void *data, void *context, int x, int y, int w, int h); -static void eng_context_clip_unset(void *data, void *context); -static int eng_context_clip_get(void *data, void *context, int *x, int *y, int *w, int *h); -static void eng_context_color_set(void *data, void *context, int r, int g, int b, int a); -static int eng_context_color_get(void *data, void *context, int *r, int *g, int *b, int *a); -static void eng_context_multiplier_set(void *data, void *context, int r, int g, int b, int a); -static void eng_context_multiplier_unset(void *data, void *context); -static int eng_context_multiplier_get(void *data, void *context, int *r, int *g, int *b, int *a); -static void eng_context_cutout_add(void *data, void *context, int x, int y, int w, int h); -static void eng_context_cutout_clear(void *data, void *context); -static void eng_context_anti_alias_set(void *data, void *context, unsigned char aa); -static unsigned char eng_context_anti_alias_get(void *data, void *context); -static void eng_context_color_interpolation_set(void *data, void *context, int color_space); -static int eng_context_color_interpolation_get(void *data, void *context); -static void eng_context_render_op_set(void *data, void *context, int op); -static int eng_context_render_op_get(void *data, void *context); - -static void eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h); - -static void eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2); - -static void *eng_polygon_point_add(void *data, void *context, void *polygon, int x, int y); -static void *eng_polygon_points_clear(void *data, void *context, void *polygon); -static void eng_polygon_draw(void *data, void *context, void *surface, void *polygon); - -static void *eng_gradient_new(void *data); -static void eng_gradient_free(void *data, void *gradient); -static void eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta); -static void eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta); -static void eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha); -static void eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len); -static void eng_gradient_clear(void *data, void *gradient); -static void eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h); -static void eng_gradient_fill_angle_set(void *data, void *gradient, double angle); -static void eng_gradient_fill_spread_set(void *data, void *gradient, int spread); -static void eng_gradient_angle_set(void *data, void *gradient, double angle); -static void eng_gradient_offset_set(void *data, void *gradient, float offset); -static void eng_gradient_direction_set(void *data, void *gradient, int direction); -static void eng_gradient_type_set(void *data, void *gradient, char *name, char *params); -static int eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h); -static int eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h); -static void eng_gradient_render_pre(void *data, void *context, void *gradient); -static void eng_gradient_render_post(void *data, void *gradient); -static void eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h); - -static void *eng_image_load(void *data, char *file, char *key, int *error, Evas_Image_Load_Opts *lo); -static void *eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data); -static void *eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data); -static void eng_image_free(void *data, void *image); -static void eng_image_size_get(void *data, void *image, int *w, int *h); -static void *eng_image_size_set(void *data, void *image, int w, int h); -static void *eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h); -static void *eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data); -static void *eng_image_data_put(void *data, void *image, DATA32 *image_data); -static void *eng_image_alpha_set(void *data, void *image, int has_alpha); -static int eng_image_alpha_get(void *data, void *image); -static void *eng_image_border_set(void *data, void *image, int l, int r, int t, int b); -static void eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b); -static void eng_image_draw(void *data, void *context, void *surface, void *image, 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 smooth); -static char *eng_image_comment_get(void *data, void *image, char *key); -static char *eng_image_format_get(void *data, void *image); -static void eng_image_cache_flush(void *data); -static void eng_image_cache_set(void *data, int bytes); -static int eng_image_cache_get(void *data); - -static void *eng_font_load(void *data, char *name, int size); -static void *eng_font_memory_load(void *data, char *name, int size, const void *fdata, int fdata_size); -static void *eng_font_add(void *data, void *font, char *name, int size); -static void *eng_font_memory_add(void *data, void *font, char *name, int size, const void *fdata, int fdata_size); -static void eng_font_free(void *data, void *font); -static int eng_font_ascent_get(void *data, void *font); -static int eng_font_descent_get(void *data, void *font); -static int eng_font_max_ascent_get(void *data, void *font); -static int eng_font_max_descent_get(void *data, void *font); -static void eng_font_string_size_get(void *data, void *font, char *text, int *w, int *h); -static int eng_font_inset_get(void *data, void *font, char *text); -static int eng_font_h_advance_get(void *data, void *font, char *text); -static int eng_font_v_advance_get(void *data, void *font, char *text); -static int eng_font_char_coords_get(void *data, void *font, char *text, int pos, int *cx, int *cy, int *cw, int *ch); -static int eng_font_char_at_coords_get(void *data, void *font, char *text, int x, int y, int *cx, int *cy, int *cw, int *ch); -static void eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, char *text); -static void eng_font_cache_flush(void *data); -static void eng_font_cache_set(void *data, int bytes); -static int eng_font_cache_get(void *data); - +/* function tables - filled in later (func and parent func) */ +static Evas_Func func, pfunc; static Visual *eng_best_visual_get(Display *disp, int screen); static Colormap eng_best_colormap_get(Display *disp, int screen); @@ -126,115 +26,6 @@ int end; }; -static Evas_Func eng_func = -{ - eng_info, - eng_info_free, - eng_setup, - eng_output_free, - eng_output_resize, - eng_output_tile_size_set, - eng_output_redraws_rect_add, - eng_output_redraws_rect_del, - eng_output_redraws_clear, - eng_output_redraws_next_update_get, - eng_output_redraws_next_update_push, - eng_output_flush, - /* draw context virtual methods */ - eng_context_new, - eng_context_free, - eng_context_clip_set, - eng_context_clip_clip, - eng_context_clip_unset, - eng_context_clip_get, - eng_context_color_set, - eng_context_color_get, - eng_context_multiplier_set, - eng_context_multiplier_unset, - eng_context_multiplier_get, - eng_context_cutout_add, - eng_context_cutout_clear, - eng_context_anti_alias_set, - eng_context_anti_alias_get, - eng_context_color_interpolation_set, - eng_context_color_interpolation_get, - eng_context_render_op_set, - eng_context_render_op_get, - /* rectangle draw funcs */ - eng_rectangle_draw, - /* line draw funcs */ - eng_line_draw, - /* polygon draw funcs */ - eng_polygon_point_add, - eng_polygon_points_clear, - eng_polygon_draw, - /* gradient draw funcs */ - eng_gradient_new, - eng_gradient_free, - eng_gradient_color_stop_add, - eng_gradient_alpha_stop_add, - eng_gradient_color_data_set, - eng_gradient_alpha_data_set, - eng_gradient_clear, - eng_gradient_fill_set, - eng_gradient_fill_angle_set, - eng_gradient_fill_spread_set, - eng_gradient_angle_set, - eng_gradient_offset_set, - eng_gradient_direction_set, - eng_gradient_type_set, - eng_gradient_is_opaque, - eng_gradient_is_visible, - eng_gradient_render_pre, - eng_gradient_render_post, - eng_gradient_draw, - /* image draw funcs */ - eng_image_load, - eng_image_new_from_data, - eng_image_new_from_copied_data, - eng_image_free, - eng_image_size_get, - eng_image_size_set, - eng_image_dirty_region, - eng_image_data_get, - eng_image_data_put, - eng_image_alpha_set, - eng_image_alpha_get, - eng_image_border_set, - eng_image_border_get, - eng_image_draw, - eng_image_comment_get, - eng_image_format_get, - /* image cache funcs */ - eng_image_cache_flush, - eng_image_cache_set, - eng_image_cache_get, - /* font draw functions */ - eng_font_load, - eng_font_memory_load, - eng_font_add, - eng_font_memory_add, - eng_font_free, - eng_font_ascent_get, - eng_font_descent_get, - eng_font_max_ascent_get, - eng_font_max_descent_get, - eng_font_string_size_get, - eng_font_inset_get, - eng_font_h_advance_get, - eng_font_v_advance_get, - eng_font_char_coords_get, - eng_font_char_at_coords_get, - eng_font_draw, - /* font cache functions */ - eng_font_cache_flush, - eng_font_cache_set, - eng_font_cache_get, - - eng_font_hinting_set, - eng_font_hinting_can_hint -}; - static void * eng_info(Evas *e) { @@ -246,7 +37,6 @@ info->func.best_visual_get = eng_best_visual_get; info->func.best_colormap_get = eng_best_colormap_get; info->func.best_depth_get = eng_best_depth_get; - printf("GL: create info...\n"); return info; e = NULL; } @@ -265,18 +55,44 @@ { Render_Engine *re; Evas_Engine_Info_GL_X11 *info; + int eb, evb; info = (Evas_Engine_Info_GL_X11 *)in; - printf("GL: setup info...\n"); if (!e->engine.data.output) - e->engine.data.output = - eng_output_setup(e->output.w, - e->output.h, - info->info.display, - info->info.drawable, - info->info.visual, - info->info.colormap, - info->info.depth); + { + if (!glXQueryExtension(info->info.display, &eb, &evb)) return; + re = calloc(1, sizeof(Render_Engine)); + if (!re) return; + e->engine.data.output = re; + re->win = eng_window_new(info->info.display, + info->info.drawable, + 0 /* FIXME: screen 0 assumption */, + info->info.visual, + info->info.colormap, + info->info.depth, + e->output.w, + e->output.h); + if (!re->win) + { + free(re); + e->engine.data.output = NULL; + return; + } + + evas_common_cpu_init(); + + evas_common_blend_init(); + evas_common_image_init(); + evas_common_convert_init(); + evas_common_scale_init(); + evas_common_rectangle_init(); + evas_common_gradient_init(); + evas_common_polygon_init(); + evas_common_line_init(); + evas_common_font_init(); + evas_common_draw_init(); + evas_common_tilebuf_init(); + } else { re = e->engine.data.output; @@ -296,42 +112,6 @@ e->engine.func->context_new(e->engine.data.output); } -static void * -eng_output_setup(int w, int h, Display *disp, Drawable draw, Visual *vis, Colormap cmap, int depth) -{ - Render_Engine *re; - int eb, evb; - - if (!glXQueryExtension(disp, &eb, &evb)) return NULL; - re = calloc(1, sizeof(Render_Engine)); - - re->win = eng_window_new(disp, draw, - 0 /* FIXME: screen 0 assumption */, - vis, cmap, depth, w, h); - if (!re->win) - { - free(re); - return NULL; - } - printf("GL: gl window setup done.\n"); - - evas_common_cpu_init(); - - evas_common_blend_init(); - evas_common_image_init(); - evas_common_convert_init(); - evas_common_scale_init(); - evas_common_rectangle_init(); - evas_common_gradient_init(); - evas_common_polygon_init(); - evas_common_line_init(); - evas_common_font_init(); - evas_common_draw_init(); - evas_common_tilebuf_init(); - - return re; -} - static void eng_output_free(void *data) { @@ -481,117 +261,6 @@ // printf("SYNC! %i\n", fr++); } -static void * -eng_context_new(void *data) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_draw_context_new(); -} - -static void -eng_context_free(void *data, void *context) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_draw_context_free(context); -} - -static void -eng_context_clip_set(void *data, void *context, int x, int y, int w, int h) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_draw_context_set_clip(context, x, y, w, h); -} - -static void -eng_context_clip_clip(void *data, void *context, int x, int y, int w, int h) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_draw_context_clip_clip(context, x, y, w, h); -} - -static void -eng_context_clip_unset(void *data, void *context) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_draw_context_unset_clip(context); -} - -static int -eng_context_clip_get(void *data, void *context, int *x, int *y, int *w, int *h) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - *x = ((RGBA_Draw_Context *)context)->clip.x; - *y = ((RGBA_Draw_Context *)context)->clip.y; - *w = ((RGBA_Draw_Context *)context)->clip.w; - *h = ((RGBA_Draw_Context *)context)->clip.h; - return ((RGBA_Draw_Context *)context)->clip.use; -} - -static void -eng_context_color_set(void *data, void *context, int r, int g, int b, int a) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_draw_context_set_color(context, r, g, b, a); -} - -static int -eng_context_color_get(void *data, void *context, int *r, int *g, int *b, int *a) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - *r = (int)(R_VAL(&((RGBA_Draw_Context *)context)->col.col)); - *g = (int)(G_VAL(&((RGBA_Draw_Context *)context)->col.col)); - *b = (int)(B_VAL(&((RGBA_Draw_Context *)context)->col.col)); - *a = (int)(A_VAL(&((RGBA_Draw_Context *)context)->col.col)); - return 1; -} - -static void -eng_context_multiplier_set(void *data, void *context, int r, int g, int b, int a) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_draw_context_set_multiplier(context, r, g, b, a); -} - -static void -eng_context_multiplier_unset(void *data, void *context) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_draw_context_unset_multiplier(context); -} - -static int -eng_context_multiplier_get(void *data, void *context, int *r, int *g, int *b, int *a) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - *r = (int)(R_VAL(&((RGBA_Draw_Context *)context)->mul.col)); - *g = (int)(G_VAL(&((RGBA_Draw_Context *)context)->mul.col)); - *b = (int)(B_VAL(&((RGBA_Draw_Context *)context)->mul.col)); - *a = (int)(A_VAL(&((RGBA_Draw_Context *)context)->mul.col)); - return ((RGBA_Draw_Context *)context)->mul.use; -} - static void eng_context_cutout_add(void *data, void *context, int x, int y, int w, int h) { @@ -611,65 +280,6 @@ } static void -eng_context_anti_alias_set(void *data, void *context, unsigned char aa) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_draw_context_set_anti_alias(context, aa); -} - -static unsigned char -eng_context_anti_alias_get(void *data, void *context) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return ((RGBA_Draw_Context *)context)->anti_alias; -} - -static void -eng_context_color_interpolation_set(void *data, void *context, int color_space) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_draw_context_set_color_interpolation(context, color_space); -} - -static int -eng_context_color_interpolation_get(void *data, void *context) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return ((RGBA_Draw_Context *)context)->interpolation.color_space; -} - -static void -eng_context_render_op_set(void *data, void *context, int op) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_draw_context_set_render_op(context, op); -} - -static int -eng_context_render_op_get(void *data, void *context) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return ((RGBA_Draw_Context *)context)->render_op; -} - - - - - - -static void eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h) { Render_Engine *re; @@ -719,8 +329,6 @@ evas_gl_common_poly_draw(re->win->gl_context, polygon); } - - static void * eng_gradient_new(void *data) { @@ -1019,7 +627,6 @@ return image; } - static int eng_image_alpha_get(void *data, void *image) { @@ -1042,7 +649,6 @@ return image; } - static void eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b) { @@ -1084,177 +690,29 @@ re = (Render_Engine *)data; im = image; -// if (im->im->info.format == 1) return "png"; return NULL; } static void -eng_image_cache_flush(void *data) -{ - Render_Engine *re; - int tmp_size; - - re = (Render_Engine *)data; - tmp_size = evas_common_image_get_cache(); - evas_common_image_set_cache(0); - evas_common_image_set_cache(tmp_size); -} - -static void -eng_image_cache_set(void *data, int bytes) +eng_image_colorspace_set(void *data, void *image, int cspace) { - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_image_set_cache(bytes); } static int -eng_image_cache_get(void *data) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_image_get_cache(); -} - -static void * -eng_font_load(void *data, char *name, int size) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_load(name, size); -} - -static void * -eng_font_memory_load(void *data, char *name, int size, const void *fdata, int fdata_size) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_memory_load(name, size, fdata, fdata_size); -} - -static void * -eng_font_add(void *data, void *font, char *name, int size) +eng_image_colorspace_get(void *data, void *image) { - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_add(font, name, size); -} - -static void * -eng_font_memory_add(void *data, void *font, char *name, int size, const void *fdata, int fdata_size) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_memory_add(font, name, size, fdata, fdata_size); + return EVAS_COLORSPACE_ARGB8888; } static void -eng_font_free(void *data, void *font) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_font_free(font); -} - -static int -eng_font_ascent_get(void *data, void *font) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_ascent_get(font); -} - -static int -eng_font_descent_get(void *data, void *font) +eng_image_native_set(void *data, void *image, void *native) { - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_descent_get(font); } -static int -eng_font_max_ascent_get(void *data, void *font) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_max_ascent_get(font); -} - -static int -eng_font_max_descent_get(void *data, void *font) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_max_descent_get(font); -} - -static void -eng_font_string_size_get(void *data, void *font, char *text, int *w, int *h) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_font_query_size(font, text, w, h); -} - -static int -eng_font_inset_get(void *data, void *font, char *text) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_query_inset(font, text); -} - -static int -eng_font_h_advance_get(void *data, void *font, char *text) -{ - Render_Engine *re; - int h, v; - - re = (Render_Engine *)data; - evas_common_font_query_advance(font, text, &h, &v); - return h; -} - -static int -eng_font_v_advance_get(void *data, void *font, char *text) -{ - Render_Engine *re; - int h, v; - - re = (Render_Engine *)data; - evas_common_font_query_advance(font, text, &h, &v); - return v; -} - -static int -eng_font_char_coords_get(void *data, void *font, char *text, int pos, int *cx, int *cy, int *cw, int *ch) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_query_char_coords(font, text, pos, cx, cy, cw, ch); -} - -static int -eng_font_char_at_coords_get(void *data, void *font, char *text, int x, int y, int *cx, int *cy, int *cw, int *ch) +static void * +eng_image_native_get(void *data, void *image) { - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_query_text_at_pos(font, text, x, y, cx, cy, cw, ch); + return NULL; } static void @@ -1263,7 +721,6 @@ Render_Engine *re; re = (Render_Engine *)data; - /* text renderign takes benchmark from 40 to 27 on gf4-ti4400 */ { static RGBA_Image *im = NULL; @@ -1281,7 +738,6 @@ evas_gl_font_texture_new, evas_gl_font_texture_free, evas_gl_font_texture_draw); - /* 40 */ evas_common_font_draw(im, context, font, x, y, text); evas_common_draw_context_font_ext_set(context, NULL, @@ -1291,59 +747,6 @@ } } -static void -eng_font_cache_flush(void *data) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_font_flush(); -} - -static void -eng_font_cache_set(void *data, int bytes) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_font_cache_set(bytes); -} - -static int -eng_font_cache_get(void *data) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_font_cache_get(); -} - -static void -eng_font_hinting_set(void *data, void *font, int hinting) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - evas_common_font_hinting_set(font, hinting); -} - -static int -eng_font_hinting_can_hint(void *data, int hinting) -{ - Render_Engine *re; - - re = (Render_Engine *)data; - return evas_common_hinting_available(hinting); -} - - - - - - - - - /* private engine functions the calling prog can use */ static Visual * @@ -1383,7 +786,73 @@ module_open(Evas_Module *em) { if (!em) return 0; - em->functions = (void *)(&eng_func); + /* get whatever engine module we inherit from */ + if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0; + /* store it for later use */ + func = pfunc; + /* now to override methods */ + #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_) + ORD(info); + ORD(info_free); + ORD(setup); + ORD(output_free); + ORD(output_resize); + ORD(output_tile_size_set); + ORD(output_redraws_rect_add); + ORD(output_redraws_rect_del); + ORD(output_redraws_clear); + ORD(output_redraws_next_update_get); + ORD(output_redraws_next_update_push); + ORD(context_cutout_add); + ORD(context_cutout_clear); + ORD(output_flush); + ORD(rectangle_draw); + ORD(line_draw); + ORD(polygon_point_add); + ORD(polygon_points_clear); + ORD(polygon_draw); + ORD(gradient_new); + ORD(gradient_free); + ORD(gradient_color_stop_add); + ORD(gradient_alpha_stop_add); + ORD(gradient_color_data_set); + ORD(gradient_alpha_data_set); + ORD(gradient_clear); + ORD(gradient_fill_set); + ORD(gradient_fill_angle_set); + ORD(gradient_fill_spread_set); + ORD(gradient_angle_set); + ORD(gradient_offset_set); + ORD(gradient_direction_set); + ORD(gradient_type_set); + ORD(gradient_is_opaque); + ORD(gradient_is_visible); + ORD(gradient_render_pre); + ORD(gradient_render_post); + ORD(gradient_draw); + ORD(image_load); + ORD(image_new_from_data); + ORD(image_new_from_copied_data); + ORD(image_free); + ORD(image_size_get); + ORD(image_size_set); + ORD(image_dirty_region); + ORD(image_data_get); + ORD(image_data_put); + ORD(image_alpha_set); + ORD(image_alpha_get); + ORD(image_border_set); + ORD(image_border_get); + ORD(image_draw); + ORD(image_comment_get); + ORD(image_format_get); + ORD(image_colorspace_set); + ORD(image_colorspace_get); + ORD(image_native_set); + ORD(image_native_get); + ORD(font_draw); + /* now advertise out own api */ + em->functions = (void *)(&func); return 1; } ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs