7 #include "ttyprogress.h"
10 static const char *left, *right;
12 static void render_bar(struct ttyprogress_item *item,
13 struct ttyprogress_render *render)
15 ttyprogress_putleft(render, " %u%%", pos/3);
16 if (left) ttyprogress_putleft(render, " %s", left);
17 ttyprogress_putright(render, " %u ", pos);
18 if (right) ttyprogress_putright(render, "%s ", right);
19 ttyprogress_showbar(render, pos/300.0);
22 static void render_sub(struct ttyprogress_item *item,
23 struct ttyprogress_render *render)
25 unsigned subpos = pos%30;
27 ttyprogress_putleft(render, " %u%%", (10*subpos + 1)/3);
28 ttyprogress_putright(render, " %u ", subpos);
29 ttyprogress_showbar(render, subpos/30.0);
32 int main(int argc, char *argv[])
35 struct ttyprogress progress;
36 struct ttyprogress_item
37 bar = TTYPROGRESS_ITEM_INIT,
38 sub = TTYPROGRESS_ITEM_INIT;
40 setlocale(LC_ALL, "");
42 if (argc >= 2) left = argv[1];
43 if (argc >= 3) right = argv[2];
45 tty = tty_open(stdout, TTF_BORROW, 0);
46 if (ttyprogress_init(&progress, tty))
47 fprintf(stderr, "terminal insufficiently capable\n");
49 bar.render = render_bar; ttyprogress_additem(&progress, &bar);
50 for (pos = 0; pos <= 300; pos++) {
54 { sub.render = render_sub; ttyprogress_additem(&progress, &sub); }
56 ttyprogress_removeitem(&progress, &sub);
57 ttyprogress_update(&progress);
60 ttyprogress_removeitem(&progress, &bar);
61 ttyprogress_update(&progress);
63 ttyprogress_clear(&progress);