open-src/app/xlock/sun-src/life.c
author Alan Coopersmith <Alan.Coopersmith@Sun.COM>
Thu, 18 Feb 2010 16:03:08 -0800
changeset 907 3c35d611cdaa
parent 546 f3f84c886c69
child 919 425233ae7236
permissions -rw-r--r--
6927784 Remove SCCS ident tags from X gate
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
546
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     1
/*
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     2
 * Copyright (c) 1988-91 by Patrick J. Naughton.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     3
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     4
 * Permission to use, copy, modify, and distribute this software and its
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     5
 * documentation for any purpose and without fee is hereby granted,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     6
 * provided that the above copyright notice appear in all copies and that
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     7
 * both that copyright notice and this permission notice appear in
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     8
 * supporting documentation.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
     9
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    10
 * This file is provided AS IS with no warranties of any kind.  The author
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    11
 * shall have no liability with respect to the infringement of copyrights,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    12
 * trade secrets or any patents by this file or any part thereof.  In no
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    13
 * event will the author be liable for any lost revenue or profits or
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    14
 * other special, indirect and consequential damages.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    15
 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    16
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    17
/*
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    18
 * Copyright 1994 Sun Microsystems, Inc.  All rights reserved.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    19
 * Use is subject to license terms.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    20
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    21
 * Permission is hereby granted, free of charge, to any person obtaining a
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    22
 * copy of this software and associated documentation files (the
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    23
 * "Software"), to deal in the Software without restriction, including
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    24
 * without limitation the rights to use, copy, modify, merge, publish,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    25
 * distribute, and/or sell copies of the Software, and to permit persons
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    26
 * to whom the Software is furnished to do so, provided that the above
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    27
 * copyright notice(s) and this permission notice appear in all copies of
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    28
 * the Software and that both the above copyright notice(s) and this
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    29
 * permission notice appear in supporting documentation.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    30
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    31
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    32
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    33
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    34
 * OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    35
 * HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    36
 * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    37
 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    38
 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    39
 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    40
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    41
 * Except as contained in this notice, the name of a copyright holder
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    42
 * shall not be used in advertising or otherwise to promote the sale, use
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    43
 * or other dealings in this Software without prior written authorization
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    44
 * of the copyright holder.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    45
 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    46
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    47
/*-
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    48
 * life.c - Conway's game of Life for xlock, the X Window System lockscreen.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    49
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    50
 * Copyright (c) 1991 by Patrick J. Naughton.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    51
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    52
 * See xlock.c for copying information.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    53
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    54
 * Revision History:
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    55
 * 24-May-91: Added wraparound code from [email protected].
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    56
 *	      Made old cells stay blue.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    57
 *	      Made batchcount control the number of generations till restart.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    58
 * 29-Jul-90: support for multiple screens.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    59
 * 07-Feb-90: remove bogus semi-colon after #include line.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    60
 * 15-Dec-89: Fix for proper skipping of {White,Black}Pixel() in colors.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    61
 * 08-Oct-89: Moved seconds() to an extern.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    62
 * 20-Sep-89: Written (life algorithm courtesy of Jim Graham, [email protected]).
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    63
 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    64
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    65
#include "xlock.h"
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    66
#include "lifeicon.bit"
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    67
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    68
#ifdef SYSV
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    69
#ifndef bcopy
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    70
#define bcopy(a,b,c) memmove(b,a,c)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    71
#endif
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    72
#ifndef bzero
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    73
#define bzero(a,b) memset(a,0,b)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    74
#endif
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    75
#endif
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    76
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    77
static XImage logo = {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    78
    0, 0,			/* width, height */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    79
    0, XYBitmap, 0,		/* xoffset, format, data */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    80
    LSBFirst, 8,		/* byte-order, bitmap-unit */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    81
    LSBFirst, 8, 1		/* bitmap-bit-order, bitmap-pad, depth */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    82
};
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    83
#define min(a, b) ((a)<(b)?(a):(b))
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    84
#define	MAXROWS	155
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    85
#define MAXCOLS	144
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    86
#define TIMEOUT 30
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    87
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    88
typedef struct {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    89
    int         pixelmode;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    90
    int         xs;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    91
    int         ys;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    92
    int         xb;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    93
    int         yb;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    94
    int         generation;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    95
    long        shooterTime;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    96
    int         nrows;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    97
    int         ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    98
    int         width;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
    99
    int         height;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   100
    unsigned char buffer[(MAXROWS + 2) * (MAXCOLS + 2) + 2];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   101
    unsigned char tempbuf[MAXCOLS * 2];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   102
    unsigned char lastbuf[MAXCOLS];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   103
    unsigned char agebuf[(MAXROWS + 2) * (MAXCOLS + 2)];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   104
}           lifestruct;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   105
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   106
extern XColor ssblack[];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   107
extern XColor sswhite[];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   108
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   109
static lifestruct lifes[MAXSCREENS];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   110
static int  icon_width, icon_height;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   111
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   112
/* Buffer stores the data for each cell. Each cell is stored as
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   113
 * 8 bits representing the presence of a critter in each of it's
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   114
 * surrounding 8 cells. There is an empty row and column around
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   115
 * the whole array to allow stores without bounds checking as well
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   116
 * as an extra row at the end for the fetches into tempbuf.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   117
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   118
 * Tempbuf stores the data for the next two rows so that we know
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   119
 * the state of those critter before he was modified by the fate
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   120
 * of the critters that have already been processed.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   121
 *
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   122
 * Agebuf stores the age of each critter.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   123
 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   124
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   125
#define	UPLT	0x01
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   126
#define UP	0x02
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   127
#define UPRT	0x04
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   128
#define LT	0x08
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   129
#define RT	0x10
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   130
#define DNLT	0x20
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   131
#define DN	0x40
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   132
#define DNRT	0x80
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   133
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   134
/* Fates is a lookup table for the fate of a critter. The 256
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   135
 * entries represent the 256 possible combinations of the 8
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   136
 * neighbor cells. Each entry is one of BIRTH (create a cell
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   137
 * or leave one alive), SAME (leave the cell alive or dead),
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   138
 * or DEATH (kill anything in the cell).
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   139
 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   140
#define BIRTH	0
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   141
#define SAME	1
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   142
#define DEATH	2
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   143
static unsigned char fates[256];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   144
static int  initialized = 0;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   145
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   146
static int  patterns[][128] = {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   147
    {				/* EIGHT */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   148
	-3, -3, -2, -3, -1, -3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   149
	-3, -2, -2, -2, -1, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   150
	-3, -1, -2, -1, -1, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   151
	0, 0, 1, 0, 2, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   152
	0, 1, 1, 1, 2, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   153
	0, 2, 1, 2, 2, 2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   154
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   155
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   156
    {				/* PULSAR */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   157
	1, 1, 2, 1, 3, 1, 4, 1, 5, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   158
	1, 2, 5, 2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   159
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   160
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   161
    {				/* BARBER */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   162
	-7, -7, -6, -7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   163
	-7, -6, -5, -6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   164
	-5, -4, -3, -4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   165
	-3, -2, -1, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   166
	-1, 0, 1, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   167
	1, 2, 3, 2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   168
	3, 4, 5, 4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   169
	4, 5, 5, 5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   170
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   171
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   172
    {				/* HERTZ */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   173
	-2, -6, -1, -6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   174
	-2, -5, -1, -5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   175
	-7, -3, -6, -3, -2, -3, -1, -3, 0, -3, 1, -3, 5, -3, 6, -3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   176
	-7, -2, -5, -2, -3, -2, 2, -2, 4, -2, 6, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   177
	-5, -1, -3, -1, -2, -1, 2, -1, 4, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   178
	-7, 0, -5, 0, -3, 0, 2, 0, 4, 0, 6, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   179
	-7, 1, -6, 1, -2, 1, -1, 1, 0, 1, 1, 1, 5, 1, 6, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   180
	-2, 3, -1, 3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   181
	-2, 4, -1, 4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   182
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   183
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   184
    {				/* TUMBLER */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   185
	-6, -6, -5, -6, 6, -6, 7, -6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   186
	-6, -5, -5, -5, 6, -5, 7, -5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   187
	-5, 5, 6, 5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   188
	-7, 6, -5, 6, 6, 6, 8, 6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   189
	-7, 7, -5, 7, 6, 7, 8, 7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   190
	-7, 8, -6, 8, 7, 8, 8, 8,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   191
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   192
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   193
    {				/* PERIOD4 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   194
	-5, -8, -4, -8,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   195
	-7, -7, -5, -7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   196
	-8, -6, -2, -6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   197
	-7, -5, -3, -5, -2, -5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   198
	-5, -3, -3, -3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   199
	-4, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   200
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   201
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   202
    {				/* PERIOD5 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   203
	-5, -8, -4, -8,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   204
	-6, -7, -3, -7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   205
	-7, -6, -2, -6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   206
	-8, -5, -1, -5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   207
	-8, -4, -1, -4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   208
	-7, -3, -2, -3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   209
	-6, -2, -3, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   210
	-5, -1, -4, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   211
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   212
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   213
    {				/* PERIOD6 */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   214
	-4, -8, -3, -8,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   215
	-8, -7, -7, -7, -5, -7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   216
	-8, -6, -7, -6, -4, -6, -1, -6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   217
	-3, -5, -1, -5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   218
	-2, -4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   219
	-3, -2, -2, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   220
	-3, -1, -2, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   221
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   222
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   223
    {				/* PINWHEEL */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   224
	-4, -8, -3, -8,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   225
	-4, -7, -3, -7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   226
	-4, -5, -3, -5, -2, -5, -1, -5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   227
	-5, -4, -3, -4, 0, -4, 2, -4, 3, -4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   228
	-5, -3, -1, -3, 0, -3, 2, -3, 3, -3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   229
	-8, -2, -7, -2, -5, -2, -2, -2, 0, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   230
	-8, -1, -7, -1, -5, -1, 0, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   231
	-4, 0, -3, 0, -2, 0, -1, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   232
	-2, 2, -1, 2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   233
	-2, 3, -1, 3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   234
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   235
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   236
    {				/* ] */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   237
	-1, -1, 0, -1, 1, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   238
	0, 0, 1, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   239
	-1, 1, 0, 1, 1, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   240
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   241
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   242
    {				/* cc: */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   243
	-3, -1, -2, -1, -1, -1, 1, -1, 2, -1, 3, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   244
	-3, 0, -2, 0, 1, 0, 2, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   245
	-3, 1, -2, 1, -1, 1, 1, 1, 2, 1, 3, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   246
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   247
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   248
    {				/* DOLBY */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   249
	-3, -1, -2, -1, -1, -1, 1, -1, 2, -1, 3, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   250
	-3, 0, -2, 0, 2, 0, 3, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   251
	-3, 1, -2, 1, -1, 1, 1, 1, 2, 1, 3, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   252
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   253
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   254
    {				/* HORIZON */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   255
	-15, 0, -14, 0, -13, 0, -12, 0, -11, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   256
	-10, 0, -9, 0, -8, 0, -7, 0, -6, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   257
	-5, 0, -4, 0, -3, 0, -2, 0, -1, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   258
	4, 0, 3, 0, 2, 0, 1, 0, 0, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   259
	9, 0, 8, 0, 7, 0, 6, 0, 5, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   260
	14, 0, 13, 0, 12, 0, 11, 0, 10, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   261
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   262
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   263
    {				/* SHEAR */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   264
	-7, -2, -6, -2, -5, -2, -4, -2, -3, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   265
	-2, -2, -1, -2, 0, -2, 1, -2, 2, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   266
	-5, -1, -4, -1, -3, -1, -2, -1, -1, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   267
	0, -1, 1, -1, 2, -1, 3, -1, 4, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   268
	-3, 0, -2, 0, -1, 0, 0, 0, 1, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   269
	2, 0, 3, 0, 4, 0, 5, 0, 6, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   270
	-10, 1, -9, 1, -8, 1, -7, 1, -6, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   271
	-5, 1, -4, 1, -3, 1, -2, 1, -1, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   272
	-10, 2, -9, 2, -8, 2, -7, 2, -6, 2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   273
	-5, 2, -4, 2, -3, 2, -2, 2, -1, 2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   274
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   275
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   276
    {				/* VERTIGO */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   277
	0, -7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   278
	0, -6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   279
	0, -5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   280
	0, -4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   281
	0, -3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   282
	0, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   283
	0, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   284
	0, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   285
	0, 7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   286
	0, 6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   287
	0, 5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   288
	0, 4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   289
	0, 3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   290
	0, 2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   291
	0, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   292
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   293
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   294
    {				/* CROSSBAR */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   295
	-5, 0, -4, 0, -3, 0, -2, 0, -1, 0, 4, 0, 3, 0, 2, 0, 1, 0, 0, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   296
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   297
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   298
    {				/* GOALPOSTS */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   299
	-8, -7, 8, -7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   300
	-8, -6, 8, -6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   301
	-8, -5, 8, -5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   302
	-8, -4, 8, -4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   303
	-8, -3, 8, -3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   304
	-8, -2, 8, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   305
	-8, -1, 8, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   306
	-8, 0, 8, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   307
	-8, 1, 8, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   308
	-8, 2, 8, 2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   309
	-8, 3, 8, 3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   310
	-8, 4, 8, 4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   311
	-8, 5, 8, 5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   312
	-8, 6, 8, 6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   313
	-8, 7, 8, 7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   314
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   315
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   316
    {				/* \ */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   317
	-8, -8, -7, -8,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   318
	-7, -7, -6, -7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   319
	-6, -6, -5, -6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   320
	-5, -5, -4, -5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   321
	-4, -4, -3, -4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   322
	-3, -3, -2, -3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   323
	-2, -2, -1, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   324
	-1, -1, 0, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   325
	0, 0, 1, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   326
	1, 1, 2, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   327
	2, 2, 3, 2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   328
	3, 3, 4, 3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   329
	4, 4, 5, 4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   330
	5, 5, 6, 5,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   331
	6, 6, 7, 6,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   332
	7, 7, 8, 7,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   333
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   334
    },
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   335
    {				/* LABYRINTH */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   336
	-4, -4, -3, -4, -2, -4, -1, -4, 0, -4, 1, -4, 2, -4, 3, -4, 4, -4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   337
	-4, -3, 0, -3, 4, -3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   338
	-4, -2, -2, -2, -1, -2, 0, -2, 1, -2, 2, -2, 4, -2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   339
	-4, -1, -2, -1, 2, -1, 4, -1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   340
	-4, 0, -2, 0, -1, 0, 0, 0, 1, 0, 2, 0, 4, 0,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   341
	-4, 1, -2, 1, 2, 1, 4, 1,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   342
	-4, 2, -2, 2, -1, 2, 0, 2, 1, 2, 2, 2, 4, 2,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   343
	-4, 3, 0, 3, 4, 3,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   344
	-4, 4, -3, 4, -2, 4, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   345
	99
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   346
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   347
};
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   348
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   349
#define NPATS	(sizeof patterns / sizeof patterns[0])
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   350
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   351
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   352
static void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   353
drawcell(win, row, col)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   354
    Window      win;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   355
    int         row, col;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   356
{
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   357
    lifestruct *lp = &lifes[screen];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   358
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   359
    XSetForeground(dsp, Scr[screen].gc, sswhite[screen].pixel);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   360
    if (!mono && Scr[screen].npixels > 2) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   361
	unsigned char *loc = lp->buffer + ((row + 1) * (lp->ncols + 2)) + col + 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   362
	unsigned char *ageptr = lp->agebuf + (loc - lp->buffer);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   363
	unsigned char age = *ageptr;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   364
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   365
	/* if we aren't up to blue yet, then keep aging the cell. */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   366
	if (age < Scr[screen].npixels * 0.7)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   367
	    ++age;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   368
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   369
	XSetForeground(dsp, Scr[screen].gc, Scr[screen].pixels[age]);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   370
	*ageptr = age;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   371
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   372
    if (lp->pixelmode)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   373
	XFillRectangle(dsp, win, Scr[screen].gc,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   374
	       lp->xb + lp->xs * col, lp->yb + lp->ys * row, lp->xs, lp->ys);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   375
    else
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   376
	XPutImage(dsp, win, Scr[screen].gc, &logo,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   377
		  0, 0, lp->xb + lp->xs * col, lp->yb + lp->ys * row,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   378
		  icon_width, icon_height);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   379
}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   380
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   381
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   382
static void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   383
erasecell(win, row, col)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   384
    Window      win;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   385
    int         row, col;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   386
{
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   387
    lifestruct *lp = &lifes[screen];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   388
    XSetForeground(dsp, Scr[screen].gc, ssblack[screen].pixel);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   389
    XFillRectangle(dsp, win, Scr[screen].gc,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   390
	       lp->xb + lp->xs * col, lp->yb + lp->ys * row, lp->xs, lp->ys);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   391
}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   392
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   393
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   394
static void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   395
spawn(loc)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   396
    unsigned char *loc;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   397
{
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   398
    lifestruct *lp = &lifes[screen];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   399
    unsigned char *ulloc, *ucloc, *urloc, *clloc, *crloc, *llloc, *lcloc, *lrloc,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   400
               *arloc;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   401
    int         off, row, col, lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   402
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   403
    lastrow = (lp->nrows) * (lp->ncols + 2);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   404
    off = loc - lp->buffer;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   405
    col = off % (lp->ncols + 2);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   406
    row = (off - col) / (lp->ncols + 2);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   407
    ulloc = loc - lp->ncols - 3;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   408
    ucloc = loc - lp->ncols - 2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   409
    urloc = loc - lp->ncols - 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   410
    clloc = loc - 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   411
    crloc = loc + 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   412
    arloc = loc + 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   413
    llloc = loc + lp->ncols + 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   414
    lcloc = loc + lp->ncols + 2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   415
    lrloc = loc + lp->ncols + 3;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   416
    if (row == 1) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   417
	ulloc += lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   418
	ucloc += lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   419
	urloc += lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   420
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   421
    if (row == lp->nrows) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   422
	llloc -= lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   423
	lcloc -= lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   424
	lrloc -= lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   425
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   426
    if (col == 1) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   427
	ulloc += lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   428
	clloc += lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   429
	llloc += lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   430
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   431
    if (col == lp->ncols) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   432
	urloc -= lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   433
	crloc -= lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   434
	lrloc -= lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   435
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   436
    *ulloc |= UPLT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   437
    *ucloc |= UP;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   438
    *urloc |= UPRT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   439
    *clloc |= LT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   440
    *crloc |= RT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   441
    *arloc |= RT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   442
    *llloc |= DNLT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   443
    *lcloc |= DN;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   444
    *lrloc |= DNRT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   445
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   446
    *(lp->agebuf + (loc - lp->buffer)) = 0;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   447
}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   448
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   449
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   450
static void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   451
kill(loc)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   452
    unsigned char *loc;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   453
{
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   454
    lifestruct *lp = &lifes[screen];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   455
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   456
    unsigned char *ulloc, *ucloc, *urloc, *clloc, *crloc, *llloc, *lcloc,
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   457
               *lrloc, *arloc;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   458
    int         off, row, col, lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   459
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   460
    lastrow = (lp->nrows) * (lp->ncols + 2);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   461
    off = loc - lp->buffer;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   462
    row = off / (lp->ncols + 2);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   463
    col = off % (lp->ncols + 2);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   464
    row = (off - col) / (lp->ncols + 2);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   465
    ulloc = loc - lp->ncols - 3;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   466
    ucloc = loc - lp->ncols - 2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   467
    urloc = loc - lp->ncols - 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   468
    clloc = loc - 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   469
    crloc = loc + 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   470
    arloc = loc + 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   471
    llloc = loc + lp->ncols + 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   472
    lcloc = loc + lp->ncols + 2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   473
    lrloc = loc + lp->ncols + 3;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   474
    if (row == 1) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   475
	ulloc += lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   476
	ucloc += lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   477
	urloc += lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   478
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   479
    if (row == lp->nrows) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   480
	llloc -= lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   481
	lcloc -= lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   482
	lrloc -= lastrow;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   483
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   484
    if (col == 1) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   485
	ulloc += lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   486
	clloc += lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   487
	llloc += lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   488
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   489
    if (col == lp->ncols) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   490
	urloc -= lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   491
	crloc -= lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   492
	lrloc -= lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   493
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   494
    *ulloc &= ~UPLT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   495
    *ucloc &= ~UP;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   496
    *urloc &= ~UPRT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   497
    *clloc &= ~LT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   498
    *crloc &= ~RT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   499
    *arloc &= ~RT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   500
    *llloc &= ~DNLT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   501
    *lcloc &= ~DN;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   502
    *lrloc &= ~DNRT;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   503
}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   504
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   505
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   506
static void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   507
setcell(win, row, col)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   508
    Window      win;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   509
    int         row;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   510
    int         col;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   511
{
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   512
    lifestruct *lp = &lifes[screen];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   513
    unsigned char *loc;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   514
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   515
    loc = lp->buffer + ((row + 1) * (lp->ncols + 2)) + col + 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   516
    spawn(loc);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   517
    drawcell(win, row, col);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   518
}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   519
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   520
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   521
static void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   522
init_fates()
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   523
{
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   524
    int         i, bits, neighbors;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   525
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   526
    for (i = 0; i < 256; i++) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   527
	neighbors = 0;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   528
	for (bits = i; bits; bits &= (bits - 1))
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   529
	    neighbors++;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   530
	if (neighbors == 3)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   531
	    fates[i] = BIRTH;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   532
	else if (neighbors == 2)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   533
	    fates[i] = SAME;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   534
	else
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   535
	    fates[i] = DEATH;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   536
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   537
}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   538
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   539
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   540
void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   541
initlife(win)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   542
    Window      win;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   543
{
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   544
    int         row, col;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   545
    int        *patptr;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   546
    XWindowAttributes xgwa;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   547
    lifestruct *lp = &lifes[screen];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   548
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   549
    lp->generation = 0;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   550
    lp->shooterTime = seconds();
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   551
    icon_width = lifeicon_width;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   552
    icon_height = lifeicon_height;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   553
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   554
    if (!initialized) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   555
	initialized = 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   556
	init_fates();
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   557
	logo.data = (char *) lifeicon_bits;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   558
	logo.width = icon_width;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   559
	logo.height = icon_height;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   560
	logo.bytes_per_line = (icon_width + 7) / 8;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   561
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   562
    XGetWindowAttributes(dsp, win, &xgwa);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   563
    lp->width = xgwa.width;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   564
    lp->height = xgwa.height;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   565
    lp->pixelmode = (lp->width < 4 * icon_width);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   566
    if (lp->pixelmode) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   567
	lp->ncols = 32;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   568
	lp->nrows = 32;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   569
    } else {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   570
	lp->ncols = min(lp->width / icon_width, MAXCOLS);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   571
	lp->nrows = min(lp->height / icon_height, MAXROWS);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   572
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   573
    lp->xs = lp->width / lp->ncols;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   574
    lp->ys = lp->height / lp->nrows;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   575
    lp->xb = (lp->width - lp->xs * lp->ncols) / 2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   576
    lp->yb = (lp->height - lp->ys * lp->nrows) / 2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   577
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   578
    XSetForeground(dsp, Scr[screen].gc, ssblack[screen].pixel);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   579
    XFillRectangle(dsp, win, Scr[screen].gc, 0, 0, lp->width, lp->height);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   580
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   581
    bzero(lp->buffer, sizeof(lp->buffer));
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   582
    patptr = &patterns[random() % NPATS][0];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   583
    while ((col = *patptr++) != 99) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   584
	row = *patptr++;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   585
	col += lp->ncols / 2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   586
	row += lp->nrows / 2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   587
	setcell(win, row, col);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   588
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   589
}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   590
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   591
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   592
void
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   593
drawlife(win)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   594
    Window      win;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   595
{
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   596
    unsigned char *loc, *temploc, *lastloc;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   597
    int         row, col;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   598
    unsigned char fate;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   599
    lifestruct *lp = &lifes[screen];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   600
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   601
    loc = lp->buffer + lp->ncols + 2 + 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   602
    temploc = lp->tempbuf;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   603
    /* copy the first 2 rows to the tempbuf */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   604
    bcopy(loc, temploc, lp->ncols);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   605
    bcopy(loc + lp->ncols + 2, temploc + lp->ncols, lp->ncols);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   606
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   607
    lastloc = lp->lastbuf;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   608
    /* copy the last row to another buffer for wraparound */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   609
    bcopy(loc + ((lp->nrows - 1) * (lp->ncols + 2)), lastloc, lp->ncols);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   610
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   611
    for (row = 0; row < lp->nrows; ++row) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   612
	for (col = 0; col < lp->ncols; ++col) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   613
	    fate = fates[*temploc];
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   614
	    *temploc = (row == (lp->nrows - 3)) ?
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   615
		*(lastloc + col) :
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   616
		*(loc + (lp->ncols + 2) * 2);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   617
	    switch (fate) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   618
	    case BIRTH:
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   619
		if (!(*(loc + 1) & RT)) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   620
		    spawn(loc);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   621
		}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   622
		/* NO BREAK */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   623
	    case SAME:
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   624
		if (*(loc + 1) & RT) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   625
		    drawcell(win, row, col);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   626
		}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   627
		break;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   628
	    case DEATH:
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   629
		if (*(loc + 1) & RT) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   630
		    kill(loc);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   631
		    erasecell(win, row, col);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   632
		}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   633
		break;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   634
	    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   635
	    loc++;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   636
	    temploc++;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   637
	}
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   638
	loc += 2;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   639
	if (temploc >= lp->tempbuf + lp->ncols * 2)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   640
	    temploc = lp->tempbuf;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   641
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   642
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   643
    if (++lp->generation > batchcount)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   644
	initlife(win);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   645
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   646
    /*
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   647
     * generate a randomized shooter aimed roughly toward the center of the
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   648
     * screen after timeout.
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   649
     */
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   650
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   651
    if (seconds() - lp->shooterTime > TIMEOUT) {
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   652
	int         hsp = random() % (lp->ncols - 5) + 3;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   653
	int         vsp = random() % (lp->nrows - 5) + 3;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   654
	int         hoff = 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   655
	int         voff = 1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   656
	if (vsp > lp->nrows / 2)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   657
	    voff = -1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   658
	if (hsp > lp->ncols / 2)
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   659
	    hoff = -1;
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   660
	setcell(win, vsp + 0 * voff, hsp + 2 * hoff);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   661
	setcell(win, vsp + 1 * voff, hsp + 2 * hoff);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   662
	setcell(win, vsp + 2 * voff, hsp + 2 * hoff);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   663
	setcell(win, vsp + 2 * voff, hsp + 1 * hoff);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   664
	setcell(win, vsp + 1 * voff, hsp + 0 * hoff);
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   665
	lp->shooterTime = seconds();
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   666
    }
f3f84c886c69 6741687 Port xlock to open src tree
Mahmood Ali <Mahmood.Ali@Sun.COM>
parents:
diff changeset
   667
}