xartigas pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9ca84821fc91d3e5661edb9d2393788b28c56f7c

commit 9ca84821fc91d3e5661edb9d2393788b28c56f7c
Author: Xavi Artigas <xavierarti...@yahoo.es>
Date:   Tue Nov 5 20:26:14 2019 +0100

    Efl.Interpolator*: More sensible API names and docs
    
    Summary:
    OK, so, ALL interpolator parameters were called "factor" and the docs
    literally said "First factor, Second factor, ..."
    After diving into the actual implementation, proper names (and types) for 
the
    parameters were found and proper docs written.
    
    I am afraid I could not make any sense of the Divisor interpolator code. 
Those
    docs still need writing.
    
    Test Plan: Everything still builds and passes tests. No functional changes.
    
    Reviewers: zmike, cedric, bu5hm4n, Jaehyun_Cho
    
    Reviewed By: bu5hm4n
    
    Subscribers: #reviewers, #committers
    
    Tags: #efl
    
    Differential Revision: https://phab.enlightenment.org/D10603
---
 src/bin/elementary/test_efl_anim_interpolator.c | 15 +++++---
 src/lib/ecore/efl_accelerate_interpolator.c     | 16 ++++----
 src/lib/ecore/efl_accelerate_interpolator.eo    | 14 ++++---
 src/lib/ecore/efl_bounce_interpolator.c         | 40 ++++++++++++--------
 src/lib/ecore/efl_bounce_interpolator.eo        | 24 +++++++++---
 src/lib/ecore/efl_cubic_bezier_interpolator.c   | 50 ++++++++++++-------------
 src/lib/ecore/efl_cubic_bezier_interpolator.eo  | 26 +++++++++----
 src/lib/ecore/efl_decelerate_interpolator.c     | 16 ++++----
 src/lib/ecore/efl_decelerate_interpolator.eo    | 14 ++++---
 src/lib/ecore/efl_divisor_interpolator.c        | 39 +++++++++++--------
 src/lib/ecore/efl_divisor_interpolator.eo       | 20 +++++++---
 src/lib/ecore/efl_linear_interpolator.eo        |  3 +-
 src/lib/ecore/efl_sinusoidal_interpolator.c     | 16 ++++----
 src/lib/ecore/efl_sinusoidal_interpolator.eo    | 13 ++++---
 src/lib/ecore/efl_spring_interpolator.c         | 44 +++++++++++++---------
 src/lib/ecore/efl_spring_interpolator.eo        | 24 +++++++++---
 src/lib/efl/interfaces/efl_interpolator.eo      | 21 +++++++++--
 17 files changed, 250 insertions(+), 145 deletions(-)

diff --git a/src/bin/elementary/test_efl_anim_interpolator.c 
b/src/bin/elementary/test_efl_anim_interpolator.c
index 9a6522f6d7..96c7649373 100644
--- a/src/bin/elementary/test_efl_anim_interpolator.c
+++ b/src/bin/elementary/test_efl_anim_interpolator.c
@@ -33,32 +33,35 @@ _interpolator_create(int index, Evas_Object *win)
    else if (index == 1)
      {
         interp = efl_add(EFL_SINUSOIDAL_INTERPOLATOR_CLASS, win);
-        efl_sinusoidal_interpolator_factor_set(interp, 1.0);
+        efl_sinusoidal_interpolator_slope_set(interp, 1.0);
      }
    else if (index == 2)
      {
         interp = efl_add(EFL_DECELERATE_INTERPOLATOR_CLASS, win);
-        efl_decelerate_interpolator_factor_set(interp, 1.0);
+        efl_decelerate_interpolator_slope_set(interp, 1.0);
      }
    else if (index == 3)
      {
         interp = efl_add(EFL_ACCELERATE_INTERPOLATOR_CLASS, win);
-        efl_accelerate_interpolator_factor_set(interp, 1.0);
+        efl_accelerate_interpolator_slope_set(interp, 1.0);
      }
    else if (index == 4)
      {
         interp = efl_add(EFL_DIVISOR_INTERPOLATOR_CLASS, win);
-        efl_divisor_interpolator_factors_set(interp, 1.0, 1.0);
+        efl_divisor_interpolator_divisor_set(interp, 1.0);
+        efl_divisor_interpolator_power_set(interp, 1);
      }
    else if (index == 5)
      {
         interp = efl_add(EFL_BOUNCE_INTERPOLATOR_CLASS, win);
-        efl_bounce_interpolator_factors_set(interp, 1.0, 1.0);
+        efl_bounce_interpolator_rigidness_set(interp, 1.0);
+        efl_bounce_interpolator_bounces_set(interp, 1);
      }
    else if (index == 6)
      {
         interp = efl_add(EFL_SPRING_INTERPOLATOR_CLASS, win);
-        efl_spring_interpolator_factors_set(interp, 1.0, 1.0);
+        efl_spring_interpolator_decay_set(interp, 1.0);
+        efl_spring_interpolator_oscillations_set(interp, 1);
      }
 
    return interp;
