From 2fe07ff58fe9c19c2d40bd4ca5713c5219070607 Mon Sep 17 00:00:00 2001 From: raster Date: Mon, 16 May 2011 10:51:02 +0000 Subject: [PATCH] use eina_fp fixed point sincos table to reduce calc overhead. git-svn-id: http://svn.enlightenment.org/svn/e/trunk/ecore@59442 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33 --- src/lib/ecore/ecore_anim.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/lib/ecore/ecore_anim.c b/src/lib/ecore/ecore_anim.c index 990c417..ad953f7 100644 --- a/src/lib/ecore/ecore_anim.c +++ b/src/lib/ecore/ecore_anim.c @@ -215,11 +215,23 @@ ecore_animator_timeline_add(double runtime, Ecore_Timeline_Cb func, const void * } static double +_pos_map_sin(double in) +{ + return eina_f32p32_double_to(eina_f32p32_sin(eina_f32p32_double_from(in))); +} + +static double +_pos_map_cos(double in) +{ + return eina_f32p32_double_to(eina_f32p32_cos(eina_f32p32_double_from(in))); +} + +static double _pos_map_accel_factor(double pos, double v1) { int i, fact = (int)v1; double p, o1 = pos, o2 = pos, v; - p = 1.0 - sin((M_PI / 2.0) + ((pos * M_PI) / 2.0)); + p = 1.0 - _pos_map_sin((M_PI / 2.0) + ((pos * M_PI) / 2.0)); o2 = p; for (i = 0; i < fact; i++) { @@ -255,7 +267,7 @@ _pos_map_spring(double pos, int bounces, double decfac) if (b1 < 0) b1 = 0; decpos = (double)b1 / (double)b2; decay = _pos_map_accel_factor(1.0 - decpos, decfac); - return sin((M_PI / 2.0) + (p2 * len)) * decay; + return _pos_map_sin((M_PI / 2.0) + (p2 * len)) * decay; } /** @@ -296,13 +308,13 @@ ecore_animator_pos_map(double pos, Ecore_Pos_Map map, double v1, double v2) case ECORE_POS_MAP_LINEAR: return pos; case ECORE_POS_MAP_ACCELERATE: - pos = 1.0 - sin((M_PI / 2.0) + ((pos * M_PI) / 2.0)); + pos = 1.0 - _pos_map_sin((M_PI / 2.0) + ((pos * M_PI) / 2.0)); return pos; case ECORE_POS_MAP_DECELERATE: - pos = sin((pos * M_PI) / 2.0); + pos = _pos_map_sin((pos * M_PI) / 2.0); return pos; case ECORE_POS_MAP_SINUSOIDAL: - pos = (1.0 - cos(pos * M_PI)) / 2.0; + pos = (1.0 - _pos_map_cos(pos * M_PI)) / 2.0; return pos; case ECORE_POS_MAP_ACCELERATE_FACTOR: pos = _pos_map_accel_factor(pos, v1); -- 2.7.4