From 090ee28ca4da60ac4620ff1668acadeed3804877 Mon Sep 17 00:00:00 2001 From: Jiwon Kim Date: Mon, 2 Jan 2017 18:38:59 +0900 Subject: [PATCH] evas: fix adjustment logic about image border Summary: If border left+right >= image width, center area does not rendered. Although adjusement logic, _draw_image()'s src_w can be a 0. This commit try to secure center area at least 1 pixel. This should fix T5057 @fix Reviewers: raster, jypark, jpeg Subscribers: cedric Maniphest Tasks: T5057 Differential Revision: https://phab.enlightenment.org/D4538 --- src/lib/evas/canvas/evas_object_image.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c index 036fac6313..08fdb1f163 100644 --- a/src/lib/evas/canvas/evas_object_image.c +++ b/src/lib/evas/canvas/evas_object_image.c @@ -2068,21 +2068,31 @@ _evas_image_render(Eo *eo_obj, Evas_Object_Protected_Data *obj, bt = o->cur->border.t; bb = o->cur->border.b; // fix impossible border settings if img pixels not enough - if ((bl + br) > imw) + if ((bl + br) > 0) { - if ((bl + br) > 0) + if ((bl + br) > imw) { bl = (bl * imw) / (bl + br); br = imw - bl; } + if ((bl + br) == imw) + { + if (bl < br) br--; + else bl--; + } } - if ((bt + bb) > imh) + if ((bt + bb) > 0) { - if ((bt + bb) > 0) + if ((bt + bb) > imh) { bt = (bt * imh) / (bt + bb); bb = imh - bt; } + if ((bt + bb) == imh) + { + if (bt < bb) bb--; + else bt--; + } } if (!EINA_DBL_CMP(o->cur->border.scale, 1.0)) {