"Fossies" - the Fresh Open Source Software Archive

Member "xterm-379/xterm.h" (14 Feb 2023, 71722 Bytes) of package /linux/misc/xterm-379.tgz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "xterm.h" see the Fossies "Dox" file reference documentation and the latest Fossies "Diffs" side-by-side code changes report: 377_vs_379.

A hint: This file contains one or more very long lines, so maybe it is better readable using the pure text view mode that shows the contents as wrapped lines within the browser window.


    1 /* $XTermId: xterm.h,v 1.926 2023/02/14 23:49:04 tom Exp $ */
    2 
    3 /*
    4  * Copyright 1999-2022,2023 by Thomas E. Dickey
    5  *
    6  *                         All Rights Reserved
    7  *
    8  * Permission is hereby granted, free of charge, to any person obtaining a
    9  * copy of this software and associated documentation files (the
   10  * "Software"), to deal in the Software without restriction, including
   11  * without limitation the rights to use, copy, modify, merge, publish,
   12  * distribute, sublicense, and/or sell copies of the Software, and to
   13  * permit persons to whom the Software is furnished to do so, subject to
   14  * the following conditions:
   15  *
   16  * The above copyright notice and this permission notice shall be included
   17  * in all copies or substantial portions of the Software.
   18  *
   19  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
   20  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
   21  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
   22  * IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
   23  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
   24  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
   25  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
   26  *
   27  * Except as contained in this notice, the name(s) of the above copyright
   28  * holders shall not be used in advertising or otherwise to promote the
   29  * sale, use or other dealings in this Software without prior written
   30  * authorization.
   31  */
   32 
   33 /*
   34  * Common/useful definitions for XTERM application.
   35  *
   36  * This is also where we put the fallback definitions if we do not build using
   37  * the configure script.
   38  */
   39 #ifndef included_xterm_h
   40 #define included_xterm_h
   41 /* *INDENT-OFF* */
   42 
   43 #ifdef HAVE_CONFIG_H
   44 #include <xtermcfg.h>
   45 #endif
   46 
   47 #undef bcopy
   48 #include <X11/Xos.h>
   49 
   50 #ifndef HAVE_CONFIG_H
   51 
   52 #define HAVE_LIB_XAW 1
   53 
   54 #ifdef CSRG_BASED
   55 /* Get definition of BSD */
   56 #include <sys/param.h>
   57 #endif
   58 
   59 #ifndef DFT_TERMTYPE
   60 #define DFT_TERMTYPE "xterm"
   61 #endif
   62 
   63 #ifndef X_NOT_POSIX
   64 #define HAVE_WAITPID 1
   65 #define HAVE_SYS_WAIT_H 1
   66 #define HAVE_UNISTD_H 1
   67 #endif
   68 
   69 #define HAVE_STDLIB_H 1
   70 
   71 #if defined(sun)
   72 /* errno is declared in <errno.h> */
   73 #else
   74 #define DECL_ERRNO 1
   75 #endif
   76 
   77 #undef DECL_PTSNAME     /* ptsname() is normally in stdlib.h */
   78 
   79 #ifndef NOPUTENV
   80 #define HAVE_PUTENV 1
   81 #endif
   82 
   83 #if defined(CSRG_BASED) || defined(__GNU__) || defined(__minix)
   84 #define USE_POSIX_TERMIOS 1
   85 #endif
   86 
   87 #ifdef __FreeBSD__
   88 #if __FreeBSD_version >= 900000
   89 #define USE_SYSV_UTMP 1
   90 #define UTMPX_FOR_UTMP 1
   91 #define HAVE_UTMP_UT_HOST 1
   92 #define HAVE_UTMP_UT_XTIME 1
   93 #define ut_name ut_user
   94 #define ut_xtime ut_tv.tv_sec
   95 #endif
   96 #endif
   97 
   98 #ifdef __NetBSD__
   99 #if __NetBSD_Version__ >= 106030000 /* 1.6C */
  100 #define BSD_UTMPX 1
  101 #define ut_xtime ut_tv.tv_sec
  102 #endif
  103 #endif
  104 
  105 #if defined(hpux) && !defined(__hpux)
  106 #define __hpux 1        /* HPUX 11.0 does not define this */
  107 #endif
  108 
  109 #if !defined(__SCO__) && (defined(SCO) || defined(sco) || defined(SCO325))
  110 #define __SCO__ 1
  111 #endif
  112 
  113 #ifdef USE_POSIX_TERMIOS
  114 #define HAVE_TERMIOS_H 1
  115 #define HAVE_TCGETATTR 1
  116 #endif
  117 
  118 #if defined(__SCO__) || defined(__UNIXWARE__) || defined(__minix)
  119 #define USE_TERMCAP 1
  120 #endif
  121 
  122 #if defined(UTMP)
  123 #define HAVE_UTMP 1
  124 #endif
  125 
  126 #if (defined(__MVS__) || defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX)) && !defined(__CYGWIN__)
  127 #define UTMPX_FOR_UTMP 1
  128 #endif
  129 
  130 #if !defined(ISC) && !defined(__QNX__)
  131 #define HAVE_UTMP_UT_HOST 1
  132 #endif
  133 
  134 #if defined(UTMPX_FOR_UTMP) && !(defined(__MVS__) || defined(__hpux) || defined(__FreeBSD__))
  135 #define HAVE_UTMP_UT_SESSION 1
  136 #endif
  137 
  138 #if !(defined(linux) && (!defined(__GLIBC__) || (__GLIBC__ < 2))) && !defined(SVR4) && !defined(__FreeBSD__)
  139 #define ut_xstatus ut_exit.e_exit
  140 #endif
  141 
  142 #if defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)))
  143 #define HAVE_UTMP_UT_XTIME 1
  144 #endif
  145 
  146 #if defined(linux) || defined(__CYGWIN__)
  147 #define USE_LASTLOG
  148 #define HAVE_LASTLOG_H
  149 #define USE_STRUCT_LASTLOG
  150 #elif defined(BSD) && (BSD >= 199103)
  151 #ifdef BSD_UTMPX
  152 #define USE_LASTLOGX
  153 #elif defined(USE_SYSV_UTMP)
  154 #else
  155 #define USE_LASTLOG
  156 #define USE_STRUCT_LASTLOG
  157 #endif
  158 #endif
  159 
  160 #if defined(__OpenBSD__)
  161 #define DEFDELETE_DEL True
  162 #define DEF_BACKARO_ERASE True
  163 #define DEF_INITIAL_ERASE True
  164 #endif
  165 
  166 #if defined(__SCO__) || defined(__UNIXWARE__)
  167 #define DEFDELETE_DEL True
  168 #define OPT_SCO_FUNC_KEYS 1
  169 #endif
  170 
  171 #if defined(__SCO__) || defined(SVR4) || defined(_POSIX_SOURCE) || defined(__QNX__) || defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || defined(__CYGWIN__)
  172 #define USE_POSIX_WAIT
  173 #endif
  174 
  175 #if defined(AIXV3) || defined(CRAY) || defined(__SCO__) || defined(SVR4) || (defined(SYSV) && defined(i386)) || defined(__MVS__) || defined(__hpux) || defined(__osf__) || defined(linux) || defined(macII) || defined(BSD_UTMPX)
  176 #define USE_SYSV_UTMP
  177 #endif
  178 
  179 #if defined(__GNU__) || defined(__MVS__) || defined(__osf__)
  180 #define USE_TTY_GROUP
  181 #endif
  182 
  183 #if defined(__CYGWIN__)
  184 #define HAVE_NCURSES_TERM_H 1
  185 #endif
  186 
  187 #ifdef __osf__
  188 #define TTY_GROUP_NAME "terminal"
  189 #endif
  190 
  191 #if defined(__MVS__)
  192 #undef ut_xstatus
  193 #define ut_name ut_user
  194 #define ut_xstatus ut_exit.ut_e_exit
  195 #define ut_xtime ut_tv.tv_sec
  196 #endif
  197 
  198 #if defined(ut_xstatus)
  199 #define HAVE_UTMP_UT_XSTATUS 1
  200 #endif
  201 
  202 #if defined(XKB)
  203 #define HAVE_XKB_BELL_EXT 1
  204 #endif
  205 
  206 #if (defined(SVR4) && !defined(__CYGWIN__)) || defined(linux) || (defined(BSD) && (BSD >= 199103))
  207 #define HAVE_POSIX_SAVED_IDS
  208 #endif
  209 
  210 #if defined(linux) || defined(__GLIBC__) || (defined(SYSV) && (defined(CRAY) || defined(macII) || defined(__hpux) || defined(__osf__) || defined(__sgi))) || !(defined(SYSV) || defined(__QNX__) || defined(VMS) || defined(__INTERIX))
  211 #define HAVE_INITGROUPS
  212 #endif
  213 
  214 #if !defined(USG) && !defined(__minix)
  215 #define HAVE_SETITIMER 1
  216 #else
  217 #define HAVE_SETITIMER 0
  218 #endif
  219 
  220 #endif /* HAVE_CONFIG_H */
  221 
  222 #ifndef HAVE_X11_DECKEYSYM_H
  223 #define HAVE_X11_DECKEYSYM_H 1
  224 #endif
  225 
  226 #ifndef HAVE_X11_SUNKEYSYM_H
  227 #define HAVE_X11_SUNKEYSYM_H 1
  228 #endif
  229 
  230 #ifndef HAVE_X11_XF86KEYSYM_H
  231 #define HAVE_X11_XF86KEYSYM_H 0
  232 #endif
  233 
  234 #if defined(HAVE_X11_EXTENSIONS_XDBE_H) && defined(HAVE_XDBESWAPBUFFERS)
  235 #define USE_DOUBLE_BUFFER 1
  236 #else
  237 #define USE_DOUBLE_BUFFER 0
  238 #endif
  239 
  240 /***====================================================================***/
  241 
  242 /* if compiling with gcc -ansi -pedantic, we must fix POSIX definitions */
  243 #if defined(SVR4) && defined(sun)
  244 #ifndef __EXTENSIONS__
  245 #define __EXTENSIONS__ 1
  246 #endif
  247 #ifndef _POSIX_C_SOURCE
  248 #define _POSIX_C_SOURCE 1
  249 #endif
  250 #endif
  251 
  252 /***====================================================================***/
  253 
  254 #ifdef HAVE_STDLIB_H
  255 #include <stdlib.h>
  256 #else
  257 extern char *calloc();
  258 extern char *getenv();
  259 extern char *malloc();
  260 extern char *realloc();
  261 extern void exit();
  262 extern void free();
  263 #endif
  264 
  265 #ifdef HAVE_UNISTD_H
  266 #include <unistd.h>
  267 #endif
  268 
  269 #ifdef HAVE_SYS_WAIT_H
  270 #include <sys/wait.h>
  271 #endif
  272 
  273 #include <errno.h>
  274 #if defined(DECL_ERRNO) && !defined(errno)
  275 extern int errno;
  276 #endif
  277 
  278 #include <X11/Xlocale.h>
  279 
  280 #ifdef HAVE_STDNORETURN_H
  281 #include <stdnoreturn.h>
  282 #undef GCC_NORETURN
  283 #define GCC_NORETURN STDC_NORETURN
  284 #endif
  285 
  286 /*
  287  * FIXME:  Toggling logging from xterm hangs under Linux 2.0.29 with libc5 if
  288  * we use 'waitpid()', while 'wait()' seems to work properly.
  289  */
  290 #ifdef linux
  291 #undef HAVE_WAITPID
  292 #endif
  293 
  294 #ifndef OPT_WIDE_CHARS
  295 #define OPT_WIDE_CHARS 0
  296 #endif
  297 
  298 #if OPT_WIDE_CHARS
  299 #define HIDDEN_CHAR 0xffff
  300 #endif
  301 
  302 /***====================================================================***/
  303 
  304 #define PROTO_XT_ACTIONS_ARGS \
  305     (Widget w, XEvent *event, String *params, Cardinal *num_params)
  306 
  307 #define PROTO_XT_CALLBACK_ARGS \
  308     (Widget gw, XtPointer closure, XtPointer data)
  309 
  310 #define PROTO_XT_CVT_SELECT_ARGS \
  311     (Widget w, Atom *selection, Atom *target, Atom *type, XtPointer *value, unsigned long *length, int *format)
  312 
  313 #define PROTO_XT_EV_HANDLER_ARGS \
  314     (Widget w, XtPointer closure, XEvent *event, Boolean *cont)
  315 
  316 #define PROTO_XT_SEL_CB_ARGS \
  317     (Widget w, XtPointer client_data, Atom *selection, Atom *type, XtPointer value, unsigned long *length, int *format)
  318 
  319 #include <ptyx.h>
  320 
  321 /***====================================================================***/
  322 
  323 #ifndef GCC_PRINTFLIKE
  324 #ifdef _X_ATTRIBUTE_PRINTF
  325 #define GCC_PRINTFLIKE(f,n) _X_ATTRIBUTE_PRINTF(f,n)
  326 #else
  327 #define GCC_PRINTFLIKE(f,n) /* nothing */
  328 #endif
  329 #endif
  330 
  331 #ifndef GCC_UNUSED
  332 #ifdef _X_UNUSED
  333 #define GCC_UNUSED      _X_UNUSED
  334 #else
  335 #define GCC_UNUSED      /* nothing */
  336 #endif
  337 #endif
  338 
  339 #ifndef GCC_NORETURN
  340 #ifdef _X_NORETURN
  341 #define GCC_NORETURN        _X_NORETURN
  342 #else
  343 #define GCC_NORETURN        /* nothing */
  344 #endif
  345 #endif
  346 
  347 /***====================================================================***/
  348 
  349 #if defined(__GNUC__) && defined(_FORTIFY_SOURCE)
  350 #define USE_IGNORE_RC
  351 #define IGNORE_RC(func) ignore_unused = (int) func
  352 #else
  353 #define IGNORE_RC(func) (void) func
  354 #endif /* gcc workarounds */
  355 #if (XtSpecificationRelease >= 6) && !defined(NO_XPOLL_H) && !defined(sun)
  356 #include <X11/Xpoll.h>
  357 #define USE_XPOLL_H 1
  358 #else
  359 #define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval *)t)
  360 #define XFD_COPYSET(src,dst) memcpy((dst)->fds_bits, (src)->fds_bits, sizeof(fd_set))
  361 #if defined(__MVS__) && !defined(TIME_WITH_SYS_TIME)
  362 #define TIME_WITH_SYS_TIME
  363 #endif
  364 #endif
  365 
  366 #ifdef TIME_WITH_SYS_TIME
  367 # include <sys/time.h>
  368 # include <time.h>
  369 #else
  370 # ifdef HAVE_SYS_TIME_H
  371 #  include <sys/time.h>
  372 # else
  373 #  include <time.h>
  374 # endif
  375 #endif
  376 
  377 /* these may be needed for sig_atomic_t */
  378 #include <sys/types.h>
  379 #include <signal.h>
  380 
  381 #ifdef USE_SYS_SELECT_H
  382 
  383 #if defined(USE_XPOLL_H) && defined(AIXV3) && defined(NFDBITS)
  384 #undef NFDBITS          /* conflict between X11/Xpoll.h and sys/select.h */
  385 #endif
  386 
  387 #include <sys/select.h>
  388 
  389 #endif /* USE_SYS_SELECT_H */
  390 
  391 #include <setjmp.h>
  392 
  393 #if !defined(VMS) && !(defined(linux) && defined(__USE_GNU)) && !defined(__hpux) && !defined(_ALL_SOURCE) && !defined(__osf__)
  394 extern char **environ;
  395 #endif
  396 
  397 #ifndef _Xconst
  398 #define _Xconst const       /* Solaris 7 workaround */
  399 #endif /* _Xconst */
  400 
  401 #define XK_Fn(n)    (XK_F1 + (n) - 1)
  402 
  403 #define Maybe       2
  404 
  405 #define ALLOC_STRING(name) \
  406     if (name != 0) \
  407         name = x_strdup(name)
  408 #define FREE_STRING(name) \
  409         free_string(name)
  410 
  411 /* strftime format and length of the result */
  412 #define FMT_TIMESTAMP ".%Y.%m.%d.%H.%M.%S"
  413 #define LEN_TIMESTAMP sizeof(".YYYY.MM.DD.hh.mm.ss")
  414 
  415 /***====================================================================***/
  416 
  417 #if OPT_TRACE
  418 #undef NDEBUG           /* turn on assert's */
  419 #else
  420 #ifndef NDEBUG
  421 #define NDEBUG          /* not debugging, don't do assert's */
  422 #endif
  423 #endif
  424 
  425 #include <trace.h>
  426 
  427 #if OPT_TRACE && !defined(DEBUG)
  428 #define DEBUG 1
  429 #endif
  430 
  431 #ifdef DEBUG
  432 #define if_DEBUG(code) if(debug) code
  433 #else
  434 #define if_DEBUG(code) /*nothing*/
  435 #endif
  436 
  437 #define DEBUG_MSG(text) if_DEBUG({ IGNORE_RC(write(2, text, sizeof(text) - 1)); })
  438 
  439 /***====================================================================***/
  440 
  441 #define XtNallowBoldFonts   "allowBoldFonts"
  442 #define XtNallowC1Printable "allowC1Printable"
  443 #define XtNallowColorOps    "allowColorOps"
  444 #define XtNallowFontOps     "allowFontOps"
  445 #define XtNallowMouseOps    "allowMouseOps"
  446 #define XtNallowPasteControls   "allowPasteControls"
  447 #define XtNallowScrollLock  "allowScrollLock"
  448 #define XtNallowSendEvents  "allowSendEvents"
  449 #define XtNallowTcapOps     "allowTcapOps"
  450 #define XtNallowTitleOps    "allowTitleOps"
  451 #define XtNallowWindowOps   "allowWindowOps"
  452 #define XtNaltIsNotMeta     "altIsNotMeta"
  453 #define XtNaltSendsEscape   "altSendsEscape"
  454 #define XtNalternateScroll  "alternateScroll"
  455 #define XtNalwaysBoldMode   "alwaysBoldMode"
  456 #define XtNalwaysHighlight  "alwaysHighlight"
  457 #define XtNalwaysUseMods    "alwaysUseMods"
  458 #define XtNanswerbackString "answerbackString"
  459 #define XtNappcursorDefault "appcursorDefault"
  460 #define XtNappkeypadDefault "appkeypadDefault"
  461 #define XtNassumeAllChars   "assumeAllChars"
  462 #define XtNautoWrap     "autoWrap"
  463 #define XtNautoScrollLock   "autoScrollLock"
  464 #define XtNawaitInput       "awaitInput"
  465 #define XtNbackarrowKey     "backarrowKey"
  466 #define XtNbellIsUrgent     "bellIsUrgent"
  467 #define XtNbellOnReset      "bellOnReset"
  468 #define XtNbellSuppressTime "bellSuppressTime"
  469 #define XtNboldColors       "boldColors"
  470 #define XtNboldFont     "boldFont"
  471 #define XtNboldMode     "boldMode"
  472 #define XtNbrokenLinuxOSC   "brokenLinuxOSC"
  473 #define XtNbrokenSelections "brokenSelections"
  474 #define XtNbrokenStringTerm "brokenStringTerm"
  475 #define XtNbuffered     "buffered"
  476 #define XtNbufferedFPS      "bufferedFPS"
  477 #define XtNc132         "c132"
  478 #define XtNcacheDoublesize  "cacheDoublesize"
  479 #define XtNcdXtraScroll     "cdXtraScroll"
  480 #define XtNcharClass        "charClass"
  481 #define XtNchecksumExtension    "checksumExtension"
  482 #define XtNcjkWidth     "cjkWidth"
  483 #define XtNcolorAttrMode    "colorAttrMode"
  484 #define XtNcolorBDMode      "colorBDMode"
  485 #define XtNcolorBLMode      "colorBLMode"
  486 #define XtNcolorITMode      "colorITMode"
  487 #define XtNcolorInnerBorder "colorInnerBorder"
  488 #define XtNcolorMode        "colorMode"
  489 #define XtNcolorRVMode      "colorRVMode"
  490 #define XtNcolorULMode      "colorULMode"
  491 #define XtNcombiningChars   "combiningChars"
  492 #define XtNctrlFKeys        "ctrlFKeys"
  493 #define XtNcurses       "curses"
  494 #define XtNcursorBar        "cursorBar"
  495 #define XtNcursorBlink      "cursorBlink"
  496 #define XtNcursorBlinkXOR   "cursorBlinkXOR"
  497 #define XtNcursorColor      "cursorColor"
  498 #define XtNcursorOffTime    "cursorOffTime"
  499 #define XtNcursorOnTime     "cursorOnTime"
  500 #define XtNcursorUnderLine  "cursorUnderLine"
  501 #define XtNcutNewline       "cutNewline"
  502 #define XtNcutToBeginningOfLine "cutToBeginningOfLine"
  503 #define XtNdecGraphicsID    "decGraphicsID"
  504 #define XtNdecTerminalID    "decTerminalID"
  505 #define XtNdefaultString    "defaultString"
  506 #define XtNdeleteIsDEL      "deleteIsDEL"
  507 #define XtNdirectColor      "directColor"
  508 #define XtNdisallowedColorOps   "disallowedColorOps"
  509 #define XtNdisallowedFontOps    "disallowedFontOps"
  510 #define XtNdisallowedMouseOps   "disallowedMouseOps"
  511 #define XtNdisallowedPasteControls "disallowedPasteControls"
  512 #define XtNdisallowedTcapOps    "disallowedTcapOps"
  513 #define XtNdisallowedWindowOps  "disallowedWindowOps"
  514 #define XtNdynamicColors    "dynamicColors"
  515 #define XtNeightBitControl  "eightBitControl"
  516 #define XtNeightBitInput    "eightBitInput"
  517 #define XtNeightBitMeta     "eightBitMeta"
  518 #define XtNeightBitOutput   "eightBitOutput"
  519 #define XtNeightBitSelectTypes  "eightBitSelectTypes"
  520 #define XtNeraseSavedLines  "eraseSavedLines"
  521 #define XtNfaceName     "faceName"
  522 #define XtNfaceNameDoublesize   "faceNameDoublesize"
  523 #define XtNfaceSize     "faceSize"
  524 #define XtNfaintIsRelative  "faintIsRelative"
  525 #define XtNfastScroll       "fastScroll"
  526 #define XtNfont1        "font1"
  527 #define XtNfont2        "font2"
  528 #define XtNfont3        "font3"
  529 #define XtNfont4        "font4"
  530 #define XtNfont5        "font5"
  531 #define XtNfont6        "font6"
  532 #define XtNfont7        "font7"
  533 #define XtNfontDoublesize   "fontDoublesize"
  534 #define XtNfontWarnings     "fontWarnings"
  535 #define XtNforceBoxChars    "forceBoxChars"
  536 #define XtNforcePackedFont  "forcePackedFont"
  537 #define XtNforceXftHeight   "forceXftHeight"
  538 #define XtNformatOtherKeys  "formatOtherKeys"
  539 #define XtNfreeBoldBox      "freeBoldBox"
  540 #define XtNfullscreen       "fullscreen"
  541 #define XtNhighlightColor   "highlightColor"
  542 #define XtNhighlightColorMode   "highlightColorMode"
  543 #define XtNhighlightReverse "highlightReverse"
  544 #define XtNhighlightSelection   "highlightSelection"
  545 #define XtNhighlightTextColor   "highlightTextColor"
  546 #define XtNhpLowerleftBugCompat "hpLowerleftBugCompat"
  547 #define XtNi18nSelections   "i18nSelections"
  548 #define XtNiconHint     "iconHint"
  549 #define XtNindicatorFormat  "indicatorFormat"
  550 #define XtNinitialFont      "initialFont"
  551 #define XtNinternalBorder   "internalBorder"
  552 #define XtNitalicULMode     "italicULMode"
  553 #define XtNjumpScroll       "jumpScroll"
  554 #define XtNkeepClipboard    "keepClipboard"
  555 #define XtNkeepSelection    "keepSelection"
  556 #define XtNkeyboardDialect  "keyboardDialect"
  557 #define XtNlimitFontsets    "limitFontsets"
  558 #define XtNlimitFontWidth   "limitFontWidth"
  559 #define XtNlimitResize      "limitResize"
  560 #define XtNlimitResponse    "limitResponse"
  561 #define XtNlocale       "locale"
  562 #define XtNlocaleFilter     "localeFilter"
  563 #define XtNlogFile      "logFile"
  564 #define XtNlogInhibit       "logInhibit"
  565 #define XtNlogging      "logging"
  566 #define XtNloginShell       "loginShell"
  567 #define XtNmarginBell       "marginBell"
  568 #define XtNmaxGraphicSize   "maxGraphicSize"
  569 #define XtNmaximized        "maximized"
  570 #define XtNmenuBar      "menuBar"   /* internal */
  571 #define XtNmenuHeight       "menuHeight"
  572 #define XtNmetaSendsEscape  "metaSendsEscape"
  573 #define XtNmkSamplePass     "mkSamplePass"
  574 #define XtNmkSampleSize     "mkSampleSize"
  575 #define XtNmkWidth      "mkWidth"
  576 #define XtNmodifyCursorKeys "modifyCursorKeys"
  577 #define XtNmodifyFunctionKeys   "modifyFunctionKeys"
  578 #define XtNmodifyKeyboard   "modifyKeyboard"
  579 #define XtNmodifyKeypadKeys "modifyKeypadKeys"
  580 #define XtNmodifyOtherKeys  "modifyOtherKeys"
  581 #define XtNmodifyStringKeys "modifyStringKeys"
  582 #define XtNmultiClickTime   "multiClickTime"
  583 #define XtNmultiScroll      "multiScroll"
  584 #define XtNnMarginBell      "nMarginBell"
  585 #define XtNnextEventDelay   "nextEventDelay"
  586 #define XtNnumColorRegisters    "numColorRegisters"
  587 #define XtNnumLock      "numLock"
  588 #define XtNoldXtermFKeys    "oldXtermFKeys"
  589 #define XtNpointerColor     "pointerColor"
  590 #define XtNpointerColorBackground "pointerColorBackground"
  591 #define XtNpointerFont      "pointerFont"
  592 #define XtNpointerMode      "pointerMode"
  593 #define XtNpointerShape     "pointerShape"
  594 #define XtNpopOnBell        "popOnBell"
  595 #define XtNprecompose       "precompose"
  596 #define XtNprintAttributes  "printAttributes"
  597 #define XtNprinterAutoClose "printerAutoClose"
  598 #define XtNprinterCommand   "printerCommand"
  599 #define XtNprinterControlMode   "printerControlMode"
  600 #define XtNprinterExtent    "printerExtent"
  601 #define XtNprinterFormFeed  "printerFormFeed"
  602 #define XtNprinterNewLine   "printerNewLine"
  603 #define XtNprivateColorRegisters "privateColorRegisters"
  604 #define XtNquietGrab        "quietGrab"
  605 #define XtNregisDefaultFont "regisDefaultFont"
  606 #define XtNregisScreenSize  "regisScreenSize"
  607 #define XtNrenderFont       "renderFont"
  608 #define XtNresizeByPixel    "resizeByPixel"
  609 #define XtNresizeGravity    "resizeGravity"
  610 #define XtNretryInputMethod "retryInputMethod"
  611 #define XtNreverseWrap      "reverseWrap"
  612 #define XtNrightScrollBar   "rightScrollBar"
  613 #define XtNsaveLines        "saveLines"
  614 #define XtNscaleHeight      "scaleHeight"
  615 #define XtNscrollBar        "scrollBar"
  616 #define XtNscrollBarBorder  "scrollBarBorder"
  617 #define XtNscrollKey        "scrollKey"
  618 #define XtNscrollLines      "scrollLines"
  619 #define XtNscrollTtyOutput  "scrollTtyOutput"
  620 #define XtNselectToClipboard    "selectToClipboard"
  621 #define XtNshiftEscape      "shiftEscape"
  622 #define XtNshiftFonts       "shiftFonts"
  623 #define XtNshowBlinkAsBold  "showBlinkAsBold"
  624 #define XtNshowMissingGlyphs    "showMissingGlyphs"
  625 #define XtNshowWrapMarks    "showWrapMarks"
  626 #define XtNsignalInhibit    "signalInhibit"
  627 #define XtNsixelScrolling   "sixelScrolling"
  628 #define XtNsixelScrollsRight    "sixelScrollsRight"
  629 #define XtNtekGeometry      "tekGeometry"
  630 #define XtNtekInhibit       "tekInhibit"
  631 #define XtNtekSmall     "tekSmall"
  632 #define XtNtekStartup       "tekStartup"
  633 #define XtNtiXtraScroll     "tiXtraScroll"
  634 #define XtNtiteInhibit      "titeInhibit"
  635 #define XtNtitleModes       "titleModes"
  636 #define XtNtoolBar      "toolBar"
  637 #define XtNtrimSelection    "trimSelection"
  638 #define XtNunderLine        "underLine"
  639 #define XtNuseBorderClipping    "useBorderClipping"
  640 #define XtNuseClipping      "useClipping"
  641 #define XtNutf8         "utf8"
  642 #define XtNutf8Fonts        "utf8Fonts"
  643 #define XtNutf8Latin1       "utf8Latin1"
  644 #define XtNutf8SelectTypes  "utf8SelectTypes"
  645 #define XtNutf8Title        "utf8Title"
  646 #define XtNutf8Weblike      "utf8Weblike"
  647 #define XtNveryBoldColors   "veryBoldColors"
  648 #define XtNvisualBell       "visualBell"
  649 #define XtNvisualBellDelay  "visualBellDelay"
  650 #define XtNvisualBellLine   "visualBellLine"
  651 #define XtNvt100Graphics    "vt100Graphics"
  652 #define XtNwideBoldFont     "wideBoldFont"
  653 #define XtNwideChars        "wideChars"
  654 #define XtNwideFont     "wideFont"
  655 #define XtNxftMaxGlyphMemory    "xftMaxGlyphMemory"
  656 #define XtNxftMaxUnrefFonts "xftMaxUnrefFonts"
  657 #define XtNxftTrackMemUsage "xftTrackMemUsage"
  658 #define XtNximFont      "ximFont"
  659 #define XtNxmcAttributes    "xmcAttributes" /* ncurses-testing */
  660 #define XtNxmcGlitch        "xmcGlitch" /* ncurses-testing */
  661 #define XtNxmcInline        "xmcInline" /* ncurses-testing */
  662 #define XtNxmcMoveSGR       "xmcMoveSGR"    /* ncurses-testing */
  663 
  664 #define XtCAllowBoldFonts   "AllowBoldFonts"
  665 #define XtCAllowC1Printable "AllowC1Printable"
  666 #define XtCAllowColorOps    "AllowColorOps"
  667 #define XtCAllowFontOps     "AllowFontOps"
  668 #define XtCAllowMouseOps    "AllowMouseOps"
  669 #define XtCAllowPasteControls   "AllowPasteControls"
  670 #define XtCAllowScrollLock  "AllowScrollLock"
  671 #define XtCAllowSendEvents  "AllowSendEvents"
  672 #define XtCAllowTcapOps     "AllowTcapOps"
  673 #define XtCAllowTitleOps    "AllowTitleOps"
  674 #define XtCAllowWindowOps   "AllowWindowOps"
  675 #define XtCAltIsNotMeta     "AltIsNotMeta"
  676 #define XtCAltSendsEscape   "AltSendsEscape"
  677 #define XtCAlwaysBoldMode   "AlwaysBoldMode"
  678 #define XtCAlwaysHighlight  "AlwaysHighlight"
  679 #define XtCAlwaysUseMods    "AlwaysUseMods"
  680 #define XtCAnswerbackString "AnswerbackString"
  681 #define XtCAppcursorDefault "AppcursorDefault"
  682 #define XtCAppkeypadDefault "AppkeypadDefault"
  683 #define XtCAssumeAllChars   "AssumeAllChars"
  684 #define XtCAutoWrap     "AutoWrap"
  685 #define XtCAutoScrollLock   "AutoScrollLock"
  686 #define XtCAwaitInput       "AwaitInput"
  687 #define XtCBackarrowKey     "BackarrowKey"
  688 #define XtCBellIsUrgent     "BellIsUrgent"
  689 #define XtCBellOnReset      "BellOnReset"
  690 #define XtCBellSuppressTime "BellSuppressTime"
  691 #define XtCBoldFont     "BoldFont"
  692 #define XtCBoldMode     "BoldMode"
  693 #define XtCBrokenLinuxOSC   "BrokenLinuxOSC"
  694 #define XtCBrokenSelections "BrokenSelections"
  695 #define XtCBrokenStringTerm "BrokenStringTerm"
  696 #define XtCBuffered     "Buffered"
  697 #define XtCBufferedFPS      "BufferedFPS"
  698 #define XtCC132         "C132"
  699 #define XtCCacheDoublesize  "CacheDoublesize"
  700 #define XtCCdXtraScroll     "CdXtraScroll"
  701 #define XtCCharClass        "CharClass"
  702 #define XtCChecksumExtension    "ChecksumExtension"
  703 #define XtCCjkWidth     "CjkWidth"
  704 #define XtCColorAttrMode    "ColorAttrMode"
  705 #define XtCColorInnerBorder "ColorInnerBorder"
  706 #define XtCColorMode        "ColorMode"
  707 #define XtCColumn       "Column"
  708 #define XtCCombiningChars   "CombiningChars"
  709 #define XtCCtrlFKeys        "CtrlFKeys"
  710 #define XtCCurses       "Curses"
  711 #define XtCCursorBar        "CursorBar"
  712 #define XtCCursorBlink      "CursorBlink"
  713 #define XtCCursorBlinkXOR   "CursorBlinkXOR"
  714 #define XtCCursorOffTime    "CursorOffTime"
  715 #define XtCCursorOnTime     "CursorOnTime"
  716 #define XtCCursorUnderLine  "CursorUnderLine"
  717 #define XtCCutNewline       "CutNewline"
  718 #define XtCCutToBeginningOfLine "CutToBeginningOfLine"
  719 #define XtCDecGraphicsID    "DecGraphicsID"
  720 #define XtCDecTerminalID    "DecTerminalID"
  721 #define XtCDefaultString    "DefaultString"
  722 #define XtCDeleteIsDEL      "DeleteIsDEL"
  723 #define XtCDirectColor      "DirectColor"
  724 #define XtCDisallowedColorOps   "DisallowedColorOps"
  725 #define XtCDisallowedFontOps    "DisallowedFontOps"
  726 #define XtCDisallowedMouseOps   "DisallowedMouseOps"
  727 #define XtCDisallowedPasteControls "DisallowedPasteControls"
  728 #define XtCDisallowedTcapOps    "DisallowedTcapOps"
  729 #define XtCDisallowedWindowOps  "DisallowedWindowOps"
  730 #define XtCDynamicColors    "DynamicColors"
  731 #define XtCEightBitControl  "EightBitControl"
  732 #define XtCEightBitInput    "EightBitInput"
  733 #define XtCEightBitMeta     "EightBitMeta"
  734 #define XtCEightBitOutput   "EightBitOutput"
  735 #define XtCEightBitSelectTypes  "EightBitSelectTypes"
  736 #define XtCEraseSavedLines  "EraseSavedLines"
  737 #define XtCFaceName     "FaceName"
  738 #define XtCFaceNameDoublesize   "FaceNameDoublesize"
  739 #define XtCFaceSize     "FaceSize"
  740 #define XtCFaintIsRelative  "FaintIsRelative"
  741 #define XtCFastScroll       "FastScroll"
  742 #define XtCFont1        "Font1"
  743 #define XtCFont2        "Font2"
  744 #define XtCFont3        "Font3"
  745 #define XtCFont4        "Font4"
  746 #define XtCFont5        "Font5"
  747 #define XtCFont6        "Font6"
  748 #define XtCFont7        "Font7"
  749 #define XtCFontDoublesize   "FontDoublesize"
  750 #define XtCFontWarnings     "FontWarnings"
  751 #define XtCForceBoxChars    "ForceBoxChars"
  752 #define XtCForcePackedFont  "ForcePackedFont"
  753 #define XtCForceXftHeight   "ForceXftHeight"
  754 #define XtCFormatOtherKeys  "FormatOtherKeys"
  755 #define XtCFreeBoldBox      "FreeBoldBox"
  756 #define XtCFullscreen       "Fullscreen"
  757 #define XtCHighlightColorMode   "HighlightColorMode"
  758 #define XtCHighlightReverse "HighlightReverse"
  759 #define XtCHighlightSelection   "HighlightSelection"
  760 #define XtCHpLowerleftBugCompat "HpLowerleftBugCompat"
  761 #define XtCI18nSelections   "I18nSelections"
  762 #define XtCIconHint     "IconHint"
  763 #define XtCIndicatorFormat  "IndicatorFormat"
  764 #define XtCInitialFont      "InitialFont"
  765 #define XtCJumpScroll       "JumpScroll"
  766 #define XtCKeepClipboard    "KeepClipboard"
  767 #define XtCKeepSelection    "KeepSelection"
  768 #define XtCKeyboardDialect  "KeyboardDialect"
  769 #define XtCLimitFontsets    "LimitFontsets"
  770 #define XtCLimitFontWidth   "LimitFontWidth"
  771 #define XtCLimitResize      "LimitResize"
  772 #define XtCLimitResponse    "LimitResponse"
  773 #define XtCLocale       "Locale"
  774 #define XtCLocaleFilter     "LocaleFilter"
  775 #define XtCLogInhibit       "LogInhibit"
  776 #define XtCLogfile      "Logfile"
  777 #define XtCLogging      "Logging"
  778 #define XtCLoginShell       "LoginShell"
  779 #define XtCMarginBell       "MarginBell"
  780 #define XtCMaxGraphicSize   "MaxGraphicSize"
  781 #define XtCMaximized        "Maximized"
  782 #define XtCMenuBar      "MenuBar"   /* internal */
  783 #define XtCMenuHeight       "MenuHeight"
  784 #define XtCMetaSendsEscape  "MetaSendsEscape"
  785 #define XtCMkSamplePass     "MkSamplePass"
  786 #define XtCMkSampleSize     "MkSampleSize"
  787 #define XtCMkWidth      "MkWidth"
  788 #define XtCModifyCursorKeys "ModifyCursorKeys"
  789 #define XtCModifyFunctionKeys   "ModifyFunctionKeys"
  790 #define XtCModifyKeyboard   "ModifyKeyboard"
  791 #define XtCModifyKeypadKeys "ModifyKeypadKeys"
  792 #define XtCModifyOtherKeys  "ModifyOtherKeys"
  793 #define XtCModifyStringKeys "ModifyStringKeys"
  794 #define XtCMultiClickTime   "MultiClickTime"
  795 #define XtCMultiScroll      "MultiScroll"
  796 #define XtCNextEventDelay   "NextEventDelay"
  797 #define XtCNumColorRegisters    "NumColorRegisters"
  798 #define XtCNumLock      "NumLock"
  799 #define XtCOldXtermFKeys    "OldXtermFKeys"
  800 #define XtCPointerFont      "PointerFont"
  801 #define XtCPointerMode      "PointerMode"
  802 #define XtCPopOnBell        "PopOnBell"
  803 #define XtCPrecompose       "Precompose"
  804 #define XtCPrintAttributes  "PrintAttributes"
  805 #define XtCPrinterAutoClose "PrinterAutoClose"
  806 #define XtCPrinterCommand   "PrinterCommand"
  807 #define XtCPrinterControlMode   "PrinterControlMode"
  808 #define XtCPrinterExtent    "PrinterExtent"
  809 #define XtCPrinterFormFeed  "PrinterFormFeed"
  810 #define XtCPrinterNewLine   "PrinterNewLine"
  811 #define XtCPrivateColorRegisters "PrivateColorRegisters"
  812 #define XtCQuietGrab        "QuietGrab"
  813 #define XtCRegisDefaultFont "RegisDefaultFont"
  814 #define XtCRegisScreenSize  "RegisScreenSize"
  815 #define XtCRenderFont       "RenderFont"
  816 #define XtCResizeByPixel    "ResizeByPixel"
  817 #define XtCResizeGravity    "ResizeGravity"
  818 #define XtCRetryInputMethod "RetryInputMethod"
  819 #define XtCReverseWrap      "ReverseWrap"
  820 #define XtCRightScrollBar   "RightScrollBar"
  821 #define XtCSaveLines        "SaveLines"
  822 #define XtCScaleHeight      "ScaleHeight"
  823 #define XtCScrollBar        "ScrollBar"
  824 #define XtCScrollBarBorder  "ScrollBarBorder"
  825 #define XtCScrollCond       "ScrollCond"
  826 #define XtCScrollLines      "ScrollLines"
  827 #define XtCSelectToClipboard    "SelectToClipboard"
  828 #define XtCShiftEscape      "ShiftEscape"
  829 #define XtCShiftFonts       "ShiftFonts"
  830 #define XtCShowBlinkAsBold  "ShowBlinkAsBold"
  831 #define XtCShowMissingGlyphs    "ShowMissingGlyphs"
  832 #define XtCShowWrapMarks    "ShowWrapMarks"
  833 #define XtCSignalInhibit    "SignalInhibit"
  834 #define XtCSixelScrolling   "SixelScrolling"
  835 #define XtCSixelScrollsRight    "SixelScrollsRight"
  836 #define XtCTekInhibit       "TekInhibit"
  837 #define XtCTekSmall     "TekSmall"
  838 #define XtCTekStartup       "TekStartup"
  839 #define XtCTiXtraScroll     "TiXtraScroll"
  840 #define XtCTiteInhibit      "TiteInhibit"
  841 #define XtCTitleModes       "TitleModes"
  842 #define XtCToolBar      "ToolBar"
  843 #define XtCTrimSelection    "TrimSelection"
  844 #define XtCUnderLine        "UnderLine"
  845 #define XtCUseBorderClipping    "UseBorderClipping"
  846 #define XtCUseClipping      "UseClipping"
  847 #define XtCUtf8         "Utf8"
  848 #define XtCUtf8Fonts        "Utf8Fonts"
  849 #define XtCUtf8Latin1       "Utf8Latin1"
  850 #define XtCUtf8SelectTypes  "Utf8SelectTypes"
  851 #define XtCUtf8Title        "Utf8Title"
  852 #define XtCUtf8Weblike      "Utf8Weblike"
  853 #define XtCVT100Graphics    "VT100Graphics"
  854 #define XtCVeryBoldColors   "VeryBoldColors"
  855 #define XtCVisualBell       "VisualBell"
  856 #define XtCVisualBellDelay  "VisualBellDelay"
  857 #define XtCVisualBellLine   "VisualBellLine"
  858 #define XtCWideBoldFont     "WideBoldFont"
  859 #define XtCWideChars        "WideChars"
  860 #define XtCWideFont     "WideFont"
  861 #define XtCXftMaxGlyphMemory    "XftMaxGlyphMemory"
  862 #define XtCXftMaxUnrefFonts "XftMaxUnrefFonts"
  863 #define XtCXftTrackMemUsage "XftTrackMemUsage"
  864 #define XtCXimFont      "XimFont"
  865 #define XtCXmcAttributes    "XmcAttributes" /* ncurses-testing */
  866 #define XtCXmcGlitch        "XmcGlitch" /* ncurses-testing */
  867 #define XtCXmcInline        "XmcInline" /* ncurses-testing */
  868 #define XtCXmcMoveSGR       "XmcMoveSGR"    /* ncurses-testing */
  869 
  870 #if defined(NO_ACTIVE_ICON) && !defined(XtNgeometry)
  871 #define XtNgeometry     "geometry"
  872 #define XtCGeometry     "Geometry"
  873 #endif
  874 
  875 #if OPT_COLOR_CLASS
  876 #define XtCCursorColor      "CursorColor"
  877 #define XtCPointerColor     "PointerColor"
  878 #define XtCHighlightColor   "HighlightColor"
  879 #define XtCHighlightTextColor   "HighlightTextColor"
  880 #else
  881 #define XtCCursorColor      XtCForeground
  882 #define XtCPointerColor     XtCForeground
  883 #define XtCHighlightColor   XtCForeground
  884 #define XtCHighlightTextColor   XtCBackground
  885 #endif
  886 
  887 /***====================================================================***/
  888 
  889 #ifdef __cplusplus
  890 extern "C" {
  891 #endif
  892 
  893 struct XTERM_RESOURCE;
  894 
  895 /* Tekproc.c */
  896 #if OPT_TEK4014
  897 extern TekWidget getTekWidget(Widget /* w */);
  898 extern int TekGetFontSize (const char * /* param */);
  899 extern int TekInit (void);
  900 extern void ChangeTekColors (TekWidget /* tw */, TScreen * /* screen */, ScrnColors * /* pNew */);
  901 extern void HandleGINInput             PROTO_XT_ACTIONS_ARGS;
  902 extern void TCursorToggle (TekWidget /* tw */, int /* toggle */);
  903 extern void TekCopy (TekWidget /* tw */);
  904 extern void TekEnqMouse (TekWidget /* tw */, int /* c */);
  905 extern void TekExpose (Widget  /* w */, XEvent * /* event */, Region  /* region */);
  906 extern void TekGINoff (TekWidget /* tw */);
  907 extern void TekRefresh (TekWidget /* tw */);
  908 extern void TekRepaint (TekWidget /* xw */);
  909 extern void TekReverseVideo (XtermWidget /* xw */, TekWidget /* tw */);
  910 extern void TekRun (void);
  911 extern void TekSetFontSize (TekWidget /* tw */, Bool /* fromMenu */, int  /* newitem */);
  912 extern void TekSetWinSize (TekWidget /* tw */);
  913 extern void TekSimulatePageButton (TekWidget /* tw */, Bool /* reset */);
  914 #endif
  915 
  916 /* button.c */
  917 #define MotionOff( s, t ) if (!(screen->hide_pointer)) {        \
  918         (s)->event_mask |= ButtonMotionMask;            \
  919         (s)->event_mask &= ~PointerMotionMask;          \
  920         XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); }
  921 
  922 #define MotionOn( s, t ) {                      \
  923         (s)->event_mask &= ~ButtonMotionMask;           \
  924         (s)->event_mask |= PointerMotionMask;           \
  925         XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); }
  926 
  927 extern Bool SendMousePosition (XtermWidget  /* w */, XEvent*  /* event */);
  928 extern XtermMouseModes okSendMousePos(XtermWidget /* xw */);
  929 extern void DiredButton                PROTO_XT_ACTIONS_ARGS;
  930 extern void DisownSelection (XtermWidget  /* xw */);
  931 extern void UnhiliteSelection (XtermWidget  /* xw */);
  932 extern void HandleCopySelection        PROTO_XT_ACTIONS_ARGS;
  933 extern void HandleInsertSelection      PROTO_XT_ACTIONS_ARGS;
  934 extern void HandleKeyboardSelectEnd    PROTO_XT_ACTIONS_ARGS;
  935 extern void HandleKeyboardSelectExtend PROTO_XT_ACTIONS_ARGS;
  936 extern void HandleKeyboardSelectStart  PROTO_XT_ACTIONS_ARGS;
  937 extern void HandleKeyboardStartExtend  PROTO_XT_ACTIONS_ARGS;
  938 extern void HandlePointerMotion        PROTO_XT_ACTIONS_ARGS;
  939 extern void HandlePointerButton        PROTO_XT_ACTIONS_ARGS;
  940 extern void HandleSelectEnd            PROTO_XT_ACTIONS_ARGS;
  941 extern void HandleSelectExtend         PROTO_XT_ACTIONS_ARGS;
  942 extern void HandleSelectSet            PROTO_XT_ACTIONS_ARGS;
  943 extern void HandleSelectStart          PROTO_XT_ACTIONS_ARGS;
  944 extern void HandleStartExtend          PROTO_XT_ACTIONS_ARGS;
  945 extern void ResizeSelection (TScreen * /* screen */, int  /* rows */, int  /* cols */);
  946 extern void ScrollSelection (TScreen * /* screen */, int  /* amount */,  Bool /* always */);
  947 extern void TrackMouse (XtermWidget /* xw */, int /* func */, CELL * /* start */, int /* firstrow */, int /* lastrow */);
  948 extern void ViButton                   PROTO_XT_ACTIONS_ARGS;
  949 
  950 extern void UnmapSelections (XtermWidget /* xw */);
  951 extern int xtermUtf8ToTextList (XtermWidget /* xw */, XTextProperty * /* text_prop */, char *** /* text_list */, int * /* text_list_count */);
  952 extern void xtermButtonInit (XtermWidget /* xw */);
  953 
  954 #if OPT_DEC_LOCATOR
  955 extern void GetLocatorPosition (XtermWidget  /* w */);
  956 extern void InitLocatorFilter (XtermWidget  /* w */);
  957 #endif  /* OPT_DEC_LOCATOR */
  958 
  959 #if OPT_FOCUS_EVENT
  960 extern void SendFocusButton(XtermWidget /* xw */, XFocusChangeEvent * /* event */);
  961 #else
  962 #define SendFocusBotton(xw, event) /* nothing */
  963 #endif
  964 
  965 #if OPT_PASTE64
  966 extern void AppendToSelectionBuffer (TScreen * /* screen */, unsigned  /* c */, String /* selection */);
  967 extern void ClearSelectionBuffer (TScreen * /* screen */, String /* selection */);
  968 extern void CompleteSelection (XtermWidget  /* xw */, String * /* args */, Cardinal  /* len */);
  969 extern void xtermGetSelection (Widget  /* w */, Time  /* ev_time */, String * /* params */, Cardinal  /* num_params */, Atom * /* targets */);
  970 #endif
  971 
  972 #if OPT_READLINE
  973 extern void ReadLineButton             PROTO_XT_ACTIONS_ARGS;
  974 #endif
  975 
  976 #if OPT_REPORT_CCLASS
  977 extern void report_char_class(XtermWidget);
  978 #endif
  979 
  980 #define IsLatin1(n)  (((n) >= 32 && (n) <= 126) || ((n) >= 160 && (n) <= 255))
  981 
  982 #if OPT_WIDE_CHARS
  983 #define WideCells(n) (((IChar)(n) >= first_widechar) ? my_wcwidth((wchar_t) (n)) : 1)
  984 #define isWideFrg(n) (((n) == HIDDEN_CHAR) || (WideCells((n)) == 2))
  985 #define isWide(n)    (((IChar)(n) >= first_widechar) && isWideFrg(n))
  986 #define CharWidth(screen, n) ((!((screen)->utf8_mode) && ((n) < 256)) \
  987                   ? (IsLatin1(n) ? 1 : 0) \
  988                   : my_wcwidth((wchar_t) (n)))
  989 #else
  990 #define WideCells(n) 1
  991 #define CharWidth(screen, n) (IsLatin1(n) ? 1 : 0)
  992 #endif
  993 
  994 /* cachedCgs.c */
  995 extern CgsEnum getCgsId(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
  996 extern GC freeCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/);
  997 extern GC getCgsGC(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/);
  998 extern Pixel getCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
  999 extern Pixel getCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
 1000 extern XTermFonts * getCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, GC /*gc*/);
 1001 extern void clrCgsFonts(XtermWidget /*xw*/, VTwin * /*cgsWin*/, XTermFonts * /*font*/);
 1002 extern void copyCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/);
 1003 extern void redoCgs(XtermWidget /*xw*/, Pixel /*fg*/, Pixel /*bg*/, CgsEnum /*cgsId*/);
 1004 extern void setCgsBack(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*bg*/);
 1005 extern void setCgsCSet(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, unsigned /*cset*/);
 1006 extern void setCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/);
 1007 extern void setCgsFont2(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/, unsigned /*which*/);
 1008 extern void setCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*fg*/);
 1009 extern void swapCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/);
 1010 
 1011 #ifdef NO_LEAKS
 1012 extern void noleaks_cachedCgs (XtermWidget /* xw */);
 1013 #endif
 1014 
 1015 /* charproc.c */
 1016 extern Bool CheckBufPtrs (TScreen * /* screen */);
 1017 extern Bool set_cursor_gcs (XtermWidget /* xw */);
 1018 extern char * vt100ResourceToString (XtermWidget /* xw */, const char * /* name */);
 1019 extern int VTInit (XtermWidget /* xw */);
 1020 extern Bool FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool  /* justprobe */);
 1021 extern void HideCursor (XtermWidget /* xw */);
 1022 extern void RestartBlinking(XtermWidget /* xw */);
 1023 extern void ShowCursor (XtermWidget /* xw */);
 1024 extern void SwitchBufPtrs (XtermWidget /* xw */, int /* toBuf */);
 1025 extern void ToggleAlternate (XtermWidget /* xw */);
 1026 extern void VTInitTranslations (void);
 1027 extern GCC_NORETURN void VTReset (XtermWidget /* xw */, int /* full */, int /* saved */);
 1028 extern void VTRun (XtermWidget /* xw */);
 1029 extern void dotext (XtermWidget /* xw */, DECNRCM_codes /* charset */, IChar * /* buf */, Cardinal  /* len */);
 1030 extern void getKeymapResources(Widget /* w */, const char * /*mapName */, const char * /* mapClass */, const char * /* type */, void * /* result */, size_t /* size */);
 1031 extern void initBorderGC (XtermWidget /* xw */, VTwin * /* win */);
 1032 extern void lookupSelectUnit(XtermWidget /* xw */, Cardinal /* item */, String /* value */);
 1033 extern void releaseCursorGCs(XtermWidget /*xw*/);
 1034 extern void releaseWindowGCs(XtermWidget /*xw*/, VTwin * /*win*/);
 1035 extern void resetCharsets (TScreen * /* screen */);
 1036 extern void resetMargins (XtermWidget /* xw */);
 1037 extern void restoreCharsets (TScreen * /* screen */, DECNRCM_codes * /* source */);
 1038 extern void saveCharsets (TScreen * /* screen */, DECNRCM_codes * /* target */);
 1039 extern void set_max_col(TScreen * /* screen */, int  /* cols */);
 1040 extern void set_max_row(TScreen * /* screen */, int  /* rows */);
 1041 extern void unparse_disallowed_ops (XtermWidget /* xw */, char * /* value */);
 1042 extern void unparse_end (XtermWidget /* xw */);
 1043 extern void unparseputc (XtermWidget /* xw */, int  /* c */);
 1044 extern void unparseputc1 (XtermWidget /* xw */, int  /* c */);
 1045 extern void unparseputn (XtermWidget /* xw */, unsigned /* n */);
 1046 extern void unparseputs (XtermWidget /* xw */, const char * /* s */);
 1047 extern void unparseseq (XtermWidget /* xw */, ANSI * /* ap */);
 1048 extern void v_write (int /* f */, const Char * /* d */, size_t  /* len */);
 1049 extern void xtermAddInput (Widget /* w */);
 1050 extern void xtermDecodeSCS (XtermWidget /* xw */, int /* which */, int /* sgroup */, int /* prefix */, int /* suffix */);
 1051 
 1052 #if OPT_BLINK_CURS
 1053 extern void ToggleCursorBlink(XtermWidget /* xw */);
 1054 #endif
 1055 
 1056 #if OPT_BLINK_TEXT
 1057 extern Bool LineHasBlinking(TScreen * /* screen */, CLineData * /* ld */);
 1058 #endif
 1059 
 1060 #if OPT_INPUT_METHOD
 1061 extern TInput *lookupTInput (XtermWidget /* xw */, Widget /* w */);
 1062 #endif
 1063 
 1064 #if OPT_ISO_COLORS
 1065 extern void SGR_Background (XtermWidget /* xw */, int  /* color */);
 1066 extern void SGR_Foreground (XtermWidget /* xw */, int  /* color */);
 1067 extern void setExtendedColors (XtermWidget /* xw */);
 1068 #endif
 1069 
 1070 #ifdef NO_LEAKS
 1071 extern void noleaks_charproc (void);
 1072 #endif
 1073 
 1074 /* charsets.c */
 1075 extern unsigned xtermCharSetIn (XtermWidget /* xw */, unsigned  /* code */, DECNRCM_codes /* charset */);
 1076 extern int xtermCharSetOut (XtermWidget /* xw */, IChar * /* buf */, IChar * /* ptr */, DECNRCM_codes /* charset */);
 1077 
 1078 /* cursor.c */
 1079 extern int CursorCol (XtermWidget /* xw */);
 1080 extern int CursorRow (XtermWidget /* xw */);
 1081 extern void AdjustSavedCursor (XtermWidget /* xw */, int /* adjust */);
 1082 extern void CarriageReturn (XtermWidget /* xw */);
 1083 extern void CursorBack (XtermWidget /* xw */, int /* n */);
 1084 extern void CursorDown (TScreen * /* screen */, int /* n */);
 1085 extern void CursorForward (XtermWidget /* xw */, int /* n */);
 1086 extern void CursorNextLine (XtermWidget /* xw */, int /* count */);
 1087 extern void CursorPrevLine (XtermWidget /* xw */, int /* count */);
 1088 extern void CursorRestore2 (XtermWidget /* xw */, SavedCursor * /* sc */);
 1089 extern void CursorRestore (XtermWidget  /* xw */);
 1090 extern void CursorSave2 (XtermWidget /* xw */, SavedCursor * /* sc */);
 1091 extern void CursorSave (XtermWidget  /* xw */);
 1092 extern void CursorSet (TScreen * /* screen */, int  /* row */, int  /* col */, unsigned  /* flags */);
 1093 extern void CursorUp (TScreen * /* screen */, int   /* n */);
 1094 extern void RevIndex (XtermWidget /* xw */, int  /* amount */);
 1095 extern void xtermIndex (XtermWidget /* xw */, int  /* amount */);
 1096 
 1097 #if OPT_TRACE
 1098 extern int set_cur_col(TScreen * /* screen */, int  /* value */);
 1099 extern int set_cur_row(TScreen * /* screen */, int  /* value */);
 1100 #else
 1101 #define set_cur_col(screen, value) screen->cur_col = value
 1102 #define set_cur_row(screen, value) \
 1103     do { \
 1104         int row_value = value; \
 1105         if_STATUS_LINE(screen, { \
 1106         row_value = LastRowNumber(screen); \
 1107         }); \
 1108         screen->cur_row = row_value; \
 1109     } while (0)
 1110 #endif
 1111 
 1112 /* cursorfont.c */
 1113 extern Cursor CreateAlternateCursorFontCursor(Display * /* dpy */, char const * /* cursorfont */, unsigned int  /* which */);
 1114 extern int CursorFontIndexFromShapeName(char const * /* shapename */);
 1115 
 1116 /* doublechr.c */
 1117 extern void xterm_DECDHL (XtermWidget /* xw */, Bool  /* top */);
 1118 extern void xterm_DECSWL (XtermWidget /* xw */);
 1119 extern void xterm_DECDWL (XtermWidget /* xw */);
 1120 extern void xterm_ResetDouble(XtermWidget /* xw */);
 1121 #if OPT_DEC_CHRSET
 1122 extern GC xterm_DoubleGC(XTermDraw * /* params */, GC /* old_gc */, int * /* inxp */);
 1123 #if OPT_RENDERFONT
 1124 extern XTermXftFonts * xterm_DoubleFT(XTermDraw * /* params */, unsigned /* chrset */, unsigned /* attr_flags */);
 1125 extern void freeall_DoubleFT(XtermWidget /* xw */);
 1126 #endif
 1127 #endif
 1128 
 1129 /* input.c */
 1130 extern unsigned xtermParamToState (XtermWidget /* xw */, unsigned /* param */);
 1131 extern unsigned xtermStateToParam (XtermWidget /* xw */, unsigned /* state */);
 1132 extern Bool xtermDeleteIsDEL (XtermWidget /* xw */);
 1133 extern void Input (XtermWidget /* xw */, XKeyEvent */* event */, Bool /* eightbit */);
 1134 extern void StringInput (XtermWidget /* xw */, const Char * /* string */, size_t  /* nbytes */);
 1135 
 1136 #if OPT_NUM_LOCK
 1137 extern void VTInitModifiers(XtermWidget /* xw */);
 1138 #else
 1139 #define VTInitModifiers(xw) /* nothing */
 1140 #endif
 1141 
 1142 /* linedata.c */
 1143 extern LineData *getLineData(TScreen * /* screen */, int /* row */);
 1144 extern void copyLineData(LineData * /* dst */, CLineData * /* src */);
 1145 extern void initLineData(XtermWidget /* xw */);
 1146 
 1147 extern CellData *newCellData(XtermWidget /* xw */, Cardinal /* count */);
 1148 extern void saveCellData(TScreen * /* screen */, CellData * /* data */, Cardinal /* cell */, CLineData * /* ld */, XTermRect * /* limits */, int /* column */);
 1149 extern void restoreCellData(TScreen * /* screen */, const CellData * /* data */, Cardinal /* cell */, LineData * /* ld */, XTermRect * /* limits */, int /* column */);
 1150 
 1151 /* main.c */
 1152 #define ENVP_ARG /**/
 1153 
 1154 extern int main (int  /* argc */, char ** /* argv */ ENVP_ARG);
 1155 extern int GetBytesAvailable (int  /* fd */);
 1156 extern int kill_process_group (int  /* pid */, int  /* sig */);
 1157 extern int nonblocking_wait (void);
 1158 
 1159 extern int get_tty_erase(int /* fd */, int /* default_erase */, const char * /* tag */);
 1160 extern int get_tty_lnext(int /* fd */, int /* default_lnext */, const char * /* tag */);
 1161 
 1162 #if OPT_PTY_HANDSHAKE
 1163 extern void first_map_occurred (void);
 1164 #else
 1165 #define first_map_occurred() /* nothing */
 1166 #endif
 1167 
 1168 extern GCC_NORETURN void Exit (int /* n */);
 1169 
 1170 #ifndef SIG_ATOMIC_T
 1171 #define SIG_ATOMIC_T int
 1172 #endif
 1173 
 1174 #if OPT_WIDE_CHARS
 1175 extern unsigned first_widechar;
 1176 extern int (*my_wcwidth)(wchar_t);
 1177 #endif
 1178 
 1179 /* menu.c */
 1180 extern void do_hangup          PROTO_XT_CALLBACK_ARGS;
 1181 extern void repairSizeHints    (void);
 1182 extern void show_8bit_control  (Bool /* value */);
 1183 
 1184 /* misc.c */
 1185 
 1186 #define TIMESTAMP_LEN 20    /* length of TIMESTAMP_FMT */
 1187 
 1188 extern Bool AllocateTermColor(XtermWidget, ScrnColors *, int, const char *, Bool);
 1189 extern Boolean allocateBestRGB(XtermWidget /* xw */, XColor * /* def */);
 1190 extern Boolean validProgram(const char * /* pathname */);
 1191 extern Boolean xtermGetWinAttrs(Display * /* dpy */, Window /* win */, XWindowAttributes * /* attrs */);
 1192 extern Boolean xtermGetWinProp(Display * /* dpy */, Window /* win */, Atom /* property */, long /* long_offset */, long /* long_length */, Atom /* req_type */, Atom * /* actual_type_return */, int * /* actual_format_return */, unsigned long * /* nitems_return */, unsigned long * /* bytes_after_return */, unsigned char ** /* prop_return */);
 1193 extern Boolean xtermIsIconified (XtermWidget /* xw */);
 1194 extern Cursor make_colored_cursor (unsigned /* cursorindex */, unsigned long /* fg */, unsigned long /* bg */);
 1195 extern FILE * create_printfile(XtermWidget /* xw */, const char * /* suffix */);
 1196 extern OptionHelp * sortedOpts(OptionHelp *, XrmOptionDescRec *, Cardinal);
 1197 extern String xtermEnvLocale (void);
 1198 extern Widget xtermOpenApplication (XtAppContext * /* app_context_return */, String /* application_class */, XrmOptionDescRec */* options */, Cardinal /* num_options */, int * /* argc_in_out */, char **/* argv_in_out */, String * /* fallback_resources */, WidgetClass /* widget_class */, ArgList /* args */, Cardinal /* num_args */);
 1199 extern Window WMFrameWindow (XtermWidget /* xw */);
 1200 extern XtInputMask xtermAppPending (void);
 1201 extern XrmOptionDescRec * sortedOptDescs (XrmOptionDescRec *, Cardinal);
 1202 extern XtermWidget getXtermWidget (Widget /* w */);
 1203 extern XVisualInfo *getVisualInfo (XtermWidget /* xw */);
 1204 extern char *udk_lookup (XtermWidget /* xw */, int /* keycode */, int * /* len */);
 1205 extern char *xtermEnvEncoding (void);
 1206 extern char *xtermFindShell (char * /* leaf */, Bool /* warning */);
 1207 extern char *xtermFormatSGR (XtermWidget /* xw */, char * /* target */, unsigned /* attrs */, int /* fg */, int /* bg */);
 1208 extern const char *SysErrorMsg (int /* n */);
 1209 extern const char *SysReasonMsg (int /* n */);
 1210 extern int ResetAnsiColorRequest (XtermWidget, char *, int);
 1211 extern int XStrCmp (char * /* s1 */, char * /* s2 */);
 1212 extern int creat_as (uid_t /* uid */, gid_t /* gid */, Bool /* append */, char * /* pathname */, unsigned /* mode */);
 1213 extern int getVisualDepth (XtermWidget /* xw */);
 1214 extern int ignore_x11_error(Display * /* dpy */, XErrorEvent * /* event */);
 1215 extern int open_userfile (uid_t /* uid */, gid_t /* gid */, char * /* path */, Bool /* append */);
 1216 extern int update_winsize (TScreen * /* screen */, int /* rows */, int /* cols */, int /* height */, int /* width */);
 1217 extern int xerror (Display * /* d */, XErrorEvent * /* ev */);
 1218 extern int xioerror (Display * /* dpy */);
 1219 extern int xtermClosestColor (XtermWidget /* xw */, int /* red */, int /* green */, int /* blue */);
 1220 extern int xtermResetIds (TScreen * /* screen */);
 1221 extern void Bell (XtermWidget /* xw */, int /* which */, int /* percent */);
 1222 extern void ChangeGroup(XtermWidget /* xw */, const char * /* attribute */, char * /* value */);
 1223 extern void ChangeIconName (XtermWidget /* xw */, char * /* name */);
 1224 extern void ChangeTitle (XtermWidget /* xw */, char * /* name */);
 1225 extern void ChangeXprop (char * /* name */);
 1226 extern GCC_NORETURN void Cleanup (int /* code */);
 1227 extern void HandleBellPropertyChange   PROTO_XT_EV_HANDLER_ARGS;
 1228 extern void HandleEightBitKeyPressed   PROTO_XT_ACTIONS_ARGS;
 1229 extern void HandleEnterWindow          PROTO_XT_EV_HANDLER_ARGS;
 1230 extern void HandleFocusChange          PROTO_XT_EV_HANDLER_ARGS;
 1231 extern void HandleInterpret            PROTO_XT_ACTIONS_ARGS;
 1232 extern void HandleKeyPressed           PROTO_XT_ACTIONS_ARGS;
 1233 extern void HandleLeaveWindow          PROTO_XT_EV_HANDLER_ARGS;
 1234 extern void HandleSpawnTerminal        PROTO_XT_ACTIONS_ARGS;
 1235 extern void HandleStringEvent          PROTO_XT_ACTIONS_ARGS;
 1236 extern void NormalExit (void);
 1237 extern void Panic (const char * /* s */, int /* a */);
 1238 extern void Redraw (void);
 1239 extern void ReverseOldColors (XtermWidget /* xw */);
 1240 extern GCC_NORETURN void SysError (int /* i */);
 1241 extern void VisualBell (void);
 1242 extern void cleanup_colored_cursor (void);
 1243 extern void do_ansi_rqm (XtermWidget /* xw */, int /* nparam */, int * /* params */);
 1244 extern void do_dcs (XtermWidget /* xw */, Char * /* buf */, size_t /* len */);
 1245 extern void do_dec_rqm (XtermWidget /* xw */, int /* nparam */, int * /* params */);
 1246 extern void do_osc (XtermWidget /* xw */, Char * /* buf */, size_t /* len */, int /* final */);
 1247 extern void do_xevents (XtermWidget /* xw */);
 1248 extern void end_tek_mode (void);
 1249 extern void end_vt_mode (void);
 1250 extern void free_string(String value);
 1251 extern void hide_tek_window (void);
 1252 extern void hide_vt_window (void);
 1253 extern GCC_NORETURN void ice_error (IceConn /* iceConn */);
 1254 extern void init_colored_cursor (Display * /* dpy */);
 1255 extern void reset_decudk (XtermWidget /* xw */);
 1256 extern void set_tek_visibility (Bool /* on */);
 1257 extern void set_vt_visibility (Bool /* on */);
 1258 extern void switch_modes (Bool /* tovt */);
 1259 extern void timestamp_filename(char * /* dst */, const char * /* src */);
 1260 extern void xevents (XtermWidget /* xw */);
 1261 extern GCC_NORETURN void xt_error (String /* message */);
 1262 extern void xtermBell(XtermWidget /* xw */, int /* which */, int /* percent */);
 1263 extern void xtermCopyEnv (char ** /* oldenv */);
 1264 extern void xtermDisplayPointer (XtermWidget /* xw */);
 1265 extern void xtermDeiconify (XtermWidget /* xw */);
 1266 extern void xtermEmbedWindow (Window /* winToEmbedInfo */);
 1267 extern void xtermIconify (XtermWidget /* xw */);
 1268 extern void xtermLoadIcon (XtermWidget /* xw */, const char * /* icon_hint */);
 1269 extern void xtermPerror (const char * /*fmt*/,...) GCC_PRINTFLIKE(1,2);
 1270 extern void xtermSetenv (const char * /* var */, const char * /* value */);
 1271 extern void xtermSetupPointer (XtermWidget /* xw */, const char * /* theShape */);
 1272 extern void xtermSetWinSize (XtermWidget /* xw */);
 1273 extern void xtermShowPointer (XtermWidget /* xw */, Bool /* enable */);
 1274 extern void xtermUnsetenv (const char * /* var */);
 1275 extern void xtermWarning (const char * /*fmt*/,...) GCC_PRINTFLIKE(1,2);
 1276 
 1277 #if OPT_DABBREV
 1278 extern void HandleDabbrevExpand        PROTO_XT_ACTIONS_ARGS;
 1279 #endif
 1280 
 1281 #if OPT_DIRECT_COLOR
 1282 extern int getDirectColor(XtermWidget /* xw */, int /* red */, int /* green */, int /* blue */);
 1283 #endif /* OPT_DIRECT_COLOR */
 1284 
 1285 #if USE_DOUBLE_BUFFER
 1286 extern void xtermFlushDbe(XtermWidget /* xw */);
 1287 extern void xtermTimedDbe(XtermWidget /* xw */);
 1288 #define xtermNeedSwap(xw,why)   TScreenOf(xw)->needSwap |= (why)
 1289 #else
 1290 #define xtermFlushDbe(xw)   /* nothing */
 1291 #define xtermTimedDbe(xw)   /* nothing */
 1292 #define xtermNeedSwap(xw,why)   /* nothing */
 1293 #endif /* USE_DOUBLE_BUFFER */
 1294 
 1295 #if OPT_EXEC_XTERM
 1296 extern char *ProcGetCWD(pid_t /* pid */);
 1297 #else
 1298 #define ProcGetCWD(pid) NULL
 1299 #endif
 1300 
 1301 #if OPT_ISO_COLORS
 1302 extern Boolean AllocOneColor(XtermWidget /* xw */, XColor * /* def */);
 1303 extern Boolean QueryOneColor(XtermWidget /* xw */, XColor * /* def */);
 1304 #else
 1305 #define AllocOneColor(xw, def) ((def)->pixel = 0)
 1306 #define QueryOneColor(xw, def) ((def)->red = (def)->green = (def)->blue = 0)
 1307 #endif
 1308 
 1309 #if OPT_MAXIMIZE
 1310 extern int QueryMaximize (XtermWidget  /* xw */, unsigned * /* width */, unsigned * /* height */);
 1311 extern void HandleDeIconify            PROTO_XT_ACTIONS_ARGS;
 1312 extern void HandleIconify              PROTO_XT_ACTIONS_ARGS;
 1313 extern void HandleMaximize             PROTO_XT_ACTIONS_ARGS;
 1314 extern void HandleRestoreSize          PROTO_XT_ACTIONS_ARGS;
 1315 extern void RequestMaximize (XtermWidget  /* xw */, int  /* maximize */);
 1316 #endif
 1317 
 1318 #if OPT_REPORT_ICONS
 1319 extern void report_icons(const char *fmt,...) GCC_PRINTFLIKE(1,2);
 1320 #define ReportIcons(params) report_icons params
 1321 #else
 1322 #define ReportIcons(params) TRACE(params)
 1323 #endif
 1324 
 1325 #if OPT_SCROLL_LOCK
 1326 extern void GetScrollLock (TScreen * /* screen */);
 1327 extern void HandleScrollLock           PROTO_XT_ACTIONS_ARGS;
 1328 extern void ShowScrollLock (TScreen * /* screen */, Bool /* enable */);
 1329 extern void SetScrollLock (TScreen * /* screen */, Bool /* enable */);
 1330 extern void xtermShowLED (TScreen * /* screen */, Cardinal /* led_number */, Bool /* enable */);
 1331 extern void xtermClearLEDs (TScreen * /* screen */);
 1332 #else
 1333 #define ShowScrollLock(screen, enable) /* nothing */
 1334 #define SetScrollLock(screen, enable) /* nothing */
 1335 #define GetScrollLock(screen) /* nothing */
 1336 #endif
 1337 
 1338 #if OPT_SELECTION_OPS
 1339 extern void HandleExecFormatted        PROTO_XT_ACTIONS_ARGS;
 1340 extern void HandleExecSelectable       PROTO_XT_ACTIONS_ARGS;
 1341 extern void HandleInsertFormatted      PROTO_XT_ACTIONS_ARGS;
 1342 extern void HandleInsertSelectable     PROTO_XT_ACTIONS_ARGS;
 1343 #endif
 1344 
 1345 #if OPT_SESSION_MGT
 1346 extern void xtermCloseSession (void);
 1347 extern void xtermOpenSession (void);
 1348 extern void xtermUpdateRestartCommand(XtermWidget /* xw */);
 1349 #else
 1350 #define xtermCloseSession() /* nothing */
 1351 #define xtermOpenSession() /* nothing */
 1352 #define xtermUpdateRestartCommand(xw) /* nothing */
 1353 #endif
 1354 
 1355 #if OPT_WIDE_CHARS
 1356 extern Bool xtermEnvUTF8(void);
 1357 #else
 1358 #define xtermEnvUTF8() False
 1359 #endif
 1360 
 1361 #if OPT_XTERM_SGR
 1362 extern void xtermPushSGR (XtermWidget /* xw */, int /* value */);
 1363 extern void xtermPopSGR (XtermWidget /* xw */);
 1364 extern void xtermReportSGR (XtermWidget /* xw */, XTermRect * /* value */);
 1365 extern void xtermPushColors (XtermWidget /* xw */, int /* value */);
 1366 extern void xtermPopColors (XtermWidget /* xw */, int /* value */);
 1367 extern void xtermReportColors (XtermWidget /* xw */);
 1368 #endif
 1369 
 1370 #ifdef ALLOWLOGGING
 1371 extern void StartLog (XtermWidget /* xw */);
 1372 extern void CloseLog (XtermWidget /* xw */);
 1373 extern void FlushLog (XtermWidget /* xw */);
 1374 #else
 1375 #define FlushLog(xw) /*nothing*/
 1376 #endif
 1377 
 1378 /* print.c */
 1379 extern Bool xtermHasPrinter (XtermWidget /* xw */);
 1380 extern PrinterFlags *getPrinterFlags (XtermWidget /* xw */, String * /* params */, Cardinal * /* param_count */);
 1381 extern int xtermPrinterControl (XtermWidget /* xw */, int /* chr */);
 1382 extern void setPrinterControlMode (XtermWidget /* xw */, int /* mode */);
 1383 extern void xtermAutoPrint (XtermWidget /* xw */, unsigned /* chr */);
 1384 extern void xtermMediaControl (XtermWidget /* xw */, int  /* param */, int  /* private_seq */);
 1385 extern void xtermPrintScreen (XtermWidget /* xw */, Bool  /* use_DECPEX */, PrinterFlags * /* p */);
 1386 extern void xtermPrintEverything (XtermWidget /* xw */, PrinterFlags * /* p */);
 1387 extern void xtermPrintImmediately (XtermWidget /* xw */, String /* filename */, int /* opts */, int /* attributes */);
 1388 extern void xtermPrintOnXError (XtermWidget /* xw */, int /* n */);
 1389 
 1390 #if OPT_SCREEN_DUMPS
 1391 /* html.c */
 1392 extern void xtermDumpHtml (XtermWidget /* xw */);
 1393 extern char *PixelToCSSColor(XtermWidget /* xw */, Pixel /* p */);
 1394 /* svg.c */
 1395 extern void xtermDumpSvg (XtermWidget /* xw */);
 1396 #endif
 1397 
 1398 /* ptydata.c */
 1399 #ifdef VMS
 1400 #define PtySelect int
 1401 #else
 1402 #define PtySelect fd_set
 1403 #endif
 1404 
 1405 extern Bool decodeUtf8 (TScreen * /* screen */, PtyData * /* data */);
 1406 extern int readPtyData (XtermWidget /* xw */, PtySelect * /* select_mask */, PtyData * /* data */);
 1407 extern void fillPtyData (XtermWidget /* xw */, PtyData * /* data */, const char * /* value */, size_t  /* length */);
 1408 extern void initPtyData (PtyData ** /* data */);
 1409 extern void trimPtyData (XtermWidget /* xw */, PtyData * /* data */);
 1410 
 1411 #ifdef NO_LEAKS
 1412 extern void noleaks_ptydata ( void );
 1413 #endif
 1414 
 1415 #if OPT_WIDE_CHARS
 1416 extern Boolean isValidUTF8 (Char * /* lp */);
 1417 extern Char *convertToUTF8 (Char * /* lp */, unsigned  /* c */);
 1418 extern Char *convertFromUTF8 (Char * /* lp */, unsigned * /* cp */);
 1419 extern IChar nextPtyData (TScreen * /* screen */, PtyData * /* data */);
 1420 extern PtyData * fakePtyData (PtyData * /* result */, Char * /* next */, Char * /* last */);
 1421 extern void switchPtyData (TScreen * /* screen */, int  /* f */);
 1422 extern void writePtyData (int  /* f */, IChar * /* d */, size_t  /* len */);
 1423 
 1424 #define morePtyData(screen, data) \
 1425     (((data)->last > (data)->next) \
 1426      ? (((screen)->utf8_inparse && !(data)->utf_size) \
 1427         ? decodeUtf8(screen, data) \
 1428         : True) \
 1429      : False)
 1430 
 1431 #define skipPtyData(data, result) \
 1432     do { \
 1433         result = (data)->utf_data; \
 1434         (data)->next += (data)->utf_size; \
 1435         (data)->utf_size = 0; \
 1436     } while (0)
 1437 #else
 1438 #define morePtyData(screen, data) ((data)->last > (data)->next)
 1439 #define nextPtyData(screen, data) (IChar) (*((data)->next++) & \
 1440                        (screen->output_eight_bits \
 1441                         ? 0xff \
 1442                         : 0x7f))
 1443 #define writePtyData(f,d,len) v_write(f,d,len)
 1444 #endif
 1445 
 1446 /* screen.c */
 1447 
 1448 /*
 1449  * See http://standards.freedesktop.org/wm-spec/wm-spec-latest.html
 1450  */
 1451 #define _NET_WM_STATE_REMOVE    0   /* remove/unset property */
 1452 #define _NET_WM_STATE_ADD   1   /* add/set property */
 1453 #define _NET_WM_STATE_TOGGLE    2   /* toggle property */
 1454 
 1455 extern Bool non_blank_line (TScreen */* screen */, int  /* row */, int  /* col */, int  /* len */);
 1456 extern Char * allocScrnData (TScreen * /* screen */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */);
 1457 extern ScrnBuf allocScrnBuf (XtermWidget /* xw */, unsigned  /* nrow */, unsigned  /* ncol */, ScrnPtr * /* addr */);
 1458 extern ScrnBuf scrnHeadAddr (TScreen * /* screen */, ScrnBuf /* base */, unsigned /* offset */);
 1459 extern size_t ScrnPointers (TScreen * /* screen */, size_t  /* len */);
 1460 extern void ClearBufRows (XtermWidget /* xw */, int  /* first */, int  /* last */);
 1461 extern void ClearCells (XtermWidget /* xw */, int /* flags */, unsigned /* len */, int /* row */, int /* col */);
 1462 extern void CopyCells (TScreen * /* screen */, LineData * /* src */, LineData * /* dst */, int /* col */, int /* len */, Bool /* down */);
 1463 extern void FullScreen (XtermWidget /* xw */, int /* mode */);
 1464 extern void FreeMarkGCs (XtermWidget /* xw */);
 1465 extern void ScreenResize (XtermWidget /* xw */, int  /* width */, int  /* height */, unsigned * /* flags */);
 1466 extern void ScrnAllocBuf (XtermWidget /* xw */);
 1467 extern void ScrnClearCells (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */);
 1468 extern void ScrnDeleteChar (XtermWidget /* xw */, unsigned  /* n */);
 1469 extern void ScrnDeleteCol (XtermWidget /* xw */, unsigned  /* n */);
 1470 extern void ScrnDeleteLine (XtermWidget /* xw */, ScrnBuf  /* sb */, int  /* n */, int  /* last */, unsigned /* where */);
 1471 extern void ScrnDisownSelection (XtermWidget /* xw */);
 1472 extern void ScrnFillRectangle (XtermWidget /* xw */, XTermRect *,  int ,  unsigned /* flags */, Bool /* keepColors */);
 1473 extern void ScrnInsertChar (XtermWidget /* xw */, unsigned  /* n */);
 1474 extern void ScrnInsertCol (XtermWidget /* xw */, unsigned  /* n */);
 1475 extern void ScrnInsertLine (XtermWidget /* xw */, ScrnBuf /* sb */, int  /* last */, int  /* where */, unsigned  /* n */);
 1476 extern void ScrnRefresh (XtermWidget /* xw */, int  /* toprow */, int  /* leftcol */, int  /* nrows */, int  /* ncols */, Bool  /* force */);
 1477 extern void ScrnUpdate (XtermWidget /* xw */, int  /* toprow */, int  /* leftcol */, int  /* nrows */, int  /* ncols */, Bool  /* force */);
 1478 extern void ScrnWriteText (XtermWidget /* xw */, IChar * /* str */, unsigned  /* flags */, CellColor /* cur_fg_bg */, unsigned  /* length */);
 1479 extern void ShowWrapMarks (XtermWidget /* xw */, int /* row */, CLineData * /* ld */);
 1480 extern void setupLineData (TScreen * /* screen */, ScrnBuf /* base */, Char * /* data */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */);
 1481 extern void xtermParseRect (XtermWidget /* xw */, int, int *, XTermRect *);
 1482 
 1483 #if OPT_TRACE && OPT_TRACE_FLAGS
 1484 extern int  LineTstFlag(LineData /* ld */, int /* flag */);
 1485 extern void LineClrFlag(LineData /* ld */, int /* flag */);
 1486 extern void LineSetFlag(LineData /* ld */, int /* flag */);
 1487 #else
 1488 
 1489 #define LineFlags(ld)         GetLineFlags(ld)
 1490 
 1491 #define LineClrFlag(ld, flag) SetLineFlags(ld, (GetLineFlags(ld) & ~ (flag)))
 1492 #define LineSetFlag(ld, flag) SetLineFlags(ld, (GetLineFlags(ld) | (flag)))
 1493 #define LineTstFlag(ld, flag) ((GetLineFlags(ld) & flag) != 0)
 1494 
 1495 #endif /* OPT_TRACE && OPT_TRACE_FLAGS */
 1496 
 1497 #define LineClrBlinked(ld) LineClrFlag(ld, LINEBLINKED)
 1498 #define LineSetBlinked(ld) LineSetFlag(ld, LINEBLINKED)
 1499 #define LineTstBlinked(ld) LineTstFlag(ld, LINEBLINKED)
 1500 
 1501 #define LineClrWrapped(ld) LineClrFlag(ld, LINEWRAPPED)
 1502 #define LineSetWrapped(ld) LineSetFlag(ld, LINEWRAPPED)
 1503 #define LineTstWrapped(ld) LineTstFlag(ld, LINEWRAPPED)
 1504 
 1505 #define ScrnHaveSelection(screen) \
 1506             ((screen)->startH.row != (screen)->endH.row \
 1507             || (screen)->startH.col != (screen)->endH.col)
 1508 
 1509 #define ScrnAreRowsInSelection(screen, first, last) \
 1510     ((last) >= (screen)->startH.row && (first) <= (screen)->endH.row)
 1511 
 1512 #define ScrnIsRowInSelection(screen, line) \
 1513     ((line) >= (screen)->startH.row && (line) <= (screen)->endH.row)
 1514 
 1515 #define ScrnHaveRowMargins(screen) \
 1516             ((screen)->top_marg != 0 \
 1517             || ((screen)->bot_marg != screen->max_row))
 1518 
 1519 #define ScrnIsRowInMargins(screen, line) \
 1520     ((line) >= (screen)->top_marg && (line) <= (screen)->bot_marg)
 1521 
 1522 #define ScrnHaveColMargins(screen) \
 1523             ((screen)->rgt_marg > (screen)->max_col)
 1524 
 1525 #define ScrnIsColInMargins(screen, col) \
 1526     ((col) >= (screen)->lft_marg && (col) <= (screen)->rgt_marg)
 1527 
 1528 /*
 1529  * If the vertical scrolling margins are active, they will be something other
 1530  * than the first/last row of the visible screen, as well as being distinct.
 1531  */
 1532 #define IsTopBottomMode(xw) (ScrnTopMargin(xw) < ScrnBottomMargin(xw))
 1533 #define ScrnTopMargin(xw)   TScreenOf(xw)->top_marg
 1534 #define ScrnBottomMargin(xw)    TScreenOf(xw)->bot_marg
 1535 
 1536 /*
 1537  * Left/right horizontal scrolling margins are only active when DECLRMM is.
 1538  */
 1539 #define IsLeftRightMode(xw) ((xw)->flags & LEFT_RIGHT)
 1540 #define ScrnLeftMargin(xw)  (IsLeftRightMode(xw) \
 1541                  ? TScreenOf(xw)->lft_marg \
 1542                  : 0)
 1543 #define ScrnRightMargin(xw) (IsLeftRightMode(xw) \
 1544                  ? TScreenOf(xw)->rgt_marg \
 1545                  : MaxCols(TScreenOf(xw)) - 1)
 1546 
 1547 #if OPT_DEC_RECTOPS
 1548 extern void ScrnCopyRectangle (XtermWidget /* xw */, XTermRect *, int, int *);
 1549 extern void ScrnMarkRectangle (XtermWidget /* xw */, XTermRect *, Bool, int, int *);
 1550 extern void ScrnWipeRectangle (XtermWidget /* xw */, XTermRect *);
 1551 extern void xtermCheckRect(XtermWidget /* xw */, int /* nparam */, int */* params */, int * /* result */);
 1552 #endif
 1553 
 1554 #if OPT_WIDE_CHARS
 1555 extern void ChangeToWide(XtermWidget /* xw */);
 1556 #endif
 1557 
 1558 /* scrollback.c */
 1559 extern LineData *getScrollback (TScreen * /* screen */, int /* row */);
 1560 extern LineData *addScrollback (TScreen * /* screen */);
 1561 extern void deleteScrollback (TScreen * /* screen */);
 1562 
 1563 /* scrollbar.c */
 1564 extern void DoResizeScreen (XtermWidget /* xw */);
 1565 extern void HandleScrollBack           PROTO_XT_ACTIONS_ARGS;
 1566 extern void HandleScrollForward        PROTO_XT_ACTIONS_ARGS;
 1567 extern void HandleScrollTo             PROTO_XT_ACTIONS_ARGS;
 1568 extern void ResizeScrollBar (XtermWidget  /* xw */);
 1569 extern void ScrollBarDrawThumb (XtermWidget  /* xw */, int /* mode */);
 1570 extern void ScrollBarOff (XtermWidget  /* xw */);
 1571 extern void ScrollBarOn (XtermWidget  /* xw */, Bool /* init */);
 1572 extern void ScrollBarReverseVideo (Widget  /* scrollWidget */);
 1573 extern void ToggleScrollBar (XtermWidget  /* xw */);
 1574 extern void WindowScroll (XtermWidget /* xw */, int  /* top */, Bool /* always */);
 1575 
 1576 #ifdef SCROLLBAR_RIGHT
 1577 extern void updateRightScrollbar(XtermWidget  /* xw */);
 1578 #else
 1579 #define updateRightScrollbar(xw) /* nothing */
 1580 #endif
 1581 
 1582 /* tabs.c */
 1583 extern Bool TabToNextStop (XtermWidget /* xw */);
 1584 extern Bool TabToPrevStop (XtermWidget /* xw */);
 1585 extern void TabClear (Tabs /* tabs */, int /* col */);
 1586 extern void TabReset (Tabs /* tabs */);
 1587 extern void TabSet (Tabs /* tabs */, int /* col */);
 1588 extern void TabZonk (Tabs /* tabs */);
 1589 extern Bool TabIsSet (Tabs /* tabs */, int /* col */);
 1590 
 1591 /* util.c */
 1592 extern Boolean isDefaultBackground (const char * /* name */);
 1593 extern Boolean isDefaultForeground (const char * /* name */);
 1594 extern CgsEnum whichXtermCgs (XtermWidget /* xw */, unsigned /* attr_flags */, Bool /* hilite */);
 1595 extern GC updatedXtermGC (XtermWidget /* xw */, unsigned  /* flags */, CellColor /* fg_bg */, Bool  /* hilite */);  
 1596 extern Pixel getXtermBackground (XtermWidget /* xw */, unsigned /* flags */, int /* color */);
 1597 extern Pixel getXtermForeground (XtermWidget /* xw */, unsigned /* flags */, int /* color */);
 1598 extern char * xtermSetLocale (int /* category */, String /* after */);
 1599 extern int ClearInLine (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */);
 1600 extern int HandleExposure (XtermWidget /* xw */, XEvent * /* event */);
 1601 extern int dimRound (double /* value */);
 1602 extern int drawXtermText (XTermDraw * /* param */, GC /* gc */, int /* x */, int /* y */, const IChar * /* text */, Cardinal /* len */);
 1603 extern int extendedBoolean (const char * /* value */, const FlagList * /* table */, Cardinal /* limit */);
 1604 extern void ChangeColors (XtermWidget  /* xw */, ScrnColors * /* pNew */);
 1605 extern void ClearLine (XtermWidget /* xw */);
 1606 extern void ClearRight (XtermWidget /* xw */, int /* n */);
 1607 extern void ClearScreen (XtermWidget /* xw */);
 1608 extern void DeleteChar (XtermWidget /* xw */, unsigned /* n */);
 1609 extern void DeleteLine (XtermWidget /* xw */, int /* n */, Bool /* canSave */);
 1610 extern void FlushScroll (XtermWidget /* xw */);
 1611 extern void GetColors (XtermWidget  /* xw */, ScrnColors * /* pColors */);
 1612 extern void InsertChar (XtermWidget /* xw */, unsigned /* n */);
 1613 extern void InsertLine (XtermWidget /* xw */, int  /* n */);
 1614 extern void RevScroll (XtermWidget /* xw */, int  /* amount */);
 1615 extern void ReverseVideo (XtermWidget /* xw */);
 1616 extern void WriteText (XtermWidget /* xw */, IChar * /* str */, Cardinal /* len */);
 1617 extern void decode_keyboard_type (XtermWidget /* xw */, struct XTERM_RESOURCE * /* rp */);
 1618 extern void decode_wcwidth (XtermWidget  /* xw */);
 1619 extern void do_cd_xtra_scroll (XtermWidget /* xw */, int /* param */);
 1620 extern void do_erase_display (XtermWidget /* xw */, int  /* param */, int  /* mode */);
 1621 extern void do_erase_char (XtermWidget /* xw */, int  /* param */, int  /* mode */);
 1622 extern void do_erase_line (XtermWidget /* xw */, int  /* param */, int  /* mode */);
 1623 extern void do_ti_xtra_scroll (XtermWidget /* xw */);
 1624 extern void getXtermSizeHints (XtermWidget /* xw */);
 1625 extern void recolor_cursor (TScreen * /* screen */, Cursor  /* cursor */, unsigned long  /* fg */, unsigned long  /* bg */);
 1626 extern void resetXtermGC (XtermWidget /* xw */, unsigned  /* flags */, Bool  /* hilite */);
 1627 extern void scrolling_copy_area (XtermWidget /* xw */, int  /* firstline */, int  /* nlines */, int  /* amount */);
 1628 extern void set_keyboard_type (XtermWidget /* xw */, xtermKeyboardType  /* type */, Bool  /* set */);
 1629 extern void toggle_keyboard_type (XtermWidget /* xw */, xtermKeyboardType  /* type */);
 1630 extern void update_keyboard_type (void);
 1631 extern void xtermClear (XtermWidget /* xw */);
 1632 extern void xtermClear2 (XtermWidget /* xw */, int /* x */, int /* y */, unsigned /* width */, unsigned /* height */);
 1633 extern void xtermColIndex (XtermWidget /* xw */, Bool /* toLeft */);
 1634 extern void xtermColScroll (XtermWidget /* xw */, int /* amount */, Bool /* toLeft */, int /* at_col */);
 1635 extern void xtermRepaint (XtermWidget /* xw */);
 1636 extern void xtermResetLocale (int /* category */, char * /* before */);
 1637 extern void xtermScroll (XtermWidget /* xw */, int /* amount */);
 1638 extern void xtermScrollLR (XtermWidget /* xw */, int /* amount */, Bool /* toLeft */);
 1639 extern void xtermSizeHints (XtermWidget  /* xw */, int /* scrollbarWidth */);
 1640 
 1641 struct Xinerama_geometry {
 1642     int x;
 1643     int y;
 1644     unsigned w;
 1645     unsigned h;
 1646     int scr_x;
 1647     int scr_y;
 1648     int scr_w;
 1649     int scr_h;
 1650 };
 1651 extern int XParseXineramaGeometry(Display * /* display */, char * /* parsestring */, struct Xinerama_geometry * /* ret */);
 1652 
 1653 #if OPT_ISO_COLORS
 1654 
 1655 extern Pixel extract_fg (XtermWidget /* xw */, CellColor /* color */, unsigned  /* flags */);
 1656 extern Pixel extract_bg (XtermWidget /* xw */, CellColor /* color */, unsigned  /* flags */);
 1657 extern CellColor makeColorPair (XtermWidget /* xw */);
 1658 extern void ClearCurBackground (XtermWidget /* xw */, int  /* top */, int  /* left */, unsigned  /* height */, unsigned  /* width */, unsigned /* fw */);
 1659 
 1660 #define xtermColorPair(xw) makeColorPair(xw)
 1661 
 1662 #define GET_COLOR_RES(xw, res) xtermGetColorRes(xw, &(res))
 1663 #define SET_COLOR_RES(res,color) (res)->value = color
 1664 #define EQL_COLOR_RES(res,color) (res)->value == color
 1665 #define T_COLOR(v,n) (v)->Tcolors[n].value
 1666 extern Pixel xtermGetColorRes(XtermWidget /* xw */, ColorRes * /* res */);
 1667 
 1668 #define ExtractForeground(color) (unsigned) GetCellColorFG(color)
 1669 #define ExtractBackground(color) (unsigned) GetCellColorBG(color)
 1670 
 1671 #if OPT_RENDERFONT
 1672 extern void discardRenderDraw(TScreen * /* screen */);
 1673 #else
 1674 #define discardRenderDraw(screen) /* nothing */
 1675 #endif
 1676 
 1677 #if OPT_WIDE_ATTRS
 1678 #define MapToWideColorMode(fg, screen, flags) \
 1679     (((screen)->colorITMode && ((flags) & ATR_ITALIC)) \
 1680      ? COLOR_IT \
 1681      : fg)
 1682 #else
 1683 #define MapToWideColorMode(fg, screen, flags) fg
 1684 #endif
 1685 
 1686 #define MapToColorMode(fg, screen, flags) \
 1687     (((screen)->colorBLMode && ((flags) & BLINK)) \
 1688      ? COLOR_BL \
 1689      : (((screen)->colorBDMode && ((flags) & BOLD)) \
 1690         ? COLOR_BD \
 1691         : (((screen)->colorULMode && ((flags) & UNDERLINE)) \
 1692            ? COLOR_UL \
 1693            : MapToWideColorMode(fg, screen, flags))))
 1694 
 1695 #define checkVeryBoldAttr(flags, fg, code, attr) \
 1696     if ((flags & FG_COLOR) != 0 \
 1697      && (screen->veryBoldColors & attr) == 0 \
 1698      && (flags & attr) != 0 \
 1699      && (fg == code)) \
 1700          UIntClr(flags, attr)
 1701 
 1702 #if OPT_WIDE_ATTRS
 1703 #define checkVeryBoldWideAttr(flags, fg, it, atr) \
 1704         checkVeryBoldAttr(flags, fg, it, atr)
 1705 #else
 1706 #define checkVeryBoldWideAttr(flags, fg, it, atr) (void) flags
 1707 #endif
 1708 
 1709 #define checkVeryBoldColors(flags, fg) \
 1710     checkVeryBoldAttr(flags, fg, COLOR_RV, INVERSE); \
 1711     checkVeryBoldAttr(flags, fg, COLOR_UL, UNDERLINE); \
 1712     checkVeryBoldAttr(flags, fg, COLOR_BD, BOLD); \
 1713     checkVeryBoldAttr(flags, fg, COLOR_BL, BLINK); \
 1714     checkVeryBoldWideAttr(flags, fg, COLOR_IT, ATR_ITALIC)
 1715 
 1716 #else /* !OPT_ISO_COLORS */
 1717 
 1718 #define MapToColorMode(fg, screen, flags) fg
 1719 
 1720 #define ClearCurBackground(xw, top, left, height, width, fw) \
 1721     XClearArea (TScreenOf(xw)->display, \
 1722             VDrawable(TScreenOf(xw)), \
 1723             CursorX2(TScreenOf(xw), left, fw), \
 1724             CursorY2(TScreenOf(xw), top), \
 1725             ((width) * (unsigned) fw), \
 1726             ((height) * (unsigned) FontHeight(TScreenOf(xw))), \
 1727             False)
 1728 
 1729 #define extract_fg(xw, color, flags) (unsigned) (xw)->cur_foreground
 1730 #define extract_bg(xw, color, flags) (unsigned) (xw)->cur_background
 1731 
 1732         /* FIXME: Reverse-Video? */
 1733 #define T_COLOR(v,n) (v)->Tcolors[n].value
 1734 #define xtermColorPair(xw) 0
 1735 
 1736 #define checkVeryBoldColors(flags, fg) /* nothing */
 1737 #define discardRenderDraw(screen) /* nothing */
 1738 
 1739 #endif  /* OPT_ISO_COLORS */
 1740 
 1741 #define getXtermFG(xw, flags, color) getXtermForeground(xw, flags, color)
 1742 #define getXtermBG(xw, flags, color) getXtermBackground(xw, flags, color)
 1743 
 1744 #if OPT_ZICONBEEP
 1745 extern void initZIconBeep(void);
 1746 extern void resetZIconBeep(XtermWidget /* xw */);
 1747 extern Boolean showZIconBeep(XtermWidget /* xw */, char * /* name */);
 1748 #else
 1749 #define initZIconBeep() /* nothing */
 1750 #define resetZIconBeep(xw) /* nothing */
 1751 #define showZIconBeep(xw, name) False
 1752 #endif
 1753 
 1754 #define XTERM_CELL(row,col)    getXtermCell(screen,     ROW2INX(screen, row), col)
 1755 
 1756 extern unsigned getXtermCell (TScreen * /* screen */, int  /* row */, int  /* col */);
 1757 extern unsigned getXtermCombining(TScreen * /* screen */, int /* row */, int /* col */, int /* off */);
 1758 extern void putXtermCell (TScreen * /* screen */, int  /* row */, int  /* col */, int  /* ch */);
 1759 
 1760 #define IsCellCombined(screen, row, col) (getXtermCombining(screen, row, col, 0) != 0)
 1761 
 1762 #if OPT_HIGHLIGHT_COLOR
 1763 #define isNotForeground(xw, fg, bg, sel) \
 1764         (Boolean) ((sel) != T_COLOR(TScreenOf(xw), TEXT_FG) \
 1765                && (sel) != (fg) \
 1766                && (sel) != (bg) \
 1767                && (sel) != (xw)->dft_foreground)
 1768 #define isNotBackground(xw, fg, bg, sel) \
 1769         (Boolean) ((sel) != T_COLOR(TScreenOf(xw), TEXT_BG) \
 1770                && (sel) != (fg) \
 1771                && (sel) != (bg) \
 1772                && (sel) != (xw)->dft_background)
 1773 #endif
 1774 
 1775 #if OPT_WIDE_CHARS
 1776 extern int DamagedCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */, int /* row */, int /* col */);
 1777 extern int DamagedCurCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */);
 1778 extern unsigned AsciiEquivs(unsigned /* ch */);
 1779 extern void addXtermCombining (TScreen * /* screen */, int  /* row */, int  /* col */, unsigned  /* ch */);
 1780 extern void allocXtermChars(ScrnPtr * /* buffer */, Cardinal /* length */);
 1781 #endif
 1782 
 1783 #if OPT_XMC_GLITCH
 1784 extern void Mark_XMC (XtermWidget /* xw */, int  /* param */);
 1785 extern void Jump_XMC (XtermWidget /* xw */);
 1786 extern void Resolve_XMC (XtermWidget /* xw */);
 1787 #endif
 1788 
 1789 #if OPT_WIDE_CHARS
 1790 unsigned visual_width(const IChar * /* str */, Cardinal  /* len */);
 1791 #else
 1792 #define visual_width(a, b) (b)
 1793 #endif
 1794 
 1795 #define BtoS(b)    ((b) ? "on" : "off")
 1796 #define MtoS(b)    (((b) == Maybe) ? "maybe" : BtoS(b))
 1797 #define NonNull(s) ((s) ? (s) : "<null>")
 1798 
 1799 #define UIntSet(dst,bits) dst = dst | (unsigned) (bits)
 1800 #define UIntClr(dst,bits) dst = dst & (unsigned) ~(bits)
 1801 
 1802 #ifdef __cplusplus
 1803     }
 1804 #endif
 1805 /* *INDENT-ON* */
 1806 
 1807 #endif /* included_xterm_h */