diff options
Diffstat (limited to 'src/libplybootsplash/ply-window.c')
-rw-r--r-- | src/libplybootsplash/ply-window.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/libplybootsplash/ply-window.c b/src/libplybootsplash/ply-window.c index adb57d1..1e1f8c0 100644 --- a/src/libplybootsplash/ply-window.c +++ b/src/libplybootsplash/ply-window.c @@ -69,6 +69,18 @@ #define SHOW_CURSOR_SEQUENCE "\033[?25h" #endif +#ifndef COLOR_SEQUENCE_FORMAT +#define COLOR_SEQUENCE_FORMAT "\033[%dm" +#endif + +#ifndef FOREGROUND_COLOR_BASE +#define FOREGROUND_COLOR_BASE 30 +#endif + +#ifndef BACKGROUND_COLOR_BASE +#define BACKGROUND_COLOR_BASE 40 +#endif + struct _ply_window { ply_event_loop_t *loop; @@ -85,6 +97,8 @@ struct _ply_window ply_fd_watch_t *tty_fd_watch; ply_window_mode_t mode; + ply_window_color_t foreground_color; + ply_window_color_t background_color; int number_of_text_rows; int number_of_text_columns; @@ -485,6 +499,48 @@ ply_window_clear_screen (ply_window_t *window) } void +ply_window_set_background_color (ply_window_t *window, + ply_window_color_t color) +{ + char *sequence; + + sequence = NULL; + asprintf (&sequence, COLOR_SEQUENCE_FORMAT, + BACKGROUND_COLOR_BASE + color); + write (window->tty_fd, sequence, strlen (sequence)); + free (sequence); + + window->background_color = color; +} + +void +ply_window_set_foreground_color (ply_window_t *window, + ply_window_color_t color) +{ + char *sequence; + + sequence = NULL; + asprintf (&sequence, COLOR_SEQUENCE_FORMAT, + FOREGROUND_COLOR_BASE + color); + write (window->tty_fd, sequence, strlen (sequence)); + free (sequence); + + window->foreground_color = color; +} + +ply_window_color_t +ply_window_get_background_color (ply_window_t *window) +{ + return window->background_color; +} + +ply_window_color_t +ply_window_get_foreground_color (ply_window_t *window) +{ + return window->foreground_color; +} + +void ply_window_hide_text_cursor (ply_window_t *window) { write (window->tty_fd, HIDE_CURSOR_SEQUENCE, strlen (HIDE_CURSOR_SEQUENCE)); |