summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas/evas_object_image.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/evas/canvas/evas_object_image.c')
-rw-r--r--src/lib/evas/canvas/evas_object_image.c158
1 files changed, 32 insertions, 126 deletions
diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c
index 02be7f017b..2d217e3ad7 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -465,13 +465,13 @@ _efl_canvas_image_internal_efl_orientation_orientation_set(Eo *obj, Evas_Image_D
}
EOLIAN static Efl_Orient
-_efl_canvas_image_internal_efl_orientation_orientation_get(Eo *obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_orientation_orientation_get(const Eo *obj EINA_UNUSED, Evas_Image_Data *o)
{
return o->orient_value;
}
EOLIAN static void
-_efl_canvas_image_internal_efl_flipable_flip_set(Eo *obj, Evas_Image_Data *o, Efl_Flip flip)
+_efl_canvas_image_internal_efl_orientation_flip_set(Eo *obj, Evas_Image_Data *o, Efl_Flip flip)
{
Evas_Image_Orient orient;
@@ -482,7 +482,7 @@ _efl_canvas_image_internal_efl_flipable_flip_set(Eo *obj, Evas_Image_Data *o, Ef
}
EOLIAN static Efl_Flip
-_efl_canvas_image_internal_efl_flipable_flip_get(Eo *obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_orientation_flip_get(const Eo *obj EINA_UNUSED, Evas_Image_Data *o)
{
return o->flip_value;
}
@@ -504,7 +504,7 @@ _efl_canvas_image_internal_efl_object_dbg_info_get(Eo *eo_obj, Evas_Image_Data *
}
EOLIAN static void
-_efl_canvas_image_internal_efl_image_border_set(Eo *eo_obj, Evas_Image_Data *o, int l, int r, int t, int b)
+_efl_canvas_image_internal_efl_gfx_image_border_set(Eo *eo_obj, Evas_Image_Data *o, int l, int r, int t, int b)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
@@ -531,7 +531,7 @@ _efl_canvas_image_internal_efl_image_border_set(Eo *eo_obj, Evas_Image_Data *o,
}
EOLIAN static void
-_efl_canvas_image_internal_efl_image_border_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, int *l, int *r, int *t, int *b)
+_efl_canvas_image_internal_efl_gfx_image_border_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, int *l, int *r, int *t, int *b)
{
if (l) *l = o->cur->border.l;
if (r) *r = o->cur->border.r;
@@ -540,7 +540,7 @@ _efl_canvas_image_internal_efl_image_border_get(Eo *eo_obj EINA_UNUSED, Evas_Ima
}
EOLIAN static void
-_efl_canvas_image_internal_efl_image_border_center_fill_set(Eo *eo_obj, Evas_Image_Data *o, Efl_Gfx_Border_Fill_Mode _fill)
+_efl_canvas_image_internal_efl_gfx_image_border_center_fill_set(Eo *eo_obj, Evas_Image_Data *o, Efl_Gfx_Border_Fill_Mode _fill)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
Evas_Border_Fill_Mode fill = (Evas_Border_Fill_Mode)_fill;
@@ -556,7 +556,7 @@ _efl_canvas_image_internal_efl_image_border_center_fill_set(Eo *eo_obj, Evas_Ima
}
EOLIAN static Efl_Gfx_Border_Fill_Mode
-_efl_canvas_image_internal_efl_image_border_center_fill_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_gfx_image_border_center_fill_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
return (Efl_Gfx_Border_Fill_Mode)o->cur->border.fill;
}
@@ -578,7 +578,7 @@ _efl_canvas_image_internal_efl_gfx_fill_fill_auto_set(Eo *eo_obj, Evas_Image_Dat
{
Eina_Size2D sz;
- sz = efl_gfx_size_get(eo_obj);
+ sz = efl_gfx_entity_size_get(eo_obj);
_evas_image_fill_set(eo_obj, o, 0, 0, sz.w, sz.h);
evas_object_event_callback_add(eo_obj, EVAS_CALLBACK_RESIZE,
@@ -588,13 +588,13 @@ _efl_canvas_image_internal_efl_gfx_fill_fill_auto_set(Eo *eo_obj, Evas_Image_Dat
}
EOLIAN static Eina_Bool
-_efl_canvas_image_internal_efl_gfx_fill_fill_auto_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_gfx_fill_fill_auto_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
return o->filled;
}
EOLIAN static void
-_efl_canvas_image_internal_efl_image_border_scale_set(Eo *eo_obj, Evas_Image_Data *o, double scale)
+_efl_canvas_image_internal_efl_gfx_image_border_scale_set(Eo *eo_obj, Evas_Image_Data *o, double scale)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
@@ -609,7 +609,7 @@ _efl_canvas_image_internal_efl_image_border_scale_set(Eo *eo_obj, Evas_Image_Dat
}
EOLIAN static double
-_efl_canvas_image_internal_efl_image_border_scale_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_gfx_image_border_scale_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
return o->cur->border.scale;
}
@@ -654,19 +654,19 @@ _efl_canvas_image_internal_efl_gfx_fill_fill_set(Eo *eo_obj, Evas_Image_Data *o,
}
EOLIAN static Eina_Rect
-_efl_canvas_image_internal_efl_gfx_fill_fill_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_gfx_fill_fill_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
return (Eina_Rect) o->cur->fill;
}
EOLIAN static Eina_Size2D
-_efl_canvas_image_internal_efl_image_image_size_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_gfx_image_image_size_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
return EINA_SIZE2D(o->file_size.w, o->file_size.h);
}
EOLIAN static Eina_Size2D
-_efl_canvas_image_internal_efl_gfx_view_view_size_get(Eo *eo_obj, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_gfx_view_view_size_get(const Eo *eo_obj, Evas_Image_Data *o)
{
int uvw, uvh;
Evas_Object_Protected_Data *source = NULL;
@@ -821,13 +821,13 @@ _efl_canvas_image_internal_efl_gfx_buffer_alpha_set(Eo *eo_obj, Evas_Image_Data
}
EOLIAN static Eina_Bool
-_efl_canvas_image_internal_efl_gfx_buffer_alpha_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_gfx_buffer_alpha_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
return o->cur->has_alpha;
}
EOLIAN static void
-_efl_canvas_image_internal_efl_image_smooth_scale_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool smooth_scale)
+_efl_canvas_image_internal_efl_gfx_image_smooth_scale_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool smooth_scale)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
@@ -844,13 +844,13 @@ _efl_canvas_image_internal_efl_image_smooth_scale_set(Eo *eo_obj, Evas_Image_Dat
}
EOLIAN static Eina_Bool
-_efl_canvas_image_internal_efl_image_smooth_scale_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_gfx_image_smooth_scale_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
return o->cur->smooth_scale;
}
EOLIAN static double
-_efl_canvas_image_internal_efl_image_ratio_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_gfx_image_ratio_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
if (!o->cur->image.h) return 1.0;
return (double)o->cur->image.w / (double)o->cur->image.h;
@@ -938,16 +938,6 @@ _efl_canvas_image_internal_efl_file_save(const Eo *eo_obj, Evas_Image_Data *o, c
data = (DATA32 *)sl.mem;
}
- if ((o->cur->orient == EVAS_IMAGE_ORIENT_90) ||
- (o->cur->orient == EVAS_IMAGE_ORIENT_270) ||
- (o->cur->orient == EVAS_IMAGE_FLIP_TRANSPOSE) ||
- (o->cur->orient == EVAS_IMAGE_FLIP_TRANSVERSE))
- {
- int tmp = imagew;
- imagew = imageh;
- imageh = tmp;
- }
-
if (!data)
{
int stride;
@@ -982,12 +972,13 @@ _efl_canvas_image_internal_efl_file_save(const Eo *eo_obj, Evas_Image_Data *o, c
return ok;
no_pixels:
+ free(encoding);
ERR("Could not get image pixels for saving.");
return EINA_FALSE;
}
EOLIAN static Efl_Gfx_Colorspace
-_efl_canvas_image_internal_efl_gfx_buffer_colorspace_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+_efl_canvas_image_internal_efl_gfx_buffer_colorspace_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
return (Efl_Gfx_Colorspace)o->cur->cspace;
}
@@ -1050,7 +1041,7 @@ _evas_image_native_surface_get(const Evas_Object *eo_obj)
}
EOLIAN static void
-_efl_canvas_image_internal_efl_image_scale_hint_set(Eo *eo_obj, Evas_Image_Data *o, Efl_Image_Scale_Hint hint)
+_efl_canvas_image_internal_efl_gfx_image_scale_hint_set(Eo *eo_obj, Evas_Image_Data *o, Efl_Gfx_Image_Scale_Hint hint)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
evas_object_async_block(obj);
@@ -1076,14 +1067,14 @@ _efl_canvas_image_internal_efl_image_scale_hint_set(Eo *eo_obj, Evas_Image_Data
}
}
-EOLIAN static Efl_Image_Scale_Hint
-_efl_canvas_image_internal_efl_image_scale_hint_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+EOLIAN static Efl_Gfx_Image_Scale_Hint
+_efl_canvas_image_internal_efl_gfx_image_scale_hint_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
return o->scale_hint;
}
EOLIAN static void
-_efl_canvas_image_internal_efl_image_content_hint_set(Eo *eo_obj, Evas_Image_Data *o, Efl_Image_Content_Hint hint)
+_efl_canvas_image_internal_efl_gfx_image_content_hint_set(Eo *eo_obj, Evas_Image_Data *o, Efl_Gfx_Image_Content_Hint hint)
{
Evas_Object_Protected_Data *obj = efl_data_scope_get(eo_obj, EFL_CANVAS_OBJECT_CLASS);
evas_object_async_block(obj);
@@ -1109,97 +1100,12 @@ _efl_canvas_image_internal_efl_image_content_hint_set(Eo *eo_obj, Evas_Image_Dat
}
}
-EOLIAN static Efl_Image_Content_Hint
-_efl_canvas_image_internal_efl_image_content_hint_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+EOLIAN static Efl_Gfx_Image_Content_Hint
+_efl_canvas_image_internal_efl_gfx_image_content_hint_get(const Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
{
return o->content_hint;
}
-EOLIAN void
-_evas_canvas_image_cache_flush(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
-{
- evas_canvas_async_block(e);
- evas_render_rendering_wait(e);
- if (_evas_engine_context(e))
- e->engine.func->image_cache_flush(_evas_engine_context(e));
-}
-
-EOLIAN void
-_evas_canvas_image_cache_reload(Eo *eo_e, Evas_Public_Data *e)
-{
- Evas_Layer *layer;
-
- evas_canvas_async_block(e);
- evas_image_cache_flush(eo_e);
- EINA_INLIST_FOREACH(e->layers, layer)
- {
- Evas_Object_Protected_Data *obj;
-
- layer->walking_objects++;
- EINA_INLIST_FOREACH(layer->objects, obj)
- {
- if (efl_isa(obj->object, MY_CLASS))
- {
- _evas_image_unload(obj->object, obj, 1);
- evas_object_inform_call_image_unloaded(obj->object);
- }
- }
- layer->walking_objects--;
- _evas_layer_flush_removes(layer);
- }
- evas_image_cache_flush(eo_e);
- EINA_INLIST_FOREACH(e->layers, layer)
- {
- Evas_Object_Protected_Data *obj;
-
- layer->walking_objects++;
- EINA_INLIST_FOREACH(layer->objects, obj)
- {
- if (efl_isa(obj->object, MY_CLASS))
- {
- Evas_Image_Data *o = efl_data_scope_get(obj->object, MY_CLASS);
- _evas_image_load(obj->object, obj, o);
- o->changed = EINA_TRUE;
- evas_object_change(obj->object, obj);
- }
- }
- layer->walking_objects--;
- _evas_layer_flush_removes(layer);
- }
- evas_image_cache_flush(eo_e);
-}
-
-EOLIAN void
-_evas_canvas_image_cache_set(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, int size)
-{
- if (size < 0) size = 0;
- evas_canvas_async_block(e);
- evas_render_rendering_wait(e);
- if (_evas_engine_context(e))
- e->engine.func->image_cache_set(_evas_engine_context(e), size);
-}
-
-EOLIAN int
-_evas_canvas_image_cache_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
-{
- if (_evas_engine_context(e))
- return e->engine.func->image_cache_get(_evas_engine_context(e));
- return -1;
-}
-
-EOLIAN Eina_Bool
-_evas_canvas_image_max_size_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, Eina_Size2D *max)
-{
- int w = 0, h = 0;
-
- if (max) *max = EINA_SIZE2D(0xffff, 0xffff);
- if (!e->engine.func->image_max_size_get) return EINA_FALSE;
- if (!max) return EINA_TRUE;
- e->engine.func->image_max_size_get(_evas_engine_context(e), &w, &h);
- *max = EINA_SIZE2D(w, h);
- return EINA_TRUE;
-}
-
void
_evas_image_unload(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Eina_Bool dirty)
{
@@ -3057,15 +2963,15 @@ evas_object_image_is_inside(Evas_Object *eo_obj,
&imagew, &imageh, &uvw, &uvh, EINA_TRUE, EINA_FALSE);
if (!pixels) return is_inside;
- /* TODO: not handling o->dirty_pixels && o->pixels->func.get_pixels,
- * should we handle it now or believe they were done in the last render?
- */
if (o->dirty_pixels)
{
if (o->pixels->func.get_pixels)
{
- ERR("dirty_pixels && get_pixels not supported");
- // FIXME: no return here?
+ if (ENFN->gl_get_pixels_pre)
+ ENFN->gl_get_pixels_pre(ENC, output);
+ o->pixels->func.get_pixels(o->pixels->func.get_pixels_data, eo_obj);
+ if (ENFN->gl_get_pixels_post)
+ ENFN->gl_get_pixels_post(ENC, output);
}
}
@@ -3475,7 +3381,7 @@ evas_object_image_filled_resize_listener(void *data EINA_UNUSED, Evas *e EINA_UN
Evas_Image_Data *o = efl_data_scope_get(obj, EFL_CANVAS_IMAGE_INTERNAL_CLASS);
Eina_Size2D sz;
- sz = efl_gfx_size_get(obj);
+ sz = efl_gfx_entity_size_get(obj);
if (sz.w < 1) sz.w = 1;
if (sz.h < 1) sz.h = 1;
_evas_image_fill_set(obj, o, 0, 0, sz.w, sz.h);