]> mj.ucw.cz Git - osdd.git/blob - display.h
fba43dfa08eebbcc9f70ed208d39c9d03c9a791e
[osdd.git] / display.h
1 /*
2  *      On-screen Display
3  *
4  *      (c) 2013 Martin Mares <mj@ucw.cz>
5  */
6
7 #include <stdbool.h>
8 #include <X11/Xlib.h>
9
10 struct osd_state;
11
12 #define OSD_MAX_LINE_LEN 256
13
14 enum osd_line_type {
15   OSD_TYPE_TEXT,
16   OSD_TYPE_PERCENTAGE,
17   OSD_TYPE_SLIDER,
18 };
19
20 struct osd_line {
21   enum osd_line_type type;
22   char *fg_color;
23   char *outline_color;
24   int outline_width;
25   union {                                       // Data dependent on type
26     char text[OSD_MAX_LINE_LEN];                // in UTF-8
27   } u;
28
29   int width;
30   int height;
31   int x_pos;
32   int y_pos;
33 };
34
35 struct osd_state *osd_new(Display *dpy);
36 void osd_free(struct osd_state *osd);
37 void osd_set_font(struct osd_state *osd, char *font_name);
38 struct osd_line *osd_add_line(struct osd_state *osd, enum osd_line_type type);
39 void osd_show(struct osd_state *osd);
40 void osd_hide(struct osd_state *osd);
41 bool osd_handle_event(struct osd_state *osd, XEvent *ev);