Like that? :)

use
start_angle = "XXX degree"
or start_angle = "XXX degrees"
for setting angle in degrees

use
start_angle = "XXX rad"
or start_angle = "XXX rads"
for setting angle int rads

or use
start_angle = XXX
for setting angle in "parrots", like it was before

-- 
With best regards,
_______________________________
Vladimir Testov, ROSA Laboratory.
www.rosalab.ru
diff -Naur grub-2.00/grub-core/gfxmenu/gui_circular_progress.c grub-new/grub-core/gfxmenu/gui_circular_progress.c
--- grub-2.00/grub-core/gfxmenu/gui_circular_progress.c	2010-12-01 17:45:43.000000000 +0300
+++ grub-new/grub-core/gfxmenu/gui_circular_progress.c	2013-04-11 17:51:33.242196806 +0400
@@ -223,6 +223,32 @@
   self->end = end;
 }
 
+static int
+parse_angle (const char *value)
+{
+  int pos = 0;
+  int len = grub_strlen (value);
+  int angle = grub_strtol (value, 0, 10);
+  /* Find space symbol */
+  while (pos < len && value[pos] != ' ')
+    pos++;
+  /* Skip spaces */
+  while (pos < len && value[pos] == ' ')
+    pos++;
+  if (pos < len)
+    {
+      char *unit = grub_new_substring (value, pos, len);
+      if ((grub_strcmp (unit, "degree") == 0)
+          || (grub_strcmp (unit, "degrees") == 0))
+        angle = angle * 64 / 90;
+      else if ((grub_strcmp (unit, "rad") == 0)
+               || grub_strcmp (unit, "rads") == 0)
+        angle = angle * 64 / 100;
+      grub_free (unit);
+    }
+  return angle;
+}
+
 static grub_err_t
 circprog_set_property (void *vself, const char *name, const char *value)
 {
@@ -233,7 +259,7 @@
     }
   else if (grub_strcmp (name, "start_angle") == 0)
     {
-      self->start_angle = grub_strtol (value, 0, 10);
+      self->start_angle = parse_angle(value);
     }
   else if (grub_strcmp (name, "ticks_disappear") == 0)
     {
_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to