| #ifndef PTYCON_BRIDGE_IMPL_H |
| #define PTYCON_BRIDGE_IMPL_H |
| |
| #include <psxtypes/psxtypes.h> |
| #include <ntcon/ntcon.h> |
| |
| enum ptyc_ctrl_state { |
| PTYC_CTRL_STATE_ESI, |
| PTYC_CTRL_STATE_PARAM_HANDLERS, |
| PTYC_CTRL_STATE_COMMAND_HANDLERS, |
| PTYC_CTRL_STATE_CAP |
| }; |
| |
| #define PTYC_BUFFER_ELEMENTS 0x8000 |
| #define PTYC_RAW_EVENTS 0x400 |
| #define PTYC_CTRL_PARAMS 0x20 |
| |
| #define PTYC_ESI_ARRAY_SIZE 0x5F |
| #define PTYC_CSI_ARRAY_SIZE 0x6F |
| #define PTYC_SGR_ARRAY_SIZE 0x6D |
| |
| |
| struct ptyc_term_data { |
| uintptr_t in [PTYC_BUFFER_ELEMENTS/sizeof(uintptr_t)]; |
| wchar16_t out [PTYC_BUFFER_ELEMENTS]; |
| wchar16_t screen [PTYC_BUFFER_ELEMENTS]; |
| }; |
| |
| struct ptyc_term_input { |
| nt_input_record events [PTYC_RAW_EVENTS]; |
| unsigned char stream [PTYC_RAW_EVENTS*4]; |
| }; |
| |
| struct ptyc_vkcode { |
| const unsigned char * const mbstr; |
| const uint16_t mblen; |
| }; |
| |
| struct ptyc_term_ctx; |
| |
| typedef void * __fastcall ptyc_term_handler (struct ptyc_term_ctx *); |
| |
| struct ptyc_term_ctx { |
| void * hin; |
| void * hout; |
| wchar16_t * wch_pty; |
| wchar16_t * wch_con; |
| unsigned char * ctrl; |
| uint32_t ctrl_cap; |
| uint32_t * ctrl_mark; |
| uint32_t ctrl_state; |
| uint32_t * ctrl_param; |
| uint32_t ctrl_params[PTYC_CTRL_PARAMS]; |
| ptyc_term_handler * handler; |
| ptyc_term_handler * char_handler; |
| ptyc_term_handler * ctrl_handler; |
| ptyc_term_handler * const * ctrl_handlers[PTYC_CTRL_STATE_CAP]; |
| ptyc_term_handler * ctrl_command; |
| uint64_t drvflags; |
| uint16_t foreground; |
| uint16_t background; |
| nt_coord screen_size; |
| nt_coord window_size; |
| nt_console_screen_buffer_info screen_info; |
| nt_console_cursor_info cursor_info; |
| struct ptyc_term_data data; |
| struct ptyc_term_input input; |
| }; |
| |
| extern ptyc_term_handler * const ptyc_esi_handlers[]; |
| extern ptyc_term_handler * const ptyc_cmd_handlers[]; |
| extern ptyc_term_handler * const ptyc_csi_handlers[]; |
| extern ptyc_term_handler * const ptyc_sgr_handlers[]; |
| |
| #endif |