1 #ifndef SND_X0_H
2 #define SND_X0_H
3 
4 #include <Xm/XmAll.h>
5 #include <X11/keysym.h>
6 #include <X11/cursorfont.h>
7 
8 #if HAVE_GL
9 #include <GL/gl.h>
10 #include <GL/glx.h>
11 #endif
12 
13 #define XOR(a, b) ((a) ^ (b))
14 /* can't get used to this operator -- in the good old days, ^ meant exponentiation */
15 
16 #define xm_font_t XmRenderTable
17 #define XM_FONT_RESOURCE XmNrenderTable
18 #define XM_FONT_FREE XmRenderTableFree
19 
20 #define LOTSA_PIXELS 10000
21 
22 #define Xen_wrap_widget(Value)    ((Value) ? Xen_list_2(C_string_to_Xen_symbol("Widget"), Xen_wrap_C_pointer(Value)) : Xen_false)
23 #define Xen_unwrap_widget(Value)  (Xen_is_list(Value) ? Xen_unwrap_C_pointer(Xen_cadr(Value)) : 0)
24 #define Xen_is_widget(Value)      (Xen_is_list(Value) && (Xen_list_length(Value) >= 2) && (Xen_is_symbol(Xen_car(Value))) && \
25                                      (strcmp("Widget", Xen_symbol_to_C_string(Xen_car(Value))) == 0))
26 #define Xen_wrap_pixel(Value)     Xen_list_2(C_string_to_Xen_symbol("Pixel"), C_int_to_Xen_integer((int)Value))
27                                        /* not ulong here! -- messes up the equal? check */
28 #define Xen_unwrap_pixel(Value)   (unsigned long)Xen_integer_to_C_int(Xen_cadr(Value))
29 #define Xen_is_pixel(Value)       (Xen_is_list(Value) && (Xen_list_length(Value) >= 2) && (Xen_is_symbol(Xen_car(Value))) && \
30                                       (strcmp("Pixel", Xen_symbol_to_C_string(Xen_car(Value))) == 0))
31 
32 #define NULL_WIDGET NULL
33 
34 typedef enum {NOT_ACTIVATABLE, ACTIVATABLE, ACTIVATABLE_BUT_NOT_FOCUSED} text_cr_t;
35 
36 #define LINE_MARGIN 4
37 #define CONTROLS_MARGIN 1
38 
39 #define SCROLLBAR_MAX 10000
40 
41 #define BACKGROUND_QUIT 1
42 #define BACKGROUND_CONTINUE 0
43 #define BACKGROUND_REMOVE(func) XtRemoveWorkProc(func)
44 /* #define BACKGROUND_ADD(func, data) XtAppAddWorkProc(main_app(ss), func, (XtPointer)data) */
45 #define BACKGROUND_ADD(func, data) add_work_proc(func, (XtPointer)data)
46 
47 #define CALL_TIMEOUT(Func, Wait, Data) XtAppAddTimeOut(main_app(ss), Wait, Func, (XtPointer)Data)
48 #define TIMEOUT_ARGS                   XtPointer context, XtIntervalId *id
49 #define TIMEOUT_TYPE                   void
50 #define TIMEOUT_RESULT
51 #define timeout_result_t               XtIntervalId
52 #define TIMEOUT_REMOVE(Id)             XtRemoveTimeOut(Id)
53 
54 #define widget_t Widget
55 #define widget_is_active(Wid) XtIsManaged(Wid)
56 #define activate_widget(Wid) XtManageChild(Wid)
57 #define deactivate_widget(Wid) XtUnmanageChild(Wid)
58 
59 #define idle_t XtWorkProcId
60 #define idle_func_t Boolean
61 #define any_pointer_t XtPointer
62 /* can't use "pointer_t" -- Mac already defines that type (CoreServices.h) */
63 #define oclock_t Time
64 #define color_t Pixel
65 #define point_t XPoint
66 #define gc_t GC
67 
68 #define rgb_t unsigned short
69 #define RGB_MAX 65535
70 #define float_to_rgb(Val) (rgb_t)(RGB_MAX * (Val))
71 #define rgb_to_float(Val) ((double)(Val) / (double)RGB_MAX)
72 
73 
74 typedef struct {
75   GC gc;
76   Display *dp;
77   Drawable wn;
78   Font current_font;
79 } graphics_context;
80 
81 typedef enum {NOT_A_SCANF_WIDGET, SRATE_WIDGET, CHANS_WIDGET, DATA_LOCATION_WIDGET, SAMPLES_WIDGET} scanf_widget_t;
82 
83 typedef struct {
84   Widget header_type_list, sample_type_list, srate_text, chans_text, comment_text, location_text, samples_text, error_text;
85   Widget dialog, src_button, auto_comment_button;
86   mus_header_t current_header_type;
87   mus_sample_t current_sample_type;
88   int sample_types, header_type_pos, sample_type_pos;
89   scanf_widget_t scanf_widget, error_widget;
90   bool src, auto_comment;
91   char *saved_comment;
92 } file_data;
93 
94 typedef enum {WITHOUT_CHANNELS_FIELD, WITH_CHANNELS_FIELD, WITH_EXTRACT_CHANNELS_FIELD} dialog_channels_t;
95 typedef enum {WITHOUT_SAMPLES_FIELD, WITH_SAMPLES_FIELD} dialog_samples_t;
96 typedef enum {WITHOUT_DATA_LOCATION_FIELD, WITH_DATA_LOCATION_FIELD} dialog_data_location_t;
97 typedef enum {WITHOUT_HEADER_TYPE_FIELD, WITH_HEADER_TYPE_FIELD} dialog_header_type_t;
98 typedef enum {WITHOUT_COMMENT_FIELD, WITH_COMMENT_FIELD} dialog_comment_t;
99 
100 #if (!HAVE_SUN)
101   #define MetaMask Mod1Mask
102 #else
103   #define MetaMask (Mod1Mask | Mod4Mask)
104 #endif
105 
106 #define main_shell(a) (a)->mainshell
107 #define main_pane(a) (a)->mainpane
108 #define sound_pane(a) (a)->soundpane
109 #define sound_pane_box(a) (a)->soundpanebox
110 #define main_app(a) (a)->mainapp
111 #define main_display(a) (a)->mdpy
112 #define PEAKS_FONT(a) (a)->peaks_fontstruct
113 #define BOLD_PEAKS_FONT(a) (a)->bold_peaks_fontstruct
114 #define AXIS_NUMBERS_FONT(a) (a)->axis_numbers_fontstruct
115 #define AXIS_LABEL_FONT(a) (a)->axis_label_fontstruct
116 #define TINY_FONT(a) (a)->tiny_fontstruct
117 #define LISTENER_FONT(a) (a)->listener_fontstruct
118 
119 #define DEFAULT_GRAPH_CURSOR XC_crosshair
120 
121 #define DEFAULT_TINY_FONT "6x12"
122 #define DEFAULT_PEAKS_FONT "-*-times-medium-r-*-*-14-*-*-*-*-*-*-*"
123 #define DEFAULT_BOLD_PEAKS_FONT "-*-times-bold-r-*-*-14-*-*-*-*-*-*-*"
124 #define DEFAULT_AXIS_NUMBERS_FONT "9x15"
125 #define DEFAULT_AXIS_LABEL_FONT "-*-times-medium-r-*-*-18-*-*-*-*-*-*-*"
126 
127 #define KEY_TO_NAME(key) XKeysymToString(key)
128 /* on the Sun, if key is 0, XKeysymToString segfaults! */
129 
130 /* #define GUI_CURRENT_TIME(ss) XtLastTimestampProcessed(main_display(ss)) */
131 
132 
133 /* now pull in the key names (/usr/include/X11/keysymdef.h) */
134 #define snd_K_Shift_L XK_Shift_L
135 #define snd_K_space XK_space
136 #define snd_K_openparen XK_parenleft
137 #define snd_K_closeparen XK_parenright
138 #define snd_K_plus XK_plus
139 #define snd_K_minus XK_minus
140 #define snd_K_period XK_period
141 #define snd_K_slash XK_slash
142 #define snd_K_0 XK_0
143 #define snd_K_1 XK_1
144 #define snd_K_2 XK_2
145 #define snd_K_3 XK_3
146 #define snd_K_4 XK_4
147 #define snd_K_5 XK_5
148 #define snd_K_6 XK_6
149 #define snd_K_7 XK_7
150 #define snd_K_8 XK_8
151 #define snd_K_9 XK_9
152 #define snd_K_less XK_less
153 #define snd_K_greater XK_greater
154 #define snd_K_A XK_A
155 #define snd_K_B XK_B
156 #define snd_K_C XK_C
157 #define snd_K_D XK_D
158 #define snd_K_E XK_E
159 #define snd_K_F XK_F
160 #define snd_K_G XK_G
161 #define snd_K_H XK_H
162 #define snd_K_I XK_I
163 #define snd_K_J XK_J
164 #define snd_K_K XK_K
165 #define snd_K_L XK_L
166 #define snd_K_M XK_M
167 #define snd_K_N XK_N
168 #define snd_K_O XK_O
169 #define snd_K_P XK_P
170 #define snd_K_Q XK_Q
171 #define snd_K_R XK_R
172 #define snd_K_S XK_S
173 #define snd_K_T XK_T
174 #define snd_K_U XK_U
175 #define snd_K_V XK_V
176 #define snd_K_W XK_W
177 #define snd_K_X XK_X
178 #define snd_K_Y XK_Y
179 #define snd_K_Z XK_Z
180 #define snd_K_underscore XK_underscore
181 #define snd_K_a XK_a
182 #define snd_K_b XK_b
183 #define snd_K_c XK_c
184 #define snd_K_d XK_d
185 #define snd_K_e XK_e
186 #define snd_K_f XK_f
187 #define snd_K_g XK_g
188 #define snd_K_h XK_h
189 #define snd_K_i XK_i
190 #define snd_K_j XK_j
191 #define snd_K_k XK_k
192 #define snd_K_l XK_l
193 #define snd_K_m XK_m
194 #define snd_K_n XK_n
195 #define snd_K_o XK_o
196 #define snd_K_p XK_p
197 #define snd_K_q XK_q
198 #define snd_K_r XK_r
199 #define snd_K_s XK_s
200 #define snd_K_t XK_t
201 #define snd_K_u XK_u
202 #define snd_K_v XK_v
203 #define snd_K_w XK_w
204 #define snd_K_x XK_x
205 #define snd_K_y XK_y
206 #define snd_K_z XK_z
207 
208 #define snd_K_Home  XK_Home
209 #define snd_K_Left  XK_Left
210 #define snd_K_Up    XK_Up
211 #define snd_K_Right XK_Right
212 #define snd_K_Down  XK_Down
213 
214 #define snd_keypad_Insert   XK_KP_Insert
215 #define snd_keypad_Delete   XK_KP_Delete
216 #define snd_keypad_Multiply XK_KP_Multiply
217 #define snd_keypad_Add      XK_KP_Add
218 #define snd_keypad_Subtract XK_KP_Subtract
219 #define snd_keypad_Divide   XK_KP_Divide
220 #define snd_keypad_Decimal  XK_KP_Decimal
221 #define snd_keypad_Enter    XK_KP_Enter
222 #define snd_keypad_Up       XK_KP_Up
223 #define snd_keypad_Down     XK_KP_Down
224 #define snd_keypad_Left     XK_KP_Left
225 #define snd_keypad_Right    XK_KP_Right
226 
227 #define snd_keypad_0 XK_KP_0
228 #define snd_keypad_1 XK_KP_1
229 #define snd_keypad_2 XK_KP_2
230 #define snd_keypad_3 XK_KP_3
231 #define snd_keypad_4 XK_KP_4
232 #define snd_keypad_5 XK_KP_5
233 #define snd_keypad_6 XK_KP_6
234 #define snd_keypad_7 XK_KP_7
235 #define snd_keypad_8 XK_KP_8
236 #define snd_keypad_9 XK_KP_9
237 
238 #endif
239