diff --git a/src/lib/ecore/efl_accelerate_interpolator.c 
b/src/lib/ecore/efl_accelerate_interpolator.c
index 917c032d05..b2e10320cb 100644
--- a/src/lib/ecore/efl_accelerate_interpolator.c
+++ b/src/lib/ecore/efl_accelerate_interpolator.c
@@ -11,7 +11,7 @@ typedef struct _Efl_Accelerate_Interpolator_Data 
Efl_Accelerate_Interpolator_Dat
 
 struct _Efl_Accelerate_Interpolator_Data
 {
-   double factor;
+   double slope;
 };
 
 EOLIAN static double
@@ -23,22 +23,22 @@ 
_efl_accelerate_interpolator_efl_interpolator_interpolate(Eo *eo_obj EINA_UNUSED
      return progress;
 
    return ecore_animator_pos_map(progress, ECORE_POS_MAP_ACCELERATE_FACTOR,
-                                 pd->factor, 0);
+                                 pd->slope, 0);
 }
 
 EOLIAN static void
-_efl_accelerate_interpolator_factor_set(Eo *eo_obj EINA_UNUSED,
+_efl_accelerate_interpolator_slope_set(Eo *eo_obj EINA_UNUSED,
                                         Efl_Accelerate_Interpolator_Data *pd,
-                                        double factor)
+                                        double slope)
 {
-   pd->factor = factor;
+   pd->slope = slope;
 }
 
 EOLIAN static double
