xynth.h
来自「CS架构的多平台的GUI系统」· C头文件 代码 · 共 882 行 · 第 1/2 页
H
882 行
/*************************************************************************** begin : Tue Oct 14 2003 copyright : (C) 2003 - 2005 by Alper Akcan email : distchx@yahoo.com ***************************************************************************//*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU Lesser General Public License as * * published by the Free Software Foundation; either version 2.1 of the * * License, or (at your option) any later version. * * * ***************************************************************************/#ifndef SXYNTH_H#define SXYNTH_H#ifdef __cplusplus extern "C" {#endiftypedef struct s_thread_s s_thread_t;typedef struct s_thread_sem_s s_thread_sem_t;typedef struct s_thread_cond_s s_thread_cond_t;typedef struct s_thread_mutex_s s_thread_mutex_t;typedef struct s_font_ft_s s_font_ft_t;typedef struct s_window_s s_window_t;typedef struct s_handler_s s_handler_t;typedef enum { SOC_DATA_NOTHING = 0x0, SOC_DATA_NEW = 0x1, SOC_DATA_HIDE = 0x2, SOC_DATA_SHOW = 0x3, SOC_DATA_CLOSE = 0x5, SOC_DATA_TITLE = 0x6, SOC_DATA_EVENT = 0x7, SOC_DATA_EXPOSE = 0x8, SOC_DATA_STREAM = 0x9, SOC_DATA_DISPLAY = 0xA, SOC_DATA_FORMDRAW = 0xB, SOC_DATA_CONFIGURE = 0xC, SOC_DATA_CONFIGURE_NOFORM = 0xD, SOC_DATA_DESKTOP = 0xE} S_SOC_DATA;typedef enum { WINDOW_NEW = 0x0001, WINDOW_COOR = 0x0002, WINDOW_DRAW = 0x0004, WINDOW_SHOW = 0x0008, WINDOW_TITLE = 0x0010, WINDOW_RESIZEABLE = 0x0020, NO_FORM = 0x0040, WINDOW_MAIN = 0x0080, WINDOW_TEMP = 0x0100, WINDOW_CHILD = 0x0200, WINDOW_DESKTOP = 0x0400} S_WINDOW;typedef enum { SURFACE_REAL = 0x1, SURFACE_VIRTUAL = 0x2, SURFACE_NEEDEXPOSE = 0x4, SURFACE_NEEDSTREAM = 0x8} S_SURFACE_MODE;typedef enum { MOUSE_CURSOR_WAIT, MOUSE_CURSOR_CROSS, MOUSE_CURSOR_IBEAM, MOUSE_CURSOR_SIZEV, MOUSE_CURSOR_SIZEH, MOUSE_CURSOR_SIZES, MOUSE_CURSOR_SIZEB, MOUSE_CURSOR_SIZEA, MOUSE_CURSOR_ARROW, MOUSE_CURSOR_POINT, MOUSE_CURSOR_SPLITV, MOUSE_CURSOR_SPLITH, MOUSE_CURSOR_FORBID, MOUSE_CURSOR_UPARROW, MOUSE_CURSOR_MAX} S_MOUSE_CURSOR;typedef enum { KEYCODE_NMLCKF = 0x01, KEYCODE_CPLCKF = 0x02, KEYCODE_LCTRLF = 0x04, KEYCODE_RCTRLF = 0x08, KEYCODE_LSHIFTF = 0x10, KEYCODE_RSHIFTF = 0x20, KEYCODE_LALTF = 0x40, KEYCODE_RALTF = 0x80, KEYCODE_SHIFTF = (KEYCODE_LSHIFTF | KEYCODE_RSHIFTF), KEYCODE_CTRLF = (KEYCODE_LCTRLF | KEYCODE_RCTRLF), KEYCODE_ALTF = (KEYCODE_LALTF | KEYCODE_LALTF), KEYCODE_ALTGRF = KEYCODE_RALTF} S_KEYCODE_FLAG;typedef enum {/* Plain *//* 0 */ S_KEYCODE_ESCAPE,/* 1 */ S_KEYCODE_ONE,/* 2 */ S_KEYCODE_TWO,/* 3 */ S_KEYCODE_THREE,/* 4 */ S_KEYCODE_FOUR,/* 5 */ S_KEYCODE_FIVE,/* 6 */ S_KEYCODE_SIX,/* 7 */ S_KEYCODE_SEVEN,/* 8 */ S_KEYCODE_EIGHT,/* 9 */ S_KEYCODE_NINE,/* 10 */ S_KEYCODE_ZERO,/* 11 */ S_KEYCODE_MINUS,/* 12 */ S_KEYCODE_EQUAL,/* 13 */ S_KEYCODE_DELETE,/* 14 */ S_KEYCODE_TAB,/* 15 */ S_KEYCODE_q,/* 16 */ S_KEYCODE_w,/* 17 */ S_KEYCODE_e,/* 18 */ S_KEYCODE_r,/* 19 */ S_KEYCODE_t,/* 20 */ S_KEYCODE_y,/* 21 */ S_KEYCODE_u,/* 22 */ S_KEYCODE_i,/* 23 */ S_KEYCODE_o,/* 24 */ S_KEYCODE_p,/* 25 */ S_KEYCODE_BRACKETLEFT,/* 26 */ S_KEYCODE_BRACKETRIGHT,/* 27 */ S_KEYCODE_RETURN,/* 28 */ S_KEYCODE_LEFTCONTROL,/* 29 */ S_KEYCODE_a,/* 30 */ S_KEYCODE_s,/* 31 */ S_KEYCODE_d,/* 32 */ S_KEYCODE_f,/* 33 */ S_KEYCODE_g,/* 34 */ S_KEYCODE_h,/* 35 */ S_KEYCODE_j,/* 36 */ S_KEYCODE_k,/* 37 */ S_KEYCODE_l,/* 38 */ S_KEYCODE_SEMICOLON,/* 39 */ S_KEYCODE_APOSTROPHE,/* 40 */ S_KEYCODE_GRAVE,/* 41 */ S_KEYCODE_LEFTSHIFT,/* 42 */ S_KEYCODE_BACKSLASH,/* 43 */ S_KEYCODE_z,/* 44 */ S_KEYCODE_x,/* 45 */ S_KEYCODE_c,/* 46 */ S_KEYCODE_v,/* 47 */ S_KEYCODE_b,/* 48 */ S_KEYCODE_n,/* 49 */ S_KEYCODE_m,/* 50 */ S_KEYCODE_COMMA,/* 51 */ S_KEYCODE_PERIOD,/* 52 */ S_KEYCODE_SLASH,/* 53 */ S_KEYCODE_RIGHTSHIFT,/* 54 */ S_KEYCODE_KP_MULTIPLY,/* 55 */ S_KEYCODE_ALT,/* 56 */ S_KEYCODE_SPACE,/* 57 */ S_KEYCODE_CAPS_LOCK,/* 58 */ S_KEYCODE_F1,/* 59 */ S_KEYCODE_F2,/* 60 */ S_KEYCODE_F3,/* 61 */ S_KEYCODE_F4,/* 62 */ S_KEYCODE_F5,/* 63 */ S_KEYCODE_F6,/* 64 */ S_KEYCODE_F7,/* 65 */ S_KEYCODE_F8,/* 66 */ S_KEYCODE_F9,/* 67 */ S_KEYCODE_F10,/* 68 */ S_KEYCODE_NUM_LOCK,/* 69 */ S_KEYCODE_SCROLL_LOCK,/* 70 */ S_KEYCODE_KP_7,/* 71 */ S_KEYCODE_KP_8,/* 72 */ S_KEYCODE_KP_9,/* 73 */ S_KEYCODE_KP_SUBTRACT,/* 74 */ S_KEYCODE_KP_4,/* 75 */ S_KEYCODE_KP_5,/* 76 */ S_KEYCODE_KP_6,/* 77 */ S_KEYCODE_KP_ADD,/* 78 */ S_KEYCODE_KP_1,/* 79 */ S_KEYCODE_KP_2,/* 80 */ S_KEYCODE_KP_3,/* 81 */ S_KEYCODE_KP_0,/* 82 */ S_KEYCODE_KP_PERIOD,/* 83 */ S_KEYCODE_LAST_CONSOLE,/* 84 */ S_KEYCODE_LESS,/* 85 */ S_KEYCODE_F11,/* 86 */ S_KEYCODE_F12,/* 87 */ S_KEYCODE_KP_ENTER,/* 88 */ S_KEYCODE_RIGHTCONTROL,/* 89 */ S_KEYCODE_KP_DIVIDE,/* 90 */ S_KEYCODE_VOIDSYMBOL,/* 91 */ S_KEYCODE_ALTGR,/* 92 */ S_KEYCODE_BREAK,/* 93 */ S_KEYCODE_HOME,/* 94 */ S_KEYCODE_UP,/* 95 */ S_KEYCODE_PAGEUP,/* 96 */ S_KEYCODE_LEFT,/* 97 */ S_KEYCODE_RIGHT,/* 98 */ S_KEYCODE_END,/* 99 */ S_KEYCODE_DOWN,/* 100 */ S_KEYCODE_PAGEDOWN,/* 101 */ S_KEYCODE_INSERT,/* 102 */ S_KEYCODE_REMOVE,/* 103 */ S_KEYCODE_PAUSE,/* Shift *//* 104 */ S_KEYCODE_EXCLAM,/* 105 */ S_KEYCODE_AT,/* 106 */ S_KEYCODE_NUMBERSIGN,/* 107 */ S_KEYCODE_DOLLAR,/* 108 */ S_KEYCODE_PERCENT,/* 109 */ S_KEYCODE_ASCIICIRCUM,/* 110 */ S_KEYCODE_AMPERSAND,/* 111 */ S_KEYCODE_ASTERISK,/* 112 */ S_KEYCODE_PARENLEFT,/* 113 */ S_KEYCODE_PARENRIGHT,/* 114 */ S_KEYCODE_UNDERSCORE,/* 115 */ S_KEYCODE_PLUS,/* 116 */ S_KEYCODE_Q,/* 117 */ S_KEYCODE_W,/* 118 */ S_KEYCODE_E,/* 119 */ S_KEYCODE_R,/* 120 */ S_KEYCODE_T,/* 121 */ S_KEYCODE_Y,/* 122 */ S_KEYCODE_U,/* 123 */ S_KEYCODE_I,/* 124 */ S_KEYCODE_O,/* 125 */ S_KEYCODE_P,/* 126 */ S_KEYCODE_BRACELEFT,/* 127 */ S_KEYCODE_BRACERIGHT,/* 128 */ S_KEYCODE_A,/* 129 */ S_KEYCODE_S,/* 130 */ S_KEYCODE_D,/* 131 */ S_KEYCODE_F,/* 132 */ S_KEYCODE_G,/* 133 */ S_KEYCODE_H,/* 134 */ S_KEYCODE_J,/* 135 */ S_KEYCODE_K,/* 136 */ S_KEYCODE_L,/* 137 */ S_KEYCODE_COLON,/* 138 */ S_KEYCODE_QUOTEDBL,/* 139 */ S_KEYCODE_ASCIITILDE,/* 140 */ S_KEYCODE_BAR,/* 141 */ S_KEYCODE_Z,/* 142 */ S_KEYCODE_X,/* 143 */ S_KEYCODE_C,/* 144 */ S_KEYCODE_V,/* 145 */ S_KEYCODE_B,/* 146 */ S_KEYCODE_N,/* 147 */ S_KEYCODE_M,/* 149 */ S_KEYCODE_GREATER,/* 150 */ S_KEYCODE_QUESTION,/* 151 */ S_KEYCODE_F13,/* 152 */ S_KEYCODE_F14,/* 153 */ S_KEYCODE_F15,/* 154 */ S_KEYCODE_F16,/* 155 */ S_KEYCODE_F17,/* 156 */ S_KEYCODE_F18,/* 157 */ S_KEYCODE_F19,/* 158 */ S_KEYCODE_F20,/* 159 */ S_KEYCODE_F21,/* 160 */ S_KEYCODE_F22,/* 161 */ S_KEYCODE_SHOW_MEMORY,/* 162 */ S_KEYCODE_F23,/* 163 */ S_KEYCODE_F24,/* 164 */ S_KEYCODE_SCROLL_BACKWARD,/* 165 */ S_KEYCODE_SCROLL_FORWARD,/* ALTGR *//* 166 */ S_KEYCODE_CURRENCY,/* 167 */ S_KEYCODE_CENT,/* 168 */ S_KEYCODE_HEX_C,/* 169 */ S_KEYCODE_HEX_A,/* 170 */ S_KEYCODE_SHOW_REGISTERS,/* 171 */ S_KEYCODE_HEX_7,/* 172 */ S_KEYCODE_HEX_8,/* 173 */ S_KEYCODE_HEX_9,/* 174 */ S_KEYCODE_HEX_D,/* 175 */ S_KEYCODE_HEX_4,/* 176 */ S_KEYCODE_HEX_5,/* 177 */ S_KEYCODE_HEX_6,/* 178 */ S_KEYCODE_HEX_E,/* 179 */ S_KEYCODE_HEX_1,/* 180 */ S_KEYCODE_HEX_2,/* 181 */ S_KEYCODE_HEX_3,/* 182 */ S_KEYCODE_HEX_0,/* 183 */ S_KEYCODE_HEX_F,/* 184 */ S_KEYCODE_HEX_B,/* 185 */ S_KEYCODE_NOCODE,/* 186 */ S_KEYCODE_CODES} S_KEYCODE_CODE;typedef enum { MOUSE_RIGHTBUTTON = 0x001, MOUSE_MIDDLEBUTTON = 0x002, MOUSE_LEFTBUTTON = 0x004, MOUSE_FOURTHBUTTON = 0x008, MOUSE_FIFTHBUTTON = 0x010, MOUSE_SIXTHBUTTON = 0x020, MOUSE_RESETBUTTON = 0x040, MOUSE_WHEELXBUTTON_U = 0x080, MOUSE_WHEELXBUTTON_D = 0x100, MOUSE_WHEELYBUTTON_U = 0x200, MOUSE_WHEELYBUTTON_D = 0x400, MOUSE_NONEBUTTON = 0x800} S_MOUSECODE_CODE;typedef enum { QUIT_EVENT = 0x00001, KEYBD_EVENT = 0x00002, KEYBD_RELEASED = 0x00004, KEYBD_PRESSED = 0x00008, MOUSE_EVENT = 0x00010, MOUSE_OVER = 0x00020, MOUSE_RELEASED = 0x00040, MOUSE_PRESSED = 0x00080, MOUSE_CLICKED = 0x00100, MOUSE_HINT = 0x00200, MOUSE_HINT2 = 0x00400, EXPOSE_EVENT = 0x00800, EXPOSE_CHNGX = 0x01000, EXPOSE_CHNGY = 0x02000, EXPOSE_CHNGW = 0x04000, EXPOSE_CHNGH = 0X08000, EXPOSE_CHNGF = 0X10000, DESKTOP_EVENT = 0x20000, TIMER_EVENT = 0x40000, EVENT_MASK = (QUIT_EVENT | EXPOSE_EVENT | KEYBD_EVENT | MOUSE_EVENT | DESKTOP_EVENT | TIMER_EVENT)} S_EVENT;typedef enum { MOUSE_HANDLER = 0x1, KEYBD_HANDLER = 0x2} S_HANDLER;typedef struct s_list_node_s { void *next; void *element;} s_list_node_t;typedef struct s_list_s { int nb_elt; s_list_node_t *node;} s_list_t;typedef struct s_rect_s { int x; int y; int w; int h;} s_rect_t;typedef struct s_config_var_s { char *name; char *value;} s_config_var_t;typedef struct s_config_cat_s { char *name; s_list_t *variable;} s_config_cat_t;typedef struct s_config_s { s_list_t *category;} s_config_t;typedef struct s_image_s { int x; int y; int w; int h; char *buf; unsigned char *mat; s_rect_t handler; unsigned int delay; unsigned int *rgba; s_list_t *layers;} s_image_t;typedef struct s_font_s { int yMin; int yMax; char *str; int size; int ascender; int descender; int height; int max_advance; unsigned int rgb; s_image_t *img; s_font_ft_t *ft;} s_font_t;typedef struct s_pollfd_s { int fd; int (*pf_in) (s_window_t *, int); int (*pf_err) (s_window_t *, int); int (*pf_close) (s_window_t *, int);} s_pollfd_t;typedef struct s_pollfds_s { s_list_t *list; s_thread_mutex_t *mut;} s_pollfds_t;typedef struct s_mouse_s { int x; int y; S_MOUSECODE_CODE b; int clicks; /* click count */ S_MOUSECODE_CODE buttons; /* buttons bitwise ORed */ long long time; /* event time */ int px; /* prev. pressed coor. */ int py; int pb; /* prev. pressed button */ S_MOUSECODE_CODE pbuttons;/* prev. pressed buttons */ long long ctime; /* prev. clicked time */ S_MOUSE_CURSOR cursor;} s_mouse_t;typedef struct s_keybd_s { int ascii; int button; int keycode; int scancode; int state[S_KEYCODE_CODES]; S_KEYCODE_FLAG flag;} s_keybd_t;typedef struct s_expose_s { int change; s_rect_t rect;} s_expose_t;typedef struct s_stream_s { int bitspp; s_rect_t rect;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?