1#if ! defined(APPLICATION_NAME)
2#define APPLICATION_NAME "@PROG_N@"
3#endif
4
5#if ! defined(APPLICATION_EXEC)
6#define APPLICATION_EXEC "@PROG_X@"
7#endif
8
9#define APPLICATION_YEAR "@PROG_Y@"
10#define APPLICATION_VERSION "@PROG_V@"
11#define APPLICATION_COPYRIGHT "Jani Salonen <" PACKAGE_BUGREPORT ">"
12
13/* Static definitions, no user serviceable parts below this */
14#define IS_NO 0
15#define IS_YES 1
16#define IS_MAYBE 2
17
18#define CHARSET_DEFAULT "UTF-8"
19#define CHARSET_DEFAULT_SIZE 5
20
21#define APPRES_FILE APPLICATION_EXEC ".res"
22#define CONFIG_FILE APPLICATION_EXEC ".conf"
23
24#define CONFIG_LINE_FEED 10
25#define CONFIG_PATH_DELIM '/'
26
27#define CONFIG_OPTION_NOTREQUIRED IS_NO						/* Config parameter is required or not */
28#define CONFIG_OPTION_REQUIRED IS_YES
29
30#define CONFIG_OPTION_LOOSE IS_NO						/* Config parameter is secure or not */
31#define CONFIG_OPTION_SECURE IS_YES
32
33#define CONFIG_TYPE_BOOLEAN 1							/* Config types */
34#define CONFIG_TYPE_INTEGER 2
35#define CONFIG_TYPE_FLOAT 3
36#define CONFIG_TYPE_STRING 4
37#define CONFIG_TYPE_COLOR 5
38
39#define CONFIG_TYPE_BOOLEAN_NO IS_NO						/* Config boolean bits */
40#define CONFIG_TYPE_BOOLEAN_YES IS_YES
41
42#define DIR_PLACE_PRE "@prefix@"						/* Static directory paths */
43#define DIR_PLACE_BIN BINDIR "/" APPLICATION_EXEC
44
45#define DIR_PLACE_CONFS_1 "~/." APPLICATION_EXEC
46#define DIR_PLACE_CONFS_2 "$XDG_CONFIG_HOME"
47#define DIR_PLACE_CONFS_3 "$XDG_CONFIG_HOME/" APPLICATION_EXEC
48#define DIR_PLACE_CONFS_4 "~/.config"
49#define DIR_PLACE_CONFS_5 "~/.config/" APPLICATION_EXEC
50#define DIR_PLACE_CONFS_6 "$" APPLICATION_EXEC "_HOME/etc"
51#define DIR_PLACE_CONFS_7 ETCDIR
52
53#define DIR_PLACE_FONTS_1 "~/.fonts"
54#define DIR_PLACE_FONTS_2 "~/." APPLICATION_EXEC "/fonts"
55#define DIR_PLACE_FONTS_3 "$XDG_DATA_HOME/" APPLICATION_EXEC "/fonts"
56#define DIR_PLACE_FONTS_4 "$XDG_DATA_HOME/detroit/fonts"
57#define DIR_PLACE_FONTS_5 "~/.local/share/" APPLICATION_EXEC "/fonts"
58#define DIR_PLACE_FONTS_6 "~/.local/share/detroit/fonts"
59#define DIR_PLACE_FONTS_7 "$" APPLICATION_EXEC "_HOME/share/" APPLICATION_EXEC "/fonts"
60#define DIR_PLACE_FONTS_8 "$" APPLICATION_EXEC "_HOME/share/detroit/fonts"
61#define DIR_PLACE_FONTS_9 SHRDIR "/" APPLICATION_EXEC "/fonts"
62#define DIR_PLACE_FONTS_10 SHRDIR "/detroit/fonts"
63
64#define DIR_PLACE_WIDGETS_1 "."
65#define DIR_PLACE_WIDGETS_2 "~/." APPLICATION_EXEC "/widgets"
66#define DIR_PLACE_WIDGETS_3 "$XDG_DATA_HOME/" APPLICATION_EXEC "/widgets"
67#define DIR_PLACE_WIDGETS_4 "$XDG_DATA_HOME/detroit/widgets"
68#define DIR_PLACE_WIDGETS_5 "~/.local/share/" APPLICATION_EXEC "/widgets"
69#define DIR_PLACE_WIDGETS_6 "~/.local/share/detroit/widgets"
70#define DIR_PLACE_WIDGETS_7 "$" APPLICATION_EXEC "_HOME/share/" APPLICATION_EXEC "/widgets"
71#define DIR_PLACE_WIDGETS_8 "$" APPLICATION_EXEC "_HOME/share/detroit/widgets"
72#define DIR_PLACE_WIDGETS_9 SHRDIR "/" APPLICATION_EXEC "/widgets"
73#define DIR_PLACE_WIDGETS_10 SHRDIR "/detroit/widgets"
74
75#define DIR_PLACE_BOBS_1 "."
76#define DIR_PLACE_BOBS_2 "~/." APPLICATION_EXEC "/bobs"
77#define DIR_PLACE_BOBS_3 "$XDG_DATA_HOME/" APPLICATION_EXEC "/bobs"
78#define DIR_PLACE_BOBS_4 "$XDG_DATA_HOME/detroit/bobs"
79#define DIR_PLACE_BOBS_5 "~/.local/share/" APPLICATION_EXEC "/bobs"
80#define DIR_PLACE_BOBS_6 "~/.local/share/detroit/bobs"
81#define DIR_PLACE_BOBS_7 "$" APPLICATION_EXEC "_HOME/share/" APPLICATION_EXEC "/bobs"
82#define DIR_PLACE_BOBS_8 "$" APPLICATION_EXEC "_HOME/share/detroit/bobs"
83#define DIR_PLACE_BOBS_9 SHRDIR "/" APPLICATION_EXEC "/bobs"
84#define DIR_PLACE_BOBS_10 SHRDIR "/detroit/bobs"
85
86#if defined(HAVE_PATHS_H) && defined(_PATH_TMP)
87#define DIR_PLACE_TEMP _PATH_TMP
88#else
89#define DIR_PLACE_TEMP "/tmp"
90#endif
91
92#define ERROR_NOERROR 1								/* Error severity levels */
93#define ERROR_SLIGHT 2
94#define ERROR_FATAL 3
95
96#define LOCK_LIBTOOL 0								/* Lockable subsystems and parts */
97#define LOCK_PARTS 1
98
99#define THREAD_STATE_STOP 0							/* Thread states */
100#define THREAD_STATE_RUN 1
101#define THREAD_STATE_IDLE 2
102#define THREAD_STATE_BORN 3
103
104#define THREAD_TERM_SELF 0							/* Thread likes to term by itself */
105#define THREAD_TERM_CANCEL 1							/* Thread likes to term by pthread_cancel() */
106
107#define THREAD_NUMA_POLICY_NONE 0						/* Numa policies */
108#define THREAD_NUMA_POLICY_ROUND_ROBIN 1
109#define THREAD_NUMA_POLICY_FIXED_DOMAIN 2
110#define THREAD_NUMA_POLICY_FIXED_DOMAIN_ROUND_ROBIN 3
111#define THREAD_NUMA_POLICY_FIRST_TOUCH 4
112#define THREAD_NUMA_POLICY_FIRST_TOUCH_ROUND_ROBIN 5
113
114#define TIMER_RESOLUTION_THREADAGAIN (1000000 * 1000) / 1000			/* Timer delays for general use */
115#define TIMER_RESOLUTION_VERYFAST (1000000 * 1000) / 10000
116
117#define FILE_FLAG_SILENT 0x1							/* File open flags */
118#define FILE_FLAG_NOCOMPRESS 0x2
119
120#define FILE_MODE_READ "r"							/* File open modes (man 3 fopen) */
121#define FILE_MODE_READ_AND_WRITE "r+"
122#define FILE_MODE_WRITE_AND_TRUNCATE "w"
123#define FILE_MODE_READ_AND_WRITE_AND_TRUNCATE "w+"
124#define FILE_MODE_APPEND "a"
125#define FILE_MODE_READ_AND_APPEND "a+"
126
127#define IMAGE_FORMAT_NONE 0							/* Image types supported at the moment */
128#define IMAGE_FORMAT_BMP 1
129#define IMAGE_FORMAT_CEL 2
130#define IMAGE_FORMAT_PIX 3
131#define IMAGE_FORMAT_PPM 4
132#define IMAGE_FORMAT_RAS 5
133#define IMAGE_FORMAT_RGB 6
134#define IMAGE_FORMAT_RLA 7
135#define IMAGE_FORMAT_SVG 8
136#define IMAGE_FORMAT_TGA 9
137
138#define STRING_ASCII 0								/* String types for string length functions */
139#define STRING_UTF8 1
140#define STRING_UTF32 2
141
142#define WINDOW_COMMAND_NONE 0							/* Window spooled commands */
143#define WINDOW_COMMAND_DRAW_PIXEL 1
144#define WINDOW_COMMAND_DRAW_PIXEL_ALPHA 2
145#define WINDOW_COMMAND_DRAW_PIXELS 3
146#define WINDOW_COMMAND_DRAW_PIXELS_ALPHA 4
147#define WINDOW_COMMAND_DRAW_SUBPIXEL 5
148#define WINDOW_COMMAND_DRAW_SUBPIXEL_ALPHA 6
149#define WINDOW_COMMAND_DRAW_SUBPIXELS 7
150#define WINDOW_COMMAND_DRAW_SUBPIXELS_ALPHA 8
151#define WINDOW_COMMAND_DRAW_LINE 9
152#define WINDOW_COMMAND_DRAW_LINE_AA 10
153#define WINDOW_COMMAND_DRAW_LINE_ALPHA 11
154#define WINDOW_COMMAND_DRAW_LINES 12
155#define WINDOW_COMMAND_DRAW_LINES_AA 13
156#define WINDOW_COMMAND_DRAW_LINES_ALPHA 14
157#define WINDOW_COMMAND_DRAW_CIRCLE 15
158#define WINDOW_COMMAND_DRAW_CIRCLE_AA 16
159#define WINDOW_COMMAND_DRAW_CIRCLE_ALPHA 17
160#define WINDOW_COMMAND_DRAW_CIRCLES 18
161#define WINDOW_COMMAND_DRAW_CIRCLES_AA 19
162#define WINDOW_COMMAND_DRAW_CIRCLES_ALPHA 20
163#define WINDOW_COMMAND_DRAW_TEXT 21
164#define WINDOW_COMMAND_DRAW_TEXTS 22
165#define WINDOW_COMMAND_DRAW_SET 23
166#define WINDOW_COMMAND_DRAW_SET_ALPHA 24
167#define WINDOW_COMMAND_DRAW_BORDER 25
168#define WINDOW_COMMAND_DRAW_BORDER_ALPHA 26
169#define WINDOW_COMMAND_DRAW_COPY 27
170#define WINDOW_COMMAND_DRAW_COPY_ALPHA 28
171#define WINDOW_COMMAND_DRAW_WIPE 29
172#define WINDOW_COMMAND_WINDOW_OPEN 30
173#define WINDOW_COMMAND_WINDOW_ICON 31
174#define WINDOW_COMMAND_WINDOW_CLOSE 32
175#define WINDOW_COMMAND_WINDOW_MAP 33
176#define WINDOW_COMMAND_WINDOW_UNMAP 34
177#define WINDOW_COMMAND_WINDOW_SET_ATTRS 35
178#define WINDOW_COMMAND_WINDOW_REFRESH 36
179#define WINDOW_COMMAND_BOBS 37
180
181#define CONST_FLOAT_EQUALS 0.0000000000001					/* Difference when two floats are considered as equal */
182
183/* Math constants */
184#define CONST_PI 3.14159265358979323846264338327950288419716
185#define CONST_PI_2 CONST_PI * 2.0
186#define CONST_PI_4 CONST_PI * 4.0
187
188#define CONST_SQRT_1_2 0.70710678118654752440
189#define CONST_SQRT_2_PI 1.12837916709551257390
190
191/* Compiler stuff */
192#if defined(__STDC__)
193#define C89
194#if defined(__STDC_VERSION__)
195#define C90
196#if (__STDC_VERSION__ >= 199409L)
197#define C94
198#endif
199#if (__STDC_VERSION__ >= 199901L)
200#define C99
201#endif
202#endif
203#endif
204
205#ifndef __func__
206#if (__STDC_VERSION__ < 199901L)
207#if (__GNUC__ >= 2)
208#define __func__ __FUNCTION__
209#else
210#define __func__ "<unknown>"
211#endif
212#endif
213#endif
214