-_efl_accelerate_interpolator_factor_get(const Eo *eo_obj EINA_UNUSED,
+_efl_accelerate_interpolator_slope_get(const Eo *eo_obj EINA_UNUSED,
                                         Efl_Accelerate_Interpolator_Data *pd 
EINA_UNUSED)
 {
-   return pd->factor;
+   return pd->slope;
 }
 
 EOLIAN static Efl_Object *
@@ -47,7 +47,7 @@ _efl_accelerate_interpolator_efl_object_constructor(Eo 
*eo_obj,
 {
    eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
 
-   pd->factor = 1.0;
+   pd->slope = 1.0;
 
    return eo_obj;
 }
diff --git a/src/lib/ecore/efl_accelerate_interpolator.eo 
b/src/lib/ecore/efl_accelerate_interpolator.eo
index 9af36694af..648dc1b5d7 100644
--- a/src/lib/ecore/efl_accelerate_interpolator.eo
+++ b/src/lib/ecore/efl_accelerate_interpolator.eo
@@ -1,19 +1,23 @@
 class @beta Efl.Accelerate_Interpolator extends Efl.Object implements 
Efl.Interpolator
 {
-   [[Efl accelerate interpolator class
+   [[Accelerated interpolator. It starts slow and accelerates, stopping 
abruptly when
+     it reaches $[1.0].
 
-     output = 1 - sin(Pi / 2 + input * Pi / 2);
+     Internally it uses the first half of a sinus rise (from 0 to 0.5) and the 
steepness
+     can be customized.
    ]]
    data: Efl_Accelerate_Interpolator_Data;
    methods {
-      @property factor {
-         [[Factor property]]
+      @property slope {
+         [[Customize the acceleration effect.]]
          set {
          }
          get {
          }
          values {
-            factor: double; [[Factor of the interpolation function.]]
+            slope: double; [[How steep is the effect. $[0] performs a linear 
interpolation,
+                             $[1] corresponds to a sinus function and higher 
numbers produce
+                             an increasingly steep effect.]]
          }
       }
    }
diff --git a/src/lib/ecore/efl_bounce_interpolator.c 
b/src/lib/ecore/efl_bounce_interpolator.c
index 7565019e48..11703b8f19 100644
--- a/src/lib/ecore/efl_bounce_interpolator.c
+++ b/src/lib/ecore/efl_bounce_interpolator.c
@@ -11,7 +11,8 @@ typedef struct _Efl_Bounce_Interpolator_Data 
Efl_Bounce_Interpolator_Data;
 
 struct _Efl_Bounce_Interpolator_Data
 {
-   double factor[2];
+   double rigidness;
+   int bounces;
 };
 
 EOLIAN static double
@@ -23,28 +24,37 @@ _efl_bounce_interpolator_efl_interpolator_interpolate(Eo 
*eo_obj EINA_UNUSED,
      return progress;
 
    return ecore_animator_pos_map(progress, ECORE_POS_MAP_BOUNCE,
-                                 pd->factor[0], pd->factor[1]);
+                                 pd->rigidness, (double)pd->bounces);
 }
 
 EOLIAN static void
-_efl_bounce_interpolator_factors_set(Eo *eo_obj EINA_UNUSED,
-                                     Efl_Bounce_Interpolator_Data *pd,
-                                     double factor1, double factor2)
+_efl_bounce_interpolator_rigidness_set(Eo *eo_obj EINA_UNUSED,
+                                       Efl_Bounce_Interpolator_Data *pd,
+                                       double rigidness)
 {
-   pd->factor[0] = factor1;
-   pd->factor[1] = factor2;
+   pd->rigidness = rigidness;
+}
+
+EOLIAN static double
+_efl_bounce_interpolator_rigidness_get(const Eo *eo_obj EINA_UNUSED,
+                                       Efl_Bounce_Interpolator_Data *pd)
+{
+   return pd->rigidness;
 }
 
 EOLIAN static void
-_efl_bounce_interpolator_factors_get(const Eo *eo_obj EINA_UNUSED,
+_efl_bounce_interpolator_bounces_set(Eo *eo_obj EINA_UNUSED,
                                      Efl_Bounce_Interpolator_Data *pd,
-                                     double *factor1, double *factor2)
+                                     int bounces)
 {
-   if (factor1)
-     *factor1 = pd->factor[0];
+   pd->bounces = bounces;
+}
 
-   if (factor2)
-     *factor2 = pd->factor[1];
+EOLIAN static int
+_efl_bounce_interpolator_bounces_get(const Eo *eo_obj EINA_UNUSED,
+                                     Efl_Bounce_Interpolator_Data *pd)
+{
+   return pd->bounces;
 }
 
 EOLIAN static Efl_Object *
@@ -53,8 +63,8 @@ _efl_bounce_interpolator_efl_object_constructor(Eo *eo_obj,
 {
    eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
 
-   pd->factor[0] = 1.0;
-   pd->factor[1] = 1.0;
+   pd->rigidness = 1.0;
+   pd->bounces = 1;
 
    return eo_obj;
 }
diff --git a/src/lib/ecore/efl_bounce_interpolator.eo 
b/src/lib/ecore/efl_bounce_interpolator.eo
index d6b1147d17..54998d602f 100644
--- a/src/lib/ecore/efl_bounce_interpolator.eo
+++ b/src/lib/ecore/efl_bounce_interpolator.eo
@@ -1,17 +1,31 @@
 class @beta Efl.Bounce_Interpolator extends Efl.Object implements 
Efl.Interpolator
 {
-   [[Efl bounce interpolator class]]
+   [[Bouncing interpolator. The value quickly reaches $[1.0] and then bounces 
back
+     a number of times before stopping at $[1.0].
+
+     The number of bounces and how far it goes back on every bounce can be 
customized.
+   ]]
    data: Efl_Bounce_Interpolator_Data;
    methods {
-      @property factors {
-         [[Factors property]]
+      @property bounces {
+         [[Customize the number of bounces.]]
          set {
          }
          get {
          }
          values {
-            factor1: double; [[First factor of the interpolation function.]]
-            factor2: double; [[Second factor of the interpolation function.]]
+            bounces: int; [[Number of bounces before stopping.]]
+         }
+      }
+      @property rigidness {
+         [[Customize the rigidness.]]
+         set {
+         }
+         get {
+         }
+         values {
+            rigidness: double; [[How much energy is lost on every bounce.
+                                 Higher numbers result in smaller bounces 
(lesser bounciness).]]
          }
       }
    }
diff --git a/src/lib/ecore/efl_cubic_bezier_interpolator.c 
b/src/lib/ecore/efl_cubic_bezier_interpolator.c
index 8b9b376d8c..2413714449 100644
--- a/src/lib/ecore/efl_cubic_bezier_interpolator.c
+++ b/src/lib/ecore/efl_cubic_bezier_interpolator.c
@@ -11,7 +11,7 @@ typedef struct _Efl_Cubic_Bezier_Interpolator_Data 
Efl_Cubic_Bezier_Interpolator
 
 struct _Efl_Cubic_Bezier_Interpolator_Data
 {
-   double factor[4];
+   double control_points[4];
 };
 
 EOLIAN static double
@@ -23,38 +23,36 @@ 
_efl_cubic_bezier_interpolator_efl_interpolator_interpolate(Eo *eo_obj EINA_UNUS
      return progress;
 
    return ecore_animator_pos_map_n(progress, ECORE_POS_MAP_CUBIC_BEZIER, 4,
-                                   pd->factor);
+                                   pd->control_points);
 }
 
 EOLIAN static void
-_efl_cubic_bezier_interpolator_factors_set(Eo *eo_obj EINA_UNUSED,
+_efl_cubic_bezier_interpolator_control_points_set(Eo *eo_obj EINA_UNUSED,
                                            Efl_Cubic_Bezier_Interpolator_Data 
*pd,
-                                           double factor1, double factor2,
-                                           double factor3, double factor4)
+                                           Eina_Vector2 p1, Eina_Vector2 p2)
 {
-   pd->factor[0] = factor1;
-   pd->factor[1] = factor2;
-   pd->factor[2] = factor3;
-   pd->factor[3] = factor4;
+   pd->control_points[0] = p1.x;
+   pd->control_points[1] = p1.y;
+   pd->control_points[2] = p2.x;
+   pd->control_points[3] = p2.y;
 }
 
 EOLIAN static void
-_efl_cubic_bezier_interpolator_factors_get(const Eo *eo_obj EINA_UNUSED,
+_efl_cubic_bezier_interpolator_control_points_get(const Eo *eo_obj EINA_UNUSED,
                                            Efl_Cubic_Bezier_Interpolator_Data 
*pd,
-                                           double *factor1, double *factor2,
-                                           double *factor3, double *factor4)
+                                           Eina_Vector2 *p1, Eina_Vector2 *p2)
 {
-   if (factor1)
-     *factor1 = pd->factor[0];
+   if (p1)
+     {
+        p1->x = pd->control_points[0];
+        p1->y = pd->control_points[1];
+     }
 
-   if (factor2)
-     *factor2 = pd->factor[1];
-
-   if (factor3)
-     *factor3 = pd->factor[2];
-
-   if (factor4)
-     *factor4 = pd->factor[3];
+   if (p2)
+     {
+        p2->x = pd->control_points[2];
+        p2->y = pd->control_points[3];
+     }
 }
 
 EOLIAN static Efl_Object *
@@ -63,10 +61,10 @@ _efl_cubic_bezier_interpolator_efl_object_constructor(Eo 
*eo_obj,
 {
    eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
 
-   pd->factor[0] = 1.0;
-   pd->factor[1] = 1.0;
-   pd->factor[2] = 1.0;
-   pd->factor[3] = 1.0;
+   pd->control_points[0] = 1.0;
+   pd->control_points[1] = 1.0;
+   pd->control_points[2] = 1.0;
+   pd->control_points[3] = 1.0;
 
    return eo_obj;
 }
diff --git a/src/lib/ecore/efl_cubic_bezier_interpolator.eo 
b/src/lib/ecore/efl_cubic_bezier_interpolator.eo
index c6dd1449d2..30614b92ca 100644
--- a/src/lib/ecore/efl_cubic_bezier_interpolator.eo
+++ b/src/lib/ecore/efl_cubic_bezier_interpolator.eo
@@ -1,19 +1,31 @@
 class @beta Efl.Cubic_Bezier_Interpolator extends Efl.Object implements 
Efl.Interpolator
 {
-   [[Efl cubic_bezier interpolator class]]
+   [[Cubic Bezier interpolator. It starts slow, then moves quickly and then 
slows down
+     again before stopping.
+
+     The exact shape of the mapping curve can be modified through the 
@.control_points
+     property.
+   ]]
    data: Efl_Cubic_Bezier_Interpolator_Data;
    methods {
-      @property factors {
-         [[Factors property]]
+      @property control_points {
+         [[Cubic Bezier curves are described by 4 2D control points
+           (https://en.wikipedia.org/wiki/B%C3%A9zier_curve).
+           For each control point, the X coordinate is an input value and the 
Y coordinate is the
+           corresponding output value.
+           The first one, P0, is set to $[(0,0)]: The input $[0.0] is mapped 
to the $[0.0] output.
+           The last one, P3, is set to $[(1,1)]: The input $[1.0] is mapped to 
the $[1.0] output.
+           The other two control points can be set through this property and 
control the shape of
+           the curve. Note that the control points do not need to be in the 
$[0...1] range, and
+           neither do the output values of the curve.
+         ]]
          set {
          }
          get {
          }
          values {
-            factor1: double; [[First factor of the interpolation function.]]
-            factor2: double; [[Second factor of the interpolation function.]]
-            factor3: double; [[Third factor of the interpolation function.]]
-            factor4: double; [[Fourth factor of the interpolation function.]]
+            p1: Eina.Vector2; [[P1 control point.]]
+            p2: Eina.Vector2; [[P2 control point.]]
          }
       }
    }
diff --git a/src/lib/ecore/efl_decelerate_interpolator.c 
b/src/lib/ecore/efl_decelerate_interpolator.c
index 575ac22b03..9a8494dec1 100644
--- a/src/lib/ecore/efl_decelerate_interpolator.c
+++ b/src/lib/ecore/efl_decelerate_interpolator.c
@@ -11,7 +11,7 @@ typedef struct _Efl_Decelerate_Interpolator_Data 
Efl_Decelerate_Interpolator_Dat
 
 struct _Efl_Decelerate_Interpolator_Data
 {
-   double factor;
+   double slope;
 };
 
 EOLIAN static double
@@ -23,22 +23,22 @@ 
_efl_decelerate_interpolator_efl_interpolator_interpolate(Eo *eo_obj EINA_UNUSED
      return progress;
 
    return ecore_animator_pos_map(progress, ECORE_POS_MAP_DECELERATE_FACTOR,
-                                 pd->factor, 0);
+                                 pd->slope, 0);
 }
 
 EOLIAN static void
-_efl_decelerate_interpolator_factor_set(Eo *eo_obj EINA_UNUSED,
+_efl_decelerate_interpolator_slope_set(Eo *eo_obj EINA_UNUSED,
                                         Efl_Decelerate_Interpolator_Data *pd,
-                                        double factor)
+                                        double slope)
 {
-   pd->factor = factor;
+   pd->slope = slope;
 }
 
 EOLIAN static double
-_efl_decelerate_interpolator_factor_get(const Eo *eo_obj EINA_UNUSED,
+_efl_decelerate_interpolator_slope_get(const Eo *eo_obj EINA_UNUSED,
                                         Efl_Decelerate_Interpolator_Data *pd 
EINA_UNUSED)
 {
-   return pd->factor;
+   return pd->slope;
 }
 
 EOLIAN static Efl_Object *
@@ -47,7 +47,7 @@ _efl_decelerate_interpolator_efl_object_constructor(Eo 
*eo_obj,
 {
    eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
 
-   pd->factor = 1.0;
+   pd->slope = 1.0;
 
    return eo_obj;
 }
diff --git a/src/lib/ecore/efl_decelerate_interpolator.eo 
b/src/lib/ecore/efl_decelerate_interpolator.eo
index 802d409b2d..42011694a5 100644
--- a/src/lib/ecore/efl_decelerate_interpolator.eo
+++ b/src/lib/ecore/efl_decelerate_interpolator.eo
@@ -1,19 +1,23 @@
 class @beta Efl.Decelerate_Interpolator extends Efl.Object implements 
Efl.Interpolator
 {
-   [[Efl decelerate interpolator class
+   [[Decelerated interpolator. It starts fast and decelerates, stopping 
smoothly when
+     it reaches $[1.0].
 
-     output = sin(input * Pi / 2);
+     Internally it uses the second half of a sinus rise (from 0.5 to 1.0) and 
the steepness
+     can be customized.
    ]]
    data: Efl_Decelerate_Interpolator_Data;
    methods {
-      @property factor {
-         [[Factor property]]
+      @property slope {
+         [[Customize the deceleration effect.]]
          set {
          }
          get {
          }
          values {
-            factor: double; [[Factor of the interpolation function.]]
+            slope: double; [[How steep is the effect. $[0] performs a linear 
interpolation,
+                             $[1] corresponds to a sinus function and higher 
numbers produce
+                             an increasingly steep effect.]]
          }
       }
    }
diff --git a/src/lib/ecore/efl_divisor_interpolator.c 
b/src/lib/ecore/efl_divisor_interpolator.c
index 3cbc12b5c5..2d96764be5 100644
--- a/src/lib/ecore/efl_divisor_interpolator.c
+++ b/src/lib/ecore/efl_divisor_interpolator.c
@@ -11,7 +11,8 @@ typedef struct _Efl_Divisor_Interpolator_Data 
Efl_Divisor_Interpolator_Data;
 
 struct _Efl_Divisor_Interpolator_Data
 {
-   double factor[2];
+   double divisor;
+   int power;
 };
 
 EOLIAN static double
@@ -23,28 +24,36 @@ _efl_divisor_interpolator_efl_interpolator_interpolate(Eo 
*eo_obj EINA_UNUSED,
      return progress;
 
    return ecore_animator_pos_map(progress, ECORE_POS_MAP_DIVISOR_INTERP,
-                                 pd->factor[0], pd->factor[1]);
+                                 pd->divisor, (double)pd->power);
 }
 
 EOLIAN static void
-_efl_divisor_interpolator_factors_set(Eo *eo_obj EINA_UNUSED,
+_efl_divisor_interpolator_divisor_set(Eo *eo_obj EINA_UNUSED,
                                       Efl_Divisor_Interpolator_Data *pd,
-                                      double factor1, double factor2)
+                                      double divisor)
 {
-   pd->factor[0] = factor1;
-   pd->factor[1] = factor2;
+   pd->divisor = divisor;
 }
 
+EOLIAN static double
+_efl_divisor_interpolator_divisor_get(const Eo *eo_obj EINA_UNUSED,
+                                      Efl_Divisor_Interpolator_Data *pd)
+{
+   return pd->divisor;
+}
 EOLIAN static void
-_efl_divisor_interpolator_factors_get(const Eo *eo_obj EINA_UNUSED,
-                                      Efl_Divisor_Interpolator_Data *pd,
-                                      double *factor1, double *factor2)
+_efl_divisor_interpolator_power_set(Eo *eo_obj EINA_UNUSED,
+                                    Efl_Divisor_Interpolator_Data *pd,
+                                    int power)
 {
-   if (factor1)
-     *factor1 = pd->factor[0];
+   pd->power = power;
+}
 
-   if (factor2)
-     *factor2 = pd->factor[1];
+EOLIAN static int
+_efl_divisor_interpolator_power_get(const Eo *eo_obj EINA_UNUSED,
+                                    Efl_Divisor_Interpolator_Data *pd)
+{
+   return pd->power;
 }
 
 EOLIAN static Efl_Object *
@@ -53,8 +62,8 @@ _efl_divisor_interpolator_efl_object_constructor(Eo *eo_obj,
 {
    eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
 
-   pd->factor[0] = 1.0;
-   pd->factor[1] = 1.0;
+   pd->divisor = 1.0;
+   pd->power = 1;
 
    return eo_obj;
 }
diff --git a/src/lib/ecore/efl_divisor_interpolator.eo 
b/src/lib/ecore/efl_divisor_interpolator.eo
index 848c44bf6e..09b0ed626f 100644
--- a/src/lib/ecore/efl_divisor_interpolator.eo
+++ b/src/lib/ecore/efl_divisor_interpolator.eo
@@ -1,17 +1,27 @@
 class @beta Efl.Divisor_Interpolator extends Efl.Object implements 
Efl.Interpolator
 {
-   [[Efl divisor interpolator class]]
+   [[Divisor interpolator.
+   ]]
    data: Efl_Divisor_Interpolator_Data;
    methods {
-      @property factors {
-         [[Factors property]]
+      @property divisor {
+         [[Customize divisor factor.]]
          set {
          }
          get {
          }
          values {
-            factor1: double; [[First factor of the interpolation function.]]
-            factor2: double; [[Second factor of the interpolation function.]]
+            divisor: double; [[Divisor.]]
+         }
+      }
+      @property power {
+         [[Customize power factor.]]
+         set {
+         }
+         get {
+         }
+         values {
+            power: int; [[Exponent.]]
          }
       }
    }
diff --git a/src/lib/ecore/efl_linear_interpolator.eo 
b/src/lib/ecore/efl_linear_interpolator.eo
index e22e980552..866247db6f 100644
--- a/src/lib/ecore/efl_linear_interpolator.eo
+++ b/src/lib/ecore/efl_linear_interpolator.eo
@@ -1,6 +1,7 @@
 class @beta Efl.Linear_Interpolator extends Efl.Object implements 
Efl.Interpolator
 {
-   [[Efl linear interpolator class]]
+   [[Linear interpolation (pass-through). Input values are used unmodified as 
output.
+   ]]
    data: Efl_Linear_Interpolator_Data;
    implements {
       Efl.Interpolator.interpolate;
diff --git a/src/lib/ecore/efl_sinusoidal_interpolator.c 
b/src/lib/ecore/efl_sinusoidal_interpolator.c
index d36a776e7f..3216ef953b 100644
--- a/src/lib/ecore/efl_sinusoidal_interpolator.c
+++ b/src/lib/ecore/efl_sinusoidal_interpolator.c
@@ -11,7 +11,7 @@ typedef struct _Efl_Sinusoidal_Interpolator_Data 
Efl_Sinusoidal_Interpolator_Dat
 
 struct _Efl_Sinusoidal_Interpolator_Data
 {
-   double factor;
+   double slope;
 };
 
 EOLIAN static double
@@ -23,22 +23,22 @@ 
_efl_sinusoidal_interpolator_efl_interpolator_interpolate(Eo *eo_obj EINA_UNUSED
      return progress;
 
    return ecore_animator_pos_map(progress, ECORE_POS_MAP_SINUSOIDAL_FACTOR,
-                                 pd->factor, 0);
+                                 pd->slope, 0);
 }
 
 EOLIAN static void
-_efl_sinusoidal_interpolator_factor_set(Eo *eo_obj EINA_UNUSED,
+_efl_sinusoidal_interpolator_slope_set(Eo *eo_obj EINA_UNUSED,
                                         Efl_Sinusoidal_Interpolator_Data *pd,
-                                        double factor)
+                                        double slope)
 {
-   pd->factor = factor;
+   pd->slope = slope;
 }
 
 EOLIAN static double
-_efl_sinusoidal_interpolator_factor_get(const Eo *eo_obj EINA_UNUSED,
+_efl_sinusoidal_interpolator_slope_get(const Eo *eo_obj EINA_UNUSED,
                                         Efl_Sinusoidal_Interpolator_Data *pd 
EINA_UNUSED)
 {
-   return pd->factor;
+   return pd->slope;
 }
 
 EOLIAN static Efl_Object *
@@ -47,7 +47,7 @@ _efl_sinusoidal_interpolator_efl_object_constructor(Eo 
*eo_obj,
 {
    eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
 
-   pd->factor = 1.0;
+   pd->slope = 1.0;
 
    return eo_obj;
 }
diff --git a/src/lib/ecore/efl_sinusoidal_interpolator.eo 
b/src/lib/ecore/efl_sinusoidal_interpolator.eo
index e0701aa5d3..ad48232578 100644
--- a/src/lib/ecore/efl_sinusoidal_interpolator.eo
+++ b/src/lib/ecore/efl_sinusoidal_interpolator.eo
@@ -1,19 +1,22 @@
 class @beta Efl.Sinusoidal_Interpolator extends Efl.Object implements 
Efl.Interpolator
 {
-   [[Efl sinusoidal interpolator class
+   [[Sinusoidal interpolator. It starts slow, then moves quickly and then 
slows down
+     again before stopping.
 
-     output = (1 - cos(input * Pi)) / 2;
+     How long it stays in the quick zone (the slope of the curve) can be 
customized.
    ]]
    data: Efl_Sinusoidal_Interpolator_Data;
    methods {
-      @property factor {
-         [[Factor property]]
+      @property slope {
+         [[Customize the sinusoidal effect.]]
          set {
          }
          get {
          }
          values {
-            factor: double; [[Factor of the interpolation function.]]
+            slope: double; [[How steep is the effect. $[0] performs a linear 
interpolation,
+                             $[1] corresponds to a sinus function and higher 
numbers produce
+                             an increasingly steep effect.]]
          }
       }
    }
diff --git a/src/lib/ecore/efl_spring_interpolator.c 
b/src/lib/ecore/efl_spring_interpolator.c
index 183e54c93e..71611bfeb8 100644
--- a/src/lib/ecore/efl_spring_interpolator.c
+++ b/src/lib/ecore/efl_spring_interpolator.c
@@ -11,40 +11,50 @@ typedef struct _Efl_Spring_Interpolator_Data 
Efl_Spring_Interpolator_Data;
 
 struct _Efl_Spring_Interpolator_Data
 {
-   double factor[2];
+   double decay;
+   int oscillations;
 };
 
 EOLIAN static double
 _efl_spring_interpolator_efl_interpolator_interpolate(Eo *obj EINA_UNUSED,
-                                                      
Efl_Spring_Interpolator_Data *pd EINA_UNUSED,
+                                                      
Efl_Spring_Interpolator_Data *pd,
                                                       double progress)
 {
    if ((progress < 0.0) || (progress > 1.0))
      return progress;
 
    return ecore_animator_pos_map(progress, ECORE_POS_MAP_SPRING,
-                                 pd->factor[0], pd->factor[1]);
+                                 pd->decay, (double)pd->oscillations);
 }
 
 EOLIAN static void
-_efl_spring_interpolator_factors_set(Eo *eo_obj EINA_UNUSED,
-                                     Efl_Spring_Interpolator_Data *pd,
-                                     double factor1, double factor2)
+_efl_spring_interpolator_decay_set(Eo *eo_obj EINA_UNUSED,
+                                   Efl_Spring_Interpolator_Data *pd,
+                                   double decay)
 {
-   pd->factor[0] = factor1;
-   pd->factor[1] = factor2;
+   pd->decay = decay;
+}
+
+EOLIAN static double
+_efl_spring_interpolator_decay_get(const Eo *eo_obj EINA_UNUSED,
+                                     Efl_Spring_Interpolator_Data *pd)
+{
+   return pd->decay;
 }
 
 EOLIAN static void
-_efl_spring_interpolator_factors_get(const Eo *eo_obj EINA_UNUSED,
-                                     Efl_Spring_Interpolator_Data *pd,
-                                     double *factor1, double *factor2)
+_efl_spring_interpolator_oscillations_set(Eo *eo_obj EINA_UNUSED,
+                                          Efl_Spring_Interpolator_Data *pd,
+                                          int oscillations)
 {
-   if (factor1)
-     *factor1 = pd->factor[0];
+   pd->oscillations = oscillations;
+}
 
-   if (factor2)
-     *factor2 = pd->factor[1];
+EOLIAN static int
+_efl_spring_interpolator_oscillations_get(const Eo *eo_obj EINA_UNUSED,
+                                          Efl_Spring_Interpolator_Data *pd)
+{
+   return pd->oscillations;
 }
 
 EOLIAN static Efl_Object *
@@ -53,8 +63,8 @@ _efl_spring_interpolator_efl_object_constructor(Eo *eo_obj,
 {
    eo_obj = efl_constructor(efl_super(eo_obj, MY_CLASS));
 
-   pd->factor[0] = 1.0;
-   pd->factor[1] = 1.0;
+   pd->decay = 1.0;
+   pd->oscillations = 1;
 
    return eo_obj;
 }
diff --git a/src/lib/ecore/efl_spring_interpolator.eo 
b/src/lib/ecore/efl_spring_interpolator.eo
index 5549046ff4..9890666902 100644
--- a/src/lib/ecore/efl_spring_interpolator.eo
+++ b/src/lib/ecore/efl_spring_interpolator.eo
@@ -1,17 +1,31 @@
 class @beta Efl.Spring_Interpolator extends Efl.Object implements 
Efl.Interpolator
 {
-   [[Efl spring interpolator class]]
+   [[Spring interpolator. The value quickly reaches $[1.0] and then oscillates
+     around it a number of times before stopping (as if linked with a spring).
+
+     The number of oscillations and how quickly it stops can be customized.
+   ]]
    data: Efl_Spring_Interpolator_Data;
    methods {
-      @property factors {
-         [[Factors property]]
+      @property decay {
+         [[Customize the decay factor.]]
          set {
          }
          get {
          }
          values {
-            factor1: double; [[First factor of the interpolation function.]]
-            factor2: double; [[Second factor of the interpolation function.]]
+            decay: double; [[How quickly energy is lost.
+                             Higher numbers result in smaller oscillations.]]
+         }
+      }
+      @property oscillations {
+         [[Customize number of oscillations.]]
+         set {
+         }
+         get {
+         }
+         values {
+            oscillations: int; [[Number of oscillations before stopping.]]
          }
       }
    }
diff --git a/src/lib/efl/interfaces/efl_interpolator.eo 
b/src/lib/efl/interfaces/efl_interpolator.eo
index ba01e742d2..7c25dfeaa3 100644
--- a/src/lib/efl/interfaces/efl_interpolator.eo
+++ b/src/lib/efl/interfaces/efl_interpolator.eo
@@ -1,12 +1,25 @@
 interface @beta Efl.Interpolator
 {
-   [[Efl interpolator interface]]
+   [[Interface providing interpolation capabilities.
+   
+     In the context of EFL, interpolation is defined as the mapping of values 
in the
+     $[0, 1] range to another range (typically close).
+
+     This is used for example in animations, where the timer moves linearly 
from $[0.0]
+     to $[1.0] but the property being animated can accelerate, decelerate, 
bounce or
+     even move slightly out-of-bounds and come back.
+
+     For example implementations see @Efl.Accelerate_Interpolator, 
@Efl.Decelerate_Interpolator
+     or @Efl.Bounce_Interpolator.
+   ]]
    methods {
       interpolate {
-         [[Interpolate the given value.]]
-         return: double; [[Output value calculated by interpolating the input 
value.]]
+         [[Performs the mapping operation.]]
+         return: double; [[Output mapped value. Its range is unrestricted. In 
particular,
+                           it might be outside the input $[0, 1] range.]]
          params {
-            @in progress: double; [[Input value mapped from 0.0 to 1.0.]]
+            @in progress: double; [[Input value between $[0.0] and $[1.0]. 
Values outside this range
+                                    might yield unpredictable results.]]
          }
       }
    }

-- 


Reply via email to