2010-07-28 05:00:41 -07:00
|
|
|
#include "evas_common.h" /* Also includes international specific stuff */
|
2006-03-02 00:06:10 -08:00
|
|
|
#include "evas_private.h"
|
|
|
|
|
|
|
|
/*
|
|
|
|
*****
|
|
|
|
**
|
|
|
|
** ENGINE ROUTINES
|
|
|
|
**
|
|
|
|
*****
|
|
|
|
*/
|
2006-11-15 19:20:24 -08:00
|
|
|
static int cpunum = 0;
|
2009-10-22 08:22:22 -07:00
|
|
|
static int _evas_soft_gen_log_dom = -1;
|
2010-04-12 01:23:53 -07:00
|
|
|
|
|
|
|
static void
|
|
|
|
eng_output_dump(void *data __UNUSED__)
|
|
|
|
{
|
|
|
|
evas_common_image_image_all_unload();
|
|
|
|
evas_common_font_font_all_unload();
|
|
|
|
}
|
|
|
|
|
2006-03-02 00:06:10 -08:00
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_new(void *data __UNUSED__)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_draw_context_new();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_free(void *data __UNUSED__, void *context)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_free(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_clip_set(void *data __UNUSED__, void *context, int x, int y, int w, int h)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_set_clip(context, x, y, w, h);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_clip_clip(void *data __UNUSED__, void *context, int x, int y, int w, int h)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_clip_clip(context, x, y, w, h);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_clip_unset(void *data __UNUSED__, void *context)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_unset_clip(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_clip_get(void *data __UNUSED__, void *context, int *x, int *y, int *w, int *h)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
*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
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_color_set(void *data __UNUSED__, void *context, int r, int g, int b, int a)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_set_color(context, r, g, b, a);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_color_get(void *data __UNUSED__, void *context, int *r, int *g, int *b, int *a)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
*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
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_multiplier_set(void *data __UNUSED__, void *context, int r, int g, int b, int a)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_set_multiplier(context, r, g, b, a);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_multiplier_unset(void *data __UNUSED__, void *context)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_unset_multiplier(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_multiplier_get(void *data __UNUSED__, void *context, int *r, int *g, int *b, int *a)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
*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
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_cutout_add(void *data __UNUSED__, void *context, int x, int y, int w, int h)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_add_cutout(context, x, y, w, h);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_cutout_clear(void *data __UNUSED__, void *context)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_clear_cutouts(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_anti_alias_set(void *data __UNUSED__, void *context, unsigned char aa)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_set_anti_alias(context, aa);
|
|
|
|
}
|
|
|
|
|
|
|
|
static unsigned char
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_anti_alias_get(void *data __UNUSED__, void *context)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return ((RGBA_Draw_Context *)context)->anti_alias;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_color_interpolation_set(void *data __UNUSED__, void *context, int color_space)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_draw_context_set_color_interpolation(context, color_space);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_color_interpolation_get(void *data __UNUSED__, void *context)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return ((RGBA_Draw_Context *)context)->interpolation.color_space;
|
|
|
|
}
|
|
|
|
|
2006-05-02 00:28:49 -07:00
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_render_op_set(void *data __UNUSED__, void *context, int op)
|
2006-05-02 00:28:49 -07:00
|
|
|
{
|
|
|
|
evas_common_draw_context_set_render_op(context, op);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_context_render_op_get(void *data __UNUSED__, void *context)
|
2006-05-02 00:28:49 -07:00
|
|
|
{
|
|
|
|
return ((RGBA_Draw_Context *)context)->render_op;
|
|
|
|
}
|
|
|
|
|
2006-03-02 00:06:10 -08:00
|
|
|
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_rectangle_draw(void *data __UNUSED__, void *context, void *surface, int x, int y, int w, int h)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2009-03-26 18:48:58 -07:00
|
|
|
#ifdef BUILD_PIPE_RENDER
|
2010-05-21 00:10:45 -07:00
|
|
|
if ((cpunum > 1)
|
|
|
|
#ifdef EVAS_FRAME_QUEUING
|
|
|
|
&& evas_common_frameq_enabled()
|
|
|
|
#endif
|
|
|
|
)
|
2006-11-15 19:20:24 -08:00
|
|
|
evas_common_pipe_rectangle_draw(surface, context, x, y, w, h);
|
|
|
|
else
|
|
|
|
#endif
|
|
|
|
{
|
|
|
|
evas_common_rectangle_draw(surface, context, x, y, w, h);
|
|
|
|
evas_common_cpu_end_opt();
|
|
|
|
}
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_line_draw(void *data __UNUSED__, void *context, void *surface, int x1, int y1, int x2, int y2)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2009-03-26 18:48:58 -07:00
|
|
|
#ifdef BUILD_PIPE_RENDER
|
2010-05-21 00:10:45 -07:00
|
|
|
if ((cpunum > 1)
|
|
|
|
#ifdef EVAS_FRAME_QUEUING
|
|
|
|
&& evas_common_frameq_enabled()
|
|
|
|
#endif
|
|
|
|
)
|
|
|
|
evas_common_pipe_line_draw(surface, context, x1, y1, x2, y2);
|
2006-11-15 19:20:24 -08:00
|
|
|
else
|
2006-11-13 15:23:44 -08:00
|
|
|
#endif
|
2006-11-15 19:20:24 -08:00
|
|
|
{
|
|
|
|
evas_common_line_draw(surface, context, x1, y1, x2, y2);
|
|
|
|
evas_common_cpu_end_opt();
|
|
|
|
}
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_polygon_point_add(void *data __UNUSED__, void *context __UNUSED__, void *polygon, int x, int y)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_polygon_point_add(polygon, x, y);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_polygon_points_clear(void *data __UNUSED__, void *context __UNUSED__, void *polygon)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_polygon_points_clear(polygon);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2010-03-16 06:23:37 -07:00
|
|
|
eng_polygon_draw(void *data __UNUSED__, void *context, void *surface, void *polygon, int x, int y)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2009-03-26 18:48:58 -07:00
|
|
|
#ifdef BUILD_PIPE_RENDER
|
2010-05-21 00:10:45 -07:00
|
|
|
if ((cpunum > 1)
|
|
|
|
#ifdef EVAS_FRAME_QUEUING
|
|
|
|
&& evas_common_frameq_enabled()
|
|
|
|
#endif
|
|
|
|
)
|
2010-03-16 06:23:37 -07:00
|
|
|
evas_common_pipe_poly_draw(surface, context, polygon, x, y);
|
2006-11-15 19:20:24 -08:00
|
|
|
else
|
2006-11-13 15:23:44 -08:00
|
|
|
#endif
|
2006-11-15 19:20:24 -08:00
|
|
|
{
|
2010-03-16 06:23:37 -07:00
|
|
|
evas_common_polygon_draw(surface, context, polygon, x, y);
|
2006-11-15 19:20:24 -08:00
|
|
|
evas_common_cpu_end_opt();
|
|
|
|
}
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
2008-11-04 01:19:35 -08:00
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_alpha_get(void *data __UNUSED__, void *image)
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
|
|
|
Image_Entry *im;
|
|
|
|
|
|
|
|
if (!image) return 1;
|
|
|
|
im = image;
|
|
|
|
switch (im->space)
|
|
|
|
{
|
|
|
|
case EVAS_COLORSPACE_ARGB8888:
|
|
|
|
if (im->flags.alpha) return 1;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_colorspace_get(void *data __UNUSED__, void *image)
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
|
|
|
Image_Entry *im;
|
|
|
|
|
|
|
|
if (!image) return EVAS_COLORSPACE_ARGB8888;
|
|
|
|
im = image;
|
|
|
|
return im->space;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_alpha_set(void *data __UNUSED__, void *image, int has_alpha)
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
|
|
|
RGBA_Image *im;
|
|
|
|
|
|
|
|
if (!image) return NULL;
|
|
|
|
im = image;
|
|
|
|
if (im->cache_entry.space != EVAS_COLORSPACE_ARGB8888)
|
|
|
|
{
|
|
|
|
im->cache_entry.flags.alpha = 0;
|
|
|
|
return im;
|
|
|
|
}
|
|
|
|
im = (RGBA_Image *) evas_cache_image_alone(&im->cache_entry);
|
|
|
|
evas_common_image_colorspace_dirty(im);
|
|
|
|
|
|
|
|
im->cache_entry.flags.alpha = has_alpha ? 1 : 0;
|
|
|
|
return im;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_border_set(void *data __UNUSED__, void *image, int l __UNUSED__, int r __UNUSED__, int t __UNUSED__, int b __UNUSED__)
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
|
|
|
RGBA_Image *im;
|
|
|
|
|
|
|
|
im = image;
|
|
|
|
return im;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_border_get(void *data __UNUSED__, void *image, int *l __UNUSED__, int *r __UNUSED__, int *t __UNUSED__, int *b __UNUSED__)
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
|
|
|
RGBA_Image *im;
|
|
|
|
|
|
|
|
im = image;
|
|
|
|
}
|
|
|
|
|
|
|
|
static char *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_comment_get(void *data __UNUSED__, void *image, char *key __UNUSED__)
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
|
|
|
RGBA_Image *im;
|
|
|
|
|
|
|
|
if (!image) return NULL;
|
|
|
|
im = image;
|
|
|
|
return im->info.comment;
|
|
|
|
}
|
|
|
|
|
|
|
|
static char *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_format_get(void *data __UNUSED__, void *image __UNUSED__)
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_colorspace_set(void *data __UNUSED__, void *image, int cspace)
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
|
|
|
Image_Entry *im;
|
|
|
|
|
|
|
|
if (!image) return;
|
|
|
|
im = image;
|
|
|
|
evas_cache_image_colorspace(im, cspace);
|
|
|
|
}
|
|
|
|
|
2010-08-02 23:09:53 -07:00
|
|
|
static void *
|
|
|
|
eng_image_native_set(void *data __UNUSED__, void *image, void *native __UNUSED__)
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
2010-08-02 23:09:53 -07:00
|
|
|
return image;
|
2008-11-04 01:19:35 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_native_get(void *data __UNUSED__, void *image __UNUSED__)
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2006-03-02 00:06:10 -08:00
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_load(void *data __UNUSED__, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2009-12-22 15:11:57 -08:00
|
|
|
*error = EVAS_LOAD_ERROR_NONE;
|
|
|
|
return evas_common_load_image_from_file(file, key, lo, error);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_new_from_data(void *data __UNUSED__, int w, int h, DATA32 *image_data, int alpha, int cspace)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2007-07-16 00:25:35 -07:00
|
|
|
return evas_cache_image_data(evas_common_image_cache_get(), w, h, image_data, alpha, cspace);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_new_from_copied_data(void *data __UNUSED__, int w, int h, DATA32 *image_data, int alpha, int cspace)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2007-07-16 00:25:35 -07:00
|
|
|
return evas_cache_image_copied_data(evas_common_image_cache_get(), w, h, image_data, alpha, cspace);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_free(void *data __UNUSED__, void *image)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2007-07-16 00:25:35 -07:00
|
|
|
evas_cache_image_drop(image);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_size_get(void *data __UNUSED__, void *image, int *w, int *h)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2008-06-10 02:22:27 -07:00
|
|
|
Image_Entry *im;
|
2006-03-02 00:06:10 -08:00
|
|
|
|
|
|
|
im = image;
|
2008-06-10 02:22:27 -07:00
|
|
|
if (w) *w = im->w;
|
|
|
|
if (h) *h = im->h;
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_size_set(void *data __UNUSED__, void *image, int w, int h)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2008-06-10 02:22:27 -07:00
|
|
|
Image_Entry *im;
|
2007-07-16 00:25:35 -07:00
|
|
|
|
|
|
|
im = image;
|
|
|
|
return evas_cache_image_size_set(image, w, h);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_dirty_region(void *data __UNUSED__, void *image, int x, int y, int w, int h)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2008-06-10 02:22:27 -07:00
|
|
|
Image_Entry *im = image;
|
2007-07-16 00:25:35 -07:00
|
|
|
|
2006-12-19 06:12:40 -08:00
|
|
|
if (!image) return NULL;
|
2008-06-10 02:22:27 -07:00
|
|
|
return evas_cache_image_dirty(im, x, y, w, h);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_data_get(void *data __UNUSED__, void *image, int to_write, DATA32 **image_data)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
RGBA_Image *im;
|
|
|
|
|
2006-12-19 06:12:40 -08:00
|
|
|
if (!image)
|
|
|
|
{
|
|
|
|
*image_data = NULL;
|
|
|
|
return NULL;
|
|
|
|
}
|
2006-03-02 00:06:10 -08:00
|
|
|
im = image;
|
2008-04-11 17:32:30 -07:00
|
|
|
evas_cache_image_load_data(&im->cache_entry);
|
|
|
|
switch (im->cache_entry.space)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2006-12-17 07:48:52 -08:00
|
|
|
case EVAS_COLORSPACE_ARGB8888:
|
|
|
|
if (to_write)
|
2008-04-11 17:32:30 -07:00
|
|
|
im = (RGBA_Image *) evas_cache_image_alone(&im->cache_entry);
|
|
|
|
*image_data = im->image.data;
|
2006-12-17 07:48:52 -08:00
|
|
|
break;
|
|
|
|
case EVAS_COLORSPACE_YCBCR422P601_PL:
|
|
|
|
case EVAS_COLORSPACE_YCBCR422P709_PL:
|
|
|
|
*image_data = im->cs.data;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
abort();
|
|
|
|
break;
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
return im;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
|
|
|
eng_image_data_put(void *data, void *image, DATA32 *image_data)
|
|
|
|
{
|
2006-12-17 08:46:30 -08:00
|
|
|
RGBA_Image *im, *im2;
|
2006-03-02 00:06:10 -08:00
|
|
|
|
2006-12-19 06:12:40 -08:00
|
|
|
if (!image) return NULL;
|
2006-03-02 00:06:10 -08:00
|
|
|
im = image;
|
2008-04-11 17:32:30 -07:00
|
|
|
switch (im->cache_entry.space)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2006-12-17 07:48:52 -08:00
|
|
|
case EVAS_COLORSPACE_ARGB8888:
|
2008-04-11 17:32:30 -07:00
|
|
|
if (image_data != im->image.data)
|
2006-12-17 07:48:52 -08:00
|
|
|
{
|
|
|
|
int w, h;
|
2007-07-16 00:25:35 -07:00
|
|
|
|
2008-04-11 17:32:30 -07:00
|
|
|
w = im->cache_entry.w;
|
|
|
|
h = im->cache_entry.h;
|
|
|
|
im2 = eng_image_new_from_data(data, w, h, image_data,
|
2006-12-17 08:46:30 -08:00
|
|
|
eng_image_alpha_get(data, image),
|
|
|
|
eng_image_colorspace_get(data, image));
|
2008-04-11 17:32:30 -07:00
|
|
|
evas_cache_image_drop(&im->cache_entry);
|
2006-12-17 08:46:30 -08:00
|
|
|
im = im2;
|
2006-12-17 07:48:52 -08:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case EVAS_COLORSPACE_YCBCR422P601_PL:
|
|
|
|
case EVAS_COLORSPACE_YCBCR422P709_PL:
|
|
|
|
if (image_data != im->cs.data)
|
|
|
|
{
|
|
|
|
if (im->cs.data)
|
|
|
|
{
|
|
|
|
if (!im->cs.no_free) free(im->cs.data);
|
|
|
|
}
|
|
|
|
im->cs.data = image_data;
|
|
|
|
evas_common_image_colorspace_dirty(im);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
abort();
|
|
|
|
break;
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
2006-06-07 16:30:15 -07:00
|
|
|
return im;
|
|
|
|
}
|
|
|
|
|
2008-09-16 07:52:57 -07:00
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_data_preload_request(void *data __UNUSED__, void *image, const void *target)
|
2008-09-16 07:52:57 -07:00
|
|
|
{
|
|
|
|
RGBA_Image *im = image;
|
|
|
|
|
|
|
|
if (!im) return ;
|
|
|
|
evas_cache_image_preload_data(&im->cache_entry, target);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_data_preload_cancel(void *data __UNUSED__, void *image, const void *target)
|
2008-09-16 07:52:57 -07:00
|
|
|
{
|
|
|
|
RGBA_Image *im = image;
|
|
|
|
|
|
|
|
if (!im) return ;
|
2009-01-20 06:56:37 -08:00
|
|
|
evas_cache_image_preload_cancel(&im->cache_entry, target);
|
2008-09-16 07:52:57 -07:00
|
|
|
}
|
|
|
|
|
2008-11-04 01:19:35 -08:00
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_draw(void *data __UNUSED__, 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)
|
2006-06-07 16:30:15 -07:00
|
|
|
{
|
|
|
|
RGBA_Image *im;
|
2007-07-16 00:25:35 -07:00
|
|
|
|
2008-11-04 01:19:35 -08:00
|
|
|
if (!image) return;
|
2008-11-03 14:50:54 -08:00
|
|
|
im = image;
|
2009-03-26 18:48:58 -07:00
|
|
|
#ifdef BUILD_PIPE_RENDER
|
2010-05-21 00:10:45 -07:00
|
|
|
if ((cpunum > 1)
|
|
|
|
#ifdef EVAS_FRAME_QUEUING
|
|
|
|
&& evas_common_frameq_enabled()
|
|
|
|
#endif
|
|
|
|
)
|
2009-03-26 20:50:03 -07:00
|
|
|
{
|
2010-06-19 23:32:05 -07:00
|
|
|
evas_common_rgba_image_scalecache_prepare((Image_Entry *)(im),
|
|
|
|
surface, context, smooth,
|
2009-03-26 20:50:03 -07:00
|
|
|
src_x, src_y, src_w, src_h,
|
|
|
|
dst_x, dst_y, dst_w, dst_h);
|
|
|
|
|
|
|
|
evas_common_pipe_image_draw(im, surface, context, smooth,
|
|
|
|
src_x, src_y, src_w, src_h,
|
|
|
|
dst_x, dst_y, dst_w, dst_h);
|
|
|
|
}
|
2006-03-02 00:06:10 -08:00
|
|
|
else
|
2006-11-13 15:23:44 -08:00
|
|
|
#endif
|
2008-11-04 01:19:35 -08:00
|
|
|
{
|
2009-03-26 23:06:45 -07:00
|
|
|
// if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888)
|
|
|
|
// evas_cache_image_load_data(&im->cache_entry);
|
|
|
|
// evas_common_image_colorspace_normalize(im);
|
2009-12-21 07:52:12 -08:00
|
|
|
evas_common_rgba_image_scalecache_prepare(&im->cache_entry, surface, context, smooth,
|
2009-03-26 20:50:03 -07:00
|
|
|
src_x, src_y, src_w, src_h,
|
|
|
|
dst_x, dst_y, dst_w, dst_h);
|
2009-12-21 07:52:12 -08:00
|
|
|
evas_common_rgba_image_scalecache_do(&im->cache_entry, surface, context, smooth,
|
2009-03-26 00:14:08 -07:00
|
|
|
src_x, src_y, src_w, src_h,
|
|
|
|
dst_x, dst_y, dst_w, dst_h);
|
|
|
|
/*
|
2008-12-01 18:33:09 -08:00
|
|
|
if (smooth)
|
|
|
|
evas_common_scale_rgba_in_to_out_clip_smooth(im, surface, context,
|
|
|
|
src_x, src_y, src_w, src_h,
|
|
|
|
dst_x, dst_y, dst_w, dst_h);
|
|
|
|
else
|
|
|
|
evas_common_scale_rgba_in_to_out_clip_sample(im, surface, context,
|
|
|
|
src_x, src_y, src_w, src_h,
|
|
|
|
dst_x, dst_y, dst_w, dst_h);
|
2009-03-26 00:14:08 -07:00
|
|
|
*/
|
2008-11-04 01:19:35 -08:00
|
|
|
evas_common_cpu_end_opt();
|
|
|
|
}
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
2009-10-20 09:03:57 -07:00
|
|
|
static void
|
|
|
|
eng_image_map4_draw(void *data __UNUSED__, void *context, void *surface, void *image, RGBA_Map_Point *p, int smooth, int level)
|
|
|
|
{
|
2010-09-18 07:23:20 -07:00
|
|
|
RGBA_Image *im;
|
2009-10-20 09:03:57 -07:00
|
|
|
|
|
|
|
if (!image) return;
|
|
|
|
im = image;
|
2010-01-26 22:49:21 -08:00
|
|
|
if ((p[0].x == p[3].x) &&
|
|
|
|
(p[1].x == p[2].x) &&
|
|
|
|
(p[0].y == p[1].y) &&
|
|
|
|
(p[3].y == p[2].y) &&
|
2010-04-30 04:24:22 -07:00
|
|
|
(p[0].x <= p[1].x) &&
|
|
|
|
(p[0].y <= p[2].y) &&
|
2010-01-26 22:49:21 -08:00
|
|
|
(p[0].u == 0) &&
|
|
|
|
(p[0].v == 0) &&
|
2010-09-18 16:16:25 -07:00
|
|
|
(p[1].u == (int)(im->cache_entry.w << FP)) &&
|
2010-01-26 22:49:21 -08:00
|
|
|
(p[1].v == 0) &&
|
2010-09-18 16:16:25 -07:00
|
|
|
(p[2].u == (int)(im->cache_entry.w << FP)) &&
|
|
|
|
(p[2].v == (int)(im->cache_entry.h << FP)) &&
|
2010-01-26 22:49:21 -08:00
|
|
|
(p[3].u == 0) &&
|
2010-09-18 16:16:25 -07:00
|
|
|
(p[3].v == (int)(im->cache_entry.h << FP)) &&
|
2010-02-17 23:10:28 -08:00
|
|
|
(p[0].col == 0xffffffff) &&
|
|
|
|
(p[1].col == 0xffffffff) &&
|
|
|
|
(p[2].col == 0xffffffff) &&
|
|
|
|
(p[3].col == 0xffffffff))
|
2010-01-26 22:49:21 -08:00
|
|
|
{
|
|
|
|
int dx, dy, dw, dh;
|
2010-05-21 00:10:45 -07:00
|
|
|
|
2010-01-26 22:49:21 -08:00
|
|
|
dx = p[0].x >> FP;
|
|
|
|
dy = p[0].y >> FP;
|
|
|
|
dw = (p[2].x >> FP) - dx;
|
|
|
|
dh = (p[2].y >> FP) - dy;
|
|
|
|
eng_image_draw
|
|
|
|
(data, context, surface, image,
|
|
|
|
0, 0, im->cache_entry.w, im->cache_entry.h,
|
|
|
|
dx, dy, dw, dh, smooth);
|
|
|
|
}
|
|
|
|
else
|
2010-04-30 04:24:22 -07:00
|
|
|
{
|
2010-03-24 09:39:39 -07:00
|
|
|
#ifdef BUILD_PIPE_RENDER
|
2010-05-21 00:10:45 -07:00
|
|
|
if ((cpunum > 1)
|
|
|
|
# ifdef EVAS_FRAME_QUEUING
|
|
|
|
&& evas_common_frameq_enabled()
|
|
|
|
# endif
|
|
|
|
)
|
2010-04-30 04:24:22 -07:00
|
|
|
evas_common_pipe_map4_draw(im, surface, context, p, smooth, level);
|
|
|
|
else
|
2010-03-24 09:39:39 -07:00
|
|
|
#endif
|
2010-04-30 04:24:22 -07:00
|
|
|
evas_common_map4_rgba(im, surface, context, p, smooth, level);
|
|
|
|
}
|
2009-10-20 09:03:57 -07:00
|
|
|
evas_common_cpu_end_opt();
|
|
|
|
}
|
|
|
|
|
2009-10-28 01:59:01 -07:00
|
|
|
static void *
|
|
|
|
eng_image_map_surface_new(void *data __UNUSED__, int w, int h, int alpha)
|
|
|
|
{
|
|
|
|
void *surface;
|
|
|
|
DATA32 *pixels;
|
|
|
|
surface = evas_cache_image_copied_data(evas_common_image_cache_get(),
|
|
|
|
w, h, NULL, alpha,
|
|
|
|
EVAS_COLORSPACE_ARGB8888);
|
|
|
|
pixels = evas_cache_image_pixels(surface);
|
|
|
|
return surface;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
eng_image_map_surface_free(void *data __UNUSED__, void *surface)
|
|
|
|
{
|
|
|
|
evas_cache_image_drop(surface);
|
|
|
|
}
|
|
|
|
|
2009-05-07 06:29:56 -07:00
|
|
|
static void
|
|
|
|
eng_image_scale_hint_set(void *data __UNUSED__, void *image, int hint)
|
|
|
|
{
|
|
|
|
Image_Entry *im;
|
|
|
|
|
|
|
|
if (!image) return;
|
|
|
|
im = image;
|
|
|
|
im->scale_hint = hint;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
|
|
|
eng_image_scale_hint_get(void *data __UNUSED__, void *image)
|
|
|
|
{
|
|
|
|
Image_Entry *im;
|
|
|
|
|
|
|
|
if (!image) return EVAS_IMAGE_SCALE_HINT_NONE;
|
|
|
|
im = image;
|
|
|
|
return im->scale_hint;
|
|
|
|
}
|
|
|
|
|
2006-03-02 00:06:10 -08:00
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_cache_flush(void *data __UNUSED__)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
int tmp_size;
|
|
|
|
|
|
|
|
tmp_size = evas_common_image_get_cache();
|
|
|
|
evas_common_image_set_cache(0);
|
2009-04-09 06:20:00 -07:00
|
|
|
evas_common_rgba_image_scalecache_flush();
|
2006-03-02 00:06:10 -08:00
|
|
|
evas_common_image_set_cache(tmp_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_cache_set(void *data __UNUSED__, int bytes)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_image_set_cache(bytes);
|
2009-04-09 06:20:00 -07:00
|
|
|
evas_common_rgba_image_scalecache_size_set(bytes);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_image_cache_get(void *data __UNUSED__)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_image_get_cache();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_load(void *data __UNUSED__, const char *name, int size)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_font_load(name, size);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_memory_load(void *data __UNUSED__, char *name, int size, const void *fdata, int fdata_size)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_font_memory_load(name, size, fdata, fdata_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_add(void *data __UNUSED__, void *font, const char *name, int size)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_font_add(font, name, size);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void *
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_memory_add(void *data __UNUSED__, void *font, char *name, int size, const void *fdata, int fdata_size)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_font_memory_add(font, name, size, fdata, fdata_size);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_free(void *data __UNUSED__, void *font)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_font_free(font);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_ascent_get(void *data __UNUSED__, void *font)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_font_ascent_get(font);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_descent_get(void *data __UNUSED__, void *font)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_font_descent_get(font);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_max_ascent_get(void *data __UNUSED__, void *font)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_font_max_ascent_get(font);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_max_descent_get(void *data __UNUSED__, void *font)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_font_max_descent_get(font);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2010-07-28 05:00:41 -07:00
|
|
|
eng_font_string_size_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int *w, int *h)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2010-07-28 05:00:41 -07:00
|
|
|
evas_common_font_query_size(font, text, intl_props, w, h);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2010-07-28 05:00:41 -07:00
|
|
|
eng_font_inset_get(void *data __UNUSED__, void *font, const Eina_Unicode *text)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_font_query_inset(font, text);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2010-07-28 05:00:41 -07:00
|
|
|
eng_font_h_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
int h, v;
|
|
|
|
|
2010-07-28 05:00:41 -07:00
|
|
|
evas_common_font_query_advance(font, text, intl_props, &h, &v);
|
2006-03-02 00:06:10 -08:00
|
|
|
return h;
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2010-07-28 05:00:41 -07:00
|
|
|
eng_font_v_advance_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
int h, v;
|
|
|
|
|
2010-07-28 05:00:41 -07:00
|
|
|
evas_common_font_query_advance(font, text, intl_props, &h, &v);
|
2006-03-02 00:06:10 -08:00
|
|
|
return v;
|
|
|
|
}
|
|
|
|
|
2011-01-30 02:34:07 -08:00
|
|
|
static int
|
|
|
|
eng_font_pen_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int pos, int *cpen_x, int *cy, int *cadv, int *ch)
|
|
|
|
{
|
|
|
|
return evas_common_font_query_pen_coords(font, text, intl_props, pos, cpen_x, cy, cadv, ch);
|
|
|
|
}
|
|
|
|
|
2006-03-02 00:06:10 -08:00
|
|
|
static int
|
2010-07-28 05:00:41 -07:00
|
|
|
eng_font_char_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2010-07-28 05:00:41 -07:00
|
|
|
return evas_common_font_query_char_coords(font, text, intl_props, pos, cx, cy, cw, ch);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2010-07-28 05:00:41 -07:00
|
|
|
eng_font_char_at_coords_get(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2010-07-28 05:00:41 -07:00
|
|
|
return evas_common_font_query_char_at_coords(font, text, intl_props, x, y, cx, cy, cw, ch);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
2009-09-29 21:23:21 -07:00
|
|
|
static int
|
2010-07-28 05:00:41 -07:00
|
|
|
eng_font_last_up_to_pos(void *data __UNUSED__, void *font, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props, int x, int y)
|
2009-09-29 21:23:21 -07:00
|
|
|
{
|
2010-07-28 05:00:41 -07:00
|
|
|
return evas_common_font_query_last_up_to_pos(font, text, intl_props, x, y);
|
2009-09-29 21:23:21 -07:00
|
|
|
}
|
|
|
|
|
2006-03-02 00:06:10 -08:00
|
|
|
static void
|
2010-07-28 05:00:41 -07:00
|
|
|
eng_font_draw(void *data __UNUSED__, void *context, void *surface, void *font, int x, int y, int w __UNUSED__, int h __UNUSED__, int ow __UNUSED__, int oh __UNUSED__, const Eina_Unicode *text, const Evas_BiDi_Props *intl_props)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2009-03-26 18:48:58 -07:00
|
|
|
#ifdef BUILD_PIPE_RENDER
|
2010-05-21 00:10:45 -07:00
|
|
|
if ((cpunum > 1)
|
|
|
|
#ifdef EVAS_FRAME_QUEUING
|
|
|
|
&& evas_common_frameq_enabled()
|
|
|
|
#endif
|
|
|
|
)
|
2010-07-28 05:00:41 -07:00
|
|
|
evas_common_pipe_text_draw(surface, context, font, x, y, text, intl_props);
|
2006-03-02 00:06:10 -08:00
|
|
|
else
|
2006-11-15 19:20:24 -08:00
|
|
|
#endif
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2010-07-28 05:00:41 -07:00
|
|
|
evas_common_font_draw(surface, context, font, x, y, text, intl_props);
|
2006-11-15 19:20:24 -08:00
|
|
|
evas_common_cpu_end_opt();
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_cache_flush(void *data __UNUSED__)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_font_flush();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_cache_set(void *data __UNUSED__, int bytes)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_font_cache_set(bytes);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_cache_get(void *data __UNUSED__)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_font_cache_get();
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_hinting_set(void *data __UNUSED__, void *font, int hinting)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
evas_common_font_hinting_set(font, hinting);
|
|
|
|
}
|
|
|
|
|
|
|
|
static int
|
2009-02-28 02:08:45 -08:00
|
|
|
eng_font_hinting_can_hint(void *data __UNUSED__, int hinting)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
return evas_common_hinting_available(hinting);
|
|
|
|
}
|
|
|
|
|
2009-06-26 06:26:52 -07:00
|
|
|
static Eina_Bool
|
|
|
|
eng_canvas_alpha_get(void *data __UNUSED__, void *info __UNUSED__)
|
|
|
|
{
|
|
|
|
return EINA_TRUE;
|
|
|
|
}
|
2006-03-02 00:06:10 -08:00
|
|
|
|
|
|
|
/*
|
|
|
|
*****
|
|
|
|
**
|
|
|
|
** ENGINE API
|
|
|
|
**
|
|
|
|
*****
|
|
|
|
*/
|
|
|
|
|
2006-03-02 01:16:46 -08:00
|
|
|
static Evas_Func func =
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
2007-06-16 19:56:59 -07:00
|
|
|
NULL,
|
2010-04-12 01:23:53 -07:00
|
|
|
eng_output_dump,
|
2006-03-02 00:06:10 -08:00
|
|
|
/* draw context virtual methods */
|
|
|
|
eng_context_new,
|
2009-06-26 06:26:52 -07:00
|
|
|
eng_canvas_alpha_get,
|
2006-03-02 00:06:10 -08:00
|
|
|
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,
|
2006-05-02 00:28:49 -07:00
|
|
|
eng_context_render_op_set,
|
|
|
|
eng_context_render_op_get,
|
2006-03-02 00:06:10 -08:00
|
|
|
/* rect 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,
|
2008-11-04 01:19:35 -08:00
|
|
|
/* image draw funcs */
|
2006-03-02 00:06:10 -08:00
|
|
|
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,
|
2007-07-23 07:22:57 -07:00
|
|
|
NULL,
|
2006-03-02 00:06:10 -08:00
|
|
|
eng_image_dirty_region,
|
|
|
|
eng_image_data_get,
|
|
|
|
eng_image_data_put,
|
2008-09-16 07:52:57 -07:00
|
|
|
eng_image_data_preload_request,
|
|
|
|
eng_image_data_preload_cancel,
|
2006-03-02 00:06:10 -08:00
|
|
|
eng_image_alpha_set,
|
|
|
|
eng_image_alpha_get,
|
2008-11-04 01:19:35 -08:00
|
|
|
eng_image_border_set,
|
|
|
|
eng_image_border_get,
|
2006-03-02 00:06:10 -08:00
|
|
|
eng_image_draw,
|
|
|
|
eng_image_comment_get,
|
|
|
|
eng_image_format_get,
|
2006-12-09 00:52:08 -08:00
|
|
|
eng_image_colorspace_set,
|
|
|
|
eng_image_colorspace_get,
|
|
|
|
eng_image_native_set,
|
|
|
|
eng_image_native_get,
|
2006-03-02 00:06:10 -08:00
|
|
|
/* image cache funcs */
|
|
|
|
eng_image_cache_flush,
|
|
|
|
eng_image_cache_set,
|
|
|
|
eng_image_cache_get,
|
2008-11-04 01:19:35 -08:00
|
|
|
/* font draw functions */
|
2006-03-02 00:06:10 -08:00
|
|
|
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,
|
|
|
|
/* font hinting functions */
|
|
|
|
eng_font_hinting_set,
|
2009-05-07 06:29:56 -07:00
|
|
|
eng_font_hinting_can_hint,
|
|
|
|
eng_image_scale_hint_set,
|
2009-09-29 21:23:21 -07:00
|
|
|
eng_image_scale_hint_get,
|
|
|
|
/* more font draw functions */
|
2009-10-20 09:03:57 -07:00
|
|
|
eng_font_last_up_to_pos,
|
|
|
|
/* FUTURE software generic calls go here (done) */
|
2009-10-28 01:59:01 -07:00
|
|
|
eng_image_map4_draw,
|
|
|
|
eng_image_map_surface_new,
|
2010-08-11 23:11:13 -07:00
|
|
|
eng_image_map_surface_free,
|
2010-09-07 20:51:24 -07:00
|
|
|
NULL, // eng_image_content_hint_set - software doesn't use it
|
2011-01-30 02:34:07 -08:00
|
|
|
NULL, // eng_image_content_hint_get - software doesn't use it
|
|
|
|
eng_font_pen_coords_get
|
2006-03-02 00:06:10 -08:00
|
|
|
/* FUTURE software generic calls go here */
|
|
|
|
};
|
|
|
|
|
|
|
|
/*
|
|
|
|
*****
|
|
|
|
**
|
|
|
|
** MODULE ACCESSIBLE API API
|
|
|
|
**
|
|
|
|
*****
|
|
|
|
*/
|
|
|
|
|
2009-06-16 06:01:36 -07:00
|
|
|
static int
|
2006-03-02 00:06:10 -08:00
|
|
|
module_open(Evas_Module *em)
|
|
|
|
{
|
|
|
|
if (!em) return 0;
|
2010-10-07 16:46:42 -07:00
|
|
|
_evas_soft_gen_log_dom = eina_log_domain_register
|
|
|
|
("evas-software_generic", EVAS_DEFAULT_LOG_COLOR);
|
2009-10-22 08:22:22 -07:00
|
|
|
if(_evas_soft_gen_log_dom<0)
|
|
|
|
{
|
2010-10-07 16:46:42 -07:00
|
|
|
EINA_LOG_ERR("Can not create a module log domain.");
|
|
|
|
return 0;
|
2009-10-22 08:22:22 -07:00
|
|
|
}
|
2006-03-02 01:16:46 -08:00
|
|
|
em->functions = (void *)(&func);
|
2009-07-30 09:45:15 -07:00
|
|
|
cpunum = eina_cpu_count();
|
2006-03-02 00:06:10 -08:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2009-06-16 06:01:36 -07:00
|
|
|
static void
|
cleanup: fix some "unused" errors from -Wextra.
As we're heading for a release we better remove as much errors as
possible and as the first step I'm removing warnings due unused
parameters, variables and functions. These tend to pollute real errors
spotted by -Wall and clang/llvm.
This does not fixes all, just the clear that could be set to
__UNUSED__, particularly to do (and I'd like some help from the
authors):
* src/lib/engines/common/evas_font_{draw,query}.c (tasn):
intl_props is just used while doing BIDI, but also used in other
#ifdef blocks :-/
* evas_map_* (raster):
huge amount of warnings, code is quite confusing and thus I'm not
touching it. I have no idea whenever the commented blocks or extra
parameters are intended to be used or no.
* src/modules/engines/fbevas_fb_main.c (raster?):
is fb_setvt() to be used? If not do you mind removing it?
* src/modules/engines/gl_{common,x11} (raster):
huge amount of warnings, code is quite nested and full of #ifdefs
that does not help to give a clear picture of what's going on.
* src/bin/evas_cserve_main.c (raster):
I could have ignored most of the errors, but is the code correct? I
mean, there is no unload of images being applied. If you confirm
none of those warnings are harmful I can flag them as unused.
* src/lib/engines/common_8 (dottedmag):
lots of unused functions that were acquired from common_16, they
are unused and if they will not, then they should be removed.
SVN revision: 52421
2010-09-18 12:17:41 -07:00
|
|
|
module_close(Evas_Module *em __UNUSED__)
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2009-10-22 08:22:22 -07:00
|
|
|
eina_log_domain_unregister(_evas_soft_gen_log_dom);
|
2006-03-02 00:06:10 -08:00
|
|
|
}
|
|
|
|
|
2009-06-16 06:01:36 -07:00
|
|
|
static Evas_Module_Api evas_modapi =
|
2006-03-02 00:06:10 -08:00
|
|
|
{
|
2009-06-16 06:01:36 -07:00
|
|
|
EVAS_MODULE_API_VERSION,
|
|
|
|
"software_generic",
|
|
|
|
"none",
|
|
|
|
{
|
|
|
|
module_open,
|
|
|
|
module_close
|
|
|
|
}
|
2006-03-02 00:06:10 -08:00
|
|
|
};
|
2009-06-16 06:01:36 -07:00
|
|
|
|
|
|
|
EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_ENGINE, engine, software_generic);
|
|
|
|
|
|
|
|
#ifndef EVAS_STATIC_BUILD_SOFTWARE_GENERIC
|
|
|
|
EVAS_EINA_MODULE_DEFINE(engine, software_generic);
|
|
|
|
#endif
|