summaryrefslogtreecommitdiff
path: root/src/user/popups
diff options
context:
space:
mode:
Diffstat (limited to 'src/user/popups')
-rw-r--r--src/user/popups/info.c77
-rw-r--r--src/user/popups/popup.c43
2 files changed, 0 insertions, 120 deletions
diff --git a/src/user/popups/info.c b/src/user/popups/info.c
deleted file mode 100644
index eac155b..0000000
--- a/src/user/popups/info.c
+++ /dev/null
@@ -1,77 +0,0 @@
-#include <popups/popup.h>
-
-#include <libfont/fonts.h>
-
-#include <knob/format.h>
-#include <knob/heap.h>
-
-#include <stdint.h>
-#include <stdarg.h>
-
-#define PADDING 6
-#define FONT "fixed-10"
-
-static const struct font_info *info_font = 0;
-
-static const struct key_packet info_quits[] = {
- { .key_id = KEY_ESCAPE, .modifiers = NO_MODS },
- { .key_id = 0 }
-};
-
-void info_popup(struct popup *into, const char *msg, _pixel_t fg, _pixel_t bg) {
- if (!info_font)
- info_font = get_font(FONT);
-
- uint32_t w = 0, h = 1, lw = 0;
- for (const char *i = msg; *i; ++i)
- if (*i == '\n') {
- ++h;
- if (lw > w)
- w = lw;
- lw = 0;
- }
- else
- ++lw;
- if (lw > w)
- w = lw;
-
- into->has_quit = false;
- into->quit_binds = (struct key_packet *)info_quits;
-
- const uint32_t pitch = info_font->space_width * w + 2 * PADDING;
- const uint32_t height = info_font->space_height * h + 2 * PADDING;
-
- _pixel_t *const pixbuf = get_block(pitch * height * 4);
-
- for (uint32_t y = 0; y < height; ++y)
- for (uint32_t x = 0; x < pitch; ++x)
- pixbuf[y * pitch + x] = bg;
-
- uint32_t my = 0;
- uint32_t mx = 0;
- --msg;
- while (*++msg) {
- if (*msg == '\n') {
- ++my;
- mx = 0;
- }
- else
- 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;
- into->handle = _new_window(pitch, height, pixbuf);
-}
-
-void info_popupf_v(struct popup *into, const char *text, _pixel_t fg, _pixel_t bg, va_list args) {
- char *const msg = format_v(text, args);
- info_popup(into, msg, fg, bg);
- free_block(msg);
-}
-
-void info_popupf(struct popup *into, const char *text, _pixel_t fg, _pixel_t bg, ...) {
- va_list args;
- va_start(args, bg);
- info_popupf_v(into, text, fg, bg, args);
- va_end(args);
-} \ No newline at end of file
diff --git a/src/user/popups/popup.c b/src/user/popups/popup.c
deleted file mode 100644
index 9cdccb4..0000000
--- a/src/user/popups/popup.c
+++ /dev/null
@@ -1,43 +0,0 @@
-#include <popups/popup.h>
-
-#include <knob/format.h>
-#include <knob/heap.h>
-
-#include <pland/syscall.h>
-
-void handle_actions(struct popup *p) {
- if (p->has_quit)
- return;
- struct window_action a;
- while (1) {
- _get_win_action(p->handle, &a);
- if (a.action_type == NOT_READY)
- return;
- if ((a.action_type == KEY_DOWN)) {
- //syslogf("got key 0x%2x, 0x%3x", a.as_key.key_id, a.as_key.modifiers);
- for (const struct key_packet *kp = p->quit_binds; kp->key_id; ++kp) {
- //syslogf("checking against 0x%2x, 0x%3x", kp->key_id, kp->modifiers);
- if ((a.as_key.key_id == kp->key_id) && (a.as_key.modifiers == kp->modifiers)) {
- p->has_quit = true;
- p->quit_as = a.as_key;
- return;
- }
- }
- }
- }
-}
-
-void delete_popup(struct popup *p) {
- _delete_window(p->handle);
- free_block(p->pixbuf);
-}
-
-void make_modal(struct popup *p) {
- handle_actions(p);
- while (!p->has_quit) {
- _wait_for_action();
- _yield_task();
- handle_actions(p);
- }
- delete_popup(p);
-} \ No newline at end of file