[gimp] app: simplify and clean up angle utility functions in GimpDial



commit e9e479134471b12c19e4863927c5625025d01cde
Author: Michael Natterer <mitch gimp org>
Date:   Sun May 25 17:22:50 2014 +0200

    app: simplify and clean up angle utility functions in GimpDial

 app/widgets/gimpdial.c |   49 +++++++++++++++--------------------------------
 1 files changed, 16 insertions(+), 33 deletions(-)
---
diff --git a/app/widgets/gimpdial.c b/app/widgets/gimpdial.c
index 487de59..72f3876 100644
--- a/app/widgets/gimpdial.c
+++ b/app/widgets/gimpdial.c
@@ -408,33 +408,11 @@ angle_mod_2PI (gdouble angle)
 }
 
 static gdouble
-min_prox (gdouble alpha,
-         gdouble beta,
-         gdouble angle)
+get_angle_distance (gdouble alpha,
+                    gdouble beta)
 {
-  gdouble temp1 = MIN (angle_mod_2PI (alpha - angle),
-                       2 * G_PI - angle_mod_2PI (alpha - angle));
-  gdouble temp2 = MIN (angle_mod_2PI (beta - angle),
-                       2 * G_PI - angle_mod_2PI (beta - angle));
-
-  return MIN (temp1, temp2);
-}
-
-static DialTarget
-closest (gdouble alpha,
-        gdouble beta,
-        gdouble angle)
-{
-  gdouble temp_alpha = MIN (angle_mod_2PI (alpha - angle),
-                            2 * G_PI - angle_mod_2PI (alpha - angle));
-
-  gdouble temp_beta  = MIN (angle_mod_2PI (beta - angle),
-                            2 * G_PI - angle_mod_2PI (beta - angle));
-
-  if (temp_alpha - temp_beta < 0)
-    return DIAL_TARGET_ALPHA;
-  else
-    return DIAL_TARGET_BETA;
+  return ABS (MIN (angle_mod_2PI (alpha - beta),
+                   2 * G_PI - angle_mod_2PI (alpha - beta)));
 }
 
 static gdouble
@@ -499,15 +477,20 @@ gimp_dial_button_press_event (GtkWidget      *widget,
           dial->priv->press_angle = angle;
 
           if (distance > SEGMENT_FRACTION &&
-              min_prox (dial->priv->alpha, dial->priv->beta, angle) < G_PI / 12)
+              MIN (get_angle_distance (dial->priv->alpha, angle),
+                   get_angle_distance (dial->priv->beta,  angle)) < G_PI / 12)
             {
-              dial->priv->target = closest (dial->priv->alpha, dial->priv->beta,
-                                            angle);
-
-              if (dial->priv->target == DIAL_TARGET_ALPHA)
-                g_object_set (dial, "alpha", angle, NULL);
+              if (get_angle_distance (dial->priv->alpha, angle) <=
+                  get_angle_distance (dial->priv->beta,  angle))
+                {
+                  dial->priv->target = DIAL_TARGET_ALPHA;
+                  g_object_set (dial, "alpha", angle, NULL);
+                }
               else
-                g_object_set (dial, "beta", angle, NULL);
+                {
+                  dial->priv->target = DIAL_TARGET_BETA;
+                  g_object_set (dial, "beta", angle, NULL);
+                }
             }
           else
             {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]