/* Set necessary information that the gfxmenu view provides. */
static void
list_set_view_info (void *vself,
- const char *theme_path,
- grub_gfxmenu_model_t menu)
+ grub_gfxmenu_view_t view)
{
list_impl_t self = vself;
- grub_gfxmenu_icon_manager_set_theme_path (self->icon_manager, theme_path);
- self->menu = menu;
+ grub_gfxmenu_icon_manager_set_theme_path (self->icon_manager,
+ view->theme_path);
+ self->view = view;
}
+ static struct grub_gui_component_ops list_comp_ops =
+ {
+ .destroy = list_destroy,
+ .get_id = list_get_id,
+ .is_instance = list_is_instance,
+ .paint = list_paint,
+ .set_parent = list_set_parent,
+ .get_parent = list_get_parent,
+ .set_bounds = list_set_bounds,
+ .get_bounds = list_get_bounds,
+ .get_minimal_size = list_get_minimal_size,
+ .set_property = list_set_property
+ };
+
static struct grub_gui_list_ops list_ops =
{
- .component_ops =
- {
- .destroy = list_destroy,
- .get_id = list_get_id,
- .is_instance = list_is_instance,
- .paint = list_paint,
- .set_parent = list_set_parent,
- .get_parent = list_get_parent,
- .set_bounds = list_set_bounds,
- .get_bounds = list_get_bounds,
- .get_preferred_size = list_get_preferred_size,
- .set_property = list_set_property
- },
.set_view_info = list_set_view_info
};
grub_free (view->progress_message_text);
grub_free (view->theme_path);
if (view->canvas)
- view->canvas->ops->component.destroy (view->canvas);
+ view->canvas->component.ops->destroy (view->canvas);
grub_free (view);
-
- set_text_mode ();
- destroy_terminal ();
-}
-
-/* Sets MESSAGE as the progress message for the view.
- MESSAGE can be 0, in which case no message is displayed. */
-static void
-set_progress_message (grub_gfxmenu_view_t view, const char *message)
-{
- grub_free (view->progress_message_text);
- if (message)
- view->progress_message_text = grub_strdup (message);
- else
- view->progress_message_text = 0;
}
static void
struct grub_gui_list_ops
{
- struct grub_gui_component_ops component_ops;
void (*set_view_info) (void *self,
- const char *theme_path,
- grub_gfxmenu_model_t menu);
+ grub_gfxmenu_view_t view);
};
+ typedef grub_uint32_t grub_fixed_unsigned_t;
+ #define GRUB_FIXED_1 0x10000
+
+ static inline unsigned
+ grub_fixed_ufu_divide (grub_uint32_t a, grub_fixed_unsigned_t b)
+ {
+ return (a << 16) / b;
+ }
+
+ static inline grub_fixed_unsigned_t
+ grub_fixed_fuf_divide (grub_fixed_unsigned_t a, grub_uint32_t b)
+ {
+ return a / b;
+ }
+
+ static inline unsigned
+ grub_fixed_ufu_multiply (grub_uint32_t a, grub_fixed_unsigned_t b)
+ {
+ return (a * b) >> 16;
+ }
+
+ static inline unsigned
+ grub_fixed_to_unsigned (grub_fixed_unsigned_t in)
+ {
+ return in >> 16;
+ }
+
+ static inline grub_fixed_unsigned_t
+ grub_unsigned_to_fixed (unsigned in)
+ {
+ return in << 16;
+ }
+
struct grub_gui_component
{
struct grub_gui_component_ops *ops;