[comp.sources.games] v12i011: reve - an othello game, Patch4b

billr@saab.CNA.TEK.COM (Bill Randle) (12/22/90)

Submitted-by: Rich Burridge <rburridge@sun.COM>
Posting-number: Volume 12, Issue 11
Archive-name: reve/Patch4b
Patch-To: reve: Volume 11, Issue 52-58
Environment: SunView, XView, X11R4, termcap



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 2 (of 4)."
# Contents:  patches04b
# Wrapped by billr@saab on Fri Dec 21 11:35:38 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patches04b' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patches04b'\"
else
echo shar: Extracting \"'patches04b'\" \(49681 characters\)
sed "s/^X//" >'patches04b' <<'END_OF_FILE'
X
X------- sunview.c -------
X*** /tmp/da06711	Tue Dec 18 10:04:12 1990
X--- sunview.c	Sat Dec 15 19:14:12 1990
X***************
X*** 49,54 ****
X--- 49,55 ----
X  #define  WINDOW_SET          (void) window_set
X  
X  #define  NORMALFONT          "/usr/lib/fonts/fixedwidthfonts/screen.r.12"
X+ #define  HELPFONT            "/usr/lib/fonts/fixedwidthfonts/screen.r.10"
X  #define  BOLDFONT            "/usr/lib/fonts/fixedwidthfonts/screen.b.12"
X  
X  mpr_static(button_stencil_pr, 64, 64, 1, button_stencil_image) ;
X***************
X*** 68,81 ****
X  mpr_static(hglass_pr,         16, 16, 1, hglass_image) ;
X  mpr_static(nocur_pr,          16, 16, 1, nocur_image) ;
X  
X! Canvas canvas, pcanvas ;
X  Cursor cursor[MAXCURSORS] ;
X  Event *cur_event ;
X! Frame frame, pframe ;
X  Icon reve_icon ;
X  Pixfont *font[MAXFONTS] ;
X  Pixrect *images[MAXIMAGES] ;
X! Pixwin *cpw, *ppw ;
X  
X  void pw_batch() ;
X  int opvals[3] ;         /* Pixrect rasterop values. */
X--- 69,82 ----
X  mpr_static(hglass_pr,         16, 16, 1, hglass_image) ;
X  mpr_static(nocur_pr,          16, 16, 1, nocur_image) ;
X  
X! Canvas canvas, hcanvas, pcanvas ;
X  Cursor cursor[MAXCURSORS] ;
X  Event *cur_event ;
X! Frame frame, hframe, pframe ;
X  Icon reve_icon ;
X  Pixfont *font[MAXFONTS] ;
X  Pixrect *images[MAXIMAGES] ;
X! Pixwin *cpw, *hpw, *ppw ;
X  
X  void pw_batch() ;
X  int opvals[3] ;         /* Pixrect rasterop values. */
X***************
X*** 101,106 ****
X--- 102,108 ----
X  Event *event ;
X  {
X         if (c == canvas)  curwin = W_MAIN ;
X+   else if (c == hcanvas) curwin = W_HELP ;
X    else if (c == pcanvas) curwin = W_PROPS ;
X  
X    cur_event = event ;
X***************
X*** 109,126 ****
X  
X  
X  void
X- close_frame(wtype)        /* Iconise reve window. */
X- enum win_type wtype ;
X- {
X-   Frame f ;
X- 
X-   if (wtype == W_MAIN) f = frame ;
X-   else                 f = pframe ;
X-   WINDOW_SET(f, FRAME_CLOSED, TRUE, 0) ;
X- }
X- 
X- 
X- void
X  color_area(wtype, x, y, width, height, color)
X  enum win_type wtype ;
X  int x, y, width, height, color ;
X--- 111,116 ----
X***************
X*** 127,133 ****
X  {
X    Pixwin *pw ;
X  
X!   pw = (wtype == W_MAIN) ? cpw : ppw ;
X    PW_WRITEBACKGROUND(pw, x, y, width, height, PIX_SRC | PIX_COLOR(color)) ;
X  }
X  
X--- 117,125 ----
X  {
X    Pixwin *pw ;
X  
X!        if (wtype == W_MAIN)  pw = cpw ;
X!   else if (wtype == W_HELP)  pw = hpw ;
X!   else if (wtype == W_PROPS) pw = ppw ;
X    PW_WRITEBACKGROUND(pw, x, y, width, height, PIX_SRC | PIX_COLOR(color)) ;
X  }
X  
X***************
X*** 147,153 ****
X  {                        
X    Pixwin *pw ;
X  
X!   pw = (wtype == W_MAIN) ? cpw : ppw ;
X    PW_ROP(pw, x, y, width, height, PIX_SRC | PIX_DST,
X           images[(int) image], 0, 0) ;
X  }
X--- 139,147 ----
X  {                        
X    Pixwin *pw ;
X  
X!        if (wtype == W_MAIN)  pw = cpw ;
X!   else if (wtype == W_HELP)  pw = hpw ;
X!   else if (wtype == W_PROPS) pw = ppw ;
X    PW_ROP(pw, x, y, width, height, PIX_SRC | PIX_DST,
X           images[(int) image], 0, 0) ;
X  }
X***************
X*** 162,168 ****
X    Pixwin *pw ;
X    int rop ;
X  
X!   pw = (wtype == W_MAIN) ? cpw : ppw ;
X    rop = opvals[(int) op] ;
X    if (!iscolor[(int) cur_dpyno] && color == C_WHITE)
X      rop = opvals[(int) RCLR] ;
X--- 156,164 ----
X    Pixwin *pw ;
X    int rop ;
X  
X!        if (wtype == W_MAIN)  pw = cpw ;
X!   else if (wtype == W_HELP)  pw = hpw ;
X!   else if (wtype == W_PROPS) pw = ppw ;
X    rop = opvals[(int) op] ;
X    if (!iscolor[(int) cur_dpyno] && color == C_WHITE)
X      rop = opvals[(int) RCLR] ;
X***************
X*** 180,186 ****
X    Pixwin *pw ;
X    int rop ;
X  
X!   pw = (wtype == W_MAIN) ? cpw : ppw ;
X    rop = opvals[(int) op] | PIX_COLOR(color) ;
X    PW_STENCIL(pw, x, y, width, height, rop,
X               images[(int) stencil], 0, 0, images[(int) image], 0, 0) ;
X--- 176,184 ----
X    Pixwin *pw ;
X    int rop ;
X  
X!        if (wtype == W_MAIN)  pw = cpw ;
X!   else if (wtype == W_HELP)  pw = hpw ;
X!   else if (wtype == W_PROPS) pw = ppw ;
X    rop = opvals[(int) op] | PIX_COLOR(color) ;
X    PW_STENCIL(pw, x, y, width, height, rop,
X               images[(int) stencil], 0, 0, images[(int) image], 0, 0) ;
X***************
X*** 196,202 ****
X  {
X    Pixwin *pw ;
X  
X!   pw = (wtype == W_MAIN) ? cpw : ppw ;
X    PW_TTEXT(pw, x, y, PIX_SRC | PIX_COLOR(color), font[(int) ftype], str) ;
X  }
X  
X--- 194,202 ----
X  {
X    Pixwin *pw ;
X  
X!        if (wtype == W_MAIN)  pw = cpw ;
X!   else if (wtype == W_HELP)  pw = hpw ;
X!   else if (wtype == W_PROPS) pw = ppw ;
X    PW_TTEXT(pw, x, y, PIX_SRC | PIX_COLOR(color), font[(int) ftype], str) ;
X  }
X  
X***************
X*** 218,223 ****
X--- 218,224 ----
X  }
X  
X  
X+ /*ARGSUSED*/
X  char *
X  get_resource(rtype)      /* Null routine (currently only X11 and XView). */
X  enum res_type rtype ;
X***************
X*** 241,252 ****
X--- 242,256 ----
X  init_fonts()         /* Open the normal and bold fonts. */
X  {
X    font[(int) BFONT] = get_font(BOLDFONT) ;
X+   font[(int) HFONT] = get_font(HELPFONT) ;
X    font[(int) NFONT] = get_font(NORMALFONT) ;
X    bfont_height = font[(int) BFONT]->pf_defaultsize.y ;
X+   hfont_height = font[(int) HFONT]->pf_defaultsize.y ;
X    nfont_height = font[(int) NFONT]->pf_defaultsize.y ;
X  }
X  
X  
X+ /*ARGSUSED*/
X  init_graphics(argc, argv)
X  int *argc ;
X  char *argv[] ;
X***************
X*** 272,292 ****
X  {
X    Pixwin *frame_pw ;
X    char colorname[CMS_NAMESIZE] ;
X-   u_char red[OTH_COLORSIZE], green[OTH_COLORSIZE], blue[OTH_COLORSIZE] ;
X  
X    iscolor[(int) cur_dpyno] = (cpw->pw_pixrect->pr_depth == 8) ? 1 : 0 ;
X!   SPRINTF(colorname, "%s%D", OTH_COLOR, getpid()) ;
X    PW_SETCMSNAME(cpw, colorname) ;
X  
X!   oth_colorsetup(red, green, blue) ;
X!   PW_PUTCOLORMAP(cpw, 0, OTH_COLORSIZE, red, green, blue) ;
X!   if (inv_video) PW_REVERSEVIDEO(cpw, 0, OTH_COLORSIZE) ;
X  
X    if (iscolor[(int) cur_dpyno])
X      {
X        frame_pw = (Pixwin *) window_get(frame, WIN_PIXWIN) ;
X        PW_SETCMSNAME(frame_pw, colorname) ;
X!       PW_PUTCOLORMAP(frame_pw, 0, OTH_COLORSIZE, red, green, blue) ;
X      }
X  }
X  
X--- 276,294 ----
X  {
X    Pixwin *frame_pw ;
X    char colorname[CMS_NAMESIZE] ;
X  
X    iscolor[(int) cur_dpyno] = (cpw->pw_pixrect->pr_depth == 8) ? 1 : 0 ;
X!   SPRINTF(colorname, "%s%D", REVE_COLOR, getpid()) ;
X    PW_SETCMSNAME(cpw, colorname) ;
X  
X!   PW_PUTCOLORMAP(cpw, 0, REVE_COLORSIZE, rcols, gcols, bcols) ;
X!   if (inv_video) PW_REVERSEVIDEO(cpw, 0, REVE_COLORSIZE) ;
X  
X    if (iscolor[(int) cur_dpyno])
X      {
X        frame_pw = (Pixwin *) window_get(frame, WIN_PIXWIN) ;
X        PW_SETCMSNAME(frame_pw, colorname) ;
X!       PW_PUTCOLORMAP(frame_pw, 0, REVE_COLORSIZE, rcols, gcols, bcols) ;
X      }
X  }
X  
X***************
X*** 315,321 ****
X  void
X  make_canvas()               /* Create canvas for game board. */
X  {
X!   canvas = window_create(frame, CANVAS,
X                           CANVAS_RETAINED, FALSE,
X                           WIN_HEIGHT,      TOTAL_HEIGHT,
X                           WIN_WIDTH,       TOTAL_WIDTH,
X--- 317,323 ----
X  void
X  make_canvas()               /* Create canvas for game board. */
X  {
X!   canvas = window_create(frame,           CANVAS,
X                           CANVAS_RETAINED, FALSE,
X                           WIN_HEIGHT,      TOTAL_HEIGHT,
X                           WIN_WIDTH,       TOTAL_WIDTH,
X***************
X*** 331,337 ****
X                           0) ;
X    cpw = (Pixwin *) window_get(canvas, CANVAS_PIXWIN) ;
X  
X!   pcanvas = window_create(pframe, CANVAS,
X                            CANVAS_RETAINED, FALSE,
X                            WIN_HEIGHT,      PROPS_HEIGHT,
X                            WIN_WIDTH,       PROPS_WIDTH,
X--- 333,339 ----
X                           0) ;
X    cpw = (Pixwin *) window_get(canvas, CANVAS_PIXWIN) ;
X  
X!   pcanvas = window_create(pframe,          CANVAS,
X                            CANVAS_RETAINED, FALSE,
X                            WIN_HEIGHT,      PROPS_HEIGHT,
X                            WIN_WIDTH,       PROPS_WIDTH,
X***************
X*** 395,415 ****
X  
X  
X  void
X! make_icon()
X  {
X!   reve_icon = icon_create(ICON_IMAGE, &icon_pr, 0) ;
X  }
X  
X  
X  void
X! open_frame(wtype)
X! enum win_type wtype ;
X  {
X!   Frame f ;
X! 
X!   if (wtype == W_MAIN) f = frame ;
X!   else                 f = pframe ;
X!   WINDOW_SET(f, WIN_SHOW, TRUE, 0) ;
X  }
X  
X  
X--- 397,440 ----
X  
X  
X  void
X! make_help_window(argc, argv)
X! int argc ;
X! char *argv[] ;
X  {
X!   int fontwidth ;
X! 
X!   hframe = window_create((Window) NULL,     FRAME,
X!                           FRAME_ICON,       reve_icon,
X!                           FRAME_LABEL,      "reve help",
X!                           FRAME_NO_CONFIRM, TRUE,
X!                           WIN_ERROR_MSG,    "Can't create window.",
X!                           FRAME_ARGS,       argc, argv,
X!                           0) ;
X! 
X!   fontwidth = font[(int) HFONT]->pf_defaultsize.x ;
X!   help_height = ((hfont_height + 1) * HELP_ROWS) + (4 * CGAP) + CHEIGHT ;
X!   help_width  = (fontwidth * HELP_COLS) + (2 * CGAP) ;
X! 
X!   hcanvas = window_create(hframe, CANVAS,
X!                           CANVAS_RETAINED, FALSE,
X!                           WIN_HEIGHT,      help_height,
X!                           WIN_WIDTH,       help_width,
X!                           WIN_CONSUME_PICK_EVENTS,
X!                             MS_LEFT, MS_MIDDLE,
X!                             0,
X!                           WIN_CONSUME_KBD_EVENTS,
X!                             KBD_USE, KBD_DONE, WIN_ASCII_EVENTS, WIN_UP_EVENTS,
X!                             0,
X!                           WIN_EVENT_PROC, canvas_proc,
X!                           0) ;
X!   hpw = (Pixwin *) window_get(hcanvas, CANVAS_PIXWIN) ;
X  }
X  
X  
X  void
X! make_icon()
X  {
X!   reve_icon = icon_create(ICON_IMAGE, &icon_pr, 0) ;
X  }
X  
X  
X***************
X*** 446,452 ****
X      nextc = MOUSE_MOVING ;
X    else if (id == WIN_REPAINT)
X      {
X!            if (curwin == W_MAIN) nextc = FRAME_REPAINT ;
X        else if (curwin == W_PROPS) nextc = PROPS_REPAINT ;
X      }
X  }
X--- 471,478 ----
X      nextc = MOUSE_MOVING ;
X    else if (id == WIN_REPAINT)
X      {
X!            if (curwin == W_MAIN)  nextc = FRAME_REPAINT ;
X!       else if (curwin == W_HELP)  nextc = HELP_REPAINT ;
X        else if (curwin == W_PROPS) nextc = PROPS_REPAINT ;
X      }
X  }
X***************
X*** 460,465 ****
X--- 486,504 ----
X  }
X  
X  
X+ void
X+ set_frame(wtype, showing)
X+ enum win_type wtype ;
X+ int showing ;
X+ {
X+   Frame f ;
X+ 
X+        if (wtype == W_HELP)  f = hframe ;
X+   else if (wtype == W_PROPS) f = pframe ;
X+   WINDOW_SET(f, WIN_SHOW, showing, 0) ;
X+ }
X+ 
X+ 
X  /*ARGSUSED*/
X  void
X  start_tool(dtype)      /* Display window and start the notifier. */
X***************
X*** 472,477 ****
X--- 511,517 ----
X        WINDOW_SET(frame, FRAME_ICON, reve_icon, 0) ;
X      }
X    window_fit(frame) ;
X+   window_fit(hframe) ;
X    window_fit(pframe) ;
X    window_main_loop(frame) ;
X  }
X
X------- tty.c -------
X*** /tmp/da06714	Tue Dec 18 10:04:13 1990
X--- tty.c	Sat Dec 15 19:42:20 1990
X***************
X*** 65,74 ****
X        {  1,  1,  43,  32, },      /* Load */
X        { 11,  1, 117,  32, },      /* Moves? */
X        { 22,  1, 191,  32, },      /* New game */
X!       { 33,  1, 265,  32, },      /* Save */
X!       { 44,  1, 339,  32, },      /* Suggest */
X!       { 55,  1, 413,  32, },      /* Undo */
X!       { -1, -1,  43,  74, },      /* Props  (not displayed). */
X        { -1, -1, 339,  74, },      /* Cancel (not displayed). */
X        { -1, -1, 413,  74, },      /* Quit   (not displayed). */
X        { 60,  5,  15, 111, },      /* Black: */
X--- 65,78 ----
X        {  1,  1,  43,  32, },      /* Load */
X        { 11,  1, 117,  32, },      /* Moves? */
X        { 22,  1, 191,  32, },      /* New game */
X!       { -1, -1, 265,  32, },      /* Help   (not displayed). */
X!       { -1, -1, 339,  32, },      /* Redo   (not displayed). */
X!       { -1, -1, 413,  32, },      /* Props  (not displayed). */
X!       { 33,  1,  43,  74, },      /* Save */
X!       { 44,  1, 117,  74, },      /* Suggest */
X!       { -1, -1, 191,  74, },      /* Edit   (not displayed). */
X!       { -1, -1, 265,  74, },      /* Stop   (not displayed). */
X!       { 55,  1, 339,  74, },      /* Undo */
X        { -1, -1, 339,  74, },      /* Cancel (not displayed). */
X        { -1, -1, 413,  74, },      /* Quit   (not displayed). */
X        { 60,  5,  15, 111, },      /* Black: */
X***************
X*** 86,91 ****
X--- 90,96 ----
X        { -1, -1,  -1,  -1, },      /* Show evaluation option. */
X        { -1, -1,  -1,  -1, },      /* Number move option. */
X        { -1, -1,  -1,  -1, },      /* Quick game option. */
X+       { -1, -1,  -1,  -1, },      /* Help window page cycle.*/
X  } ;
X  
X  struct other_info {   /* Information needed to place other text values. */
X***************
X*** 97,106 ****
X        { -1, -1, },       /* Load     (ignored). */
X        { -1, -1, },       /* Moves?   (ignored). */
X        { -1, -1, },       /* New game (ignored). */
X        { -1, -1, },       /* Save     (ignored). */
X        { -1, -1, },       /* Suggest  (ignored). */
X        { -1, -1, },       /* Undo     (ignored). */
X-       { -1, -1, },       /* Done     (ignored). */
X        { -1, -1, },       /* Cancel   (ignored). */
X        { -1, -1, },       /* Quit     (ignored). */
X        { 38,  5, },       /* Black: */
X--- 102,115 ----
X        { -1, -1, },       /* Load     (ignored). */
X        { -1, -1, },       /* Moves?   (ignored). */
X        { -1, -1, },       /* New game (ignored). */
X+       { -1, -1, },       /* Help     (ignored). */
X+       { -1, -1, },       /* Redo     (ignored). */
X+       { -1, -1, },       /* Props    (ignored). */
X        { -1, -1, },       /* Save     (ignored). */
X        { -1, -1, },       /* Suggest  (ignored). */
X+       { -1, -1, },       /* Edit     (ignored). */
X+       { -1, -1, },       /* Stop     (ignored). */
X        { -1, -1, },       /* Undo     (ignored). */
X        { -1, -1, },       /* Cancel   (ignored). */
X        { -1, -1, },       /* Quit     (ignored). */
X        { 38,  5, },       /* Black: */
X***************
X*** 118,123 ****
X--- 127,133 ----
X        { 60, 11, },       /* Show evaluation option. */
X        { -1, -1, },       /* Number move option. */
X        { -1, -1, },       /* Quick game option. */
X+       { -1, -1, },       /* Help window page cycle. */
X  } ;
X  
X  
X***************
X*** 135,145 ****
X  {}
X  
X  
X- void
X- close_frame()           /* This option does nothing with termcap. */
X- {}
X- 
X- 
X  /*ARGSUSED*/
X  void
X  color_area(wtype, x, y, width, height, color)
X--- 145,150 ----
X***************
X*** 532,550 ****
X  }
X  
X  
X- void
X- make_icon()             /* Null routine - no icon in termcap version. */
X- {}
X- 
X- 
X  /*ARGSUSED*/
X  void
X! open_frame(wtype)
X! enum win_type wtype ;
X  {
X  }
X  
X  
X  static void
X  outc(c)                 /* Output the next character to the screen. */
X  register int c ;
X--- 537,556 ----
X  }
X  
X  
X  /*ARGSUSED*/
X  void
X! make_help_window(argc, argv)
X! int argc ;
X! char *argv[] ;
X  {
X  }
X  
X  
X+ void
X+ make_icon()             /* Null routine - no icon in termcap version. */
X+ {}
X+ 
X+ 
X  static void
X  outc(c)                 /* Output the next character to the screen. */
X  register int c ;
X***************
X*** 575,580 ****
X--- 581,594 ----
X  void
X  set_cursor(cursor)        /* No cursors in termcap version. */
X  enum curtype cursor ;
X+ {}
X+ 
X+ 
X+ /*ARGSUSED*/
X+ void
X+ set_frame(wtype, showing)
X+ enum win_type wtype ;
X+ int showing ;
X  {}
X  
X  
X
X------- x11.c -------
X*** /tmp/da06717	Tue Dec 18 10:04:15 1990
X--- x11.c	Mon Dec 17 10:26:26 1990
X***************
X*** 41,46 ****
X--- 41,47 ----
X  
X  #define  BOLDFONT    "lucidasanstypewriter-bold-12"
X  #define  DEFFONT     "fixed"
X+ #define  HELPFONT    "lucidasanstypewriter-10"
X  #define  NORMALFONT  "lucidasanstypewriter-12"
X  
X  #define  FRAME_MASK  (ButtonPressMask | ButtonReleaseMask | ExposureMask    | \
X***************
X*** 63,75 ****
X  Pixmap images[MAXIMAGES] ;
X  Pixmap no_pixmap ;
X  Pixmap load_color_icon(), load_image(), reve_icon[MAXDPY] ;
X! Window frame[MAXDPY], pframe[MAXDPY], root[MAXDPY] ;
X  XClassHint class_hint = { "reve", "Reve" } ;
X  XColor BGcolor, FGcolor ;
X  XEvent event ;
X  XFontStruct *font[MAXFONTS] ;
X  XrmDatabase reve_DB[MAXDPY] ;   /* Combined resources database. */
X! XSizeHints psize, size ;
X  XWMHints wm_hints ;
X  XGCValues gc_val ;              /* Used to setup graphics context values. */
X  int gc_flags ;                  /* Used to set up graphics context flags. */
X--- 64,76 ----
X  Pixmap images[MAXIMAGES] ;
X  Pixmap no_pixmap ;
X  Pixmap load_color_icon(), load_image(), reve_icon[MAXDPY] ;
X! Window frame[MAXDPY], hframe[MAXDPY], pframe[MAXDPY], root[MAXDPY] ;
X  XClassHint class_hint = { "reve", "Reve" } ;
X  XColor BGcolor, FGcolor ;
X  XEvent event ;
X  XFontStruct *font[MAXFONTS] ;
X  XrmDatabase reve_DB[MAXDPY] ;   /* Combined resources database. */
X! XSizeHints size ;
X  XWMHints wm_hints ;
X  XGCValues gc_val ;              /* Used to setup graphics context values. */
X  int gc_flags ;                  /* Used to set up graphics context flags. */
X***************
X*** 78,84 ****
X  unsigned long backgnd[MAXDPY] ; /* Default background color. */
X  unsigned long foregnd[MAXDPY] ; /* Default foreground color. */
X  unsigned long gc_mask ;         /* Mask for setting graphic context values. */
X! unsigned long palette[OTH_COLORSIZE] ;     /* Xlib color palette. */
X  
X  #ifndef NOSELECT
X  #ifdef NO_43SELECT
X--- 79,85 ----
X  unsigned long backgnd[MAXDPY] ; /* Default background color. */
X  unsigned long foregnd[MAXDPY] ; /* Default foreground color. */
X  unsigned long gc_mask ;         /* Mask for setting graphic context values. */
X! unsigned long palette[REVE_COLORSIZE] ;     /* Xlib color palette. */
X  
X  #ifndef NOSELECT
X  #ifdef NO_43SELECT
X***************
X*** 143,172 ****
X  
X  
X  void
X- close_frame(wtype)            /* Iconise reve window. */
X- enum win_type wtype ;
X- {
X-   int d ;
X-   XEvent event ;
X-   Window window ;
X- 
X-   d = (int) cur_dpyno ;
X-   if (wtype == W_MAIN) window = frame[d] ;
X-   else                 window = pframe[d] ;
X- 
X-   iconic = 1 ;
X-   event.xclient.type = ClientMessage ;
X-   event.xclient.display = dpy[d] ;
X-   event.xclient.window = window ;
X-   event.xclient.message_type = XInternAtom(dpy[d], "WM_CHANGE_STATE", False) ;
X-   event.xclient.format = 32 ;
X-   event.xclient.data.l[0] = IconicState ;
X-   XSendEvent(dpy[d], DefaultRootWindow(dpy[d]), False,
X-               SubstructureRedirectMask | SubstructureNotifyMask, &event) ;
X- }
X- 
X- 
X- void
X  color_area(wtype, x, y, width, height, color)
X  enum win_type wtype ;
X  int x, y, width, height, color ;
X--- 144,149 ----
X***************
X*** 175,181 ****
X    int d ;
X  
X    d = (int) cur_dpyno ;
X!   window = (wtype == W_MAIN) ? frame[d] : pframe[d] ;
X    if (iscolor[d]) gc_val.foreground = palette[color] ;
X    else
X      { 
X--- 152,161 ----
X    int d ;
X  
X    d = (int) cur_dpyno ;
X!        if (wtype == W_MAIN)  window = frame[d] ;
X!   else if (wtype == W_HELP)  window = hframe[d] ;
X!   else if (wtype == W_PROPS) window = pframe[d] ;
X! 
X    if (iscolor[d]) gc_val.foreground = palette[color] ;
X    else
X      { 
X***************
X*** 206,212 ****
X    int d ;
X  
X    d = (int) cur_dpyno ;
X!   window = (wtype == W_MAIN) ? frame[d] : pframe[d] ;
X    gc_mask = GCStipple | GCTileStipXOrigin | GCTileStipYOrigin ;
X    gc_val.stipple = images[(int) image] ;
X    gc_val.ts_x_origin = x ;
X--- 186,195 ----
X    int d ;
X  
X    d = (int) cur_dpyno ;
X!        if (wtype == W_MAIN)  window = frame[d] ;
X!   else if (wtype == W_HELP)  window = hframe[d] ;
X!   else if (wtype == W_PROPS) window = pframe[d] ;
X! 
X    gc_mask = GCStipple | GCTileStipXOrigin | GCTileStipYOrigin ;
X    gc_val.stipple = images[(int) image] ;
X    gc_val.ts_x_origin = x ;
X***************
X*** 226,232 ****
X    int d ;
X  
X    d = (int) cur_dpyno ;
X!   window = (wtype == W_MAIN) ? frame[d] : pframe[d] ;
X    if (iscolor[d]) gc_val.foreground = palette[color] ;
X    else
X      {
X--- 209,218 ----
X    int d ;
X  
X    d = (int) cur_dpyno ;
X!        if (wtype == W_MAIN)  window = frame[d] ;
X!   else if (wtype == W_HELP)  window = hframe[d] ;
X!   else if (wtype == W_PROPS) window = pframe[d] ;
X! 
X    if (iscolor[d]) gc_val.foreground = palette[color] ;
X    else
X      {
X***************
X*** 250,256 ****
X    int d ;
X  
X    d = (int) cur_dpyno ;
X!   window = (wtype == W_MAIN) ? frame[d] : pframe[d] ;
X    if (iscolor[d]) gc_val.foreground = palette[color] ;
X    else            gc_val.foreground = foregnd[d] ;
X    gc_val.function = opvals[(int) op] ;
X--- 236,245 ----
X    int d ;
X  
X    d = (int) cur_dpyno ;
X!        if (wtype == W_MAIN)  window = frame[d] ;
X!   else if (wtype == W_HELP)  window = hframe[d] ;
X!   else if (wtype == W_PROPS) window = pframe[d] ;
X! 
X    if (iscolor[d]) gc_val.foreground = palette[color] ;
X    else            gc_val.foreground = foregnd[d] ;
X    gc_val.function = opvals[(int) op] ;
X***************
X*** 279,285 ****
X    int d ;
X  
X    d = (int) cur_dpyno ;
X!   window = (wtype == W_MAIN) ? frame[d] : pframe[d] ;
X    if (iscolor[d]) gc_val.foreground = palette[color] ;
X    else
X      { 
X--- 268,277 ----
X    int d ;
X  
X    d = (int) cur_dpyno ;
X!        if (wtype == W_MAIN)  window = frame[d] ;
X!   else if (wtype == W_HELP)  window = hframe[d] ;
X!   else if (wtype == W_PROPS) window = pframe[d] ;
X! 
X    if (iscolor[d]) gc_val.foreground = palette[color] ;
X    else
X      { 
X***************
X*** 377,385 ****
X--- 369,380 ----
X  init_fonts()             /* Open the normal and bold fonts. */
X  {
X    font[(int) BFONT] = get_font(BOLDFONT) ;
X+   font[(int) HFONT] = get_font(HELPFONT) ;
X    font[(int) NFONT] = get_font(NORMALFONT) ;
X    bfont_height = font[(int) BFONT]->max_bounds.ascent +
X                   font[(int) BFONT]->max_bounds.descent ;
X+   hfont_height = font[(int) HFONT]->max_bounds.ascent +
X+                  font[(int) HFONT]->max_bounds.descent ;
X    nfont_height = font[(int) NFONT]->max_bounds.ascent +
X                   font[(int) NFONT]->max_bounds.descent ;
X  }
X***************
X*** 439,445 ****
X  load_colors()     /* Create and load reve color map. */
X  {
X    XColor ccol ;
X-   u_char red[OTH_COLORSIZE], green[OTH_COLORSIZE], blue[OTH_COLORSIZE] ;
X    int d, i, numcolors ;
X  
X    d = (int) cur_dpyno ;
X--- 434,439 ----
X***************
X*** 446,465 ****
X    iscolor[d] = 0 ;
X    if (DisplayCells(dpy[d], screen[d]) > 2)
X      {
X-       oth_colorsetup(red, green, blue) ;
X        iscolor[d] = 1 ;
X        numcolors = 0 ;
X!       for (i = 0; i < OTH_COLORSIZE; i++)
X          {
X!           ccol.flags = DoRed | DoGreen | DoBlue ;
X!           ccol.red   = (unsigned short) (red[i]   << 8) ;
X!           ccol.green = (unsigned short) (green[i] << 8) ;
X!           ccol.blue  = (unsigned short) (blue[i]  << 8) ;
X            if (XAllocColor(dpy[d],
X                DefaultColormap(dpy[d], screen[d]), &ccol) == True)
X              palette[numcolors++] = ccol.pixel ;
X          }
X!       if (numcolors < 2)
X          {
X            FPRINTF(stderr, "%s: cannot allocate colors.\n", progname) ;
X            exit(1) ;
X--- 440,463 ----
X    iscolor[d] = 0 ;
X    if (DisplayCells(dpy[d], screen[d]) > 2)
X      {
X        iscolor[d] = 1 ;
X        numcolors = 0 ;
X!       for (i = 0; i < REVE_COLORSIZE; i++)
X          {
X!           if (colstr[i] == NULL ||
X!               (XParseColor(dpy[d], DefaultColormap(dpy[d], screen[d]),
X!                            colstr[i], &ccol) == 0))
X!             {
X!               ccol.flags = DoRed | DoGreen | DoBlue ;
X!               ccol.red   = (unsigned short) (rcols[i] << 8) ;
X!               ccol.green = (unsigned short) (gcols[i] << 8) ;
X!               ccol.blue  = (unsigned short) (bcols[i] << 8) ;
X!             }
X            if (XAllocColor(dpy[d],
X                DefaultColormap(dpy[d], screen[d]), &ccol) == True)
X              palette[numcolors++] = ccol.pixel ;
X          }
X!       if (numcolors < REVE_COLORSIZE)
X          {
X            FPRINTF(stderr, "%s: cannot allocate colors.\n", progname) ;
X            exit(1) ;
X***************
X*** 525,530 ****
X--- 523,530 ----
X   *
X   *  XENVIRONMENT environment variable or, if not set, .Xdefaults-hostname
X   *  file.
X+  *
X+  *  REVEDEFAULTS environment variable or, if not set, the ~/.reverc file.
X   */
X  
X  void
X***************
X*** 570,575 ****
X--- 570,587 ----
X      }
X    else db = XrmGetFileDatabase(ptr) ;
X    XrmMergeDatabases(db, &reve_DB[d]) ;
X+ 
X+ /*  Finally merge in Reve defaults via REVEDEFAULTS or, if not defined, the
X+  *  ~/.reverc file.
X+  */
X+ 
X+   if ((ptr = getenv("REVEDEFAULTS")) == NULL)
X+     {
X+       SPRINTF(name, "%s/.reverc", home) ;
X+       db = XrmGetFileDatabase(name) ;
X+     }
X+   else db = XrmGetFileDatabase(ptr) ;
X+   XrmMergeDatabases(db, &reve_DB[d]) ;
X  }
X  
X  
X***************
X*** 655,673 ****
X  
X  /*  Setup property window. */
X  
X!   psize.flags = PMinSize | PMaxSize | PPosition | PSize ;
X!   psize.x = TOTAL_WIDTH + 10 ;
X!   psize.y = 0 ;
X!   psize.max_width = size.min_width = size.width = PROPS_WIDTH ;
X!   psize.max_height = size.min_height = size.height = PROPS_HEIGHT ;
X  
X    pframe[d] = XCreateSimpleWindow(dpy[d], root[d],
X!                                   size.x + TOTAL_WIDTH + 10, size.y,
X!                                   PROPS_WIDTH, PROPS_HEIGHT,
X                                    REVE_BORDER_WIDTH, foregnd[d], backgnd[d]) ;
X  
X    XSetStandardProperties(dpy[d], pframe[d], "reve properties",
X!                          "Props", reve_icon[d], argv, argc, &psize) ;
X  
X  /* Create graphics contexts. */
X  
X--- 667,685 ----
X  
X  /*  Setup property window. */
X  
X!   size.flags = PMinSize | PMaxSize | PPosition | PSize ;
X!   size.x = TOTAL_WIDTH + 10 ;
X!   size.y = 0 ;
X!   size.max_width = size.min_width = size.width = PROPS_WIDTH ;
X!   size.max_height = size.min_height = size.height = PROPS_HEIGHT ;
X  
X    pframe[d] = XCreateSimpleWindow(dpy[d], root[d],
X!                                   size.x, size.y,
X!                                   size.max_width, size.max_height,
X                                    REVE_BORDER_WIDTH, foregnd[d], backgnd[d]) ;
X  
X    XSetStandardProperties(dpy[d], pframe[d], "reve properties",
X!                          "Props", reve_icon[d], argv, argc, &size) ;
X  
X  /* Create graphics contexts. */
X  
X***************
X*** 682,691 ****
X--- 694,733 ----
X  
X    stencilgc[d] = XCreateGC(dpy[d], root[d], gc_mask, &gc_val) ;
X    XSetFillStyle(dpy[d], stencilgc[d], FillOpaqueStippled) ;
X+   XSynchronize(dpy[d], TRUE) ;
X  }
X  
X  
X  void
X+ make_help_window(argc, argv)
X+ int argc ;
X+ char *argv[] ;
X+ {
X+   int d, fontwidth ;
X+ 
X+   d = (int) cur_dpyno ;
X+   fontwidth = font[(int) HFONT]->max_bounds.rbearing +
X+               font[(int) HFONT]->min_bounds.lbearing ;
X+   help_height = ((hfont_height + 1) * HELP_ROWS) + (4 * CGAP) + CHEIGHT ;
X+   help_width  = (fontwidth * HELP_COLS) + (2 * CGAP) ;
X+ 
X+   size.flags = PMinSize | PMaxSize | PPosition | PSize ;
X+   size.x = TOTAL_WIDTH + 10 ;
X+   size.y = 0 ;
X+   size.max_width  = size.min_width  = size.width  = help_width ;
X+   size.max_height = size.min_height = size.height = help_height ;
X+ 
X+   hframe[d] = XCreateSimpleWindow(dpy[d], root[d],
X+                                   size.x, size.y,
X+                                   size.max_width, size.max_height,
X+                                   REVE_BORDER_WIDTH, foregnd[d], backgnd[d]) ;
X+ 
X+   XSetStandardProperties(dpy[d], hframe[d], "reve help",
X+                          "Help", reve_icon[d], argv, argc, &size) ;
X+ }
X+ 
X+ 
X+ void
X  make_icon() {}        /* Null routine - icon created in make_frame. */
X  
X  
X***************
X*** 719,739 ****
X  
X  
X  void
X- open_frame(wtype)
X- enum win_type wtype ;
X- {
X-   int d ;
X-   Window window ;
X- 
X-   d = (int) cur_dpyno ;
X-   if (wtype == W_MAIN) window = frame[d] ;
X-   else                 window = pframe[d] ;
X-   XSelectInput(dpy[0], window, FRAME_MASK) ;
X-   XMapWindow(dpy[0], window) ;
X- }
X- 
X- 
X- void
X  process_event()         /* Determine event type. */
X  {
X    XClientMessageEvent *ev ;
X--- 761,766 ----
X***************
X*** 743,749 ****
X    int d ;
X  
X    d = (int) cur_dpyno ; 
X!        if (event.xany.window == frame[(int) cur_dpyno])  curwin = W_MAIN ;
X    else if (event.xany.window == pframe[(int) cur_dpyno]) curwin = W_PROPS ;
X  
X    switch (event.type)
X--- 770,777 ----
X    int d ;
X  
X    d = (int) cur_dpyno ; 
X!        if (event.xany.window ==  frame[(int) cur_dpyno]) curwin = W_MAIN ;
X!   else if (event.xany.window == hframe[(int) cur_dpyno]) curwin = W_HELP ;
X    else if (event.xany.window == pframe[(int) cur_dpyno]) curwin = W_PROPS ;
X  
X    switch (event.type)
X***************
X*** 807,812 ****
X--- 835,841 ----
X  {
X    int d ;
X    int doframe  = 0 ;
X+   int dohframe = 0 ;
X    int dopframe = 0 ;
X  
X    d = (int) cur_dpyno ;
X***************
X*** 814,819 ****
X--- 843,850 ----
X      {
X        if (event->count == 0 && event->window == frame[(int) cur_dpyno])
X          doframe++ ;
X+       if (event->count == 0 && event->window == hframe[(int) cur_dpyno])
X+         dohframe++ ;
X        if (event->count == 0 && event->window == pframe[(int) cur_dpyno])
X          dopframe++ ;
X      }
X***************
X*** 820,825 ****
X--- 851,857 ----
X    while (XCheckMaskEvent(dpy[d], ExposureMask, (XEvent *) event)) ;
X  
X         if (doframe)  return(FRAME_REPAINT) ;
X+   else if (dohframe) return(HELP_REPAINT) ;
X    else if (dopframe) return(PROPS_REPAINT) ;
X    else               return(IGNORE_EVENT) ;
X  }
X***************
X*** 838,847 ****
X  
X  
X  void
X  start_tool(dtype)            /* Start event dispatcher and display. */
X  enum disp_type dtype ;
X  {
X!   open_frame(W_MAIN) ;
X    XSelectInput(dpy[0], pframe[0], FRAME_MASK) ;
X  
X    if (dtype == XTWO)
X--- 870,898 ----
X  
X  
X  void
X+ set_frame(wtype, showing)
X+ enum win_type wtype ;
X+ int showing ;
X+ {
X+   Window window ;
X+   int d ;
X+ 
X+   d = (int) cur_dpyno ;
X+        if (wtype == W_HELP)  window = hframe[d] ;
X+   else if (wtype == W_PROPS) window = pframe[d] ;
X+ 
X+   if (showing) XMapWindow(dpy[d], window) ;
X+   else         XUnmapWindow(dpy[d], window) ;
X+ }
X+ 
X+ 
X+ void
X  start_tool(dtype)            /* Start event dispatcher and display. */
X  enum disp_type dtype ;
X  {
X!   XSelectInput(dpy[0], frame[0], FRAME_MASK) ;
X!   XMapWindow(dpy[0], frame[0]) ;
X!   XSelectInput(dpy[0], hframe[0], FRAME_MASK) ;
X    XSelectInput(dpy[0], pframe[0], FRAME_MASK) ;
X  
X    if (dtype == XTWO)
X***************
X*** 848,853 ****
X--- 899,905 ----
X      {
X        XSelectInput(dpy[1], frame[1], FRAME_MASK) ;
X        XMapWindow(dpy[1], frame[1]) ;
X+       XSelectInput(dpy[1], hframe[1], FRAME_MASK) ;
X        XSelectInput(dpy[1], pframe[1], FRAME_MASK) ;
X      }
X  
X
X------- xview.c -------
X*** /tmp/da06720	Tue Dec 18 10:04:16 1990
X--- xview.c	Sun Dec 16 11:57:06 1990
X***************
X*** 38,43 ****
X--- 38,44 ----
X  #include <xview/cms.h>
X  #include <xview/cursor.h>
X  #include <xview/svrimage.h>
X+ #include <xview/textsw.h>
X  #include <xview/xv_xrect.h>
X  #include <X11/Xlib.h>
X  #include <X11/Xresource.h>
X***************
X*** 46,52 ****
X  
X  enum gr_type gtype = GXVIEW ;          /* Graphics type. */
X  
X! enum popup_pos {P_BELOW, P_RIGHT } ;   /* Positions relative to main frame. */
X  
X  #define  CLIENT_NO          10
X  #define  DEPTH_MENU_ENTRY   9
X--- 47,53 ----
X  
X  enum gr_type gtype = GXVIEW ;          /* Graphics type. */
X  
X! enum popup_pos { P_BELOW, P_RIGHT } ;  /* Positions relative to main frame. */
X  
X  #define  CLIENT_NO          10
X  #define  DEPTH_MENU_ENTRY   9
X***************
X*** 59,64 ****
X--- 60,66 ----
X  
X  #define  BOLDFONT           "lucidasanstypewriter-bold-12"
X  #define  DEFFONT            "fixed"
X+ #define  HELPFONT           "lucidasanstypewriter-12"
X  #define  NORMALFONT         "lucidasanstypewriter-12"
X  
X  Canvas canvas ;
X***************
X*** 71,76 ****
X--- 73,81 ----
X  
X  Notify_client client = (Notify_client) CLIENT_NO ;
X  
X+ Frame  h_frame ;                /* Help window frame. */
X+ Textsw h_textsw ;               /* Text sub-window for help file. */
X+ 
X  Frame ls_frame ;                /* Frame for load/save pop-up window. */
X  Panel ls_panel ;                /* Panel for load/save operations. */
X  Panel_item ls_button ;          /* Button to start load/save operation. */
X***************
X*** 111,117 ****
X  unsigned long backgnd ;         /* Default background color. */
X  unsigned long foregnd ;         /* Default foreground color. */
X  unsigned long gc_mask ;         /* Mask for setting graphic context values. */
X! unsigned long palette[OTH_COLORSIZE] ;     /* Xlib color palette. */
X  
X  int opvals[3] ;         /* Pixrect rasterop values. */
X  int pid ;               /* Process id of the reve_proc process. */
X--- 116,122 ----
X  unsigned long backgnd ;         /* Default background color. */
X  unsigned long foregnd ;         /* Default foreground color. */
X  unsigned long gc_mask ;         /* Mask for setting graphic context values. */
X! unsigned long palette[REVE_COLORSIZE] ;     /* Xlib color palette. */
X  
X  int opvals[3] ;         /* Pixrect rasterop values. */
X  int pid ;               /* Process id of the reve_proc process. */
X***************
X*** 121,128 ****
X  
X  Notify_value read_from_reve(), sigchldcatcher() ;
X  void destroy_frame() ;
X! static void menu_proc(),    set_depth(),   set_player() ;
X! static void xv_load_game(), xv_new_game(), xv_save_game(), xv_set_props() ;
X  
X  
X  void
X--- 126,134 ----
X  
X  Notify_value read_from_reve(), sigchldcatcher() ;
X  void destroy_frame() ;
X! static void menu_proc(),    set_depth(),    set_player() ;
X! static void xv_do_help(),   xv_load_game(), xv_new_game() ;
X! static void xv_save_game(), xv_set_props() ;
X  
X  
X  void
X***************
X*** 158,170 ****
X  }
X  
X  
X- void
X- close_frame()        /* Iconise reve window. */
X- {
X-   XV_SET(frame, FRAME_CLOSED, TRUE, 0) ;
X- }
X- 
X- 
X  /*ARGSUSED*/
X  void
X  color_area(wtype, x, y, width, height, color)
X--- 164,169 ----
X***************
X*** 427,435 ****
X--- 426,437 ----
X  init_fonts()         /* Open the normal and bold fonts. */
X  {
X    font[(int) BFONT] = get_font(BOLDFONT) ;
X+   font[(int) HFONT] = get_font(HELPFONT) ;
X    font[(int) NFONT] = get_font(NORMALFONT) ;
X    bfont_height = font[(int) BFONT]->max_bounds.ascent +
X                   font[(int) BFONT]->max_bounds.descent ;
X+   hfont_height = font[(int) HFONT]->max_bounds.ascent +
X+                  font[(int) HFONT]->max_bounds.descent ;
X    nfont_height = font[(int) NFONT]->max_bounds.ascent +
X                   font[(int) NFONT]->max_bounds.descent ;
X  }
X***************
X*** 460,482 ****
X  load_colors()      /* Create and load reve color map. */
X  {
X    XColor ccol ;
X-   u_char red[OTH_COLORSIZE], green[OTH_COLORSIZE], blue[OTH_COLORSIZE] ;
X    int i, numcolors ;
X  
X    if (iscolor[(int) cur_dpyno])
X      {
X-       oth_colorsetup(red, green, blue) ;
X        numcolors = 0 ;
X!       for (i = 0; i < OTH_COLORSIZE; i++)
X          {
X!           ccol.flags = DoRed | DoGreen | DoBlue ;
X!           ccol.red = (unsigned short) (red[i] << 8) ;
X!           ccol.green = (unsigned short) (green[i] << 8) ;
X!           ccol.blue = (unsigned short) (blue[i] << 8) ;
X            if (XAllocColor(dpy, DefaultColormap(dpy, screen), &ccol) == True)
X              palette[numcolors++] = ccol.pixel ;
X          }
X!       if (numcolors < 2)
X          {
X            FPRINTF(stderr, "%s: cannot allocate colors.\n", progname) ;
X            exit(1) ;
X--- 462,487 ----
X  load_colors()      /* Create and load reve color map. */
X  {
X    XColor ccol ;
X    int i, numcolors ;
X  
X    if (iscolor[(int) cur_dpyno])
X      {
X        numcolors = 0 ;
X!       for (i = 0; i < REVE_COLORSIZE; i++)
X          {
X!           if (colstr[i] == NULL ||
X!               (XParseColor(dpy, DefaultColormap(dpy, screen),
X!                            colstr[i], &ccol) == 0)) 
X!             {
X!               ccol.flags = DoRed | DoGreen | DoBlue ;
X!               ccol.red   = (unsigned short) (rcols[i] << 8) ;
X!               ccol.green = (unsigned short) (gcols[i] << 8) ;
X!               ccol.blue  = (unsigned short) (bcols[i] << 8) ;
X!             }
X            if (XAllocColor(dpy, DefaultColormap(dpy, screen), &ccol) == True)
X              palette[numcolors++] = ccol.pixel ;
X          }
X!       if (numcolors < REVE_COLORSIZE)
X          {
X            FPRINTF(stderr, "%s: cannot allocate colors.\n", progname) ;
X            exit(1) ;
X***************
X*** 498,503 ****
X--- 503,510 ----
X   *
X   *  XENVIRONMENT environment variable or, if not set, .Xdefaults-hostname
X   *  file.
X+  *
X+  *  REVEDEFAULTS environment variable or, if not set, the ~/.reverc file.
X   */
X   
X  void
X***************
X*** 541,546 ****
X--- 548,565 ----
X      }
X    else db = XrmGetFileDatabase(ptr) ;
X    XrmMergeDatabases(db, &reve_DB[d]) ;
X+ 
X+ /*  Finally merge in Reve defaults via REVEDEFAULTS or, if not defined, the
X+  *  ~/.reverc file.
X+  */
X+   
X+   if ((ptr = getenv("REVEDEFAULTS")) == NULL)
X+     {
X+       SPRINTF(name, "%s/.reverc", home) ;
X+       db = XrmGetFileDatabase(name) ;
X+     }
X+   else db = XrmGetFileDatabase(ptr) ;
X+   XrmMergeDatabases(db, &reve_DB[d]) ;
X  }
X  
X  
X***************
X*** 652,659 ****
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 0),
X              PANEL_ITEM_Y,       xv_row(panel, 0),
X!             PANEL_LABEL_STRING, "Load Game...",
X!             PANEL_NOTIFY_PROC,  xv_load_game,
X              0) ;
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X--- 671,678 ----
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 0),
X              PANEL_ITEM_Y,       xv_row(panel, 0),
X!             PANEL_NOTIFY_PROC,  xv_new_game,
X!             PANEL_LABEL_STRING, " New Game ",
X              0) ;
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X***************
X*** 666,687 ****
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 30),
X              PANEL_ITEM_Y,       xv_row(panel, 0),
X!             PANEL_NOTIFY_PROC,  xv_new_game,
X!             PANEL_LABEL_STRING, " New Game ",
X              0) ;
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 45),
X              PANEL_ITEM_Y,       xv_row(panel, 0),
X!             PANEL_LABEL_STRING, "   Props...   ",
X!             PANEL_NOTIFY_PROC,  xv_set_props,
X              0) ;
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 0),
X              PANEL_ITEM_Y,       xv_row(panel, 1),
X!             PANEL_LABEL_STRING, "Save Game...",
X!             PANEL_NOTIFY_PROC,  xv_save_game,
X              0) ;
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X--- 685,706 ----
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 30),
X              PANEL_ITEM_Y,       xv_row(panel, 0),
X!             PANEL_LABEL_STRING, "     Redo     ",
X!             PANEL_NOTIFY_PROC,  redo,
X              0) ;
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 45),
X              PANEL_ITEM_Y,       xv_row(panel, 0),
X!             PANEL_LABEL_STRING, "   Help...    ",
X!             PANEL_NOTIFY_PROC,  xv_do_help,
X              0) ;
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 0),
X              PANEL_ITEM_Y,       xv_row(panel, 1),
X!             PANEL_LABEL_STRING, "Load Game...",
X!             PANEL_NOTIFY_PROC,  xv_load_game,
X              0) ;
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X***************
X*** 689,695 ****
X              PANEL_ITEM_Y,       xv_row(panel, 1),
X              PANEL_LABEL_STRING, "   Suggest   ",
X              PANEL_NOTIFY_PROC,  suggest,
X!             0) ;        
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 30),
X--- 708,714 ----
X              PANEL_ITEM_Y,       xv_row(panel, 1),
X              PANEL_LABEL_STRING, "   Suggest   ",
X              PANEL_NOTIFY_PROC,  suggest,
X!             0) ;
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 30),
X***************
X*** 696,706 ****
X              PANEL_ITEM_Y,       xv_row(panel, 1),
X              PANEL_LABEL_STRING, "     Undo     ",
X              PANEL_NOTIFY_PROC,  undo,
X!             0) ;        
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 45),
X              PANEL_ITEM_Y,       xv_row(panel, 1),
X              PANEL_LABEL_STRING, "     Quit     ",
X              PANEL_NOTIFY_PROC,  destroy_frame,
X              0) ;
X--- 715,739 ----
X              PANEL_ITEM_Y,       xv_row(panel, 1),
X              PANEL_LABEL_STRING, "     Undo     ",
X              PANEL_NOTIFY_PROC,  undo,
X!             0) ;
X  
X    XV_CREATE(panel,              PANEL_BUTTON,
X              PANEL_ITEM_X,       xv_col(panel, 45),
X              PANEL_ITEM_Y,       xv_row(panel, 1),
X+             PANEL_LABEL_STRING, "   Props...   ",
X+             PANEL_NOTIFY_PROC,  xv_set_props,
X+             0) ;
X+ 
X+   XV_CREATE(panel,              PANEL_BUTTON,
X+             PANEL_ITEM_X,       xv_col(panel, 0),
X+             PANEL_ITEM_Y,       xv_row(panel, 2),
X+             PANEL_LABEL_STRING, "Save Game...",
X+             PANEL_NOTIFY_PROC,  xv_save_game,
X+             0) ;
X+ 
X+   XV_CREATE(panel,              PANEL_BUTTON,
X+             PANEL_ITEM_X,       xv_col(panel, 45),
X+             PANEL_ITEM_Y,       xv_row(panel, 2),
X              PANEL_LABEL_STRING, "     Quit     ",
X              PANEL_NOTIFY_PROC,  destroy_frame,
X              0) ;
X***************
X*** 707,713 ****
X  
X    XV_CREATE(panel, PANEL_MESSAGE,
X              PANEL_ITEM_X,       xv_col(panel, 0),
X!             PANEL_ITEM_Y,       xv_row(panel, 2),
X              PANEL_LABEL_BOLD,   TRUE,
X              PANEL_LABEL_STRING, "Black:",
X              0) ;
X--- 740,746 ----
X  
X    XV_CREATE(panel, PANEL_MESSAGE,
X              PANEL_ITEM_X,       xv_col(panel, 0),
X!             PANEL_ITEM_Y,       xv_row(panel, 3),
X              PANEL_LABEL_BOLD,   TRUE,
X              PANEL_LABEL_STRING, "Black:",
X              0) ;
X***************
X*** 714,720 ****
X    val = items[(int) BLACK_PLAYS].value ;
X    black_item = xv_create(panel,                      PANEL_MESSAGE,
X                           PANEL_ITEM_X,               xv_col(panel, 7),
X!                          PANEL_ITEM_Y,               xv_row(panel, 2),
X                           PANEL_LABEL_BOLD,           FALSE,
X                           PANEL_LABEL_STRING,         player_values[val],
X                           0) ;
X--- 747,753 ----
X    val = items[(int) BLACK_PLAYS].value ;
X    black_item = xv_create(panel,                      PANEL_MESSAGE,
X                           PANEL_ITEM_X,               xv_col(panel, 7),
X!                          PANEL_ITEM_Y,               xv_row(panel, 3),
X                           PANEL_LABEL_BOLD,           FALSE,
X                           PANEL_LABEL_STRING,         player_values[val],
X                           0) ;
X***************
X*** 721,727 ****
X  
X    XV_CREATE(panel, PANEL_MESSAGE,
X              PANEL_ITEM_X,       xv_col(panel, 30),
X!             PANEL_ITEM_Y,       xv_row(panel, 2),
X              PANEL_LABEL_BOLD,   TRUE,
X              PANEL_LABEL_STRING, "White:",
X              0) ;
X--- 754,760 ----
X  
X    XV_CREATE(panel, PANEL_MESSAGE,
X              PANEL_ITEM_X,       xv_col(panel, 30),
X!             PANEL_ITEM_Y,       xv_row(panel, 3),
X              PANEL_LABEL_BOLD,   TRUE,
X              PANEL_LABEL_STRING, "White:",
X              0) ;
X***************
X*** 728,734 ****
X    val = items[(int) WHITE_PLAYS].value ;
X    white_item = xv_create(panel,                      PANEL_MESSAGE,
X                           PANEL_ITEM_X,               xv_col(panel, 37),
X!                          PANEL_ITEM_Y,               xv_row(panel, 2),
X                           PANEL_LABEL_BOLD,           FALSE,
X                           PANEL_LABEL_STRING,         player_values[val],
X                           0) ;
X--- 761,767 ----
X    val = items[(int) WHITE_PLAYS].value ;
X    white_item = xv_create(panel,                      PANEL_MESSAGE,
X                           PANEL_ITEM_X,               xv_col(panel, 37),
X!                          PANEL_ITEM_Y,               xv_row(panel, 3),
X                           PANEL_LABEL_BOLD,           FALSE,
X                           PANEL_LABEL_STRING,         player_values[val],
X                           0) ;
X***************
X*** 735,759 ****
X  
X    mes_items[(int) (PANEL_MES - PANEL_MES)] = xv_create(panel, PANEL_MESSAGE,
X                         PANEL_ITEM_X,       xv_col(panel, 0),
X!                        PANEL_ITEM_Y,       xv_row(panel, 3),
X                         PANEL_LABEL_STRING, "",
X                         0) ;
X  
X    mes_items[(int) (EVAL_MES - PANEL_MES)] = xv_create(panel, PANEL_MESSAGE,
X                         PANEL_ITEM_X,       xv_col(panel, 0),
X!                        PANEL_ITEM_Y,       xv_row(panel, 4),
X                         PANEL_LABEL_STRING, "",
X                         0) ;
X  
X    mes_items[(int) (SCORE_MES - PANEL_MES)] = xv_create(panel, PANEL_MESSAGE,
X                         PANEL_ITEM_X,       xv_col(panel, 0),
X!                        PANEL_ITEM_Y,       xv_row(panel, 5),
X                         PANEL_LABEL_STRING, "",
X                         0) ;
X  
X    mes_items[(int) (TURN_MES - PANEL_MES)] = xv_create(panel, PANEL_MESSAGE,
X                         PANEL_ITEM_X,       xv_col(panel, 30),
X!                        PANEL_ITEM_Y,       xv_row(panel, 5),
X                         PANEL_LABEL_STRING, "Black to move",
X                         0) ;
X    window_fit(panel) ;
X--- 768,792 ----
X  
X    mes_items[(int) (PANEL_MES - PANEL_MES)] = xv_create(panel, PANEL_MESSAGE,
X                         PANEL_ITEM_X,       xv_col(panel, 0),
X!                        PANEL_ITEM_Y,       xv_row(panel, 4),
X                         PANEL_LABEL_STRING, "",
X                         0) ;
X  
X    mes_items[(int) (EVAL_MES - PANEL_MES)] = xv_create(panel, PANEL_MESSAGE,
X                         PANEL_ITEM_X,       xv_col(panel, 0),
X!                        PANEL_ITEM_Y,       xv_row(panel, 5),
X                         PANEL_LABEL_STRING, "",
X                         0) ;
X  
X    mes_items[(int) (SCORE_MES - PANEL_MES)] = xv_create(panel, PANEL_MESSAGE,
X                         PANEL_ITEM_X,       xv_col(panel, 0),
X!                        PANEL_ITEM_Y,       xv_row(panel, 6),
X                         PANEL_LABEL_STRING, "",
X                         0) ;
X  
X    mes_items[(int) (TURN_MES - PANEL_MES)] = xv_create(panel, PANEL_MESSAGE,
X                         PANEL_ITEM_X,       xv_col(panel, 30),
X!                        PANEL_ITEM_Y,       xv_row(panel, 6),
X                         PANEL_LABEL_STRING, "Black to move",
X                         0) ;
X    window_fit(panel) ;
X***************
X*** 905,911 ****
X--- 938,977 ----
X  }
X  
X  
X+ /*ARGSUSED*/
X  void
X+ make_help_window(argc, argv)
X+ int argc ;
X+ char *argv[] ;
X+ {
X+   h_frame = (Frame) xv_create(frame,                    FRAME_CMD,
X+                               FRAME_ICON,               reve_icon,
X+                               FRAME_LABEL,              "Reve Help",
X+                               FRAME_CMD_PUSHPIN_IN,     TRUE,
X+                               FRAME_NO_CONFIRM,         TRUE,
X+                               XV_X,                     0,
X+                               XV_Y,                     0,
X+                               XV_WIDTH,                 500,
X+                               XV_HEIGHT,                700,
X+                               XV_SHOW,                  help_showing,
X+                               FRAME_SHOW_RESIZE_CORNER, FALSE,
X+                               0) ;
X+   h_textsw = (Textsw) xv_create(h_frame,                 TEXTSW,
X+                                 XV_X,                    0,
X+                                 XV_Y,                    0,
X+                                 XV_WIDTH,                500,
X+                                 XV_HEIGHT,               700,
X+                                 TEXTSW_FILE_CONTENTS,    helpfile,
X+                                 TEXTSW_READ_ONLY,        TRUE,
X+                                 TEXTSW_FIRST,            0,
X+                                 TEXTSW_BROWSING,         TRUE,
X+                                 0) ;
X+   window_fit(h_textsw) ;
X+   window_fit(h_frame) ;
X+ }
X+ 
X+ 
X+ void
X  make_icon()
X  {
X  
X***************
X*** 973,985 ****
X  
X  
X  void
X! open_frame(wtype)                    /* **DUMMY ROUTINE** */
X! enum win_type wtype ;
X  {
X  }
X  
X  
X  void
X  paint_prop_sheet()            /* **DUMMY ROUTINE** */
X  {
X  }
X--- 1039,1056 ----
X  
X  
X  void
X! paint_help()                  /* **DUMMY ROUTINE** */
X  {
X  }
X  
X  
X  void
X+ paint_help_text()             /* **DUMMY ROUTINE** */
X+ {
X+ }
X+ 
X+ 
X+ void
X  paint_prop_sheet()            /* **DUMMY ROUTINE** */
X  {
X  }
X***************
X*** 1160,1165 ****
X--- 1231,1245 ----
X  
X  /*ARGSUSED*/
X  void
X+ set_frame(wtype, showing)                       /* **DUMMY ROUTINE** */
X+ enum win_type wtype ;
X+ int showing ;
X+ {
X+ }
X+ 
X+ 
X+ /*ARGSUSED*/
X+ void
X  set_cycle(wtype, mtype, str)                    /* **DUMMY ROUTINE** */
X  enum win_type wtype ;
X  enum panel_type mtype ;
X***************
X*** 1326,1331 ****
X--- 1406,1423 ----
X    reve_player = player ;
X    processing  = TRUE ;
X    WRITE(pipe_io[0][1], (char *) &in, sizeof(struct reve_in)) ;
X+ }
X+ 
X+ 
X+ /*ARGSUSED*/
X+ static void
X+ xv_do_help(item, value, event)    /* Callback for online help window. */
X+ Panel_item item ;
X+ int value ;
X+ Event *event ;
X+ {
X+   position_popup(frame, h_frame, P_RIGHT) ;
X+   XV_SET(h_frame, XV_SHOW, TRUE, 0) ;
X  }
X  
X  
X
END_OF_FILE
if test 49681 -ne `wc -c <'patches04b'`; then
    echo shar: \"'patches04b'\" unpacked with wrong size!
fi
# end of 'patches04b'
fi
echo shar: End of archive 2 \(of 4\).
cp /dev/null ark2isdone
MISSING=""
for I in 1 2 3 4 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 4 archives.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0