1 #include "tickit.h"
2 
3 #include <errno.h>
4 #include <stdio.h>
5 #include <string.h>
6 #include <unistd.h>
7 
on_expose(TickitWindow * win,TickitEventFlags flags,void * _info,void * data)8 static int on_expose(TickitWindow *win, TickitEventFlags flags, void *_info, void *data)
9 {
10   TickitExposeEventInfo *info = _info;
11   TickitRenderBuffer *rb = info->rb;
12 
13   tickit_renderbuffer_eraserect(rb, &info->rect);
14 
15   TickitPen *pen = tickit_pen_new();
16 
17   tickit_renderbuffer_goto(rb, 0, 0);
18   tickit_renderbuffer_text(rb, "ANSI");
19 
20   {
21     tickit_renderbuffer_save(rb);
22 
23     tickit_renderbuffer_goto(rb, 2, 0);
24     for(int i = 0; i < 16; i++) {
25       tickit_pen_set_colour_attr(pen, TICKIT_PEN_BG, i);
26       tickit_renderbuffer_setpen(rb, pen);
27       tickit_renderbuffer_textf(rb, "[%02d]", i);
28     }
29 
30     tickit_renderbuffer_restore(rb);
31   }
32 
33   tickit_renderbuffer_goto(rb, 4, 0);
34   tickit_renderbuffer_text(rb, "216 RGB cube");
35 
36   {
37     tickit_renderbuffer_save(rb);
38 
39     for(int y = 0; y < 6; y++) {
40       tickit_renderbuffer_goto(rb, 6+y, 0);
41       for(int x = 0; x < 36; x++) {
42         tickit_pen_set_colour_attr(pen, TICKIT_PEN_BG, y*36 + x + 16);
43         tickit_renderbuffer_setpen(rb, pen);
44         tickit_renderbuffer_text(rb, "  ");
45       }
46     }
47 
48     tickit_renderbuffer_restore(rb);
49   }
50 
51   tickit_renderbuffer_goto(rb, 13, 0);
52   tickit_renderbuffer_text(rb, "24 Greyscale ramp");
53 
54   {
55     tickit_renderbuffer_save(rb);
56 
57     tickit_renderbuffer_goto(rb, 15, 0);
58     for(int i = 0; i < 24; i++) {
59       tickit_pen_set_colour_attr(pen, TICKIT_PEN_BG, 232 + i);
60       if(i > 12)
61         tickit_pen_set_colour_attr(pen, TICKIT_PEN_FG, 0);
62       tickit_renderbuffer_setpen(rb, pen);
63       tickit_renderbuffer_textf(rb, "g%02d", i);
64     }
65 
66     tickit_renderbuffer_restore(rb);
67   }
68 
69   tickit_pen_unref(pen);
70 
71   return 1;
72 }
73 
main(int argc,char * argv[])74 int main(int argc, char *argv[])
75 {
76   Tickit *t = tickit_new_stdtty();
77 
78   TickitWindow *root = tickit_get_rootwin(t);
79   if(!root) {
80     fprintf(stderr, "Cannot create TickitTerm - %s\n", strerror(errno));
81     return 1;
82   }
83 
84   tickit_term_setctl_str(tickit_get_term(t),
85     TICKIT_TERMCTL_TITLE_TEXT, "XTerm256 colour demo");
86 
87   tickit_window_bind_event(root, TICKIT_WINDOW_ON_EXPOSE, 0, &on_expose, NULL);
88 
89   tickit_run(t);
90 
91   tickit_window_close(root);
92 
93   tickit_unref(t);
94 
95   return 0;
96 }
97