* docs/grub.texi: Introduce terminal window position options:

terminal-left: terminal window's left position
        terminal-top: terminal window's top position
        terminal-width: terminal window's width
        terminal-height: terminal window's height
        * grub-core/gfxmenu/theme-loader.c: Likewise.
        * include/grub/gfxmenu_view.h: Likewise.
        * po/exlude.pot: Likewise.
        * grub-core/gfxmenu/view.c: Likewise.
        Also updated minimal window size.
        Also terminal_sanity_check function has been introduced.
This commit is contained in:
Vladimir Testov 2013-08-08 12:55:24 +04:00
parent 748a4533f5
commit b47434612c
7 changed files with 229 additions and 62 deletions

View file

@ -1,3 +1,18 @@
2013-08-07 Vladimir Testov <vladimir.testov@rosalab.ru>
* docs/grub.texi: Introduce terminal window position options:
terminal-left: terminal window's left position
terminal-top: terminal window's top position
terminal-width: terminal window's width
terminal-height: terminal window's height
terminal-border: terminal window's border width
* grub-core/gfxmenu/theme-loader.c: Likewise.
* include/grub/gfxmenu_view.h: Likewise.
* po/exlude.pot: Likewise.
* grub-core/gfxmenu/view.c: Likewise.
Also updated minimal window size.
Also terminal_sanity_check function has been introduced.
2013-08-02 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/tests/checksums.h: Update (1-pixel difference in marker

View file

@ -1904,6 +1904,11 @@ In this example, name3 is assigned a color value.
@item desktop-image @tab Specifies the image to use as the background. It will be scaled to fit the screen size.
@item desktop-color @tab Specifies the color for the background if *desktop-image* is not specified.
@item terminal-box @tab Specifies the file name pattern for the styled box slices used for the command line terminal window. For example, ``terminal-box: terminal_*.png'' will use the images ``terminal_c.png`` as the center area, ``terminal_n.png`` as the north (top) edge, ``terminal_nw.png`` as the northwest (upper left) corner, and so on. If the image for any slice is not found, it will simply be left empty.
@item terminal-border @tab Specifies the border width of the terminal window.
@item terminal-left @tab Specifies the left coordinate of the terminal window.
@item terminal-top @tab Specifies the top coordinate of the terminal window.
@item terminal-width @tab Specifies the width of the terminal window.
@item terminal-height @tab Specifies the height of the terminal window.
@end multitable

View file

@ -32,6 +32,9 @@
#include <grub/gui.h>
#include <grub/color.h>
static grub_err_t
parse_proportional_spec (const char *value, signed *abs, grub_fixed_signed_t *prop);
/* Construct a new box widget using ABSPATTERN to find the pixmap files for
it, storing the new box instance at *BOXPTR.
PATTERN should be of the form: "(hd0,0)/somewhere/style*.png".
@ -113,6 +116,24 @@ grub_gui_recreate_box (grub_gfxmenu_box_t *boxptr,
return grub_errno;
}
static grub_err_t
theme_get_unsigned_int_from_proportional (const char *value,
unsigned absolute_value,
unsigned int *parsed_value)
{
grub_err_t err;
grub_fixed_signed_t frac;
signed pixels;
err = parse_proportional_spec (value, &pixels, &frac);
if (err != GRUB_ERR_NONE)
return err;
int result = grub_fixed_sfs_multiply (absolute_value, frac) + pixels;
if (result < 0)
result = 0;
*parsed_value = result;
return GRUB_ERR_NONE;
}
/* Set the specified property NAME on the view to the given string VALUE.
The caller is responsible for the lifetimes of NAME and VALUE. */
static grub_err_t
@ -179,6 +200,52 @@ theme_set_string (grub_gfxmenu_view_t view,
if (err != GRUB_ERR_NONE)
return err;
}
else if (! grub_strcmp ("terminal-border", name))
{
view->terminal_border = grub_strtoul (value, 0, 10);
if (grub_errno)
return grub_errno;
}
else if (! grub_strcmp ("terminal-left", name))
{
unsigned int tmp;
int err = theme_get_unsigned_int_from_proportional (value,
view->screen.width,
&tmp);
if (err != GRUB_ERR_NONE)
return err;
view->terminal_rect.x = tmp;
}
else if (! grub_strcmp ("terminal-top", name))
{
unsigned int tmp;
int err = theme_get_unsigned_int_from_proportional (value,
view->screen.width,
&tmp);
if (err != GRUB_ERR_NONE)
return err;
view->terminal_rect.y = tmp;
}
else if (! grub_strcmp ("terminal-width", name))
{
unsigned int tmp;
int err = theme_get_unsigned_int_from_proportional (value,
view->screen.width,
&tmp);
if (err != GRUB_ERR_NONE)
return err;
view->terminal_rect.width = tmp;
}
else if (! grub_strcmp ("terminal-height", name))
{
unsigned int tmp;
int err = theme_get_unsigned_int_from_proportional (value,
view->screen.width,
&tmp);
if (err != GRUB_ERR_NONE)
return err;
view->terminal_rect.height = tmp;
}
else if (! grub_strcmp ("title-text", name))
{
grub_free (view->title_text);
@ -363,10 +430,10 @@ read_expression (struct parsebuf *p)
}
static grub_err_t
parse_proportional_spec (char *value, signed *abs, grub_fixed_signed_t *prop)
parse_proportional_spec (const char *value, signed *abs, grub_fixed_signed_t *prop)
{
signed num;
char *ptr;
const char *ptr;
int sig = 0;
*abs = 0;
*prop = 0;
@ -382,7 +449,7 @@ parse_proportional_spec (char *value, signed *abs, grub_fixed_signed_t *prop)
ptr++;
}
num = grub_strtoul (ptr, &ptr, 0);
num = grub_strtoul (ptr, (char **) &ptr, 0);
if (grub_errno)
return grub_errno;
if (sig)

View file

@ -40,7 +40,6 @@
static void
init_terminal (grub_gfxmenu_view_t view);
static grub_video_rect_t term_rect;
static grub_gfxmenu_view_t term_view;
/* Create a new view object, loading the theme specified by THEME_PATH and
@ -71,6 +70,15 @@ grub_gfxmenu_view_new (const char *theme_path,
view->screen.width = width;
view->screen.height = height;
view->need_to_check_sanity = 1;
view->terminal_border = 3;
view->terminal_rect.width = view->screen.width * 7 / 10;
view->terminal_rect.height = view->screen.height * 7 / 10;
view->terminal_rect.x = view->screen.x + (view->screen.width
- view->terminal_rect.width) / 2;
view->terminal_rect.y = view->screen.y + (view->screen.height
- view->terminal_rect.height) / 2;
default_font = grub_font_get ("Unknown Regular 16");
default_fg_color = grub_video_rgba_color_rgb (0, 0, 0);
default_bg_color = grub_video_rgba_color_rgb (255, 255, 255);
@ -302,7 +310,7 @@ void
grub_gfxmenu_view_redraw (grub_gfxmenu_view_t view,
const grub_video_rect_t *region)
{
if (grub_video_have_common_points (&term_rect, region))
if (grub_video_have_common_points (&view->terminal_rect, region))
grub_gfxterm_schedule_repaint ();
grub_video_set_active_render_target (GRUB_VIDEO_RENDER_TARGET_DISPLAY);
@ -387,25 +395,109 @@ grub_gfxmenu_draw_terminal_box (void)
if (!term_box)
return;
term_box->set_content_size (term_box, term_rect.width,
term_rect.height);
term_box->set_content_size (term_box, term_view->terminal_rect.width,
term_view->terminal_rect.height);
term_box->draw (term_box,
term_rect.x - term_box->get_left_pad (term_box),
term_rect.y - term_box->get_top_pad (term_box));
term_view->terminal_rect.x - term_box->get_left_pad (term_box),
term_view->terminal_rect.y - term_box->get_top_pad (term_box));
}
static void
get_min_terminal (grub_font_t terminal_font,
unsigned int border_width,
unsigned int *min_terminal_width,
unsigned int *min_terminal_height)
{
struct grub_font_glyph *glyph;
glyph = grub_font_get_glyph (terminal_font, 'M');
*min_terminal_width = (glyph? glyph->device_width : 8) * 80
+ 2 * border_width;
*min_terminal_height = grub_font_get_max_char_height (terminal_font) * 24
+ 2 * border_width;
}
static void
terminal_sanity_check (grub_gfxmenu_view_t view)
{
if (!view->need_to_check_sanity)
return;
/* terminal_font was checked before in the init_terminal function. */
grub_font_t terminal_font = grub_font_get (view->terminal_font_name);
/* Non-negative numbers below. */
int scr_x = view->screen.x;
int scr_y = view->screen.y;
int scr_width = view->screen.width;
int scr_height = view->screen.height;
int term_x = view->terminal_rect.x;
int term_y = view->terminal_rect.y;
int term_width = view->terminal_rect.width;
int term_height = view->terminal_rect.height;
/* Check that border_width isn't too big. */
unsigned int border_width = view->terminal_border;
unsigned int min_terminal_width;
unsigned int min_terminal_height;
get_min_terminal (terminal_font, border_width,
&min_terminal_width, &min_terminal_height);
if (border_width > 3 && ((int) min_terminal_width >= scr_width
|| (int) min_terminal_height >= scr_height))
{
border_width = 3;
get_min_terminal (terminal_font, border_width,
&min_terminal_width, &min_terminal_height);
}
/* Sanity checks. */
if (term_width > scr_width)
term_width = scr_width;
if (term_height > scr_height)
term_height = scr_height;
if (scr_width <= (int) min_terminal_width
|| scr_height <= (int) min_terminal_height)
{
/* The screen resulution is too low. Use all space, except a small border
to show the user, that it is a window. Then center the window. */
term_width = scr_width - 6 * border_width;
term_height = scr_height - 6 * border_width;
term_x = scr_x + (scr_width - term_width) / 2;
term_y = scr_y + (scr_height - term_height) / 2;
}
else if (term_width < (int) min_terminal_width
|| term_height < (int) min_terminal_height)
{
/* The screen resolution is big enough. Make sure, that terminal screen
dimensions aren't less than minimal values. Then center the window. */
term_width = (int) min_terminal_width;
term_height = (int) min_terminal_height;
term_x = scr_x + (scr_width - term_width) / 2;
term_y = scr_y + (scr_height - term_height) / 2;
}
/* At this point w and h are satisfying. */
if (term_x + term_width > scr_width)
term_x = scr_width - term_width;
if (term_y + term_height > scr_height)
term_y = scr_height - term_height;
/* Write down corrected data. */
view->terminal_rect.x = (unsigned int) term_x;
view->terminal_rect.y = (unsigned int) term_y;
view->terminal_rect.width = (unsigned int) term_width;
view->terminal_rect.height = (unsigned int) term_height;
view->terminal_border = border_width;
view->need_to_check_sanity = 0;
}
static void
init_terminal (grub_gfxmenu_view_t view)
{
const int border_width = 3;
grub_font_t terminal_font;
unsigned int line_width;
struct grub_font_glyph *glyph;
terminal_font = grub_font_get (view->terminal_font_name);
if (!terminal_font)
{
@ -413,38 +505,22 @@ init_terminal (grub_gfxmenu_view_t view)
return;
}
glyph = grub_font_get_glyph (terminal_font, 'M');
line_width = ((glyph ? glyph->device_width : 8) * 80 + 2 * border_width);
if (view->screen.width <= line_width)
/* The screen is too small. Use all space, except a small border
to show the user, it is a window and not full screen: */
term_rect.width = view->screen.width - 6 * border_width;
else
{
/* The screen is big enough. Try 70% of the screen width: */
term_rect.width = view->screen.width * 7 / 10;
/* Make sure, that we use at least the line_width: */
if ( term_rect.width < line_width )
term_rect.width = line_width;
}
term_rect.height = view->screen.height * 7 / 10;
term_rect.x = view->screen.x + (view->screen.width - term_rect.width) / 2;
term_rect.y = view->screen.y + (view->screen.height - term_rect.height) / 2;
/* Check that terminal window size and position are sane. */
terminal_sanity_check (view);
term_view = view;
/* Note: currently there is no API for changing the gfxterm font
on the fly, so whatever font the initially loaded theme specifies
will be permanent. */
grub_gfxterm_set_window (GRUB_VIDEO_RENDER_TARGET_DISPLAY, term_rect.x,
term_rect.y,
term_rect.width, term_rect.height,
view->double_repaint, terminal_font,
border_width);
grub_gfxterm_set_window (GRUB_VIDEO_RENDER_TARGET_DISPLAY,
view->terminal_rect.x,
view->terminal_rect.y,
view->terminal_rect.width,
view->terminal_rect.height,
view->double_repaint,
terminal_font,
view->terminal_border);
grub_gfxterm_decorator_hook = grub_gfxmenu_draw_terminal_box;
}

