From 642c3c69a69220170e2f68c2bf6c898e6cb5b20b Mon Sep 17 00:00:00 2001 From: Benji Dial Date: Wed, 17 Feb 2021 00:13:06 -0500 Subject: win+space, mkpopup --- src/user/meminfo/meminfo.c | 2 +- src/user/mkpopup/main.c | 36 ++++++++++++++++++++++++++++++++++++ src/user/popups/info.c | 7 ++----- 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 src/user/mkpopup/main.c (limited to 'src/user') diff --git a/src/user/meminfo/meminfo.c b/src/user/meminfo/meminfo.c index 124a136..4dbd6bf 100644 --- a/src/user/meminfo/meminfo.c +++ b/src/user/meminfo/meminfo.c @@ -15,7 +15,7 @@ redo: "kernel memory free: %uk\n" "userspace memory free: %uk / %uk\n" "Escape to quit, F5 to refresh.", - 0x10, 0x08, + 0x10, 0x07, _kernel_dynamic_area_left() * 4, _total_userspace_left() * 4, _total_userspace_size() * 4 diff --git a/src/user/mkpopup/main.c b/src/user/mkpopup/main.c new file mode 100644 index 0000000..5b56889 --- /dev/null +++ b/src/user/mkpopup/main.c @@ -0,0 +1,36 @@ +#include + +#include + +#include +#include + +void main(const char *text) { + uint32_t required_new_length = 0; + bool needs_new = false; + for (const char *c = text; c[0]; ++c) { + ++required_new_length; + if ((c[0] == '\\') && (c[1] == 'n')) { + ++c; + needs_new = true; + } + } + + if (needs_new) { + char *new_text = get_block(required_new_length); + const char *ci; + char *co; + for (ci = text, co = new_text; *ci; ++ci, ++co) + if ((ci[0] == '\\') && (ci[1] == 'n')) { + *co = '\n'; + ++ci; + } + else + *co = *ci; + text = new_text; + } + + struct popup p; + info_popup(&p, text, 0x10, 0x07); + make_modal(&p); +} \ No newline at end of file diff --git a/src/user/popups/info.c b/src/user/popups/info.c index 9a24ad5..5b3f6ae 100644 --- a/src/user/popups/info.c +++ b/src/user/popups/info.c @@ -11,9 +11,6 @@ #define PADDING 6 #define FONT "berry" -#define BG_COLOR 0x07 -#define FG_COlOR 0x10 - static const struct font_info *info_font = 0; static const struct key_packet info_quits[] = { @@ -48,7 +45,7 @@ void info_popup(struct popup *into, const char *msg, uint8_t fg, uint8_t bg) { for (uint32_t y = 0; y < height; ++y) for (uint32_t x = 0; x < pitch; ++x) - pixbuf[y * pitch + x] = BG_COLOR; + pixbuf[y * pitch + x] = bg; uint32_t my = 0; uint32_t mx = 0; @@ -59,7 +56,7 @@ void info_popup(struct popup *into, const char *msg, uint8_t fg, uint8_t bg) { mx = 0; } else - put_char(info_font, *msg, pixbuf + (my * info_font->space_height + PADDING) * pitch + mx++ * info_font->space_width + PADDING, pitch, BG_COLOR, FG_COlOR); + put_char(info_font, *msg, pixbuf + (my * info_font->space_height + PADDING) * pitch + mx++ * info_font->space_width + PADDING, pitch, bg, fg); } into->pixbuf = pixbuf; -- cgit v1.2.3