cedric pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=d3e047fa354f6efdc0387236dd3488d2c695e7bd

commit d3e047fa354f6efdc0387236dd3488d2c695e7bd
Author: j_yong.hwang <j_yong.hw...@samsung.com>
Date:   Tue Aug 4 16:08:50 2015 +0200

    elm_macros: fix for lack of precision with double due to order of operation.
    
    Summary:
    The numerical formula below is calculated with the double type.
    -> ELM_SCALE_SIZE(x) (int)(((double)(x) / elm_app_base_scale_get()) * 
elm_config_scale_get())
    
    But if number of significant figure of the return value goes over 15, the 
epsilon error will happen.
    Because of that, it is better to divide to do later.
    
    Reviewers: woohyun, cedric
    
    Reviewed By: cedric
    
    Differential Revision: https://phab.enlightenment.org/D2900
    
    Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/elm_macros.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/lib/elm_macros.h b/src/lib/elm_macros.h
index c786c68..61b3377 100644
--- a/src/lib/elm_macros.h
+++ b/src/lib/elm_macros.h
@@ -1,7 +1,7 @@
 /* handy macros */
 #define ELM_RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) (((x) < ((xx) + (ww))) 
&& ((y) < ((yy) + (hh))) && (((x) + (w)) > (xx)) && (((y) + (h)) > (yy)))
 #define ELM_PI 3.14159265358979323846
-#define ELM_SCALE_SIZE(x) (int)(((double)(x) / elm_app_base_scale_get()) * 
elm_config_scale_get())
+#define ELM_SCALE_SIZE(x) (int)(((double)(x) * elm_config_scale_get()) / 
elm_app_base_scale_get())
 
 // checks if the point(xx, yy) stays out of the rectangle(x, y, w, h) area.
 #define ELM_RECTS_POINT_OUT(x, y, w, h, xx, yy) (((xx) < (x)) || ((yy) < (y)) 
|| ((xx) > ((x) + (w))) || ((yy) > ((y) + (h))))

-- 


Reply via email to