[PATCH 1/1] clock: binary: consolidate algorithms

Felipe Contreras felipe.contreras at gmail.com
Thu Aug 18 07:27:28 CEST 2022


Now that the algorithm functions are so simple there's barely any need
to have separate functions.

Signed-off-by: Felipe Contreras <felipe.contreras at gmail.com>
---
 plugins/clock/clock-binary.c | 104 +++++++++++++----------------------
 1 file changed, 38 insertions(+), 66 deletions(-)

diff --git a/plugins/clock/clock-binary.c b/plugins/clock/clock-binary.c
index b0279c9a..adc81ca6 100644
--- a/plugins/clock/clock-binary.c
+++ b/plugins/clock/clock-binary.c
@@ -287,66 +287,54 @@ xfce_clock_binary_algo_value (GDateTime *time,
 }
 
 static void
-xfce_clock_binary_draw_true_binary (gulong    *table,
-                                    GDateTime *time,
-                                    gboolean   seconds,
-                                    gint       rows,
-                                    gint       cols)
+xfce_clock_binary_algo (XfceClockBinary *binary,
+                        gulong          *table,
+                        gint             rows,
+                        gint             cols)
 {
-  gint  row, ticks;
-  guint n, p;
+  gint       row, col, ticks;
+  guint      n, p;
+  GDateTime *time;
 
-  n = xfce_clock_binary_algo_value (time, seconds);
+  time = clock_time_get_time (binary->time);
 
-  for (row = 0, p = 1; row < rows; row++, p *= 100)
+  switch (binary->mode)
     {
-      ticks = n / p % 100;
-      *table |= ticks << (row * cols);
-    }
-}
-
-
-
-static void
-xfce_clock_binary_draw_binary (gulong    *table,
-                               GDateTime *time,
-                               gboolean   seconds,
-                               gint       rows,
-                               gint       cols)
-{
-  gint  row, col, ticks;
-  guint n, p;
-
-  n = xfce_clock_binary_algo_value (time, seconds);
+    case MODE_DECIMAL:
+      n = xfce_clock_binary_algo_value (time, binary->show_seconds);
 
-  for (col = 0, p = 1; col < cols; col++, p *= 10)
-    {
-      ticks = n / p % 10;
-      for (row = 0; row < rows; row++)
+      for (col = 0, p = 1; col < cols; col++, p *= 10)
         {
-          if (ticks & (1 << row))
-            *table |= 1 << (row * cols + col);
+          ticks = n / p % 10;
+          for (row = 0; row < rows; row++)
+            {
+              if (ticks & (1 << row))
+                *table |= 1 << (row * cols + col);
+            }
         }
-    }
-}
-
-
+      break;
+    case MODE_SEXAGESIMAL:
+      n = xfce_clock_binary_algo_value (time, binary->show_seconds);
 
-static void
-xfce_clock_binary_draw_binary_time (gulong    *table,
-                                    GDateTime *time,
-                                    gboolean   seconds)
-{
-  guint n;
+      for (row = 0, p = 1; row < rows; row++, p *= 100)
+        {
+          ticks = n / p % 100;
+          *table |= ticks << (row * cols);
+        }
+      break;
+    case MODE_BINARY_TIME:
+      n = g_date_time_get_hour (time) * 60 * 60 +
+        g_date_time_get_minute (time) * 60 +
+        g_date_time_get_second (time);
 
-  n = g_date_time_get_hour (time) * 60 * 60 +
-    g_date_time_get_minute (time) * 60 +
-    g_date_time_get_second (time);
+      *table = (n * 512) / 675; // 2 ** 16 / (24 * 60 * 60)
 
-  *table = (n * 512) / 675; // 2 ** 16 / (24 * 60 * 60)
+      if (!binary->show_seconds)
+        *table >>= 8;
+      break;
+    }
 
-  if (!seconds)
-    *table >>= 8;
+  g_date_time_unref (time);
 }
 
 
@@ -369,7 +357,6 @@ xfce_clock_binary_draw (GtkWidget *widget,
   GdkRGBA           active_rgba, inactive_rgba, grid_rgba;
   GtkBorder         padding;
   gulong            table = 0;
-  GDateTime        *time;
 
   panel_return_val_if_fail (XFCE_CLOCK_IS_BINARY (binary), FALSE);
   //panel_return_val_if_fail (gtk_widget_get_has_window (widget), FALSE);
@@ -445,22 +432,7 @@ xfce_clock_binary_draw (GtkWidget *widget,
         }
     }
 
-  time = clock_time_get_time (binary->time);
-
-  switch (binary->mode)
-    {
-    case MODE_DECIMAL:
-      xfce_clock_binary_draw_binary (&table, time, binary->show_seconds, rows, cols);
-      break;
-    case MODE_SEXAGESIMAL:
-      xfce_clock_binary_draw_true_binary (&table, time, binary->show_seconds, rows, cols);
-      break;
-    case MODE_BINARY_TIME:
-      xfce_clock_binary_draw_binary_time (&table, time, binary->show_seconds);
-      break;
-    }
-
-  g_date_time_unref (time);
+  xfce_clock_binary_algo (binary, &table, rows, cols);
 
   inactive_rgba.alpha = 0.2;
   active_rgba.alpha = 1.0;
-- 
2.37.2.351.g9bf691b78c.dirty



More information about the Xfce4-dev mailing list