summaryrefslogtreecommitdiffstats
path: root/src/libplybootsplash/ply-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libplybootsplash/ply-window.c')
-rw-r--r--src/libplybootsplash/ply-window.c56
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));