cssvalue: Restructure RGBA transitions
authorBenjamin Otte <otte@redhat.com>
Fri, 26 Jun 2015 17:06:02 +0000 (19:06 +0200)
committerBenjamin Otte <otte@redhat.com>
Fri, 26 Jun 2015 17:06:02 +0000 (19:06 +0200)
Split out a function to make the code clearer for the changes ahead.

gtk/gtkcssrgbavalue.c

index 3caa6475cd179ee586342369d6485295b63970c8..ee73a458f05330d8de5bab6e7b36677c07ee30fe 100644 (file)
@@ -50,21 +50,29 @@ gtk_css_value_rgba_equal (const GtkCssValue *rgba1,
   return gdk_rgba_equal (&rgba1->rgba, &rgba2->rgba);
 }
 
+static inline double
+transition (double start,
+            double end,
+            double progress)
+{
+  return start + (end - start) * progress;
+}
+
 static GtkCssValue *
 gtk_css_value_rgba_transition (GtkCssValue *start,
                                GtkCssValue *end,
                                guint        property_id,
                                double       progress)
 {
-  GdkRGBA transition;
+  GdkRGBA result;
 
   progress = CLAMP (progress, 0, 1);
-  transition.red = start->rgba.red + (end->rgba.red - start->rgba.red) * progress;
-  transition.green = start->rgba.green + (end->rgba.green - start->rgba.green) * progress;
-  transition.blue = start->rgba.blue + (end->rgba.blue - start->rgba.blue) * progress;
-  transition.alpha = start->rgba.alpha + (end->rgba.alpha - start->rgba.alpha) * progress;
+  result.alpha = transition (start->rgba.alpha, end->rgba.alpha, progress);
+  result.red = transition (start->rgba.red, end->rgba.red, progress);
+  result.green = transition (start->rgba.green, end->rgba.green, progress);
+  result.blue = transition (start->rgba.blue, end->rgba.blue, progress);
 
-  return _gtk_css_rgba_value_new_from_rgba (&transition);
+  return _gtk_css_rgba_value_new_from_rgba (&result);
 }
 
 static void