grub_uint16_t grub_console_getwh (struct grub_term_output *term);
void grub_console_setcolorstate (struct grub_term_output *term,
grub_term_color_state state);
-void grub_console_setcolor (struct grub_term_output *term,
- grub_uint8_t normal_color,
- grub_uint8_t highlight_color);
-void grub_console_getcolor (struct grub_term_output *term,
- grub_uint8_t *normal_color,
- grub_uint8_t *highlight_color);
#endif /* ! GRUB_VGA_COMMON_CPU_HEADER */
void (*setcolorstate) (struct grub_term_output *term,
grub_term_color_state state);
- /* Set the normal color and the highlight color. The format of each
- color is VGA's. */
- void (*setcolor) (struct grub_term_output *term,
- grub_uint8_t normal_color, grub_uint8_t highlight_color);
-
- /* Get the normal color and the highlight color. The format of each
- color is VGA's. */
- void (*getcolor) (struct grub_term_output *term,
- grub_uint8_t *normal_color, grub_uint8_t *highlight_color);
-
/* Turn on/off the cursor. */
void (*setcursor) (struct grub_term_output *term, int on);
/* The feature flags defined above. */
grub_uint32_t flags;
+ /* Current color state. */
+ grub_uint8_t normal_color;
+ grub_uint8_t highlight_color;
+
void *data;
};
typedef struct grub_term_output *grub_term_output_t;
+#define GRUB_TERM_DEFAULT_NORMAL_COLOR 0x07
+#define GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR 0x70
+#define GRUB_TERM_DEFAULT_STANDARD_COLOR 0x07
+
extern struct grub_term_output *EXPORT_VAR(grub_term_outputs_disabled);
extern struct grub_term_input *EXPORT_VAR(grub_term_inputs_disabled);
extern struct grub_term_output *EXPORT_VAR(grub_term_outputs);
term->setcolorstate (term, state);
}
- /* Set the normal color and the highlight color. The format of each
- color is VGA's. */
+/* Set the normal color and the highlight color. The format of each
+ color is VGA's. */
static inline void
grub_term_setcolor (struct grub_term_output *term,
grub_uint8_t normal_color, grub_uint8_t highlight_color)
{
- if (term->setcolor)
- term->setcolor (term, normal_color, highlight_color);
+ term->normal_color = normal_color;
+ term->highlight_color = highlight_color;
}
/* Turn on/off the cursor. */
grub_term_getcolor (struct grub_term_output *term,
grub_uint8_t *normal_color, grub_uint8_t *highlight_color)
{
- if (term->getcolor)
- term->getcolor (term, normal_color, highlight_color);
- else
- {
- *normal_color = 0x07;
- *highlight_color = 0x07;
- }
+ *normal_color = term->normal_color;
+ *highlight_color = term->highlight_color;
}
struct grub_term_autoload
char *cursor_off;
char *setcolor;
- grub_uint8_t normal_color;
- grub_uint8_t highlight_color;
-
unsigned int xpos, ypos;
void (*put) (const int c);
int EXPORT_FUNC (grub_terminfo_getkey) (struct grub_term_input *term);
void EXPORT_FUNC (grub_terminfo_putchar) (struct grub_term_output *term,
const struct grub_unicode_glyph *c);
-void EXPORT_FUNC (grub_terminfo_getcolor) (struct grub_term_output *term,
- grub_uint8_t *normal_color,
- grub_uint8_t *highlight_color);
-void EXPORT_FUNC (grub_terminfo_setcolor) (struct grub_term_output *term,
- grub_uint8_t normal_color,
- grub_uint8_t highlight_color);
grub_err_t EXPORT_FUNC (grub_terminfo_output_register) (struct grub_term_output *term,
const char *type);
#include <grub/efi/api.h>
#include <grub/efi/console.h>
-static grub_uint8_t
+static const grub_uint8_t
grub_console_standard_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_YELLOW,
GRUB_EFI_BACKGROUND_BLACK);
-static grub_uint8_t
-grub_console_normal_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_LIGHTGRAY,
- GRUB_EFI_BACKGROUND_BLACK);
-static grub_uint8_t
-grub_console_highlight_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_BLACK,
- GRUB_EFI_BACKGROUND_LIGHTGRAY);
static int read_key = -1;
}
static void
-grub_console_setcolorstate (struct grub_term_output *term __attribute__ ((unused)),
+grub_console_setcolorstate (struct grub_term_output *term,
grub_term_color_state state)
{
grub_efi_simple_text_output_interface_t *o;
efi_call_2 (o->set_attributes, o, grub_console_standard_color);
break;
case GRUB_TERM_COLOR_NORMAL:
- efi_call_2 (o->set_attributes, o, grub_console_normal_color);
+ efi_call_2 (o->set_attributes, o, term->normal_color);
break;
case GRUB_TERM_COLOR_HIGHLIGHT:
- efi_call_2 (o->set_attributes, o, grub_console_highlight_color);
+ efi_call_2 (o->set_attributes, o, term->highlight_color);
break;
default:
break;
}
}
-static void
-grub_console_setcolor (struct grub_term_output *term __attribute__ ((unused)),
- grub_uint8_t normal_color, grub_uint8_t highlight_color)
-{
- grub_console_normal_color = normal_color;
- grub_console_highlight_color = highlight_color;
-}
-
-static void
-grub_console_getcolor (struct grub_term_output *term __attribute__ ((unused)),
- grub_uint8_t *normal_color, grub_uint8_t *highlight_color)
-{
- *normal_color = grub_console_normal_color;
- *highlight_color = grub_console_highlight_color;
-}
-
static void
grub_console_setcursor (struct grub_term_output *term __attribute__ ((unused)),
int on)
.gotoxy = grub_console_gotoxy,
.cls = grub_console_cls,
.setcolorstate = grub_console_setcolorstate,
- .setcolor = grub_console_setcolor,
- .getcolor = grub_console_getcolor,
.setcursor = grub_console_setcursor,
+ .normal_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_LIGHTGRAY,
+ GRUB_EFI_BACKGROUND_BLACK),
+ .highlight_color = GRUB_EFI_TEXT_ATTR (GRUB_EFI_BLACK,
+ GRUB_EFI_BACKGROUND_LIGHTGRAY),
.flags = GRUB_TERM_CODE_TYPE_VISUAL_GLYPHS
};
#define DEFAULT_BORDER_WIDTH 10
#define DEFAULT_STANDARD_COLOR 0x07
-#define DEFAULT_NORMAL_COLOR 0x07
-#define DEFAULT_HIGHLIGHT_COLOR 0x70
struct grub_dirty_region
{
/* Terminal color settings. */
grub_uint8_t standard_color_setting;
- grub_uint8_t normal_color_setting;
- grub_uint8_t highlight_color_setting;
grub_uint8_t term_color;
/* Color settings. */
grub_video_set_active_render_target (text_layer);
virtual_screen.standard_color_setting = DEFAULT_STANDARD_COLOR;
- virtual_screen.normal_color_setting = DEFAULT_NORMAL_COLOR;
- virtual_screen.highlight_color_setting = DEFAULT_HIGHLIGHT_COLOR;
- virtual_screen.term_color = virtual_screen.normal_color_setting;
+ virtual_screen.term_color = GRUB_TERM_DEFAULT_NORMAL_COLOR;
set_term_color (virtual_screen.term_color);
}
static void
-grub_virtual_screen_setcolorstate (struct grub_term_output *term __attribute__ ((unused)),
+grub_virtual_screen_setcolorstate (struct grub_term_output *term,
grub_term_color_state state)
{
switch (state)
break;
case GRUB_TERM_COLOR_NORMAL:
- virtual_screen.term_color = virtual_screen.normal_color_setting;
+ virtual_screen.term_color = term->normal_color;
break;
case GRUB_TERM_COLOR_HIGHLIGHT:
- virtual_screen.term_color = virtual_screen.highlight_color_setting;
+ virtual_screen.term_color = term->highlight_color;
break;
default:
set_term_color (virtual_screen.term_color);
}
-static void
-grub_virtual_screen_setcolor (struct grub_term_output *term __attribute__ ((unused)),
- grub_uint8_t normal_color,
- grub_uint8_t highlight_color)
-{
- virtual_screen.normal_color_setting = normal_color;
- virtual_screen.highlight_color_setting = highlight_color;
-}
-
-static void
-grub_virtual_screen_getcolor (struct grub_term_output *term __attribute__ ((unused)),
- grub_uint8_t *normal_color,
- grub_uint8_t *highlight_color)
-{
- *normal_color = virtual_screen.normal_color_setting;
- *highlight_color = virtual_screen.highlight_color_setting;
-}
-
static void
grub_gfxterm_setcursor (struct grub_term_output *term __attribute__ ((unused)),
int on)
.gotoxy = grub_gfxterm_gotoxy,
.cls = grub_gfxterm_cls,
.setcolorstate = grub_virtual_screen_setcolorstate,
- .setcolor = grub_virtual_screen_setcolor,
- .getcolor = grub_virtual_screen_getcolor,
.setcursor = grub_gfxterm_setcursor,
.refresh = grub_gfxterm_refresh,
.flags = GRUB_TERM_CODE_TYPE_VISUAL_GLYPHS,
+ .normal_color = GRUB_TERM_DEFAULT_NORMAL_COLOR,
+ .highlight_color = GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR,
.next = 0
};
.gotoxy = grub_console_gotoxy,
.cls = grub_console_cls,
.setcolorstate = grub_console_setcolorstate,
- .setcolor = grub_console_setcolor,
- .getcolor = grub_console_getcolor,
.setcursor = grub_console_setcursor,
- .flags = GRUB_TERM_CODE_TYPE_VGA
+ .flags = GRUB_TERM_CODE_TYPE_VGA,
+ .normal_color = GRUB_TERM_DEFAULT_NORMAL_COLOR,
+ .highlight_color = GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR,
};
void
.setcolorstate = grub_vga_setcolorstate,
.setcursor = grub_vga_setcursor,
.flags = GRUB_TERM_CODE_TYPE_VISUAL_GLYPHS,
+ .normal_color = GRUB_TERM_DEFAULT_NORMAL_COLOR,
+ .highlight_color = GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR,
};
GRUB_MOD_INIT(vga)
.gotoxy = grub_vga_text_gotoxy,
.cls = grub_vga_text_cls,
.setcolorstate = grub_console_setcolorstate,
- .setcolor = grub_console_setcolor,
- .getcolor = grub_console_getcolor,
.setcursor = grub_vga_text_setcursor,
- .flags = GRUB_TERM_CODE_TYPE_VGA
+ .flags = GRUB_TERM_CODE_TYPE_VGA,
+ .normal_color = GRUB_TERM_DEFAULT_NORMAL_COLOR,
+ .highlight_color = GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR,
};
GRUB_MOD_INIT(vga_text)
#include <grub/types.h>
grub_uint8_t grub_console_cur_color = 0x7;
-static grub_uint8_t grub_console_standard_color = 0x7;
-static grub_uint8_t grub_console_normal_color = 0x7;
-static grub_uint8_t grub_console_highlight_color = 0x70;
grub_uint16_t
grub_console_getwh (struct grub_term_output *term __attribute__ ((unused)))
}
void
-grub_console_setcolorstate (struct grub_term_output *term __attribute__ ((unused)),
+grub_console_setcolorstate (struct grub_term_output *term,
grub_term_color_state state)
{
switch (state) {
case GRUB_TERM_COLOR_STANDARD:
- grub_console_cur_color = grub_console_standard_color;
+ grub_console_cur_color = GRUB_TERM_DEFAULT_STANDARD_COLOR;
break;
case GRUB_TERM_COLOR_NORMAL:
- grub_console_cur_color = grub_console_normal_color;
+ grub_console_cur_color = term->normal_color;
break;
case GRUB_TERM_COLOR_HIGHLIGHT:
- grub_console_cur_color = grub_console_highlight_color;
+ grub_console_cur_color = term->highlight_color;
break;
default:
break;
}
}
-
-void
-grub_console_setcolor (struct grub_term_output *term __attribute__ ((unused)),
- grub_uint8_t normal_color, grub_uint8_t highlight_color)
-{
- grub_console_normal_color = normal_color;
- grub_console_highlight_color = highlight_color;
-}
-
-void
-grub_console_getcolor (struct grub_term_output *term __attribute__ ((unused)),
- grub_uint8_t *normal_color, grub_uint8_t *highlight_color)
-{
- *normal_color = grub_console_normal_color;
- *highlight_color = grub_console_highlight_color;
-}
.gotoxy = grub_terminfo_gotoxy,
.cls = grub_terminfo_cls,
.setcolorstate = grub_terminfo_setcolorstate,
- .setcolor = grub_terminfo_setcolor,
- .getcolor = grub_terminfo_getcolor,
.setcursor = grub_ofconsole_setcursor,
.flags = GRUB_TERM_CODE_TYPE_ASCII,
- .data = &grub_ofconsole_terminfo_output
+ .data = &grub_ofconsole_terminfo_output,
+ .normal_color = GRUB_TERM_DEFAULT_NORMAL_COLOR,
+ .highlight_color = GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR,
};
void grub_terminfo_fini (void);
.gotoxy = grub_terminfo_gotoxy,
.cls = grub_terminfo_cls,
.setcolorstate = grub_terminfo_setcolorstate,
- .setcolor = grub_terminfo_setcolor,
- .getcolor = grub_terminfo_getcolor,
.setcursor = grub_terminfo_setcursor,
.flags = GRUB_TERM_CODE_TYPE_ASCII,
- .data = &grub_serial_terminfo_output
+ .data = &grub_serial_terminfo_output,
+ .normal_color = GRUB_TERM_DEFAULT_NORMAL_COLOR,
+ .highlight_color = GRUB_TERM_DEFAULT_HIGHLIGHT_COLOR,
};
\f
data = (struct grub_terminfo_output_state *) term->data;
data->next = terminfo_outputs;
terminfo_outputs = term;
-
- data->normal_color = 0x07;
- data->highlight_color = 0x70;
return GRUB_ERR_NONE;
}
data->xpos = data->ypos = 0;
}
-void
-grub_terminfo_setcolor (struct grub_term_output *term,
- grub_uint8_t normal_color,
- grub_uint8_t highlight_color)
-{
- struct grub_terminfo_output_state *data
- = (struct grub_terminfo_output_state *) term->data;
-
- data->normal_color = normal_color;
- data->highlight_color = highlight_color;
-}
-
-void
-grub_terminfo_getcolor (struct grub_term_output *term,
- grub_uint8_t *normal_color,
- grub_uint8_t *highlight_color)
-{
- struct grub_terminfo_output_state *data
- = (struct grub_terminfo_output_state *) term->data;
-
- *normal_color = data->normal_color;
- *highlight_color = data->highlight_color;
-}
-
void
grub_terminfo_setcolorstate (struct grub_term_output *term,
const grub_term_color_state state)
{
case GRUB_TERM_COLOR_STANDARD:
case GRUB_TERM_COLOR_NORMAL:
- fg = data->normal_color & 0x0f;
- bg = data->normal_color >> 4;
+ fg = term->normal_color & 0x0f;
+ bg = term->normal_color >> 4;
break;
case GRUB_TERM_COLOR_HIGHLIGHT:
- fg = data->highlight_color & 0x0f;
- bg = data->highlight_color >> 4;
+ fg = term->highlight_color & 0x0f;
+ bg = term->highlight_color >> 4;
break;
default:
return;
grub_uint8_t grub_console_cur_color = 7;
-static grub_uint8_t grub_console_standard_color = 0x7;
-static grub_uint8_t grub_console_normal_color = 0x7;
-static grub_uint8_t grub_console_highlight_color = 0x70;
+static const grub_uint8_t grub_console_standard_color = 0x7;
#define NUM_COLORS 8
}
static void
-grub_ncurses_setcolorstate (struct grub_term_output *term __attribute__ ((unused)),
+grub_ncurses_setcolorstate (struct grub_term_output *term,
grub_term_color_state state)
{
switch (state)
grub_console_attr = A_NORMAL;
break;
case GRUB_TERM_COLOR_NORMAL:
- grub_console_cur_color = grub_console_normal_color;
+ grub_console_cur_color = term->normal_color;
grub_console_attr = A_NORMAL;
break;
case GRUB_TERM_COLOR_HIGHLIGHT:
- grub_console_cur_color = grub_console_highlight_color;
+ grub_console_cur_color = term->highlight_color;
grub_console_attr = A_STANDOUT;
break;
default:
}
}
-/* XXX: This function is never called. */
-static void
-grub_ncurses_setcolor (struct grub_term_output *term __attribute__ ((unused)),
- grub_uint8_t normal_color, grub_uint8_t highlight_color)
-{
- grub_console_normal_color = normal_color;
- grub_console_highlight_color = highlight_color;
-}
-
-static void
-grub_ncurses_getcolor (struct grub_term_output *term __attribute__ ((unused)),
- grub_uint8_t *normal_color, grub_uint8_t *highlight_color)
-{
- *normal_color = grub_console_normal_color;
- *highlight_color = grub_console_highlight_color;
-}
-
static int saved_char = ERR;
static int
.gotoxy = grub_ncurses_gotoxy,
.cls = grub_ncurses_cls,
.setcolorstate = grub_ncurses_setcolorstate,
- .setcolor = grub_ncurses_setcolor,
- .getcolor = grub_ncurses_getcolor,
.setcursor = grub_ncurses_setcursor,
.refresh = grub_ncurses_refresh,
.flags = GRUB_TERM_CODE_TYPE_ASCII