| /* Public Domain Curses */ |
| |
| /* $Id: pdcx11.h,v 1.64 2008/07/14 04:24:52 wmcbrine Exp $ */ |
| |
| #include <curspriv.h> |
| |
| #ifdef HAVE_UNISTD_H |
| # include <unistd.h> |
| #endif |
| |
| #include <signal.h> |
| #include <ctype.h> |
| #include <pwd.h> |
| |
| #include <sys/types.h> |
| #include <sys/socket.h> |
| #ifdef HAVE_FCNTL_H |
| # include <fcntl.h> |
| #endif |
| #ifdef HAVE_SYS_SELECT_H |
| # include <sys/select.h> /* AIX needs this for FD_ZERO etc macros */ |
| #endif |
| #include <sys/ipc.h> |
| #include <sys/shm.h> |
| |
| #ifdef TIME_WITH_SYS_TIME |
| # include <sys/time.h> |
| # include <time.h> |
| #else |
| # ifdef HAVE_SYS_TIME_H |
| # include <sys/time.h> |
| # else |
| # include <time.h> |
| # endif |
| #endif |
| |
| #include <Intrinsic.h> |
| #include <StringDefs.h> |
| #include <Shell.h> |
| |
| #ifdef USE_XAW3D |
| # include <Xaw3d/Box.h> |
| # include <Xaw3d/Scrollbar.h> |
| #elif defined(USE_NEXTAW) |
| # include <neXtaw/Box.h> |
| # include <neXtaw/Scrollbar.h> |
| #else |
| # include <Xaw/Box.h> |
| # include <Xaw/Scrollbar.h> |
| #endif |
| #include "x11/ScrollBox.h" |
| |
| #include "Xmu/StdSel.h" |
| #include "Xmu/Atoms.h" |
| |
| #include <keysym.h> |
| #include <Xatom.h> |
| |
| #define XCURSCR_Y_SIZE (XCursesLINES * XCursesCOLS * sizeof(chtype)) |
| #define XCURSCR_FLAG_SIZE (XCursesLINES * sizeof(int)) |
| #define XCURSCR_START_SIZE (XCursesLINES * sizeof(int)) |
| #define XCURSCR_LENGTH_SIZE (XCursesLINES * sizeof(int)) |
| #define XCURSCR_ATRTAB_SIZE (PDC_COLOR_PAIRS * 2 * sizeof(short)) |
| #define XCURSCR_SIZE (XCURSCR_FLAG_SIZE + XCURSCR_START_SIZE + \ |
| XCURSCR_LENGTH_SIZE + XCURSCR_Y_SIZE + XCURSCR_ATRTAB_SIZE + \ |
| sizeof(XColor)) |
| |
| #define XCURSCR_Y_OFF(y) ((y) * XCursesCOLS * sizeof(chtype)) |
| #define XCURSCR_FLAG_OFF (XCURSCR_Y_OFF(0) + XCURSCR_Y_SIZE) |
| #define XCURSCR_START_OFF (XCURSCR_FLAG_OFF + XCURSCR_FLAG_SIZE) |
| #define XCURSCR_LENGTH_OFF (XCURSCR_START_OFF + XCURSCR_START_SIZE) |
| #define XCURSCR_ATRTAB_OFF (XCURSCR_LENGTH_OFF + XCURSCR_LENGTH_SIZE) |
| #define XCURSCR_XCOLOR_OFF (XCURSCR_ATRTAB_OFF + XCURSCR_ATRTAB_SIZE) |
| |
| typedef struct |
| { |
| int lines; |
| int cols; |
| Pixel cursorColor; |
| Pixel colorBlack; |
| Pixel colorRed; |
| Pixel colorGreen; |
| Pixel colorYellow; |
| Pixel colorBlue; |
| Pixel colorMagenta; |
| Pixel colorCyan; |
| Pixel colorWhite; |
| Pixel colorBoldBlack; |
| Pixel colorBoldRed; |
| Pixel colorBoldGreen; |
| Pixel colorBoldYellow; |
| Pixel colorBoldBlue; |
| Pixel colorBoldMagenta; |
| Pixel colorBoldCyan; |
| Pixel colorBoldWhite; |
| Pixel pointerForeColor; |
| Pixel pointerBackColor; |
| XFontStruct *normalFont; |
| XFontStruct *italicFont; |
| char *bitmap; |
| #ifdef HAVE_XPM_H |
| char *pixmap; |
| #endif |
| char *composeKey; |
| Cursor pointer; |
| int shmmin; |
| int borderWidth; |
| int borderColor; |
| int clickPeriod; |
| int doubleClickPeriod; |
| int scrollbarWidth; |
| int cursorBlinkRate; |
| char *textCursor; |
| } XCursesAppData; |
| |
| extern XCursesAppData xc_app_data; |
| |
| #define XCURSESSHMMIN xc_app_data.shmmin |
| |
| #define XCLOGMSG (XCursesProcess ? " X" : "CURSES") |
| |
| void XC_get_line_lock(int); |
| void XC_release_line_lock(int); |
| |
| int PDC_display_cursor(int, int, int, int, int); |
| |
| void XCursesExitCursesProcess(int, char *); |
| int XCursesInstruct(int); |
| int XCursesInstructAndWait(int); |
| int XCursesInitscr(int, char **); |
| |
| int XC_write_socket(int, const void *, int); |
| int XC_read_socket(int, void *, int); |
| int XC_write_display_socket_int(int); |
| |
| int XCursesSetupX(int argc, char *argv[]); |
| RETSIGTYPE XCursesSigwinchHandler(int signo); |
| |
| #ifdef _HPUX_SOURCE |
| # define FD_SET_CAST int * |
| #else |
| # define FD_SET_CAST fd_set * |
| #endif |
| |
| extern fd_set xc_readfds; |
| |
| extern unsigned char *Xcurscr; |
| extern int XCursesProcess; |
| extern int shmidSP; |
| extern int shmid_Xcurscr; |
| extern int shmkeySP; |
| extern int shmkey_Xcurscr; |
| extern int xc_otherpid; |
| extern int XCursesLINES; |
| extern int XCursesCOLS; |
| extern int xc_display_sock; |
| extern int xc_key_sock; |
| extern int xc_display_sockets[2]; |
| extern int xc_key_sockets[2]; |
| extern int xc_exit_sock; |
| |
| typedef RETSIGTYPE (*signal_handler)(); |
| |
| signal_handler XCursesSetSignal(int, signal_handler); |
| |
| #ifdef PDCDEBUG |
| void XC_say(const char *msg); |
| # define XC_LOG(x) XC_say x |
| #else |
| # define XC_LOG(x) |
| #endif |
| |
| #ifdef MOUSE_DEBUG |
| # define MOUSE_LOG(x) printf x |
| #else |
| # define MOUSE_LOG(x) |
| #endif |
| |
| enum |
| { |
| CURSES_CLEAR_SELECTION, CURSES_DISPLAY_CURSOR, CURSES_SET_SELECTION, |
| CURSES_GET_SELECTION, CURSES_TITLE, CURSES_REFRESH_SCROLLBAR, |
| CURSES_RESIZE, CURSES_BELL, CURSES_CONTINUE, CURSES_CURSOR, |
| CURSES_CHILD, CURSES_REFRESH, CURSES_GET_COLOR, CURSES_SET_COLOR, |
| CURSES_EXIT |
| }; |
| |
| extern short *xc_atrtab; |