View file

@ -58,35 +58,35 @@
{ "gfxterm_menu", 640, 480, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 640x480xbgra8888 */, (grub_uint32_t []) { 0x9813a416, 0x9a418b1d, 0x6fb2a19a, 0x9a418b1d, 0x3c3e7993, 0x9813a416, 0x9813a416, 0xe85391b9, 0xe85391b9, 0xe85391b9, 0xda81995d, 0xda81995d, 0xda81995d, 0xe9064220, 0xe9064220, 0xe9064220, 0x9813a416, 0x3c3e7993, 0x3c3e7993, 0x9813a416, }, 20 },
{ "gfxterm_menu", 800, 600, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 800x600xbgra8888 */, (grub_uint32_t []) { 0x5fcf013d, 0x66cb2267, 0xb90e9f13, 0x66cb2267, 0x79874749, 0x5fcf013d, 0x5fcf013d, 0x55ffe784, 0x55ffe784, 0x55ffe784, 0x2c6d082c, 0x2c6d082c, 0x2c6d082c, 0xed8bba6b, 0xed8bba6b, 0xed8bba6b, 0x5fcf013d, 0x79874749, 0x79874749, 0x5fcf013d, }, 20 },
{ "gfxterm_menu", 1024, 768, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 1024x768xbgra8888 */, (grub_uint32_t []) { 0xdd28f52b, 0xd3d2838d, 0x3c2e7a96, 0xd3d2838d, 0x993b0962, 0xdd28f52b, 0xdd28f52b, 0xa719aebf, 0xa719aebf, 0xa719aebf, 0xcd8b1348, 0xcd8b1348, 0xcd8b1348, 0x1b91449d, 0x1b91449d, 0x1b91449d, 0xdd28f52b, 0x993b0962, 0x993b0962, 0xdd28f52b, }, 20 },
{ "gfxmenu", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xc3d16829, 0x15aa9c37, 0xc3d16829, 0x98ea4b3a, 0xf22da29a, 0xa59283dd, 0xa59283dd, 0xa59283dd, 0x397018b, 0x397018b, 0x397018b, 0xe978830f, 0xe978830f, 0xe978830f, 0x59c36f00, 0x98ea4b3a, 0x98ea4b3a, }, 18 },
{ "gfxmenu", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xc312db93, 0x62a6f9ab, 0xc312db93, 0xc4b199ab, 0x2c3dfa69, 0x3af36cbe, 0x3af36cbe, 0x3af36cbe, 0x413d5d99, 0x413d5d99, 0x413d5d99, 0xf53dc062, 0xf53dc062, 0xf53dc062, 0xaa4593fe, 0xc4b199ab, 0xc4b199ab, }, 18 },
{ "gfxmenu", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0xc3d16829, 0x15aa9c37, 0xc3d16829, 0x98ea4b3a, 0x1e41f884, 0x3a9aaf64, 0x3a9aaf64, 0x3a9aaf64, 0x9c6ed3a4, 0x9c6ed3a4, 0x9c6ed3a4, 0x603f8978, 0x603f8978, 0x603f8978, 0x59c36f00, 0x98ea4b3a, 0x98ea4b3a, }, 18 },
{ "gfxmenu", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xc312db93, 0x62a6f9ab, 0xc312db93, 0xc4b199ab, 0xd426ef9b, 0x6b44de71, 0x6b44de71, 0x6b44de71, 0xdd89df0b, 0xdd89df0b, 0xdd89df0b, 0x70855958, 0x70855958, 0x70855958, 0xaa4593fe, 0xc4b199ab, 0xc4b199ab, }, 18 },
{ "gfxmenu", 1024, 768, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi16 */, (grub_uint32_t []) { 0xc9cbf769, 0x9034ef0a, 0xe4cc1d1e, 0x9034ef0a, 0x55ac3617, 0x122a153f, 0xae2e908, 0xae2e908, 0xae2e908, 0x3f5367ea, 0x3f5367ea, 0x3f5367ea, 0x86bc0378, 0x86bc0378, 0x86bc0378, 0xc9cbf769, 0x55ac3617, 0x55ac3617, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x1c3742c9, 0x78e0e9, 0x11e250ac, 0x78e0e9, 0x9151f8fe, 0xb52c8875, 0x8d289ed1, 0x8d289ed1, 0x8d289ed1, 0xb55e6a15, 0xb55e6a15, 0xb55e6a15, 0x63bc8cda, 0x63bc8cda, 0x63bc8cda, 0x1c3742c9, 0x9151f8fe, 0x9151f8fe, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0xcc5a7bed, 0xe2aff65f, 0x6ecb555a, 0xe2aff65f, 0x708334eb, 0xc410fda0, 0x3eae26ac, 0x3eae26ac, 0x3eae26ac, 0x47229697, 0x47229697, 0x47229697, 0x28f34df8, 0x28f34df8, 0x28f34df8, 0xcc5a7bed, 0x708334eb, 0x708334eb, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 640x480xrgba8888 */, (grub_uint32_t []) { 0x1c3742c9, 0x78e0e9, 0x11e250ac, 0x78e0e9, 0x9151f8fe, 0x487d6f88, 0x63807bc2, 0x63807bc2, 0x63807bc2, 0xc8403289, 0xc8403289, 0xc8403289, 0x5a15c8d4, 0x5a15c8d4, 0x5a15c8d4, 0x1c3742c9, 0x9151f8fe, 0x9151f8fe, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 800x600xrgba8888 */, (grub_uint32_t []) { 0xcc5a7bed, 0xe2aff65f, 0x6ecb555a, 0xe2aff65f, 0x708334eb, 0x693b0403, 0xac7fe8d6, 0xac7fe8d6, 0xac7fe8d6, 0x22f18267, 0x22f18267, 0x22f18267, 0x533fcb51, 0x533fcb51, 0x533fcb51, 0xcc5a7bed, 0x708334eb, 0x708334eb, }, 18 },
{ "gfxmenu", 1024, 768, 0x1, 256, 32, 4, 16, 8, 8, 8, 0, 8, 24, 8 /* 1024x768xrgba8888 */, (grub_uint32_t []) { 0xef4a3312, 0x51be5693, 0x6cda44a9, 0x51be5693, 0x4c748bb2, 0xd3aa0fcc, 0x178f6c35, 0x178f6c35, 0x178f6c35, 0xbbadbfd3, 0xbbadbfd3, 0xbbadbfd3, 0xe4e491d2, 0xe4e491d2, 0xe4e491d2, 0xef4a3312, 0x4c748bb2, 0x4c748bb2, }, 18 },
{ "gfxmenu", 640, 480, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi256 */, (grub_uint32_t []) { 0x59c36f00, 0x99b1e58d, 0xdd618b70, 0x99b1e58d, 0x6cec0b5a, 0xdc37dab7, 0x8b88fbf0, 0x8b88fbf0, 0x8b88fbf0, 0x2d8d79a6, 0x2d8d79a6, 0x2d8d79a6, 0xc762fb22, 0xc762fb22, 0xc762fb22, 0x59c36f00, 0x6cec0b5a, 0x6cec0b5a, }, 18 },
{ "gfxmenu", 800, 600, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi256 */, (grub_uint32_t []) { 0xaa4593fe, 0xa524ff93, 0x4472026e, 0xa524ff93, 0x497cade9, 0x71c38b, 0x16bf555c, 0x16bf555c, 0x16bf555c, 0x6d71647b, 0x6d71647b, 0x6d71647b, 0xd971f980, 0xd971f980, 0xd971f980, 0xaa4593fe, 0x497cade9, 0x497cade9, }, 18 },
{ "gfxmenu", 640, 480, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi256 */, (grub_uint32_t []) { 0x59c36f00, 0x99b1e58d, 0xdd618b70, 0x99b1e58d, 0x6cec0b5a, 0x97bc346b, 0xb367638b, 0xb367638b, 0xb367638b, 0x15931f4b, 0x15931f4b, 0x15931f4b, 0xe9c24597, 0xe9c24597, 0xe9c24597, 0x59c36f00, 0x6cec0b5a, 0x6cec0b5a, }, 18 },
{ "gfxmenu", 800, 600, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi256 */, (grub_uint32_t []) { 0xaa4593fe, 0xa524ff93, 0x4472026e, 0xa524ff93, 0x497cade9, 0x79cdba4, 0xb8feea4e, 0xb8feea4e, 0xb8feea4e, 0xe33eb34, 0xe33eb34, 0xe33eb34, 0xa33f6d67, 0xa33f6d67, 0xa33f6d67, 0xaa4593fe, 0x497cade9, 0x497cade9, }, 18 },
{ "gfxmenu", 1024, 768, 0x2, 256, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 1024x768xi256 */, (grub_uint32_t []) { 0xc9cbf769, 0x7302ba19, 0xf9e69182, 0x7302ba19, 0x6f83ab6c, 0x423782ff, 0x5aff7ec8, 0x5aff7ec8, 0x5aff7ec8, 0x6f4ef02a, 0x6f4ef02a, 0x6f4ef02a, 0xd6a194b8, 0xd6a194b8, 0xd6a194b8, 0xc9cbf769, 0x6f83ab6c, 0x6f83ab6c, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 640x480xrgba5550 */, (grub_uint32_t []) { 0x5387d57f, 0x47c89379, 0xfb921d8c, 0x47c89379, 0x2ab29713, 0xf93a81be, 0x3458d277, 0x3458d277, 0x3458d277, 0x6475af82, 0x6475af82, 0x6475af82, 0x89de01be, 0x89de01be, 0x89de01be, 0x5387d57f, 0x2ab29713, 0x2ab29713, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 800x600xrgba5550 */, (grub_uint32_t []) { 0xf83ee7aa, 0xda7180ad, 0x2d40ccb5, 0xda7180ad, 0x4b66f81, 0x58397d1d, 0xf2c9c339, 0xf2c9c339, 0xf2c9c339, 0xf702b00c, 0xf702b00c, 0xf702b00c, 0x3a7f3ab7, 0x3a7f3ab7, 0x3a7f3ab7, 0xf83ee7aa, 0x4b66f81, 0x4b66f81, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 640x480xrgba5550 */, (grub_uint32_t []) { 0x5387d57f, 0x47c89379, 0xfb921d8c, 0x47c89379, 0x2ab29713, 0xcd05a8b0, 0x552f30aa, 0x552f30aa, 0x552f30aa, 0x49b531f3, 0x49b531f3, 0x49b531f3, 0x7f7f0f6b, 0x7f7f0f6b, 0x7f7f0f6b, 0x5387d57f, 0x2ab29713, 0x2ab29713, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 800x600xrgba5550 */, (grub_uint32_t []) { 0xf83ee7aa, 0xda7180ad, 0x2d40ccb5, 0xda7180ad, 0x4b66f81, 0x598eb034, 0x3b50d2b6, 0x3b50d2b6, 0x3b50d2b6, 0x1a23680d, 0x1a23680d, 0x1a23680d, 0x1a17a08a, 0x1a17a08a, 0x1a17a08a, 0xf83ee7aa, 0x4b66f81, 0x4b66f81, }, 18 },
{ "gfxmenu", 1024, 768, 0x1, 256, 15, 2, 10, 5, 5, 5, 0, 5, 0, 0 /* 1024x768xrgba5550 */, (grub_uint32_t []) { 0x724366e5, 0x22dfd431, 0xcb4dda, 0x22dfd431, 0x1041fdd7, 0x321a2758, 0x729a7530, 0x729a7530, 0x729a7530, 0x90674a10, 0x90674a10, 0x90674a10, 0x5c83455b, 0x5c83455b, 0x5c83455b, 0x724366e5, 0x1041fdd7, 0x1041fdd7, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 640x480xrgba5650 */, (grub_uint32_t []) { 0x5387d57f, 0xd57a5f3d, 0xbaacffef, 0xd57a5f3d, 0x6d04139, 0x17789f1, 0x2df02846, 0x2df02846, 0x2df02846, 0x6c62ee4b, 0x6c62ee4b, 0x6c62ee4b, 0xb4025cf5, 0xb4025cf5, 0xb4025cf5, 0x5387d57f, 0x6d04139, 0x6d04139, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 800x600xrgba5650 */, (grub_uint32_t []) { 0xf83ee7aa, 0x66e783d8, 0x237c46, 0x66e783d8, 0xb0476052, 0x44b10241, 0xa7db814e, 0xa7db814e, 0xa7db814e, 0xc7747957, 0xc7747957, 0xc7747957, 0xedc87ede, 0xedc87ede, 0xedc87ede, 0xf83ee7aa, 0xb0476052, 0xb0476052, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 640x480xrgba5650 */, (grub_uint32_t []) { 0x5387d57f, 0xd57a5f3d, 0xbaacffef, 0xd57a5f3d, 0x6d04139, 0xd2b03183, 0x5f71c17d, 0x5f71c17d, 0x5f71c17d, 0x7da2a359, 0x7da2a359, 0x7da2a359, 0x49e0c40, 0x49e0c40, 0x49e0c40, 0x5387d57f, 0x6d04139, 0x6d04139, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 800x600xrgba5650 */, (grub_uint32_t []) { 0xf83ee7aa, 0x66e783d8, 0x237c46, 0x66e783d8, 0xb0476052, 0xa9f8749c, 0xb3e23018, 0xb3e23018, 0xb3e23018, 0x630e11f3, 0x630e11f3, 0x630e11f3, 0xa5755a9, 0xa5755a9, 0xa5755a9, 0xf83ee7aa, 0xb0476052, 0xb0476052, }, 18 },
{ "gfxmenu", 1024, 768, 0x1, 256, 16, 2, 11, 5, 5, 6, 0, 5, 0, 0 /* 1024x768xrgba5650 */, (grub_uint32_t []) { 0x724366e5, 0xa380a936, 0x44112354, 0xa380a936, 0x5972442c, 0xc1d72f70, 0x4b4f7975, 0x4b4f7975, 0x4b4f7975, 0x4944ce0e, 0x4944ce0e, 0x4944ce0e, 0xed4d66c4, 0xed4d66c4, 0xed4d66c4, 0x724366e5, 0x5972442c, 0x5972442c, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 640x480xrgba8880 */, (grub_uint32_t []) { 0x1c955882, 0xd4c034e1, 0xd18ebc60, 0xd4c034e1, 0xce757514, 0x47883323, 0x36a061ca, 0x36a061ca, 0x36a061ca, 0x857cdbe9, 0x857cdbe9, 0x857cdbe9, 0x79e6a1ff, 0x79e6a1ff, 0x79e6a1ff, 0x1c955882, 0xce757514, 0xce757514, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 800x600xrgba8880 */, (grub_uint32_t []) { 0x4d266f7a, 0x8f846485, 0x724947a6, 0x8f846485, 0xca16ff75, 0x7ca6c2a6, 0x7518114, 0x7518114, 0x7518114, 0x73e14536, 0x73e14536, 0x73e14536, 0xb955b108, 0xb955b108, 0xb955b108, 0x4d266f7a, 0xca16ff75, 0xca16ff75, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 640x480xrgba8880 */, (grub_uint32_t []) { 0x1c955882, 0xd4c034e1, 0xd18ebc60, 0xd4c034e1, 0xce757514, 0xafb9ccd, 0xfbaa6735, 0xfbaa6735, 0xfbaa6735, 0x89440884, 0x89440884, 0x89440884, 0x1201a945, 0x1201a945, 0x1201a945, 0x1c955882, 0xce757514, 0xce757514, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 800x600xrgba8880 */, (grub_uint32_t []) { 0x4d266f7a, 0x8f846485, 0x724947a6, 0x8f846485, 0xca16ff75, 0x3d9190e6, 0xfc49b2e4, 0xfc49b2e4, 0xfc49b2e4, 0x1073e48f, 0x1073e48f, 0x1073e48f, 0xe24a0f1e, 0xe24a0f1e, 0xe24a0f1e, 0x4d266f7a, 0xca16ff75, 0xca16ff75, }, 18 },
{ "gfxmenu", 1024, 768, 0x1, 256, 24, 3, 16, 8, 8, 8, 0, 8, 0, 0 /* 1024x768xrgba8880 */, (grub_uint32_t []) { 0x1ed9d731, 0x12799c18, 0xc43c02b, 0x12799c18, 0x8def0a81, 0x7219771f, 0x67fa9045, 0x67fa9045, 0x67fa9045, 0x401ed559, 0x401ed559, 0x401ed559, 0xdc2fa0bd, 0xdc2fa0bd, 0xdc2fa0bd, 0x1ed9d731, 0x8def0a81, 0x8def0a81, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 640x480xbgra5550 */, (grub_uint32_t []) { 0x5387d57f, 0xb141cb2a, 0xbea70aff, 0xb141cb2a, 0xb5d30cfb, 0x79f9376f, 0xb49b64a6, 0xb49b64a6, 0xb49b64a6, 0xe4b61953, 0xe4b61953, 0xe4b61953, 0x91db76f, 0x91db76f, 0x91db76f, 0x5387d57f, 0xb5d30cfb, 0xb5d30cfb, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 800x600xbgra5550 */, (grub_uint32_t []) { 0xf83ee7aa, 0xbce5fa8f, 0x408f4ff1, 0xbce5fa8f, 0xc37a3112, 0xa84da503, 0x2bd1b27, 0x2bd1b27, 0x2bd1b27, 0x7766812, 0x7766812, 0x7766812, 0xca0be2a9, 0xca0be2a9, 0xca0be2a9, 0xf83ee7aa, 0xc37a3112, 0xc37a3112, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 640x480xbgra5550 */, (grub_uint32_t []) { 0x5387d57f, 0xb141cb2a, 0xbea70aff, 0xb141cb2a, 0xb5d30cfb, 0x8b113016, 0x133ba80c, 0x133ba80c, 0x133ba80c, 0xfa1a955, 0xfa1a955, 0xfa1a955, 0x396b97cd, 0x396b97cd, 0x396b97cd, 0x5387d57f, 0xb5d30cfb, 0xb5d30cfb, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 800x600xbgra5550 */, (grub_uint32_t []) { 0xf83ee7aa, 0xbce5fa8f, 0x408f4ff1, 0xbce5fa8f, 0xc37a3112, 0xee9c2441, 0x8c4246c3, 0x8c4246c3, 0x8c4246c3, 0xad31fc78, 0xad31fc78, 0xad31fc78, 0xad0534ff, 0xad0534ff, 0xad0534ff, 0xf83ee7aa, 0xc37a3112, 0xc37a3112, }, 18 },
{ "gfxmenu", 1024, 768, 0x1, 256, 15, 2, 0, 5, 5, 5, 10, 5, 0, 0 /* 1024x768xbgra5550 */, (grub_uint32_t []) { 0x724366e5, 0xda7c17e2, 0x2c0f29ff, 0xda7c17e2, 0xefc30135, 0xfa52a09, 0x4f257861, 0x4f257861, 0x4f257861, 0xadd84741, 0xadd84741, 0xadd84741, 0x613c480a, 0x613c480a, 0x613c480a, 0x724366e5, 0xefc30135, 0xefc30135, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 640x480xbgra5650 */, (grub_uint32_t []) { 0x5387d57f, 0xbddc0704, 0xfcbe55f3, 0xbddc0704, 0xe719c475, 0xa046defc, 0x8cc17f4b, 0x8cc17f4b, 0x8cc17f4b, 0xcd53b946, 0xcd53b946, 0xcd53b946, 0x15330bf8, 0x15330bf8, 0x15330bf8, 0x5387d57f, 0xe719c475, 0xe719c475, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 800x600xbgra5650 */, (grub_uint32_t []) { 0xf83ee7aa, 0x2e44be7, 0x355622e, 0x2e44be7, 0x43c8f7d0, 0x120f1eb9, 0xf1659db6, 0xf1659db6, 0xf1659db6, 0x91ca65af, 0x91ca65af, 0x91ca65af, 0xbb766226, 0xbb766226, 0xbb766226, 0xf83ee7aa, 0x43c8f7d0, 0x43c8f7d0, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 640x480xbgra5650 */, (grub_uint32_t []) { 0x5387d57f, 0xbddc0704, 0xfcbe55f3, 0xbddc0704, 0xe719c475, 0x37196474, 0xbad8948a, 0xbad8948a, 0xbad8948a, 0x980bf6ae, 0x980bf6ae, 0x980bf6ae, 0xe13759b7, 0xe13759b7, 0xe13759b7, 0x5387d57f, 0xe719c475, 0xe719c475, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 800x600xbgra5650 */, (grub_uint32_t []) { 0xf83ee7aa, 0x2e44be7, 0x355622e, 0x2e44be7, 0x43c8f7d0, 0x5a2eaae3, 0x4034ee67, 0x4034ee67, 0x4034ee67, 0x90d8cf8c, 0x90d8cf8c, 0x90d8cf8c, 0xf9818bd6, 0xf9818bd6, 0xf9818bd6, 0xf83ee7aa, 0x43c8f7d0, 0x43c8f7d0, }, 18 },
{ "gfxmenu", 1024, 768, 0x1, 256, 16, 2, 0, 5, 5, 6, 11, 5, 0, 0 /* 1024x768xbgra5650 */, (grub_uint32_t []) { 0x724366e5, 0x811fe662, 0xea426643, 0x811fe662, 0x3d6c794f, 0x736807f, 0x8daed67a, 0x8daed67a, 0x8daed67a, 0x8fa56101, 0x8fa56101, 0x8fa56101, 0x2bacc9cb, 0x2bacc9cb, 0x2bacc9cb, 0x724366e5, 0x3d6c794f, 0x3d6c794f, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 640x480xbgra8880 */, (grub_uint32_t []) { 0x1c955882, 0x51b7a2b6, 0x739cd793, 0x51b7a2b6, 0xe6cbb6b7, 0xa3824ceb, 0xd2aa1e02, 0xd2aa1e02, 0xd2aa1e02, 0x6176a421, 0x6176a421, 0x6176a421, 0x9decde37, 0x9decde37, 0x9decde37, 0x1c955882, 0xe6cbb6b7, 0xe6cbb6b7, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 800x600xbgra8880 */, (grub_uint32_t []) { 0x4d266f7a, 0xb3fde28a, 0x254aa376, 0xb3fde28a, 0xfe24d6e7, 0x17e3a034, 0x6c14e386, 0x6c14e386, 0x6c14e386, 0x18a427a4, 0x18a427a4, 0x18a427a4, 0xd210d39a, 0xd210d39a, 0xd210d39a, 0x4d266f7a, 0xfe24d6e7, 0xfe24d6e7, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 640x480xbgra8880 */, (grub_uint32_t []) { 0x1c955882, 0x51b7a2b6, 0x739cd793, 0x51b7a2b6, 0xe6cbb6b7, 0xc0996dfd, 0x31c89605, 0x31c89605, 0x31c89605, 0x4326f9b4, 0x4326f9b4, 0x4326f9b4, 0xd8635875, 0xd8635875, 0xd8635875, 0x1c955882, 0xe6cbb6b7, 0xe6cbb6b7, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 800x600xbgra8880 */, (grub_uint32_t []) { 0x4d266f7a, 0xb3fde28a, 0x254aa376, 0xb3fde28a, 0xfe24d6e7, 0x9d89e033, 0x5c51c231, 0x5c51c231, 0x5c51c231, 0xb06b945a, 0xb06b945a, 0xb06b945a, 0x42527fcb, 0x42527fcb, 0x42527fcb, 0x4d266f7a, 0xfe24d6e7, 0xfe24d6e7, }, 18 },
{ "gfxmenu", 1024, 768, 0x1, 256, 24, 3, 0, 8, 8, 8, 16, 8, 0, 0 /* 1024x768xbgra8880 */, (grub_uint32_t []) { 0x1ed9d731, 0xe21093d1, 0x22b4f37f, 0xe21093d1, 0x6e68157e, 0x94242a59, 0x81c7cd03, 0x81c7cd03, 0x81c7cd03, 0xa623881f, 0xa623881f, 0xa623881f, 0x3a12fdfb, 0x3a12fdfb, 0x3a12fdfb, 0x1ed9d731, 0x6e68157e, 0x6e68157e, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 640x480xbgra8888 */, (grub_uint32_t []) { 0x1c3742c9, 0x10d16d53, 0x572acb26, 0x10d16d53, 0x809c452e, 0xe213167f, 0xda1700db, 0xda1700db, 0xda1700db, 0xe261f41f, 0xe261f41f, 0xe261f41f, 0x348312d0, 0x348312d0, 0x348312d0, 0x1c3742c9, 0x809c452e, 0x809c452e, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 800x600xbgra8888 */, (grub_uint32_t []) { 0xcc5a7bed, 0x72a6eb55, 0x91669ba6, 0x72a6eb55, 0x9671866, 0x7d5dafd1, 0x87e374dd, 0x87e374dd, 0x87e374dd, 0xfe6fc4e6, 0xfe6fc4e6, 0xfe6fc4e6, 0x91be1f89, 0x91be1f89, 0x91be1f89, 0xcc5a7bed, 0x9671866, 0x9671866, }, 18 },
{ "gfxmenu", 640, 480, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 640x480xbgra8888 */, (grub_uint32_t []) { 0x1c3742c9, 0x10d16d53, 0x572acb26, 0x10d16d53, 0x809c452e, 0x732c7814, 0x58d16c5e, 0x58d16c5e, 0x58d16c5e, 0xf3112515, 0xf3112515, 0xf3112515, 0x6144df48, 0x6144df48, 0x6144df48, 0x1c3742c9, 0x809c452e, 0x809c452e, }, 18 },
{ "gfxmenu", 800, 600, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 800x600xbgra8888 */, (grub_uint32_t []) { 0xcc5a7bed, 0x72a6eb55, 0x91669ba6, 0x72a6eb55, 0x9671866, 0x4a766eab, 0x8f32827e, 0x8f32827e, 0x8f32827e, 0x1bce8cf, 0x1bce8cf, 0x1bce8cf, 0x7072a1f9, 0x7072a1f9, 0x7072a1f9, 0xcc5a7bed, 0x9671866, 0x9671866, }, 18 },
{ "gfxmenu", 1024, 768, 0x1, 256, 32, 4, 0, 8, 8, 8, 16, 8, 24, 8 /* 1024x768xbgra8888 */, (grub_uint32_t []) { 0xef4a3312, 0xf88c2164, 0xfcb94962, 0xf88c2164, 0x16aa3d9d, 0x668e3370, 0xa2ab5089, 0xa2ab5089, 0xa2ab5089, 0xe89836f, 0xe89836f, 0xe89836f, 0x51c0ad6e, 0x51c0ad6e, 0x51c0ad6e, 0xef4a3312, 0x16aa3d9d, 0x16aa3d9d, }, 18 },
{ "gfxterm_ar", 640, 480, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 640x480xi16 */, (grub_uint32_t []) { 0x59c36f00, 0x3458f737, 0x9f683632, 0x3458f737, 0xc406e533, 0x59c36f00, 0x59c36f00, 0x487ab5e4, 0x487ab5e4, 0x487ab5e4, 0x7fd259c4, 0x7fd259c4, 0x7fd259c4, 0x9e9c916, 0x9e9c916, 0x9e9c916, 0x59c36f00, 0xc406e533, 0xc406e533, 0x59c36f00, }, 20 },
{ "gfxterm_ar", 800, 600, 0x2, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0 /* 800x600xi16 */, (grub_uint32_t []) { 0xaa4593fe, 0xf69b4ddf, 0xe4bbd034, 0xf69b4ddf, 0x11f6f535, 0xaa4593fe, 0xaa4593fe, 0x5f72cd5e, 0x5f72cd5e, 0x5f72cd5e, 0x2d53a3c0, 0x2d53a3c0, 0x2d53a3c0, 0xc354a564, 0xc354a564, 0xc354a564, 0xaa4593fe, 0x11f6f535, 0x11f6f535, 0xaa4593fe, }, 20 },

View file

@ -84,6 +84,10 @@ struct grub_gfxmenu_view
{
grub_video_rect_t screen;
int need_to_check_sanity;
grub_video_rect_t terminal_rect;
int terminal_border;
grub_font_t title_font;
grub_font_t message_font;
char *terminal_font_name;

Binary file not shown.