]> mj.ucw.cz Git - osdd.git/blob - display.h
New display code supports sliders and percentages
[osdd.git] / display.h
1 /*
2  *      On-screen Display
3  *
4  *      (c) 2013--2014 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     unsigned int percent;                       // 0..100 for percentages and slider
28   } u;
29
30   // Used internally
31   int width;
32   int height;
33   int x_pos;
34   int y_pos;
35   int slider_unit;
36   int slider_space;
37   int slider_units;
38 };
39
40 struct osd_state *osd_new(Display *dpy);
41 void osd_free(struct osd_state *osd);
42 void osd_set_font(struct osd_state *osd, char *font_name, double line_spacing);
43 struct osd_line *osd_add_line(struct osd_state *osd, enum osd_line_type type);
44 void osd_show(struct osd_state *osd);
45 void osd_hide(struct osd_state *osd);
46 void osd_clear(struct osd_state *osd);
47 bool osd_handle_event(struct osd_state *osd, XEvent *ev);