conform code to my new coding style
[xmenu] / xmenu.h
... / ...
CommitLineData
1#define PROGNAME "xmenu"
2
3/* enum for keyboard menu navigation */
4enum { ITEMPREV, ITEMNEXT, ITEMFIRST, ITEMLAST };
5
6/* macros */
7#define LEN(x) (sizeof (x) / sizeof (x[0]))
8#define MAX(x,y) ((x)>(y)?(x):(y))
9#define MIN(x,y) ((x)<(y)?(x):(y))
10#define BETWEEN(x, a, b) ((a) <= (x) && (x) <= (b))
11
12/* color enum */
13enum {ColorFG, ColorBG, ColorLast};
14
15/* EWMH atoms */
16enum {NetWMName, NetWMWindowType, NetWMWindowTypePopupMenu, NetLast};
17
18/* configuration structure */
19struct Config {
20 /* the values below are set by config.h */
21 const char *font;
22 const char *background_color;
23 const char *foreground_color;
24 const char *selbackground_color;
25 const char *selforeground_color;
26 const char *separator_color;
27 const char *border_color;
28 int width_pixels;
29 int height_pixels;
30 int border_pixels;
31 int separator_pixels;
32 int gap_pixels;
33 int triangle_width;
34 int triangle_height;
35 int iconpadding;
36 int horzpadding;
37
38 /* the values below are set by options */
39 int monitor;
40 int posx, posy; /* rootmenu position */
41
42 /* the value below is computed by xmenu */
43 int iconsize;
44};
45
46/* draw context structure */
47struct DC {
48 XftColor normal[ColorLast];
49 XftColor selected[ColorLast];
50 XftColor border;
51 XftColor separator;
52
53 GC gc;
54
55 FcPattern *pattern;
56 XftFont **fonts;
57 size_t nfonts;
58};
59
60/* menu item structure */
61struct Item {
62 char *label; /* string to be drawed on menu */
63 char *output; /* string to be outputed when item is clicked */
64 char *file; /* filename of the icon */
65 int y; /* item y position relative to menu */
66 int h; /* item height */
67 struct Item *prev; /* previous item */
68 struct Item *next; /* next item */
69 struct Menu *submenu; /* submenu spawned by clicking on item */
70 Drawable sel, unsel; /* pixmap for selected and unselected item */
71 Imlib_Image icon;
72};
73
74/* monitor geometry structure */
75struct Monitor {
76 int x, y, w, h; /* monitor geometry */
77};
78
79/* menu structure */
80struct Menu {
81 struct Menu *parent; /* parent menu */
82 struct Item *caller; /* item that spawned the menu */
83 struct Item *list; /* list of items contained by the menu */
84 struct Item *selected; /* item currently selected in the menu */
85 int x, y, w, h; /* menu geometry */
86 int hasicon; /* whether the menu has item with icons */
87 int drawn; /* whether the menu was already drawn */
88 unsigned level; /* menu level relative to root */
89 Window win; /* menu window to map on the screen */
90};