Smth like that?
(presumed "documentation update - draft" patch is applied)
On Friday, April 19, 2013 06:16:36 PM Andrey Borzenkov wrote:
> В Fri, 12 Apr 2013 11:27:21 +0400
>
> Vladimir Testov <vladimir.tes...@rosalab.ru> пишет:
> > >I think "XXX deg" is enough. It avoids confusion with single/plural
> > >forms and we just need something to distinguish from plain number.
> >
> > Maybe we should use all three keywords - "deg", "degree", "degrees" ?
>
> I do not see any real need for it.
>
> > >Please add also documentation for it.
> >
> > Ok. Please tell me where and how should I do it. :)
>
> docs/grub.texi, section Theme file format. I assume it should go
> somewhere in Component properties.
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
--
With best regards,
_______________________________
Vladimir Testov, ROSA Laboratory.
www.rosalab.ru
diff -Naur grub-new/docs/grub.texi grub-new2/docs/grub.texi
--- grub-new/docs/grub.texi 2013-04-19 03:45:33.641661014 +0400
+++ grub-new2/docs/grub.texi 2013-04-19 03:55:05.026961965 +0400
@@ -2035,6 +2035,9 @@
@item start_angle
@tab The position of the first tick mark to appear or disappear. Measured in
``parrots``, where 1 ``parrot`` equals to 1 / 256 of the full circle.
+ The value of this property could be set in degrees if used value pattern
+ ``XXX deg``. Also the value could be set in rads if used value pattern
+ ``XXX rad``.
@item theme_dir
@tab The full path to the directory where bitmaps are holded.
This property should be set if bitmaps are not placed in the
diff -Naur grub-new/grub-core/gfxmenu/gui_circular_progress.c grub-new2/grub-core/gfxmenu/gui_circular_progress.c
--- grub-new/grub-core/gfxmenu/gui_circular_progress.c 2013-04-08 13:00:36.000000000 +0400
+++ grub-new2/grub-core/gfxmenu/gui_circular_progress.c 2013-04-19 03:51:38.075342193 +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 (!unit)
+ return angle;
+ if (grub_strcmp (unit, "deg") == 0)
+ angle = angle * 64 / 90;
+ else if (grub_strcmp (unit, "rad") == 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