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