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 <cedric@osg.samsung.com>
This commit is contained in:
j_yong.hwang 2015-08-04 16:08:50 +02:00 committed by Cedric BAIL
parent c54f765ec9
commit e6723de0b2
1 changed files with 1 additions and 1 deletions

View File

@ -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))))