evas: make image_size_get() return the actual image size

proxy/3d/etc images would previously return 0x0, breaking size calcs

@fix

@jpeg
This commit is contained in:
Mike Blumenkrantz 2015-05-27 22:11:56 -04:00
parent 85166a0c73
commit 29cf9abfc6
1 changed files with 38 additions and 3 deletions

View File

@ -1158,12 +1158,47 @@ evas_object_image_size_get(const Evas_Image *obj, int *w, int *h)
}
EOLIAN static void
_evas_image_efl_gfx_view_size_get(Eo *eo_obj EINA_UNUSED,
_evas_image_efl_gfx_view_size_get(Eo *eo_obj,
Evas_Image_Data *o,
int *w, int *h)
{
if (w) *w = o->cur->image.w;
if (h) *h = o->cur->image.h;
int uvw, uvh;
Evas_Object_Protected_Data *source = NULL;
Evas_Object_Protected_Data *obj;
obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
if (o->cur->source)
source = eo_data_scope_get(o->cur->source, EVAS_OBJECT_CLASS);
if (o->cur->scene)
{
uvw = obj->data_3d->w;
uvh = obj->data_3d->h;
}
else if (!o->cur->source)
{
uvw = o->cur->image.w;
uvh = o->cur->image.h;
}
else if (source->proxy->surface && !source->proxy->redraw)
{
uvw = source->proxy->w;
uvh = source->proxy->h;
}
else if (source->type == o_type &&
((Evas_Image_Data *)eo_data_scope_get(o->cur->source, MY_CLASS))->engine_data)
{
uvw = source->cur->geometry.w;
uvh = source->cur->geometry.h;
}
else
{
uvw = source->proxy->w;
uvh = source->proxy->h;
}
if (w) *w = uvw;
if (h) *h = uvh;
}
EOLIAN static int