xynth.h

00001 /***************************************************************************
00002     begin                : Tue Oct 14 2003
00003     copyright            : (C) 2003 - 2006 by Alper Akcan
00004     email                : distchx@yahoo.com
00005  ***************************************************************************/
00006 
00007 /***************************************************************************
00008  *                                                                         *
00009  *   This program is free software; you can redistribute it and/or modify  *
00010  *   it under the terms of the GNU Lesser General Public License as        *
00011  *   published by the Free Software Foundation; either version 2.1 of the  *
00012  *   License, or (at your option) any later version.                       *
00013  *                                                                         *
00014  ***************************************************************************/
00015 
00016 #ifndef SXYNTH_H
00017 #define SXYNTH_H
00018 
00019 #ifdef __cplusplus
00020         extern "C" {
00021 #endif
00022 
00023 typedef struct s_font_ft_s s_font_ft_t;
00024 typedef struct s_gettext_s s_gettext_t;
00025 
00026 typedef struct s_window_s s_window_t;
00027 
00028 typedef struct s_config_var_s s_config_var_t;
00029 typedef struct s_config_cat_s s_config_cat_t;
00030 typedef struct s_config_s s_config_t;
00031 typedef struct s_handler_s s_handler_t;
00032 typedef struct s_handlers_s s_handlers_t;
00033 typedef struct s_handler_keybd_s s_handler_keybd_t;
00034 typedef struct s_handler_mouse_s s_handler_mouse_t;
00035 typedef struct s_image_s s_image_t;
00036 typedef struct s_list_s s_list_t;
00037 typedef struct s_list_node_s s_list_node_t;
00038 typedef struct s_pollfd_s s_pollfd_t;
00039 typedef struct s_pollfds_s s_pollfds_t;
00040 typedef struct s_rect_s s_rect_t;
00041 typedef struct s_surface_s s_surface_t;
00042 typedef struct s_thread_s s_thread_t;
00043 typedef struct s_thread_sem_s s_thread_sem_t;
00044 typedef struct s_thread_cond_s s_thread_cond_t;
00045 typedef struct s_thread_mutex_s s_thread_mutex_t;
00046 typedef struct s_timer_s s_timer_t;
00047 typedef struct s_timers_s s_timers_t;
00048 
00049 typedef enum {
00050         MOUSE_CURSOR_WAIT    = 0x0,
00051         MOUSE_CURSOR_CROSS   = 0x1,
00052         MOUSE_CURSOR_IBEAM   = 0x2,
00053         MOUSE_CURSOR_SIZEV   = 0x3,
00054         MOUSE_CURSOR_SIZEH   = 0x4,
00055         MOUSE_CURSOR_SIZES   = 0x5,
00056         MOUSE_CURSOR_SIZEB   = 0x6,
00057         MOUSE_CURSOR_SIZEA   = 0x7,
00058         MOUSE_CURSOR_ARROW   = 0x8,
00059         MOUSE_CURSOR_POINT   = 0x9,
00060         MOUSE_CURSOR_SPLITV  = 0xA,
00061         MOUSE_CURSOR_SPLITH  = 0xB,
00062         MOUSE_CURSOR_FORBID  = 0xC,
00063         MOUSE_CURSOR_UPARROW = 0xD,
00064         MOUSE_CURSOR_NONE    = 0xE,
00065         MOUSE_CURSOR_MAX     = 0xF
00066 } S_MOUSE_CURSOR;
00067 
00068 typedef enum {
00069         KEYCODE_NMLCKF  = 0x01,
00070         KEYCODE_CPLCKF  = 0x02,
00071         KEYCODE_LCTRLF  = 0x04,
00072         KEYCODE_RCTRLF  = 0x08,
00073         KEYCODE_LSHIFTF = 0x10,
00074         KEYCODE_RSHIFTF = 0x20,
00075         KEYCODE_LALTF   = 0x40,
00076         KEYCODE_RALTF   = 0x80,
00077         KEYCODE_SHIFTF  = (KEYCODE_LSHIFTF | KEYCODE_RSHIFTF),
00078         KEYCODE_CTRLF   = (KEYCODE_LCTRLF | KEYCODE_RCTRLF),
00079         KEYCODE_ALTF    = (KEYCODE_LALTF | KEYCODE_LALTF),
00080         KEYCODE_ALTGRF  = KEYCODE_RALTF
00081 } S_KEYCODE_FLAG;
00082 
00083 typedef enum {
00084 /* Plain */
00085 /*   0 */  S_KEYCODE_ESCAPE,
00086 /*   1 */  S_KEYCODE_ONE,
00087 /*   2 */  S_KEYCODE_TWO,
00088 /*   3 */  S_KEYCODE_THREE,
00089 /*   4 */  S_KEYCODE_FOUR,
00090 /*   5 */  S_KEYCODE_FIVE,
00091 /*   6 */  S_KEYCODE_SIX,
00092 /*   7 */  S_KEYCODE_SEVEN,
00093 /*   8 */  S_KEYCODE_EIGHT,
00094 /*   9 */  S_KEYCODE_NINE,
00095 /*  10 */  S_KEYCODE_ZERO,
00096 /*  11 */  S_KEYCODE_MINUS,
00097 /*  12 */  S_KEYCODE_EQUAL,
00098 /*  13 */  S_KEYCODE_DELETE,
00099 /*  14 */  S_KEYCODE_TAB,
00100 /*  15 */  S_KEYCODE_q,
00101 /*  16 */  S_KEYCODE_w,
00102 /*  17 */  S_KEYCODE_e,
00103 /*  18 */  S_KEYCODE_r,
00104 /*  19 */  S_KEYCODE_t,
00105 /*  20 */  S_KEYCODE_y,
00106 /*  21 */  S_KEYCODE_u,
00107 /*  22 */  S_KEYCODE_i,
00108 /*  23 */  S_KEYCODE_o,
00109 /*  24 */  S_KEYCODE_p,
00110 /*  25 */  S_KEYCODE_BRACKETLEFT,
00111 /*  26 */  S_KEYCODE_BRACKETRIGHT,
00112 /*  27 */  S_KEYCODE_RETURN,
00113 /*  28 */  S_KEYCODE_LEFTCONTROL,
00114 /*  29 */  S_KEYCODE_a,
00115 /*  30 */  S_KEYCODE_s,
00116 /*  31 */  S_KEYCODE_d,
00117 /*  32 */  S_KEYCODE_f,
00118 /*  33 */  S_KEYCODE_g,
00119 /*  34 */  S_KEYCODE_h,
00120 /*  35 */  S_KEYCODE_j,
00121 /*  36 */  S_KEYCODE_k,
00122 /*  37 */  S_KEYCODE_l,
00123 /*  38 */  S_KEYCODE_SEMICOLON,
00124 /*  39 */  S_KEYCODE_APOSTROPHE,
00125 /*  40 */  S_KEYCODE_GRAVE,
00126 /*  41 */  S_KEYCODE_LEFTSHIFT,
00127 /*  42 */  S_KEYCODE_BACKSLASH,
00128 /*  43 */  S_KEYCODE_z,
00129 /*  44 */  S_KEYCODE_x,
00130 /*  45 */  S_KEYCODE_c,
00131 /*  46 */  S_KEYCODE_v,
00132 /*  47 */  S_KEYCODE_b,
00133 /*  48 */  S_KEYCODE_n,
00134 /*  49 */  S_KEYCODE_m,
00135 /*  50 */  S_KEYCODE_COMMA,
00136 /*  51 */  S_KEYCODE_PERIOD,
00137 /*  52 */  S_KEYCODE_SLASH,
00138 /*  53 */  S_KEYCODE_RIGHTSHIFT,
00139 /*  54 */  S_KEYCODE_KP_MULTIPLY,
00140 /*  55 */  S_KEYCODE_ALT,
00141 /*  56 */  S_KEYCODE_SPACE,
00142 /*  57 */  S_KEYCODE_CAPS_LOCK,
00143 /*  58 */  S_KEYCODE_F1,
00144 /*  59 */  S_KEYCODE_F2,
00145 /*  60 */  S_KEYCODE_F3,
00146 /*  61 */  S_KEYCODE_F4,
00147 /*  62 */  S_KEYCODE_F5,
00148 /*  63 */  S_KEYCODE_F6,
00149 /*  64 */  S_KEYCODE_F7,
00150 /*  65 */  S_KEYCODE_F8,
00151 /*  66 */  S_KEYCODE_F9,
00152 /*  67 */  S_KEYCODE_F10,
00153 /*  68 */  S_KEYCODE_NUM_LOCK,
00154 /*  69 */  S_KEYCODE_SCROLL_LOCK,
00155 /*  70 */  S_KEYCODE_KP_7,
00156 /*  71 */  S_KEYCODE_KP_8,
00157 /*  72 */  S_KEYCODE_KP_9,
00158 /*  73 */  S_KEYCODE_KP_SUBTRACT,
00159 /*  74 */  S_KEYCODE_KP_4,
00160 /*  75 */  S_KEYCODE_KP_5,
00161 /*  76 */  S_KEYCODE_KP_6,
00162 /*  77 */  S_KEYCODE_KP_ADD,
00163 /*  78 */  S_KEYCODE_KP_1,
00164 /*  79 */  S_KEYCODE_KP_2,
00165 /*  80 */  S_KEYCODE_KP_3,
00166 /*  81 */  S_KEYCODE_KP_0,
00167 /*  82 */  S_KEYCODE_KP_PERIOD,
00168 /*  83 */  S_KEYCODE_LAST_CONSOLE,
00169 /*  84 */  S_KEYCODE_LESS,
00170 /*  85 */  S_KEYCODE_F11,
00171 /*  86 */  S_KEYCODE_F12,
00172 /*  87 */  S_KEYCODE_KP_ENTER,
00173 /*  88 */  S_KEYCODE_RIGHTCONTROL,
00174 /*  89 */  S_KEYCODE_KP_DIVIDE,
00175 /*  90 */  S_KEYCODE_VOIDSYMBOL,
00176 /*  91 */  S_KEYCODE_ALTGR,
00177 /*  92 */  S_KEYCODE_BREAK,
00178 /*  93 */  S_KEYCODE_HOME,
00179 /*  94 */  S_KEYCODE_UP,
00180 /*  95 */  S_KEYCODE_PAGEUP,
00181 /*  96 */  S_KEYCODE_LEFT,
00182 /*  97 */  S_KEYCODE_RIGHT,
00183 /*  98 */  S_KEYCODE_END,
00184 /*  99 */  S_KEYCODE_DOWN,
00185 /* 100 */  S_KEYCODE_PAGEDOWN,
00186 /* 101 */  S_KEYCODE_INSERT,
00187 /* 102 */  S_KEYCODE_REMOVE,
00188 /* 103 */  S_KEYCODE_PAUSE,
00189 /* Shift */
00190 /* 104 */  S_KEYCODE_EXCLAM,
00191 /* 105 */  S_KEYCODE_AT,
00192 /* 106 */  S_KEYCODE_NUMBERSIGN,
00193 /* 107 */  S_KEYCODE_DOLLAR,
00194 /* 108 */  S_KEYCODE_PERCENT,
00195 /* 109 */  S_KEYCODE_ASCIICIRCUM,
00196 /* 110 */  S_KEYCODE_AMPERSAND,
00197 /* 111 */  S_KEYCODE_ASTERISK,
00198 /* 112 */  S_KEYCODE_PARENLEFT,
00199 /* 113 */  S_KEYCODE_PARENRIGHT,
00200 /* 114 */  S_KEYCODE_UNDERSCORE,
00201 /* 115 */  S_KEYCODE_PLUS,
00202 /* 116 */  S_KEYCODE_Q,
00203 /* 117 */  S_KEYCODE_W,
00204 /* 118 */  S_KEYCODE_E,
00205 /* 119 */  S_KEYCODE_R,
00206 /* 120 */  S_KEYCODE_T,
00207 /* 121 */  S_KEYCODE_Y,
00208 /* 122 */  S_KEYCODE_U,
00209 /* 123 */  S_KEYCODE_I,
00210 /* 124 */  S_KEYCODE_O,
00211 /* 125 */  S_KEYCODE_P,
00212 /* 126 */  S_KEYCODE_BRACELEFT,
00213 /* 127 */  S_KEYCODE_BRACERIGHT,
00214 /* 128 */  S_KEYCODE_A,
00215 /* 129 */  S_KEYCODE_S,
00216 /* 130 */  S_KEYCODE_D,
00217 /* 131 */  S_KEYCODE_F,
00218 /* 132 */  S_KEYCODE_G,
00219 /* 133 */  S_KEYCODE_H,
00220 /* 134 */  S_KEYCODE_J,
00221 /* 135 */  S_KEYCODE_K,
00222 /* 136 */  S_KEYCODE_L,
00223 /* 137 */  S_KEYCODE_COLON,
00224 /* 138 */  S_KEYCODE_QUOTEDBL,
00225 /* 139 */  S_KEYCODE_ASCIITILDE,
00226 /* 140 */  S_KEYCODE_BAR,
00227 /* 141 */  S_KEYCODE_Z,
00228 /* 142 */  S_KEYCODE_X,
00229 /* 143 */  S_KEYCODE_C,
00230 /* 144 */  S_KEYCODE_V,
00231 /* 145 */  S_KEYCODE_B,
00232 /* 146 */  S_KEYCODE_N,
00233 /* 147 */  S_KEYCODE_M,
00234 /* 148 */  S_KEYCODE_GREATER,
00235 /* 149 */  S_KEYCODE_QUESTION,
00236 /* 150 */  S_KEYCODE_F13,
00237 /* 151 */  S_KEYCODE_F14,
00238 /* 152 */  S_KEYCODE_F15,
00239 /* 153 */  S_KEYCODE_F16,
00240 /* 154 */  S_KEYCODE_F17,
00241 /* 155 */  S_KEYCODE_F18,
00242 /* 156 */  S_KEYCODE_F19,
00243 /* 157 */  S_KEYCODE_F20,
00244 /* 158 */  S_KEYCODE_F21,
00245 /* 159 */  S_KEYCODE_F22,
00246 /* 160 */  S_KEYCODE_SHOW_MEMORY,
00247 /* 161 */  S_KEYCODE_F23,
00248 /* 162 */  S_KEYCODE_F24,
00249 /* 163 */  S_KEYCODE_SCROLL_BACKWARD,
00250 /* 164 */  S_KEYCODE_SCROLL_FORWARD,
00251 /* ALTGR */
00252 /* 165 */  S_KEYCODE_CURRENCY,
00253 /* 166 */  S_KEYCODE_CENT,
00254 /* 167 */  S_KEYCODE_HEX_C,
00255 /* 168 */  S_KEYCODE_HEX_A,
00256 /* 169 */  S_KEYCODE_SHOW_REGISTERS,
00257 /* 170 */  S_KEYCODE_HEX_7,
00258 /* 171 */  S_KEYCODE_HEX_8,
00259 /* 172 */  S_KEYCODE_HEX_9,
00260 /* 173 */  S_KEYCODE_HEX_D,
00261 /* 174 */  S_KEYCODE_HEX_4,
00262 /* 175 */  S_KEYCODE_HEX_5,
00263 /* 176 */  S_KEYCODE_HEX_6,
00264 /* 177 */  S_KEYCODE_HEX_E,
00265 /* 178 */  S_KEYCODE_HEX_1,
00266 /* 179 */  S_KEYCODE_HEX_2,
00267 /* 180 */  S_KEYCODE_HEX_3,
00268 /* 181 */  S_KEYCODE_HEX_0,
00269 /* 182 */  S_KEYCODE_HEX_F,
00270 /* 183 */  S_KEYCODE_HEX_B,
00271 /* 184 */  S_KEYCODE_USER0,
00272 /* 185 */  S_KEYCODE_USER1,
00273 /* 186 */  S_KEYCODE_USER2,
00274 /* 187 */  S_KEYCODE_USER3,
00275 /* 188 */  S_KEYCODE_USER4,
00276 /* 189 */  S_KEYCODE_USER5,
00277 /* 190 */  S_KEYCODE_USER6,
00278 /* 191 */  S_KEYCODE_USER7,
00279 /* 192 */  S_KEYCODE_USER8,
00280 /* 193 */  S_KEYCODE_USER9,
00281 /* 194 */  S_KEYCODE_USER10,
00282 /* 195 */  S_KEYCODE_USER11,
00283 /* 196 */  S_KEYCODE_USER12,
00284 /* 197 */  S_KEYCODE_USER13,
00285 /* 198 */  S_KEYCODE_USER14,
00286 /* 199 */  S_KEYCODE_USER15,
00287 /* 200 */  S_KEYCODE_USER16,
00288 /* 201 */  S_KEYCODE_USER17,
00289 /* 202 */  S_KEYCODE_USER18,
00290 /* 203 */  S_KEYCODE_USER19,
00291 /* 204 */  S_KEYCODE_USER20,
00292 /* 205 */  S_KEYCODE_USER21,
00293 /* 206 */  S_KEYCODE_USER22,
00294 /* 207 */  S_KEYCODE_USER23,
00295 /* 208 */  S_KEYCODE_USER24,
00296 /* 209 */  S_KEYCODE_USER25,
00297 /* 210 */  S_KEYCODE_USER26,
00298 /* 211 */  S_KEYCODE_USER27,
00299 /* 212 */  S_KEYCODE_NOCODE,
00300 /* 213 */  S_KEYCODE_CODES
00301 } S_KEYCODE_CODE;
00302 
00303 typedef enum {
00304         MOUSE_RIGHTBUTTON    = 0x00000001,
00305         MOUSE_MIDDLEBUTTON   = 0x00000002,
00306         MOUSE_LEFTBUTTON     = 0x00000004,
00307         MOUSE_FOURTHBUTTON   = 0x00000008,
00308         MOUSE_FIFTHBUTTON    = 0x00000010,
00309         MOUSE_SIXTHBUTTON    = 0x00000020,
00310         MOUSE_RESETBUTTON    = 0x00000040,
00311         MOUSE_WHEELXBUTTON_U = 0x00000080,
00312         MOUSE_WHEELXBUTTON_D = 0x00000100,
00313         MOUSE_WHEELYBUTTON_U = 0x00000200,
00314         MOUSE_WHEELYBUTTON_D = 0x00000400,
00315 
00316         MOUSE_USER0BUTTON    = 0x00000800,
00317         MOUSE_USER1BUTTON    = 0x00001000,
00318         MOUSE_USER2BUTTON    = 0x00002000,
00319         MOUSE_USER3BUTTON    = 0x00004000,
00320         MOUSE_USER4BUTTON    = 0x00008000,
00321         MOUSE_USER5BUTTON    = 0x00010000,
00322         MOUSE_USER6BUTTON    = 0x00020000,
00323         MOUSE_USER7BUTTON    = 0x00040000,
00324         MOUSE_USER8BUTTON    = 0x00080000,
00325         MOUSE_USER9BUTTON    = 0x00100000,
00326         MOUSE_USER10BUTTON   = 0x00200000,
00327 
00328         MOUSE_NONEBUTTON     = 0x00400000
00329 } S_MOUSECODE_CODE;
00330 
00331 typedef enum {
00332         NONE_EVENT     = 0x00000000,
00333         QUIT_EVENT     = 0x00000001,
00334         KEYBD_EVENT    = 0x00000002,
00335         KEYBD_RELEASED = 0x00000004,
00336         KEYBD_PRESSED  = 0x00000008,
00337         MOUSE_EVENT    = 0x00000010,
00338         MOUSE_OVER     = 0x00000020,
00339         MOUSE_RELEASED = 0x00000040,
00340         MOUSE_PRESSED  = 0x00000080,
00341         MOUSE_CLICKED  = 0x00000100,
00342         MOUSE_ENTERED  = 0x00000200,
00343         MOUSE_EXITED   = 0x00000400,
00344         MOUSE_HINT     = 0x00000800,
00345         MOUSE_HINT2    = 0x00001000,
00346         EXPOSE_EVENT   = 0x00002000,
00347         CONFIG_EVENT   = 0x00004000,
00348         CONFIG_CHNGX   = 0x00008000,
00349         CONFIG_CHNGY   = 0x00010000,
00350         CONFIG_CHNGW   = 0x00020000,
00351         CONFIG_CHNGH   = 0x00040000,
00352         FOCUS_EVENT    = 0x00080000,
00353         FOCUSIN_EVENT  = 0x00100000, 
00354         FOCUSOUT_EVENT = 0x00200000,
00355         DESKTOP_EVENT  = 0x00400000,
00356         TIMER_EVENT    = 0x00800000,
00357         REMOTE_EVENT   = 0x01000000,
00358         SIGNAL_EVENT   = 0x02000000,
00359         EVENT_MASK     = (QUIT_EVENT | KEYBD_EVENT | MOUSE_EVENT | EXPOSE_EVENT | CONFIG_EVENT | FOCUS_EVENT | DESKTOP_EVENT | TIMER_EVENT)
00360 } S_EVENT;
00361 
00362 typedef enum {
00363         MOUSE_HANDLER = 0x1,
00364         KEYBD_HANDLER = 0x2
00365 } S_HANDLER;
00366 
00367 typedef struct s_font_glyph_s {
00368         int yMin;
00369         int yMax;
00370         int height;
00371         int lineskip;
00372         int size;
00373         s_image_t *img;
00374 } s_font_glyph_t;
00375 
00376 typedef struct s_font_s {
00377         char *name;
00378         char *str;
00379         int size;
00380         int ascent;
00381         int descent;
00382         int height;
00383         int lineskip;
00384         int underline_offset;
00385         int underline_height;
00386         unsigned int rgb;
00387         s_font_glyph_t glyph;
00388         s_font_ft_t *ft;
00389 } s_font_t;
00390 
00391 typedef struct s_mouse_s {
00392         int x;
00393         int y;
00394         int x_old;
00395         int y_old;
00396         S_MOUSECODE_CODE b;
00397         int clicks;               /* click count               */
00398         S_MOUSECODE_CODE buttons; /* buttons bitwise ORed      */
00399         long long time;           /* event time                */
00400         int px;                   /* prev. pressed coor.       */
00401         int py;
00402         int pb;                   /* prev. pressed button      */
00403         S_MOUSECODE_CODE pbuttons;/* prev. pressed buttons     */
00404         long long ctime;          /* prev. clicked time        */
00405         S_MOUSE_CURSOR cursor;
00406 } s_mouse_t;
00407 
00408 typedef struct s_keybd_s {
00409         int ascii;
00410         int button;
00411         int keycode;
00412         int scancode;
00413         int state[S_KEYCODE_CODES];
00414         S_KEYCODE_FLAG flag;
00415 } s_keybd_t;
00416 
00417 typedef struct s_expose_s {
00418         s_rect_t *rect;
00419 } s_expose_t;
00420 
00421 typedef struct s_desktop_client_s {
00422         int id;
00423         int pri;
00424         char *title;
00425 } s_desktop_client_t;
00426 
00427 typedef struct s_dekstop_s {
00428         s_list_t *clients;
00429 } s_desktop_t;
00430 
00432 typedef struct s_event_s {
00434         S_EVENT type;
00436         s_mouse_t *mouse;
00438         s_keybd_t *keybd;
00440         s_expose_t *expose;
00442         s_desktop_t *desktop;
00444         s_timer_t *timer;
00446         void *data;
00447 } s_event_t;
00448 
00450 typedef struct s_eventq_s {
00452         s_thread_t *tid;
00454         s_list_t *queue;
00456         s_thread_cond_t *cond;
00458         s_thread_mutex_t *mut;
00459 } s_eventq_t;
00460 
00461 typedef struct s_childs_s {
00462         s_list_t *list;
00463         s_thread_mutex_t *mut;
00464 } s_childs_t;
00465 
00466 typedef struct s_single_app_s {
00467         int (*fonk) (int argc, char *argv[]);
00468         int argc;
00469         char *argv[10];
00470 } s_single_app_t;
00471 
00472 /* alloc.c */
00473 void * s_malloc (unsigned int size);
00474 void * s_calloc (unsigned int nmemb, unsigned int size);
00475 void * s_realloc (void *ptr, unsigned int size);
00476 void s_free (void *ptr);
00477 
00478 /* child.c */
00479 int s_child_add (s_window_t *window, s_window_t *child);
00480 int s_child_del (s_window_t *window, s_window_t *child);
00481 int s_childs_init (s_window_t *window);
00482 int s_childs_uninit (s_window_t *window);
00483 
00548 
00551 struct s_config_var_s {
00553         char *name;
00555         char *value;
00556 };
00557 
00560 struct s_config_cat_s {
00562         char *name;
00564         s_list_t *variable;
00565 };
00566 
00569 struct s_config_s {
00571         s_list_t *category;
00572 };
00573 
00574 /* config.c */
00575 
00581 char * s_config_strip (char *buf);
00582 
00589 int s_config_parse (s_config_t *cfg, char *name);
00590 
00596 int s_config_init (s_config_t **cfg);
00597 
00604 int s_config_category_init (s_config_cat_t **cat, char *name);
00605 
00613 int s_config_variable_init (s_config_var_t **var, char *name, char *value);
00614 
00620 int s_config_variable_uninit (s_config_var_t *var);
00621 
00627 int s_config_category_uninit (s_config_cat_t *cat);
00628 
00634 int s_config_uninit (s_config_t *cfg);
00635 
00638 /* debugf.c */
00639 void s_debug_debugf (unsigned short flags, char *file, int line, char *func, char *fmt, ...);
00640 
00641 /* driver.c */
00642 void bpp_setpixel (s_surface_t *surface, int x, int y, int c);
00643 void bpp_setpixel_o (s_surface_t *surface, int id, int x, int y, int c);
00644 int bpp_getpixel (s_surface_t *surface, int x, int y);
00645 int bpp_getpixel_o (s_surface_t *surface, int id,  int x, int y);
00646 void bpp_hline (s_surface_t *surface, int x1, int y, int x2, int c);
00647 void bpp_hline_o (s_surface_t *surface, int id,  int x1, int y, int x2, int c);
00648 void bpp_vline (s_surface_t *surface, int x, int y1, int y2, int c);
00649 void bpp_vline_o (s_surface_t *surface, int id,  int x, int y1, int y2, int c);
00650 void bpp_fillbox (s_surface_t *surface, int x, int y, int w, int h, int c);
00651 void bpp_fillbox_o (s_surface_t *surface, int id,  int x, int y, int w, int h, int c);
00652 void bpp_putbox (s_surface_t *surface, int x, int y, int w, int h, void *sp, int bw);
00653 void bpp_putbox_mask (s_surface_t *surface, int x, int y, int w, int h, void *sp, unsigned char *sm, int bw);
00654 void bpp_putbox_alpha (s_surface_t *surface, int x, int y, int w, int h, void *sp, unsigned char *sm, int bw);
00655 void bpp_putbox_rgb (s_surface_t *surface, int x, int y, int w, int h, unsigned int *rgb, int bw);
00656 void bpp_putbox_rgba (s_surface_t *surface, int x, int y, int w, int h, unsigned int *rgba, int bw);
00657 void bpp_getbox (s_surface_t *surface, int x, int y, int w, int h, void *dp);
00658 void bpp_putbox_o (s_surface_t *surface, int id,  int x, int y, int w, int h, void *sp, int bw);
00659 void bpp_putbox_mask_o (s_surface_t *surface, int id,  int x, int y, int w, int h, void *sp, unsigned char *sm, int bw);
00660 void bpp_putbox_alpha_o (s_surface_t *surface, int id,  int x, int y, int w, int h, void *sp, unsigned char *sm, int bw);
00661 void bpp_putbox_rgb_o (s_surface_t *surface, int id,  int x, int y, int w, int h, unsigned int *rgb, int bw);
00662 void bpp_putbox_rgba_o (s_surface_t *surface, int id,  int x, int y, int w, int h, unsigned int *rgba, int bw);
00663 void bpp_getbox_o (s_surface_t *surface, int id,  int x, int y, int w, int h, void *dp);
00664 
00665 /* event.c */
00666 int s_event_mouse_handler_state (s_window_t *window, s_event_t *event, s_handler_mouse_t *mouse, int over);
00667 int s_event_parse_handler_over (s_window_t *window, s_event_t *event, s_handler_t *work);
00668 int s_event_parse_handler_notover (s_window_t *window, s_event_t *event, s_handler_t *work);
00669 void s_event_parse_mouse (s_window_t *window, s_event_t *event);
00670 int s_event_parse_keybd_handler (s_window_t *window, s_event_t *event, s_handler_t *work);
00671 int s_event_parse_keybd (s_window_t *window, s_event_t *event);
00672 int s_event_parse_expos (s_window_t *window, s_event_t *event);
00673 int s_event_parse_config (s_window_t *window, s_event_t *event);
00674 int s_event_parse_timer (s_window_t *window, s_event_t *event);
00675 int s_event_changed (s_window_t *window);
00676 int s_event_init (s_event_t **event);
00677 int s_event_uninit (s_event_t *event);
00678 
00679 /* eventq.c */
00680 int s_eventq_init (s_window_t *window);
00681 int s_eventq_uninit (s_window_t *window);
00682 int s_eventq_add (s_window_t *window, s_event_t *event);
00683 int s_eventq_get (s_window_t *window, s_event_t **event);
00684 int s_eventq_wait (s_window_t *window, s_event_t **event);
00685 
00686 /* font.c */
00687 int s_font_init (s_font_t **font, char *name);
00688 int s_font_uninit (s_font_t *font);
00689 int s_font_set_size (s_font_t *font, int size);
00690 int s_font_set_str (s_font_t *font, char *str);
00691 int s_font_set_rgb (s_font_t *font, int r, int g, int b);
00692 int s_font_get_glyph (s_font_t *font);
00693 int s_font_get_width (s_font_t *font, char *str);
00694 
00695 /* gettext.c */
00696 char * s_setlocale(s_window_t *window, int category, const char *locale);
00697 char * s_bindtextdomain (s_window_t *window, const char *domainname, const char *dirname);
00698 char * s_textdomain (s_window_t *window, const char *domainname);
00699 char * s_gettext (s_window_t *window, const char *str);
00700 void s_gettext_uninit (s_window_t *window);
00701 int s_gettext_init (s_window_t *window);
00702 
00703 /* gettime.c */
00704 long long s_gettimeofday (void);
00705 
00718 
00719 /* grlib.c */
00720 
00729 int s_rgbcolor (s_surface_t *surface, int r, int g, int b);
00730 
00740 void s_colorrgb (s_surface_t *surface, int c, int *r, int *g, int *b);
00741 
00750 void s_setpixel (s_surface_t *surface, int x, int y, int c);
00751 
00762 void s_setpixelrgb (s_surface_t *surface, int x, int y, int r, int g, int b);
00763 
00775 void s_setpixelrgba (s_surface_t *surface, int x, int y, int r, int g, int b, int a);
00776 
00784 int s_getpixel (s_surface_t *surface, int x, int y);
00785 
00796 void s_getpixelrgb (s_surface_t *surface, int x, int y, int *r, int *g, int *b);
00797 
00807 void s_hline (s_surface_t *surface, int x1, int y, int x2, int c);
00808 
00818 void s_vline (s_surface_t *surface, int x, int y1, int y2, int c);
00819 
00830 void s_line (s_surface_t *surface, int x1, int y1, int x2, int y2, int c);
00831 
00843 void s_fillbox (s_surface_t *surface, int x, int y, int w, int h, int c);
00844 
00857 void s_putbox (s_surface_t *surface, int x, int y, int w, int h, void *sp);
00858 
00873 void s_putboxmask (s_surface_t *surface, int x, int y, int w, int h, char *sp, unsigned char *sm);
00874 
00889 void s_putboxalpha (s_surface_t *surface, int x, int y, int w, int h, char *sp, unsigned char *sm);
00890 
00902 void s_putboxrgba (s_surface_t *surface, int x, int y, int w, int h, unsigned int *rgba);
00903 
00915 void s_putboxrgb (s_surface_t *surface, int x, int y, int w, int h, unsigned int *rgb);
00916 
00928 void s_getbox (s_surface_t *surface, int x, int y, int w, int h, void *dp);
00929 
00947 void s_putboxpart (s_surface_t *surface, int x, int y, int w, int h, int bw, int bh, void *sp, int xo, int yo);
00948 
00968 void s_putboxpartmask (s_surface_t *surface, int x, int y, int w, int h, int bw, int bh, char *sp, unsigned char *sm, int xo, int yo);
00969 
00986 void s_putboxpartrgb (s_surface_t *surface, int x, int y, int w, int h, int bw, int bh, unsigned int *rgb, int xo, int yo);
00987 
01004 void s_putboxpartrgba (s_surface_t *surface, int x, int y, int w, int h, int bw, int bh, unsigned int *rgba, int xo, int yo);
01005 
01025 void s_putboxpartalpha (s_surface_t *surface, int x, int y, int w, int h, int bw, int bh, void *sp, unsigned char *sm, int xo, int yo);
01026 
01038 void s_copybox (s_surface_t *surface, int x1, int y1, int w, int h, int x2, int y2);
01039 
01051 void s_getsurfacevirtual (s_surface_t *s, int w, int h, int bitspp, void *vbuf);
01052 
01064 int s_copybuffer (char *sb, int sbitspp, char **db, int dbitspp, int w, int h);
01065 
01077 void s_rotatebox (s_surface_t *surface, s_rect_t *srect, void *sbuf, s_rect_t *drect, void *dbuf, int rotate);
01078 
01091 void s_scalebox (s_surface_t *surface, int w1, int h1, void *_dp1, int w2, int h2, void *_dp2);
01092 
01112 int s_putmaskpart (unsigned char *dp, int dw, int dh, int x, int y, int w, int h, int bw, int bh, unsigned char *sp, int xo, int yo);
01113 
01156 
01159 struct s_handler_keybd_s {
01161         int flag;
01163         int button;
01165         void (*p) (s_window_t *, s_event_t *, s_handler_t *);
01167         void (*r) (s_window_t *, s_event_t *, s_handler_t *);
01168 };
01169 
01172 struct s_handler_mouse_s {
01174         int x;
01176         int y;
01178         int w;
01180         int h;
01182         int button;
01184         void (*p) (s_window_t *, s_event_t *, s_handler_t *);
01186         void (*r) (s_window_t *, s_event_t *, s_handler_t *);
01188         void (*c) (s_window_t *, s_event_t *, s_handler_t *);
01190         void (*o) (s_window_t *, s_event_t *, s_handler_t *);
01192         void (*ho) (s_window_t *, s_event_t *, s_handler_t *);
01194         void (*hr) (s_window_t *, s_event_t *, s_handler_t *);
01196         void (*oh) (s_window_t *, s_event_t *, s_handler_t *);
01198         void (*hoh) (s_window_t *, s_event_t *, s_handler_t *);
01200         void (*rh) (s_window_t *, s_event_t *, s_handler_t *);
01202         S_EVENT hstate;
01203 };
01204 
01207 struct s_handler_s {
01209         S_HANDLER type;
01211         s_handler_mouse_t mouse;
01213         s_handler_keybd_t keybd;
01215         void *data;
01216 };
01217 
01220 struct s_handlers_s {
01222         s_list_t *list;
01224         s_thread_mutex_t *mut;
01225 };
01226 /* handler.c */
01227 
01234 int s_handler_init (s_handler_t **handler);
01235 
01242 int s_handler_uninit (s_handler_t *handler);
01243 
01250 int s_handler_add (s_window_t *window, s_handler_t *handler);
01251 
01258 int s_handler_del (s_window_t *window, s_handler_t *handler);
01259 
01265 int s_handlers_init (s_window_t *window);
01266 
01272 int s_handlers_uninit (s_window_t *window);
01273 
01320 
01323 struct s_image_s {
01325         char *name;
01327         int x;
01329         int y;
01331         int w;
01333         int h;
01335         char *buf;
01337         unsigned char *mat;
01339         s_rect_t *handler;
01341         unsigned int delay;
01343         unsigned int *rgba;
01345         s_list_t *layers;
01346 };
01347 
01348 /* image.c */
01349 
01355 int s_image_hex2int (char *str);
01356 
01362 int s_image_get_mat (s_image_t *img);
01363 
01370 int s_image_get_buf (s_surface_t *surface, s_image_t *img);
01371 
01377 void s_image_get_handler (s_image_t *img);
01378 
01384 int s_image_init (s_image_t **img);
01385 
01391 void s_image_free_buf (s_image_t *img);
01392 
01398 void s_image_free_mat (s_image_t *img);
01399 
01405 void s_image_free_rgba (s_image_t *img);
01406 
01412 void s_image_free_handler (s_image_t *img);
01413 
01419 int s_image_uninit (s_image_t *img);
01420 
01426 int s_image_layer_init (s_image_t **lyr);
01427 
01433 int s_image_layer_uninit (s_image_t *lyr);
01434 
01440 int s_image_layers_init (s_image_t *img);
01441 
01447 int s_image_layers_uninit (s_image_t *img);
01448 
01456 int s_image_img (char *file, s_image_t *img);
01457 
01458 /* image_gif.c */
01459 
01465 int s_image_gif_is (char *file);
01466 
01473 int s_image_gif (char *file, s_image_t *img);
01474 
01475 /* image_png.c */
01476 
01482 int s_image_png_is (char *file);
01483 
01490 int s_image_png (char *file, s_image_t *img);
01491 
01492 /* image_xpm.c */
01493 
01499 int s_image_xpm_is (char *file);
01500 
01507 int s_image_xpm (char *file, s_image_t *img);
01508 
01573 
01576 struct s_list_node_s {
01578         void *next;
01580         void *element;
01581 };
01582 
01585 struct s_list_s {
01587         int nb_elt;
01589         s_list_node_t *node;
01590 };
01591 
01592 /* list.c */
01593 
01599 int s_list_init (s_list_t **li);
01600 
01606 int s_list_uninit (s_list_t *li);
01607 
01614 int s_list_eol (s_list_t *li, int i);
01615 
01622 void * s_list_get (s_list_t *li, int pos);
01623 
01630 int s_list_remove (s_list_t *li, int pos);
01631 
01639 int s_list_add (s_list_t *li, void *el, int pos);
01640 
01649 void * s_list_find (s_list_t *list, void *node, int (*cmp_func) (void *, void *));
01650 
01657 int s_list_get_pos (s_list_t *list, void *node);
01658 
01712 
01715 struct s_pollfd_s {
01717         int fd;
01719         int (*pf_in) (s_window_t *, s_pollfd_t *);
01721         int (*pf_err) (s_window_t *, s_pollfd_t *);
01723         int (*pf_close) (s_window_t *, s_pollfd_t *);
01725         void *data;
01726 };
01727 
01730 struct s_pollfds_s {
01732         s_list_t *list;
01734         s_thread_mutex_t *mut;
01735 };
01736 
01737 /* pollfd.c */
01738 
01745 int s_pollfd_init (s_pollfd_t **pfd);
01746 
01752 int s_pollfd_uninit (s_pollfd_t *pfd);
01753 
01760 s_pollfd_t * s_pollfd_find (s_window_t *window, int fd);
01761 
01768 int s_pollfd_add (s_window_t *window, s_pollfd_t *pfd);
01769 
01776 int s_pollfd_del (s_window_t *window, s_pollfd_t *pfd);
01777 
01783 int s_pollfds_init (s_window_t *window);
01784 
01790 int s_pollfds_uninit (s_window_t *window);
01791 
01838 
01841 struct s_rect_s {
01843         int x;
01845         int y;
01847         int w;
01849         int h;
01850 };
01851 
01852 /* rect.c */
01853 
01861 int s_rect_merge (s_rect_t *r1, s_rect_t *r2, s_rect_t *r);
01862 
01870 int s_rect_intersect (s_rect_t *r1, s_rect_t *r2, s_rect_t *r);
01871 
01883 int s_rect_clip_virtual (s_surface_t *surface, int x, int y, int w, int h, s_rect_t *coor);
01884 
01896 int s_rect_clip_real (s_surface_t *surface, int x, int y, int w, int h, s_rect_t *coor);
01897 
01907 int s_rect_difference_add (s_list_t *list, int x, int y, int w, int h);
01908 
01916 int s_rect_difference (s_rect_t *r1, s_rect_t *r0, s_list_t *list);
01917 
01931 
01934 typedef enum {
01936         SOC_DATA_NOTHING   = 0x0,
01938         SOC_DATA_NEW       = 0x1,
01940         SOC_DATA_SHOW      = 0x2,
01942         SOC_DATA_CLOSE     = 0x3,
01944         SOC_DATA_EVENT     = 0x4,
01946         SOC_DATA_EXPOSE    = 0x5,
01948         SOC_DATA_DISPLAY   = 0x6,
01950         SOC_DATA_FORMDRAW  = 0x7,
01952         SOC_DATA_CONFIGURE = 0x8,
01954         SOC_DATA_DESKTOP   = 0x9,
01955 } S_SOC_DATA;
01956 
01957 /* socket.c */
01958 
01965 int s_socket_request_new (s_window_t *window, int soc);
01966 
01973 int s_socket_request_display (s_window_t *window, int soc);
01974 
01982 int s_socket_request_configure (s_window_t *window, int soc, int form);
01983 
01991 int s_socket_request_stream (s_window_t *window, int soc, s_rect_t *coor);
01992 
02001 int s_socket_request_show (s_window_t *window, int soc, int id, int show);
02002 
02010 int s_socket_request_event (s_window_t *window, int soc, s_event_t *event);
02011 
02018 int s_socket_request (s_window_t *window, S_SOC_DATA req, ...);
02019 
02026 int s_socket_listen_event (s_window_t *window, int soc);
02027 
02034 int s_socket_listen_expose (s_window_t *window, int soc);
02035 
02042 int s_socket_listen_desktop (s_window_t *window, int soc);
02043 
02050 int s_socket_listen_parse (s_window_t *window, int soc);
02051 
02058 int s_socket_listen_wait (s_window_t *window, int timeout);
02059 
02066 int s_socket_uninit (s_window_t *window, s_pollfd_t *pfd);
02067 
02074 int s_socket_in_f (s_window_t *window, s_pollfd_t *pfd);
02075 
02082 int s_socket_ierr_f (s_window_t *window, s_pollfd_t *pfd);
02083 
02090 int s_socket_inw_f (s_window_t *window, s_pollfd_t *pfd);
02091 
02098 int s_socket_ierrw_f (s_window_t *window, s_pollfd_t *pfd);
02099 
02106 int s_socket_closew_f (s_window_t *window, s_pollfd_t *pfd);    
02107 
02113 int s_socket_init_uds (s_window_t *window);
02114 
02120 int s_socket_init_tcp (s_window_t *window);
02121 
02127 int s_socket_init_wakeup (s_window_t *window);
02128 
02134 int s_socket_init (s_window_t *window);
02135 
02148 
02151 typedef enum {
02153         SURFACE_REAL       = 0x1,
02155         SURFACE_VIRTUAL    = 0x2,
02157         SURFACE_NEEDEXPOSE = 0x4,
02159         SURFACE_NEEDSTREAM = 0x8
02160 } S_SURFACE_MODE;
02161 
02164 struct s_surface_s {
02166         S_SURFACE_MODE mode;
02168         int bytesperpixel;
02170         int bitsperpixel;
02172         int colors;
02174         int blueoffset;
02176         int greenoffset;
02178         int redoffset;
02180         int bluelength;
02182         int greenlength;
02184         int redlength;
02186         int width;
02188         int height;
02190         unsigned char *vbuf;
02192         s_rect_t *buf;
02194         s_rect_t *win;
02196         unsigned char *linear_buf;
02198         int linear_buf_width;
02200         int linear_buf_pitch;
02202         int linear_buf_height;
02204         unsigned int linear_mem_base;
02206         unsigned int linear_mem_size;
02208         int shm_mid;
02210         unsigned char *matrix;
02212         int shm_sid;
02214         S_SURFACE_MODE need_expose;
02216         char *device;
02218         int *id;
02220         s_window_t *window;
02221 };
02222 
02223 /* surface.c */
02224 
02230 int s_surface_init (s_window_t *window);
02231 
02237 void s_surface_create (s_window_t *window);
02238 
02244 void s_surface_shm_attach (s_window_t *window);
02245 
02251 void s_surface_linear (s_window_t *window);
02252 
02258 void s_surface_uninit (s_window_t *window);
02259 
02266 void s_surface_changed (s_window_t *window, s_rect_t *changed);
02267 
02356 
02357 /* thread.c */
02358 
02365 int s_thread_sem_create (s_thread_sem_t **sem, int initial);
02366 
02372 int s_thread_sem_destroy (s_thread_sem_t *sem);
02373 
02379 int s_thread_sem_wait (s_thread_sem_t *sem);
02380 
02387 int s_thread_sem_wait_timeout (s_thread_sem_t *sem, int msec);
02388 
02394 int s_thread_sem_post (s_thread_sem_t *sem);
02395 
02401 int s_thread_mutex_init (s_thread_mutex_t **mut);
02402 
02408 int s_thread_mutex_destroy (s_thread_mutex_t *mut);
02409 
02415 int s_thread_mutex_lock (s_thread_mutex_t *mut);
02416 
02422 int s_thread_mutex_trylock (s_thread_mutex_t *mut);
02423 
02429 int s_thread_mutex_unlock (s_thread_mutex_t *mut);
02430 
02436 int s_thread_cond_init (s_thread_cond_t **cond);
02437 
02443 int s_thread_cond_destroy (s_thread_cond_t *cond);
02444 
02450 int s_thread_cond_signal (s_thread_cond_t *cond);
02451 
02457 int s_thread_cond_broadcast (s_thread_cond_t *cond);
02458 
02465 int s_thread_cond_wait (s_thread_cond_t *cond, s_thread_mutex_t *mut);
02466 
02474 int s_thread_cond_timedwait (s_thread_cond_t *cond, s_thread_mutex_t *mut, int msec);
02475 
02484 s_thread_t * s_thread_create (void * (*f) (void *), void *farg);
02485 
02491 int s_thread_cancel (s_thread_t *tid);
02492 
02501 int s_thread_join (s_thread_t *tid, void **ret);
02502 
02507 int s_thread_self (void);
02508 
02511 void s_thread_exit (void *ret);
02512 
02563 
02566 struct s_timer_s {
02568         long long timeval;
02571         long long interval;
02573         void (*cb) (s_window_t *, struct s_timer_s *);
02575         void *data;
02576 };
02577 
02580 struct s_timers_s {
02582         s_list_t *timers;
02584         s_thread_mutex_t *mut;
02585 };
02586 
02587 /* timer.c */
02588 
02595 int s_timer_init (s_timer_t **timer);
02596 
02604 int s_timer_timeval (s_window_t *window, s_timer_t *timer, int timeval);
02605 
02611 int s_timer_uninit (s_timer_t *timer);
02612 
02619 int s_timer_del (s_window_t *window, s_timer_t *timer);
02620 
02627 int s_timer_add (s_window_t *window, s_timer_t *timer);
02628 
02634 int s_timers_init (s_window_t *window);
02635 
02641 int s_timers_uninit (s_window_t *window);
02642 
02695 
02698 typedef enum {
02700         WINDOW_NOFORM     = 0x0040,
02702         WINDOW_MAIN       = 0x0080,
02704         WINDOW_TEMP       = 0x0100,
02706         WINDOW_CHILD      = 0x0200,
02708         WINDOW_DESKTOP    = 0x0400
02709 } S_WINDOW;
02710 
02713 struct s_window_s {
02715         int running;
02717         int soc;
02719         int wsoc;
02721         S_WINDOW type;
02722 
02724         int id;
02726         int pri;
02728         char *title;
02729 
02731         int resizeable;
02733         int alwaysontop;
02735         S_MOUSE_CURSOR cursor;
02737         int mouse_entered;
02738 
02740         s_surface_t *surface;
02741 
02743         s_eventq_t *eventq;
02745         s_timers_t *timers;
02747         s_childs_t *childs;
02749         s_pollfds_t *pollfds;
02751         s_handlers_t *handlers;
02752 
02754         s_thread_t *tid;
02756         s_window_t *parent;
02757 
02759         s_event_t *event;
02761         s_thread_mutex_t *socket_mutex;
02762         
02764         s_gettext_t *gettext;
02765 
02767         void (*atevent) (s_window_t *, s_event_t *);
02769         void (*atexit) (s_window_t *);
02770 
02772         void *data;
02773 };
02774 
02775 /* window.c */
02776 
02783 void s_window_set_cursor (s_window_t *window, S_MOUSE_CURSOR cursor);
02784 
02791 void s_window_set_title (s_window_t *window, char *fmt, ...);
02792 
02798 void s_window_form_draw (s_window_t *window);
02799 
02805 void s_window_hide (s_window_t *window);
02806 
02812 void s_window_show (s_window_t *window);
02813 
02824 void s_window_set_coor (s_window_t *window, int form, int x, int y, int w, int h);
02825 
02832 void s_window_set_resizeable (s_window_t *window, int resizeable);
02833 
02840 void s_window_set_alwaysontop (s_window_t *window, int alwaysontop);
02841 
02849 int s_window_new (s_window_t *window, S_WINDOW type, s_window_t *parent);
02850 
02856 int s_window_init (s_window_t **window);
02857 
02863 void s_window_uninit (s_window_t *window);
02864 
02870 void s_window_exit (s_window_t *window);
02871 
02877 void s_window_quit (s_window_t *window);
02878 
02884 int s_window_wakeup (s_window_t *window);
02885 
02891 void * s_window_loop_event (void *arg);
02892 
02898 void * s_window_loop (void *arg);
02899 
02905 void * s_window_main (void *arg);
02906 
02913 void s_window_atevent (s_window_t *window, void (*f) (s_window_t *, s_event_t *));
02914 
02921 void s_window_atexit (s_window_t *window, void (*f) (s_window_t *));
02922 
02925 #ifdef __cplusplus
02926         }
02927 #endif
02928 
02929 #endif

Generated on Wed Dec 27 17:53:06 2006 for xynth-0.8.40 by  doxygen 1.4.7