home *** CD-ROM | disk | FTP | other *** search
- /* Copyright (c) 1987 Bellcore
- * All Rights Reserved
- * Permission is granted to copy or use this program, EXCEPT that it
- * may not be sold for profit, the copyright notice must be reproduced
- * on copies, and credit should be given to Bellcore where it is due.
- * BELLCORE MAKES NO WARRANTY AND ACCEPTS NO LIABILITY FOR THIS PROGRAM.
- */
- /* $Header: term.h,v 4.6 88/08/18 10:17:05 sau Exp $
- $Source: /tmp/mgrsrc/lib/RCS/term.h,v $
- */
- static char h_term_[] = "$Source: /tmp/mgrsrc/lib/RCS/term.h,v $$Revision: 4.6 $";
-
- /* macros for writing to mgr terminal emulator */
-
- #ifndef _TERM_INCL
- #define _TERM_INCL
-
- #include "window.h"
-
- #ifndef stderr
- #include <stdio.h>
- #endif
-
- #ifndef ECHO
- #include <sgtty.h>
- #endif
-
- #define TTYMAX 10 /* stack size for ttyset() */
-
- #define M_FLUSH 0x1 /* autoflush output after each write */
- #define M_DEBUG 0x2 /* use stderr instead of /dev/tty mgr i/o */
- #define M_MODEOK 0x4 /* assume tty modes are always ok */
-
- #ifndef M_DEVICEIN
- #define M_DEVICEIN "/dev/tty"
- #endif
-
- #ifndef M_DEVICEOUT
- #define M_DEVICEOUT "/dev/tty"
- #endif
-
-
- #define m_flush() fflush(m_termout)
-
- #define BTWN(a,x,b) \
- ((x)<(a)?a:(x)>(b)?b:x)
- #define LIMIT(x) BTWN(0,x,1152)
-
- #ifndef M_NOFLUSH
- #define _m_flsh ,(m_flags&M_FLUSH?m_flush():m_flags)
- #else
- #define _m_flsh
- #endif
-
- /* vi-like stuff */
-
- #define m_addline() \
- (fprintf(m_termout,"%c%c",m_escchar,E_ADDLINE)_m_flsh)
-
- #define m_addlines(n) \
- (fprintf(m_termout,"%c%d%c",m_escchar,n,E_ADDLINE)_m_flsh)
-
- #define m_addchar() \
- (fprintf(m_termout,"%c%c",m_escchar,E_ADDCHAR)_m_flsh)
-
- #define m_addchars(n) \
- (fprintf(m_termout,"%c%d%c",m_escchar,n,E_ADDCHAR)_m_flsh)
-
- #define m_deleteline() \
- (fprintf(m_termout,"%c%c",m_escchar,E_DELETELINE)_m_flsh)
-
- #define m_deletelines(n) \
- (fprintf(m_termout,"%c%d%c",m_escchar,n,E_DELETELINE)_m_flsh)
-
- #define m_deletechar() \
- (fprintf(m_termout,"%c%c",m_escchar,E_DELETECHAR)_m_flsh)
-
- #define m_deletechars(n) \
- (fprintf(m_termout,"%c%d%c",m_escchar,n,E_DELETECHAR)_m_flsh)
-
- #define m_standend() \
- (fprintf(m_termout,"%c%c",m_escchar,E_STANDEND)_m_flsh)
-
- #define m_standout() \
- (fprintf(m_termout,"%c%c",m_escchar,E_STANDOUT)_m_flsh)
-
- #define m_bell() \
- (fprintf(m_termout,"\007")_m_flsh)
-
- #define m_setcursor(n) \
- (fprintf(m_termout,"%c%d%c",m_escchar,n,E_SETCURSOR)_m_flsh)
-
- /* lines */
-
- /*
- #define m_line(x0,y0,x1,y1) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar, \
- LIMIT(x0),LIMIT(y0),LIMIT(x1),LIMIT(y1),E_LINE)_m_flsh)
- */
-
- #define m_line(x0,y0,x1,y1) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar, \
- x0,y0,x1,y1,E_LINE)_m_flsh)
-
- #define m_lineto(to,x0,y0,x1,y1) \
- (fprintf(m_termout,"%c%d,%d,%d,%d,%d%c",m_escchar, \
- x0,y0,x1,y1,to,E_LINE)_m_flsh)
-
- #define m_draw(x,y) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar, \
- LIMIT(x),LIMIT(y),E_LINE)_m_flsh)
-
- #define m_fastdraw(x,y,count,buff) \
- (fprintf(m_termout,"%c%d,%d,%d%c",m_escchar, \
- LIMIT(x),LIMIT(y),count,E_GRUNCH), \
- fwrite(buff,1,count,m_termout)_m_flsh)
-
- #define m_rfastdraw(count,buff) \
- (fprintf(m_termout,"%c%d%c",m_escchar, \
- count,E_GRUNCH), \
- fwrite(buff,1,count,m_termout)_m_flsh)
-
- #define m_aligntext() \
- (fprintf(m_termout,"%c%c",m_escchar, \
- E_LINE)_m_flsh)
-
- #define m_gotext() \
- (fprintf(m_termout,"%c%c",m_escchar, \
- E_GO)_m_flsh)
-
- #define m_go(x,y) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar, \
- LIMIT(x),LIMIT(y),E_GO)_m_flsh)
-
- /* bitblits */
-
- #define m_clear() \
- (fprintf(m_termout,"%c",C_FF)_m_flsh)
-
- #define m_func(func)\
- (fprintf(m_termout,"%c%d%c",m_escchar,func,E_BITBLT)_m_flsh)
-
- #define m_bitwrite(x,y,w,h) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar,x,y,w,h,E_BITBLT)_m_flsh)
-
- #define m_bitwriteto(x,y,w,h,to) \
- (fprintf(m_termout,"%c%d,%d,%d,%d,%d%c", \
- m_escchar,x,y,w,h,to,E_BITBLT)_m_flsh)
-
- #define m_bitcopy(xd,yd,w,h,xs,ys) \
- (fprintf(m_termout,"%c%d,%d,%d,%d,%d,%d%c", \
- m_escchar,xd,yd,w,h,xs,ys,E_BITBLT)_m_flsh)
-
- #define m_bitcopyto(xd,yd,w,h,xs,ys,to,from) \
- (fprintf(m_termout,"%c%d,%d,%d,%d,%d,%d,%d,%d%c", \
- m_escchar,xd,yd,w,h,xs,ys,to,from,E_BITBLT)_m_flsh)
-
- #define m_bitld(w,h,x,y,size) \
- (fprintf(m_termout,"%c%d,%d,%d,%d,%d%c",\
- m_escchar,w,h,x,y,size,E_BITLOAD),m_flush())
-
- #define m_bitldto(w,h,x,y,to,size) \
- (fprintf(m_termout,"%c%d,%d,%d,%d,%d,%d%c",\
- m_escchar,w,h,x,y,to,size,E_BITLOAD),m_flush())
-
- #define m_bitdestroy(n) \
- (fprintf(m_termout,"%c%d%c",\
- m_escchar,n,E_BITCRT),m_flush())
-
- #define m_bitcreate(n,w,h) \
- (fprintf(m_termout,"%c%d,%d,%d%c",\
- m_escchar,n,w,h,E_BITCRT),m_flush())
-
- #define m_bitget(from,size,offset) \
- (fprintf(m_termout,"%c%d,%d,%d%c",\
- m_escchar,from,size,offset,E_BITGET),m_flush())
-
- #define m_othersave(id,sub,name) \
- (fprintf(m_termout,"%c%d,%d,%d%c%s",\
- m_escchar,id,sub,strlen(name),E_SMAP,name)_m_flsh)
-
- #define m_windowsave(name) \
- (fprintf(m_termout,"%c%d%c%s",\
- m_escchar,strlen(name),E_SMAP,name)_m_flsh)
-
- #define m_bitsave(from,name) \
- (fprintf(m_termout,"%c%d,%d%c%s",\
- m_escchar,from,strlen(name),E_SMAP,name)_m_flsh)
-
- #define m_bitfromfile(to,name) \
- (fprintf(m_termout,"%c%d,%d%c%s",\
- m_escchar,to,strlen(name),E_GMAP,name)_m_flsh)
-
- #define m_highlight(x,y,w,h) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c",\
- m_escchar,x,y,w,h,E_BLEEP),m_flush())
-
- #define m_stringto(to,x,y,text) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c%s",\
- m_escchar,to,x,y,strlen(text),E_STRING,text)_m_flsh)
-
- /* other graphic functions */
-
- #define m_circle(x,y,r) \
- (fprintf(m_termout,"%c%d,%d,%d%c",m_escchar, \
- LIMIT(x),LIMIT(y),LIMIT(r),E_CIRCLE)_m_flsh)
-
- #define m_ellipse(x,y,r1,r2) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar, \
- LIMIT(x),LIMIT(y),LIMIT(r1),LIMIT(r2),E_CIRCLE)_m_flsh)
-
- #define m_arc(x,y,x1,y1,x2,y2) \
- (fprintf(m_termout,"%c%d,%d,%d,%d,%d,%d%c",m_escchar, \
- LIMIT(x),LIMIT(y),LIMIT(x1),LIMIT(y1),LIMIT(x2),LIMIT(y2), \
- E_CIRCLE)_m_flsh)
-
- #define m_ellipseto(to,x,y,r1,r2) \
- (fprintf(m_termout,"%c%d,%d,%d,%d,%d%c",m_escchar, \
- LIMIT(x),LIMIT(y),LIMIT(r1),LIMIT(r2),to,E_CIRCLE)_m_flsh)
-
- #define m_rcircle(r) \
- (fprintf(m_termout,"%c%d%c",m_escchar, \
- LIMIT(r),E_CIRCLE)_m_flsh)
-
- #define m_rellipse(r1,r2) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar, \
- LIMIT(r1),LIMIT(r2),E_CIRCLE)_m_flsh)
-
-
- #define m_movemouse(x,y) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,x,y,E_MOUSE)_m_flsh)
-
- #define m_movecursor(x,y) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,x,y,E_MOVE)_m_flsh)
-
- #define m_move(col,row) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,col,row,E_CUP)_m_flsh)
-
- #define m_moveprint(x,y,str) \
- (fprintf(m_termout,"%c%d,%d%c%s",m_escchar,x,y,E_MOVE,str)_m_flsh)
-
- #define m_incr(x) \
- (fprintf(m_termout,"%c%d%c",m_escchar,x,E_MOVE)_m_flsh)
-
- #define m_cleareol() \
- (fprintf(m_termout,"%c%c",m_escchar,E_CLEAREOL)_m_flsh)
-
- #define m_cleareos() \
- (fprintf(m_termout,"%c%c",m_escchar,E_CLEAREOS)_m_flsh)
-
- /* window manipulation */
-
- #define m_movewindow(x,y) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,x,y,E_SHAPE)_m_flsh)
-
- #define m_shapewindow(x,y,dx,dy) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar,x,y,dx,dy,E_SHAPE)_m_flsh)
-
- #define m_font(x) \
- (fprintf(m_termout,"%c%d%c",m_escchar,x,E_FONT)_m_flsh)
-
- #define m_loadfont(n,name) \
- (fprintf(m_termout,"%c%d,%d%c%s", \
- m_escchar,n,strlen(name),E_FONT,name)_m_flsh)
-
- #define m_size(cols,rows) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,cols,rows,E_SIZE)_m_flsh)
-
- #define m_sizeall(x,y,cols,rows) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c", \
- m_escchar,x,y,cols,rows,E_SIZE)_m_flsh)
-
- #define m_scrollregion(first,last) \
- (fprintf(m_termout,"%c%d,%d%c", \
- m_escchar,first,last,E_TEXTREGION)_m_flsh)
-
- #define m_textregion(x,y,wide,high) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c", \
- m_escchar,x,y,wide,high,E_TEXTREGION)_m_flsh)
-
- #define m_textreset() \
- (fprintf(m_termout,"%c%c",m_escchar,E_TEXTREGION)_m_flsh)
-
- /* window creation/ destruction */
-
- #define m_newwin(x,y,w,h) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar,x,y,w,h,E_MAKEWIN)_m_flsh)
-
- #define m_destroywin(n) \
- (fprintf(m_termout,"%c%d,0%c",m_escchar,n,E_MAKEWIN)_m_flsh)
-
- #define m_selectwin(n) \
- (fprintf(m_termout,"%c%d%c",m_escchar,n,E_MAKEWIN)_m_flsh)
-
- /* events */
-
- #define m_setevent(event,x) \
- (fprintf(m_termout,"%c%d,%d%c%s", \
- m_escchar,_mapevent(event),strlen(x),E_EVENT,x)_m_flsh)
-
- #define m_clearevent(event) \
- (fprintf(m_termout,"%c%d%c", \
- m_escchar,_mapevent(event),E_EVENT)_m_flsh)
-
- /* message passing */
-
- #define m_sendme(str) \
- (fprintf(m_termout,"%c%d%c%s", \
- m_escchar,strlen(str),E_GIMME,str)_m_flsh)
-
- #define m_sendto(pid,str) \
- (fprintf(m_termout,"%c%d,%d%c%s", \
- m_escchar,pid,strlen(str),E_SEND,str)_m_flsh)
-
- #define m_broadcast(str) \
- (fprintf(m_termout,"%c%d%c%s", \
- m_escchar,strlen(str),E_SEND,str)_m_flsh)
-
- #define m_snarf(str) \
- (fprintf(m_termout,"%c%d%c%s", \
- m_escchar,strlen(str),E_SNARF,str)_m_flsh)
-
- #define m_put() \
- (fprintf(m_termout,"%c%c", \
- m_escchar,E_PUTSNARF)_m_flsh)
-
- /* environment stacking */
-
- #define m_push(mode) \
- (m_envcount++, \
- fprintf(m_termout,"%c%d%c",m_escchar,(mode)|P_CLEAR,E_PUSH) \
- _m_flsh)
-
- #define m_pushsave(mode) \
- (m_envcount++, \
- fprintf(m_termout,"%c%d%c",m_escchar,(mode),E_PUSH)_m_flsh)
-
- #define m_pop() \
- (m_envcount?m_envcount--:0, \
- fprintf(m_termout,"%c%c",m_escchar,E_POP)_m_flsh)
-
- #define m_popall() \
- while(m_envcount--) \
- (fprintf(m_termout,"%c%c",m_escchar,E_POP)_m_flsh)
-
- /* tty mode settings */
-
- #define m_setraw() \
- m_setflags(RAW)
-
- #define m_setnoraw() \
- m_resetflags(RAW)
- #define m_unsetraw m_setnoraw /* obsolete */
-
- #define m_setecho() \
- m_setflags(ECHO)
-
- #define m_setnoecho() \
- m_resetflags(ECHO)
-
- /* other stuff */
-
- #define m_setmode(mode) \
- (fprintf(m_termout,"%c%d%c",m_escchar,mode,E_SETMODE)_m_flsh)
-
- #define m_dupkey(key) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,M_DUPKEY,key,E_SETMODE)_m_flsh)
-
- #define m_clearmode(mode) \
- (fprintf(m_termout,"%c%d%c",m_escchar,mode,E_CLEARMODE)_m_flsh)
-
- #define m_getinfo(x) \
- (fprintf(m_termout,"%c%d%c",m_escchar,x,E_GETINFO),m_flush())
-
- #define m_whatsat(x,y) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,x,y,E_GETINFO),m_flush())
-
- #define m_get()\
- (m_flush(),fgets(m_linebuf,sizeof(m_linebuf),m_termin))
-
- #define m_getchar()\
- (getc(m_termin))
-
- #define m_gets(buff)\
- (m_flush(),fgets(buff,sizeof(buff),m_termin))
-
- #define m_putchar(c) \
- (putc(c,m_termout)_m_flsh)
-
- #define m_printstr(str) \
- (fprintf(m_termout,"%s",str)_m_flsh)
-
- #define m_setesc(x) \
- (m_escchar = (x))
-
- #define m_resetesc() \
- (m_escchar = ESC)
-
- #define m_sleep() \
- (fprintf(m_termout,"%c%c",m_escchar,E_NULL)_m_flsh)
-
- /* menu stuff */
-
- #ifndef M_DELIM
- #define M_DELIM '\005' /* menu delimiter character */
- #endif
-
- #define m_selectmenu(n) \
- (fprintf(m_termout,"%c%d%c",m_escchar,n,E_MENU)_m_flsh)
-
- #define m_selectmenu2(n) \
- (fprintf(m_termout,"%c-%d%c",m_escchar,n,E_MENU)_m_flsh)
-
- #define m_nomenu() \
- (fprintf(m_termout,"%c%d%c",m_escchar,999,E_MENU)_m_flsh)
-
- #define m_nomenu2() \
- (fprintf(m_termout,"%c-%d%c",m_escchar,999,E_MENU)_m_flsh)
-
- #define m_loadmenu(n,str) \
- (fprintf(m_termout,"%c%d,%d%c%s",m_escchar,n,strlen(str),E_MENU,str)_m_flsh)
-
- #define m_clearmenu(n) \
- (fprintf(m_termout,"%c%d,0%c",m_escchar,n,E_MENU)_m_flsh)
-
- #define m_linkmenu(parent,item,child,flags) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c", \
- m_escchar,parent,item,child,flags,E_MENU)_m_flsh)
-
- #define m_unlinkmenu(parent,item) \
- (fprintf(m_termout,"%c%d,%d,%d,%c", \
- m_escchar,parent,item,-1,E_MENU)_m_flsh)
-
- #define m_pagemenu(parent,child) \
- (fprintf(m_termout,"%c%d,%d,%d,%c", \
- m_escchar,parent,-1,child,E_MENU)_m_flsh)
-
- #define m_unpagemenu(parent) \
- (fprintf(m_termout,"%c%d,%d,%d,%c", \
- m_escchar,parent,-1,-1,E_MENU)_m_flsh)
-
- /* temporary menu stuff */
-
- #define m_menuitem(menu,item) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,menu,item,E_FOO)_m_flsh)
-
- #define m_menuerase(menu) \
- (fprintf(m_termout,"%c%d%c",m_escchar,menu,E_FOO)_m_flsh)
-
- #define m_menushow(x,y,menu) \
- (fprintf(m_termout,"%c%d,%d,%d%c",m_escchar,x,y,menu,E_FOO)_m_flsh)
-
- #define m_menubar(x,y,menu,item) \
- (fprintf(m_termout,"%c%d,%d,%d,%d%c",m_escchar,x,y,menu,item,E_FOO)_m_flsh)
-
- /* temporary relative character motion */
-
- #define m_right(tenths) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,tenths,10,E_RIGHT)_m_flsh)
-
- #define m_left(tenths) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,tenths,-10,E_RIGHT)_m_flsh)
-
- #define m_up(tenths) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,tenths,10,E_UP)_m_flsh)
-
- #define m_down(tenths) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,tenths,10,E_DOWN)_m_flsh)
-
- /* color stuff */
-
- #define m_fcolor(color) \
- (fprintf(m_termout,"%c%d%c",m_escchar,color,E_FCOLOR)_m_flsh)
- #define m_bcolor(color) \
- (fprintf(m_termout,"%c%d%c",m_escchar,color,E_BCOLOR)_m_flsh)
- #define m_linecolor(op,color) \
- (fprintf(m_termout,"%c%d,%d%c",m_escchar,op,color,E_BITBLT)_m_flsh)
-
- #define _mapevent(z) ((z)==3||(z)==4?2-(z):z)
-
- /* events */
-
- #define BUTTON_1 1 /* end button depressed */
- #define BUTTON_2 2 /* middle button depressed */
- #define BUTTON_1U 3 /* end button released */
- #define BUTTON_2U 4 /* middle button released */
- #define RESHAPE 5 /* window was reshaped */
- #define RESHAPED 5 /* window was reshaped */
- #define REDRAW 6 /* screen was redrawn */
- #define REDRAWN 6 /* screen was redrawn */
- #define ACTIVATE 7 /* window was activated */
- #define ACTIVATED 7 /* window was activated */
- #define DEACTIVATE 8 /* window was deactivated */
- #define DEACTIVATED 8 /* window was deactivated */
- #define COVERED 9 /* window was covered */
- #define UNCOVERED 10 /* window was uncovered */
- #define MOVE 11 /* window was moved */
- #define MOVED 11 /* window was moved */
- #define DESTROY 12 /* window was destroyed */
- #define ACCEPT 13 /* accept messages */
- #define NOTIFY 14 /* set notification */
- #define SNARFED 16 /* text was just snarfed */
- #define PASTE 17 /* text was just pasted */
-
- /* stuff for setting terminal modes */
-
- #define _m_ttyset() (m_flags&M_MODEOK?m_flags:m_ttyset())
- #define _m_ttyreset() (m_flags&M_MODEOK?m_flags:m_ttyreset())
-
- /* global variables */
-
- #define MAXLINE 256 /* maximum line size from mgr */
-
- extern FILE *m_termin; /* output to window */
- extern FILE *m_termout; /* input from mgr */
- extern int m_flags; /* setup flags */
- extern int m_envcount; /* # of stacked environments */
- extern int m_saveenvcount; /* ??? */
- extern char m_escchar; /* \033, change only for debugging */
- extern char m_menuchar; /* menu field seperator char (\005) */
- extern char m_linebuf[MAXLINE];
-
- extern int get_info(), get_size(), parse(), get_font(), is_active(), menu_load();
- extern char *m_lastline(), *get_termcap();
-
- /* structure definitions */
-
- #define MENU_SIZE(x) (sizeof(x)/sizeof(struct menu_entry))
-
- struct menu_entry {
- char *value; /* this appears in the menu */
- char *action; /* this gets sent by mgr upon selection */
- };
-
- struct window_data {
- int x,y; /* origin */
- int w,h; /* width, height */
- char tty[3]; /* name of controlling tty */
- char status; /* activation status */
- int num; /* window number (>0 for client) */
- int setid; /* window set ID */
- };
-
- struct icon {
- char *name; /* name of icon */
- int type; /* always 1 */
- int w; /* bitmap width */
- int h; /* bitmap height */
- unsigned char *data; /* data goes here */
- };
-
- #endif _TERM_INCL
-