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 + -
显示快捷键?