aboutsummaryrefslogtreecommitdiff
path: root/ui_ani.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui_ani.c')
-rw-r--r--ui_ani.c27
1 files changed, 16 insertions, 11 deletions
diff --git a/ui_ani.c b/ui_ani.c
index c7aa61c..1fd308a 100644
--- a/ui_ani.c
+++ b/ui_ani.c
@@ -3,17 +3,18 @@
#include "ui.h"
#include "ui_ani.h"
-#define ANIC_INITSTATE '\0'
+#define ANIC_INITSTATE '|'
struct anic *
-init_anic(unsigned int x, unsigned int y)
+init_anic(unsigned int x, unsigned int y, chtype attrs)
{
struct anic *a = calloc(1, sizeof(struct anic));
a->x = x;
a->y = y;
a->state = ANIC_INITSTATE;
+ a->attrs = attrs;
return (a);
}
@@ -24,30 +25,34 @@ free_anic(struct anic *a)
}
int
-anic_cb(WINDOW *win, void *data, bool needs_update)
+anic_cb(WINDOW *win, void *data, bool needs_update, bool timed_out)
{
struct anic *a = (struct anic *) data;
if (a == NULL) return (UICB_ERR_UNDEF);
- switch (a->state) {
- default:
- case '|': a->state = '/'; break;
- case '/': a->state = '-'; break;
- case '-': a->state = '\\'; break;
- case '\\': a->state = '|'; break;
+ if (timed_out == true) {
+ switch (a->state) {
+ default:
+ case '|': a->state = '/'; break;
+ case '/': a->state = '-'; break;
+ case '-': a->state = '\\'; break;
+ case '\\': a->state = '|'; break;
+ }
}
if (needs_update == true) {
+ attron(a->attrs);
if (win != NULL) {
mvwaddch(win, a->y, a->x, a->state);
} else {
mvaddch(a->y, a->x, a->state);
}
+ attroff(a->attrs);
} else return (UICB_ERR_NOP);
return (UICB_OK);
}
void
-register_anic(struct anic *a, chtype attr)
+register_anic(struct anic *a)
{
- register_ui_elt(anic_cb, NULL, (void *) a, NULL, attr);
+ register_ui_elt(anic_cb, (void *) a, NULL);
}