server.h

来自「CS架构的多平台的GUI系统」· C头文件 代码 · 共 363 行

H
363
字号
/***************************************************************************    begin                : Sun Feb 16 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 SSERVER_H#define SSERVER_Htypedef enum {	TOP_L	= 0x0,	TOP_1,	TOP_2,	TOP_3,	TOP_4,	TOP_5,	TOP_R,	LEFT,	RIGHT,	BTM_L,	BTM,	BTM_R,	FORM_MAX} THEME_FORM;typedef enum {	CLOSE	= 0x0,	MAXIMIZE,	HIDE,	MENU,	BTNS_MAX} THEME_BTN;typedef enum {	INACTIVE,	ACTIVE,	PRESSED} THEME_STATE;typedef struct s_theme_s {	int title_full;	int text_color[2];	int text_v_off[2];	s_image_t form[2][FORM_MAX];	s_image_t button[3][BTNS_MAX];	struct {		int h;		int w;		int w_;	} form_min;	s_font_t *font[2];} s_theme_t;typedef enum {	SURFACE_CLOSE	 = 0x1,	SURFACE_FOCUS	 = 0x2,	SURFACE_REDRAW	 = 0x3,	SURFACE_REFRESH	 = 0x4,	SURFACE_CHANGED	 = 0x5} S_SURFACE_CHNGF;typedef struct s_clients_s {	int soc;	int pid; /* parent id */	int resizeable;	int alwaysontop;	S_WINDOW type;	s_rect_t buf;	s_rect_t win;	/* theme related */	struct {		char *str;		int hy[2];		int hh[2];		s_image_t img[2];	} title;	s_rect_t form[FORM_MAX];	s_rect_t button[BTNS_MAX];} s_clients_t;typedef struct s_cursor_s {	int sw;	int x;	int y;	int xyid;	s_image_t *img;	s_image_t images[MOUSE_CURSOR_MAX];} s_cursor_t;typedef struct s_server_conf_s {	struct {		char *driver;		char *mode;	} general;	struct {		char *type;		char *device;		int samplerate;		int scale;	} mouse;	struct {		float horizsync_min;		float horizsync_max;		float vertrefresh_min;		float vertrefresh_max;	} monitor;} s_server_conf_t;typedef struct s_mouse_driver_s {	int x;	int y;	int buttons;} s_mouse_driver_t;typedef struct s_keybd_driver_s {	int state;	int button;	int keycode;	int scancode;	int ascii;} s_keybd_driver_t;typedef struct s_video_driver_s {	char *driver;	char *device;	/* kbd */	int (*kbd_init) (s_server_conf_t *cfg);	void (*kbd_update) (s_keybd_driver_t *keybd);	void (*kbd_uninit) (void);	void (*kbd_switch) (int vt);	/* mouse */	void (*mouse_setxrange) (int x1, int x2);	void (*mouse_setyrange) (int y1, int y2);	void (*mouse_setcursor) (S_MOUSE_CURSOR c);	void (*mouse_draw) (void);	int (*mouse_update) (s_mouse_driver_t *mouse);	void (*mouse_uninit) (void);	int (*mouse_init) (s_server_conf_t *cfg);	/* server */	int (*server_init) (s_server_conf_t *cfg);	void (*server_uninit) (void);	void (*server_goto_back) (void);	void (*server_comefrom_back) (void);	void (*server_restore) (void);	void (*server_surface_update) (s_rect_t *coor);	void (*server_fullscreen) (void);	void *driver_data;} s_video_driver_t;typedef struct s_server_s {	int mode;	int id[S_CLIENTS_MAX];	int pri[S_CLIENTS_MAX];	s_clients_t client[S_CLIENTS_MAX];	s_cursor_t cursor;        s_theme_t theme;        s_window_t *window;	s_video_driver_t *driver;	s_handler_t *whndl[20]; /* window move & resize handlers        */	int mh;                 /* mouse hint (search for server->mh)   */	int ph;			/* priority hint (search for server->ph */} s_server_t;s_server_t *server;/* event.c */void s_server_event_parse_keyboard (void);int s_server_event_parse_mouse (void);void s_server_event_changed (void);void s_server_event_parse (S_EVENT event);/* id.c */int s_server_id_get (void);int s_server_id_find (int soc);void s_server_id_del (int id);/* kbd.c */void s_server_kbd_init (s_server_conf_t *cfg);void s_server_kbd_update (s_keybd_driver_t *keybd);int s_server_kbd_uninit (s_window_t *window, int fd);void s_server_kdb_switch (int vt);/* mouse.c */int s_mouse_getx (void);int s_mouse_gety (void);void s_mouse_setxrange (s_window_t *window, int a, int b);void s_mouse_setyrange (s_window_t *window, int a, int b);void s_server_mouse_setcursor (S_MOUSE_CURSOR c);void s_server_mouse_draw (void);int s_server_mouse_update (s_mouse_driver_t *mouse);int s_server_mouse_uninit (s_window_t *window, int fd);int s_server_mouse_in_f (s_window_t *window, int s);void s_server_mouse_init (s_server_conf_t *cfg);void s_server_cursor_uninit (void);void s_server_cursor_init (void);void s_server_cursor_image_set (int which, int c0, int c1, unsigned int *c);void s_server_cursor_matrix_add (void);void s_server_cursor_matrix_del (void);void s_server_cursor_draw (void);void s_server_cursor_select (S_MOUSE_CURSOR c);void s_server_cursor_position (int x, int y);/* priority.c */void s_server_pri_set (S_SURFACE_CHNGF flag, ...);void s_server_pri_set_add_diff (s_rect_t *diff, int s_id, int p_id, s_list_t *result);void s_server_pri_set_ (S_SURFACE_CHNGF flag, int id, s_rect_t *c0, s_rect_t *c1);int s_server_id_pri (int id);int s_server_pri_id (int pri);void s_server_pri_del (int id);/* server.c */int s_server_cfg_check_digit (char *ptr, char *digits);char * s_server_cfg_token (char **ptr);int s_server_cfg (s_server_conf_t *config);int s_server_init (void);void s_server_uninit (void);void s_server_quit (s_window_t *window);void s_server_goto_back (void);void s_server_comefrom_back (void);void s_server_restore (void);void s_server_fullscreen (void);void s_server_surface_update (s_rect_t *coor);/* single.c */#if defined(SINGLE_APP)void * s_server_single_app (void *arg);void s_server_single_start (void);void s_server_single_stop (void);#endif/* socket.c */int s_server_socket_listen_new (int id);int s_server_socket_listen_show (int id);int s_server_socket_listen_title (int id);int s_server_socket_listen_display (int id);int s_server_socket_listen_configure (int id);int s_server_socket_listen_desktop (int id);int s_server_socket_listen_expose (int id);int s_server_socket_listen_stream (int id);int s_server_socket_listen_close (int id);int s_server_socket_listen_hide (int id);int s_server_socket_listen_parse (int soc);int s_server_socket_listen_accept (int soc);int s_server_socket_request_event (int id);int s_server_socket_request_close (int id);int s_server_socket_request_expose (int id, s_rect_t *changed);int s_server_socket_request_desktop (int id);int s_server_socket_request (S_SOC_DATA req, int id, ...);int s_server_socket_uninit (s_window_t *window, int soc);int s_server_socket_init_uds (void);int s_server_socket_init_tcp (void);void s_server_socket_init (void);/* surface.c */void s_server_surface_matrix_find (s_rect_t *coor, int *dm);void s_server_surface_matrix_add (int id, s_rect_t *coor);void s_server_surface_matrix_add_id (int id, s_rect_t *coor);void s_server_surface_matrix_add_this (int id, s_rect_t *coor, s_rect_t *mcoor, unsigned char *mat);void s_server_surface_matrix_del (int id);void s_server_surface_matrix_del_this (int id, s_rect_t *mcoor, unsigned char *mat);void s_server_surface_matrix_del_coor (s_rect_t *coor);void s_server_surface_clean (s_rect_t *coor);void s_server_surface_background (s_rect_t *coor);void s_server_surface_lock_real (void);void s_server_surface_refresh (void);/* window.c */void s_server_window_new (int id);void s_server_window_title (int id, char *title);void s_server_putbox (s_window_t *window, int id, s_rect_t *coor, int x, int y, s_image_t *img);void s_server_putmat (s_window_t *window, int id, s_rect_t *coor, int x, int y, s_image_t *img);void s_server_window_form_mat (int v, int id, int mi, s_rect_t *coor, void (*func) (s_window_t *, int, s_rect_t *, int, int, s_image_t *));void s_server_window_form (int id, s_rect_t *_coor_);void s_server_window_matrix (int id, int mi, s_rect_t *_coor_);void s_server_window_matrix_add (int id, s_rect_t *_coor_);void s_server_window_matrix_del (int id, s_rect_t *_coor_);void s_server_window_calculate (int id);int s_server_window_is_parent_temp (int pid, int cid);int s_server_window_temp_parent (int cid);void s_server_window_close_temps (int id);void s_server_window_close_id (int id);void s_server_window_hide_id (int id);void s_server_window_close (s_window_t *window);void s_server_window_move_resize (int id, s_rect_t *new);void s_server_window_maximize (s_window_t *window);/* window_handler.c */void s_server_window_btn_resize_oh (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_u_o (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_ur_o (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_r_o (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_dr_o (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_d_o (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_dl_o (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_l_o (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_ul_o (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_menu_p (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_menu_oh (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_menu_ho (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_menu_r (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_hide_p (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_hide_oh (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_hide_ho (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_hide_r (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_maximize_p (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_maximize_oh (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_maximize_ho (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_maximize_r (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_close_p (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_close_oh (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_close_ho (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_close_r (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_move (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_up (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_up_left (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_up_right (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_left (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_right (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_down (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_down_left (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_btn_resize_down_right (s_window_t *window, s_event_t *event, s_handler_t *handler);void s_server_window_handlers_del_mouse (void);void s_server_window_handlers_add_mouse (int id);/* window_move_resize.c */void s_server_window_lines_draw_ (s_rect_t *coor, s_rect_t *rect, int c);void s_server_window_lines_draw (s_rect_t *lnew);void s_server_window_lines_clear_ (s_rect_t *told, s_rect_t *tnew);void s_server_window_lines_clear (s_rect_t *lold, s_rect_t *lnew);void s_server_window_while (s_rect_t *move, int flag);void s_server_window_finish (int id, s_rect_t *move);void s_server_window_move (s_window_t *window);void s_server_window_resize_up (s_window_t *window);void s_server_window_resize_up_left (s_window_t *window);void s_server_window_resize_left (s_window_t *window);void s_server_window_resize_down_left (s_window_t *window);void s_server_window_resize_down (s_window_t *window);void s_server_window_resize_down_right (s_window_t *window);void s_server_window_resize_right (s_window_t *window);void s_server_window_resize_up_right (s_window_t *window);/* theme.c */void s_server_theme_init (void);void s_server_theme_set (char *name);void s_server_theme_uninit (void);#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?