mcgrew@dartagnan.rutgers.edu (Charles Mcgrew) (06/22/89)
Submitted-by: chuck@trantor.harris-atd.com Posting-number: Volume 1, Issue 35 Archive-name: eyecon #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: Makefile README eyecon.c eyecon.man eyes.icon matte.icon # pupil.icon # Wrapped by chuck@melmac on Mon Oct 10 08:01:00 1988 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'Makefile'\" else echo shar: Extracting \"'Makefile'\" \(341 characters\) sed "s/^X//" >'Makefile' <<'END_OF_FILE' XWINDOW_LIB = -lsuntool -lsunwindow -lpixrect X XBINDIR = /usr/local/bin X XMANDIR = /usr/man/manl XMANEXT = l X Xeyecon: eyecon.c X cc -O -o eyecon eyecon.c $(WINDOW_LIB) X Xinstall: eyecon X mv eyecon $(BINDIR) X cp eyecon.man $(MANDIR)/eyecon.$(MANEXT) X Xmakefile: X makedeps Makefile *.[ch] X X#dependencies X Xeyecon.o: matte.icon eyes.icon pupil.icon END_OF_FILE if test 341 -ne `wc -c <'Makefile'`; then echo shar: \"'Makefile'\" unpacked with wrong size! fi # end of 'Makefile' fi if test -f 'README' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'README'\" else echo shar: Extracting \"'README'\" \(670 characters\) sed "s/^X//" >'README' <<'END_OF_FILE' X Eyecon is nifty hack that guarantees that someone is always watching Xyour mouse. Before making eyecon, just check the Makefile to verify that XBINDIR, MANDIR, and MANEXT are set to the right things. X X I originally saw eyecon running on a Silicon Graphics workstation Xbeing used by Mark Callow (of SG) at SIGGRAPH '88 in Atlanta. I wrote a Xversion from scratch for the Sun, and my office-mate, Ellery Chan, came Xup with the cute name. X X Comments are always appreciated. Send them to: X X Chuck Musciano X Advanced Technology Department X Harris Corporation X PO Box 37, MS 3A/1912 X Melbourne, FL 32902 X (407) 727-6131 X chuck@trantor.harris-atd.com X XHave fun! END_OF_FILE if test 670 -ne `wc -c <'README'`; then echo shar: \"'README'\" unpacked with wrong size! fi # end of 'README' fi if test -f 'eyecon.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'eyecon.c'\" else echo shar: Extracting \"'eyecon.c'\" \(9677 characters\) sed "s/^X//" >'eyecon.c' <<'END_OF_FILE' X/************************************************************************/ X/* Copyright 1988 by Chuck Musciano and Harris Corporation */ X/* */ X/* Permission to use, copy, modify, and distribute this software */ X/* and its documentation for any purpose and without fee is */ X/* hereby granted, provided that the above copyright notice */ X/* appear in all copies and that both that copyright notice and */ X/* this permission notice appear in supporting documentation, and */ X/* that the name of Chuck Musciano and Harris Corporation not be */ X/* used in advertising or publicity pertaining to distribution */ X/* of the software without specific, written prior permission. */ X/* Chuck Musciano and Harris Corporation make no representations */ X/* about the suitability of this software for any purpose. It is */ X/* provided "as is" without express or implied warranty. */ X/************************************************************************/ X X#include <stdio.h> X#include <suntool/sunview.h> X#include <suntool/canvas.h> X#include <suntool/icon_load.h> X#include <sys/file.h> X#include <sys/time.h> X X#define slope_of(x, y) (((x) == 0)? MAX_SLOPE : (((y) * 1024) / (x))) X X#define control_point(x, y) {x, y, slope_of(x, y)} X X#define distance(x, y) ((x)*(x) + (y)*(y)) X X#define EYE_WIDTH 45 X#define EYE_HEIGHT 63 X#define EYE_GAP 6 X#define FULL_WIDTH (2 * EYE_WIDTH + EYE_GAP) X#define FULL_HEIGHT EYE_HEIGHT X X#define PUPIL_RADIUS 8 X#define PUPIL_DIAMETER 15 X X#define CENTER_X 23 X#define CENTER_Y 32 X X#define CONTROL_POINTS 22 X X#define MAX_SLOPE 2000000 X X#define POLL_INTERVAL 50000 /* usec */ X Xextern char *getenv(); Xextern void sprintf(); X Xstatic short matte_bits[] = { X#include "matte.icon" X }; Xmpr_static(matte, FULL_WIDTH, FULL_HEIGHT, 1, matte_bits); X Xstatic short eye_edge_bits[] = { X#include "eyes.icon" X }; Xmpr_static(eye_edge, FULL_WIDTH, FULL_HEIGHT, 1, eye_edge_bits); X Xstatic short root_gray_bits[] = {0x8000,0x8000,0x2000,0x2000}; Xmpr_static(root_gray, 4, 4, 1, root_gray_bits); X Xstatic short pupil_bits[] = { X#include "pupil.icon" X }; Xmpr_static(pupil, PUPIL_DIAMETER, PUPIL_DIAMETER, 1, pupil_bits); X Xstatic struct itimerval pupil_timer = {{0, POLL_INTERVAL}, {0, POLL_INTERVAL}}; X Xstruct c_point {int x; X int y; X int slope; X }; X Xstatic struct c_point control[CONTROL_POINTS] = {control_point(10, 0), X control_point(10, 1), X control_point(10, 2), X control_point(10, 3), X control_point(10, 4), X control_point(10, 5), X control_point( 9, 6), X control_point( 9, 7), X control_point( 9, 8), X control_point( 9, 9), X control_point( 8, 10), X control_point( 8, 11), X control_point( 8, 12), X control_point( 7, 13), X control_point( 7, 14), X control_point( 6, 15), X control_point( 5, 16), X control_point( 4, 17), X control_point( 3, 18), X control_point( 2, 18), X control_point( 1, 19), X {0, 19, MAX_SLOPE}}; X Xstatic Frame bf; Xstatic Pixwin *fpw, *cpw; Xstatic Pixfont *font; Xstatic struct pixrect *eyes; Xstatic char *program; Xstatic int desktop_fd; Xstatic int curr_lx, curr_ly, curr_rx, curr_ry; Xstatic int old_x, old_y; X X/************************************************************************/ Xstatic locate_pupil(mouse_x, mouse_y, pupil_x, pupil_y) X Xint mouse_x; Xint mouse_y; Xint *pupil_x; Xint *pupil_y; X X{ int i, s, x = 1, y = 1; X X if (mouse_x < 0) { X x = -1; X mouse_x = - mouse_x; X } X if (mouse_y < 0) { X y = -1; X mouse_y = - mouse_y; X } X s = slope_of(mouse_x, mouse_y); X for (i = 0; i < CONTROL_POINTS; i++) X if (s <= control[i].slope) { X *pupil_x = x * control[i].x; X *pupil_y = y * control[i].y; X if (distance(mouse_x, mouse_y) < distance(*pupil_x, *pupil_y)) { X *pupil_x = x * mouse_x; X *pupil_y = y * mouse_y; X } X return; X } X fprintf(stderr, "%s: slope (%d) not in range %d to %d\n", program, s, control[0].slope, control[CONTROL_POINTS - 1].slope); X *pupil_x = *pupil_y = 0; X} X X/************************************************************************/ Xstatic pupil_movement(x, y) X Xint x; Xint y; X X{ int win_x, win_y, lx, ly, rx, ry; X Rect *rect; X X rect = (Rect *) window_get(bf, FRAME_CLOSED_RECT); X win_x = rect->r_left; X win_y = rect->r_top; X locate_pupil(x - (win_x + CENTER_X), y - (win_y + CENTER_Y), &lx, &ly); X locate_pupil(x - (win_x + EYE_WIDTH + EYE_GAP + CENTER_X), y - (win_y + CENTER_Y), &rx, &ry); X if (lx != curr_lx || ly != curr_ly) { X pw_rop(fpw, curr_lx + CENTER_X - PUPIL_RADIUS, curr_ly + CENTER_Y - PUPIL_RADIUS, PUPIL_DIAMETER, PUPIL_DIAMETER, PIX_SRC ^ PIX_DST, &pupil, 0, 0); X pw_rop(fpw, lx + CENTER_X - PUPIL_RADIUS, ly + CENTER_Y - PUPIL_RADIUS, PUPIL_DIAMETER, PUPIL_DIAMETER, PIX_SRC ^ PIX_DST, &pupil, 0, 0); X curr_lx = lx; X curr_ly = ly; X } X if (rx != curr_rx || ry != curr_ry) { X pw_rop(fpw, curr_rx + EYE_WIDTH + EYE_GAP + CENTER_X - PUPIL_RADIUS, curr_ry + CENTER_Y - PUPIL_RADIUS, PUPIL_DIAMETER, PUPIL_DIAMETER, PIX_SRC ^ PIX_DST, &pupil, 0, 0); X pw_rop(fpw, rx + EYE_WIDTH + EYE_GAP + CENTER_X - PUPIL_RADIUS, ry + CENTER_Y - PUPIL_RADIUS, PUPIL_DIAMETER, PUPIL_DIAMETER, PIX_SRC ^ PIX_DST, &pupil, 0, 0); X curr_rx = rx; X curr_ry = ry; X } X} X X/************************************************************************/ Xstatic mouse_position(x, y) X Xint x; Xint y; X X{ char buf[30]; X X sprintf(buf, "Mouse is at [%4d, %4d]", x, y); X pw_text(cpw, 1, -font->pf_char[' '].pc_home.y, PIX_SRC, font, buf); X} X X/************************************************************************/ Xstatic Notify_value pupil_proc(frame, which) X XNotify_client frame; Xint which; X X{ int x, y; X X x = win_get_vuid_value(desktop_fd, LOC_X_ABSOLUTE); X y = win_get_vuid_value(desktop_fd, LOC_Y_ABSOLUTE); X if (x != old_x || y != old_y) { X if (!window_get(bf, FRAME_CLOSED)) X mouse_position(x, y); X else X pupil_movement(x, y); X old_x = x; X old_y = y; X } X return(NOTIFY_DONE); X} X X/************************************************************************/ Xstatic frame_event_proc(frame, event, arg, type) X XFrame frame; XEvent *event; XNotify_arg arg; XNotify_event_type type; X X{ X if (event_id(event) == WIN_REPAINT && window_get(bf, FRAME_CLOSED)) { X pw_rop(fpw, 0, 0, FULL_WIDTH, FULL_HEIGHT, PIX_SRC, eyes, 0, 0); X pw_rop(fpw, curr_lx + CENTER_X - PUPIL_RADIUS, curr_ly + CENTER_Y - PUPIL_RADIUS, PUPIL_DIAMETER, PUPIL_DIAMETER, PIX_SRC ^ PIX_DST, &pupil, 0, 0); X pw_rop(fpw, curr_rx + EYE_WIDTH + EYE_GAP + CENTER_X - PUPIL_RADIUS, curr_ry + CENTER_Y - PUPIL_RADIUS, PUPIL_DIAMETER, PUPIL_DIAMETER, PIX_SRC ^ PIX_DST, &pupil, 0, 0); X } X else X window_default_event_func(frame, event, arg, type); X} X X/************************************************************************/ Xstatic struct pixrect *load_icon(path) X Xchar *path; X X{ char msg[IL_ERRORMSG_SIZE]; X struct pixrect *p; X FILE *f; X X if ((p = icon_load_mpr(path, msg)) == NULL) { /* not in icon format */ X if ((f = fopen(path, "r")) == NULL) { X fprintf(stderr, "%s: could not open %s\n", program, path); X exit(1); X } X if ((p = pr_load(f, NULL)) == NULL) { X fprintf(stderr, "%s: %s must be in either icon or raster file format\n", program, path); X exit(1); X } X fclose(f); X } X return(p); X} X X/************************************************************************/ Xstatic create_basic_image(argc, argv) X Xint argc; Xchar **argv; X X{ struct pixrect *background; X X if (argc == 1) /* use root gray, the default */ X background = &root_gray; X else if (argc == 3 && strcmp(argv[1], "-b") == 0) /* pick up a different background */ X background = load_icon(argv[2]); X else { X fprintf(stderr, "usage: %s [-b <file>]\n", program); X exit(1); X } X eyes = mem_create(FULL_WIDTH, FULL_HEIGHT, 1); X pr_replrop(eyes, 0, 0, FULL_WIDTH, FULL_HEIGHT, PIX_SRC, background, 0, 0); X pr_rop(eyes, 0, 0, FULL_WIDTH, FULL_HEIGHT, PIX_SRC & PIX_DST, &matte, 0, 0); X pr_rop(eyes, 0, 0, FULL_WIDTH, FULL_HEIGHT, PIX_SRC | PIX_DST, &eye_edge, 0, 0); X pr_destroy(background); X} X X/************************************************************************/ Xmain(argc, argv) X Xint argc; Xchar **argv; X X{ char *parent; X Icon icon; X Canvas canvas; X X strcpy(program = (char *) malloc(strlen(argv[0]) + 1), argv[0]); X if ((parent = (char *) getenv("WINDOW_PARENT")) == NULL) { X fprintf(stderr, "%s must be run from within Suntools\n", argv[0]); X exit(1); X } X if ((desktop_fd = open(parent, O_RDWR)) == -1) { X fprintf(stderr, "%s: could not access desktop window device: %s\n", program, parent); X exit(1); X } X if ((font = pf_default()) == NULL) { X fprintf(stderr, "%s: could not default system font\n", program); X exit(1); X } X icon = icon_create(ICON_WIDTH, FULL_WIDTH, ICON_HEIGHT, FULL_HEIGHT, ICON_LABEL, "", 0); X bf = window_create(NULL, FRAME, X FRAME_LABEL, "<< Eyecon >>", X FRAME_NO_CONFIRM, TRUE, X FRAME_ARGC_PTR_ARGV, &argc, argv, X FRAME_ICON, icon, X FRAME_CLOSED, TRUE, X WIN_EVENT_PROC, frame_event_proc, X 0); X canvas = window_create(bf, CANVAS, X WIN_FONT, font, X WIN_ROWS, 1, X WIN_COLUMNS, 24, X 0); X window_fit(bf); X fpw = (Pixwin *) window_get(bf, WIN_PIXWIN); X cpw = canvas_pixwin(canvas); X X curr_lx = 4 * FULL_WIDTH; X curr_ly = 4 * FULL_HEIGHT; X curr_rx = 4 * FULL_WIDTH; X curr_ry = 4 * FULL_HEIGHT; X old_x = -1; X old_y = -1; X X create_basic_image(argc, argv); X notify_set_itimer_func(bf, pupil_proc, ITIMER_REAL, &pupil_timer, 0); X window_main_loop(bf); X close(desktop_fd); X exit(0); X} END_OF_FILE if test 9677 -ne `wc -c <'eyecon.c'`; then echo shar: \"'eyecon.c'\" unpacked with wrong size! fi # end of 'eyecon.c' fi if test -f 'eyecon.man' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'eyecon.man'\" else echo shar: Extracting \"'eyecon.man'\" \(455 characters\) sed "s/^X//" >'eyecon.man' <<'END_OF_FILE' X.TH EYECON 1 "12 August 1988" X.SH NAME Xeyecon \- watch the mouse X.SH SYNOPSIS X\fBeyecon\fP [ \fB\-b\fP \fIbackground\fP ] X.SH DESCRIPTION X\fIEyecon\fP makes sure that someone is keeping an eye on your mouse. X\fIEyecon\fP normally uses root gray as its background, but alternate Xbackground patterns (in the form of Sun raster or \fIiconedit\fP(1) images) Xcan be specified with \fB-b\fP to match your personal desktop background. X.SH AUTHOR XChuck Musciano X END_OF_FILE if test 455 -ne `wc -c <'eyecon.man'`; then echo shar: \"'eyecon.man'\" unpacked with wrong size! fi # end of 'eyecon.man' fi if test -f 'eyes.icon' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'eyes.icon'\" else echo shar: Extracting \"'eyes.icon'\" \(2819 characters\) sed "s/^X//" >'eyes.icon' <<'END_OF_FILE' X/* Format_version=1, Width=96, Height=63, Depth=1, Valid_bits_per_item=16 X */ X 0x0000,0x1FC0,0x0000,0x0000,0x03F8,0x0000,0x0000,0xFFF8, X 0x0000,0x0000,0x1FFF,0x0000,0x0003,0xE03E,0x0000,0x0000, X 0x7C07,0xC000,0x000F,0x0007,0x8000,0x0001,0xE000,0xF000, X 0x001C,0x0001,0xC000,0x0003,0x8000,0x3800,0x0038,0x0000, X 0xE000,0x0007,0x0000,0x1C00,0x0060,0x0000,0x3000,0x000C, X 0x0000,0x0600,0x00C0,0x0000,0x1800,0x0018,0x0000,0x0300, X 0x0180,0x0000,0x0C00,0x0030,0x0000,0x0180,0x0380,0x0000, X 0x0E00,0x0070,0x0000,0x01C0,0x0300,0x0000,0x0600,0x0060, X 0x0000,0x00C0,0x0600,0x0000,0x0300,0x00C0,0x0000,0x0060, X 0x0600,0x0000,0x0300,0x00C0,0x0000,0x0060,0x0C00,0x0000, X 0x0180,0x0180,0x0000,0x0030,0x0C00,0x0000,0x0180,0x0180, X 0x0000,0x0030,0x1800,0x0000,0x00C0,0x0300,0x0000,0x0018, X 0x1800,0x0000,0x00C0,0x0300,0x0000,0x0018,0x3000,0x0000, X 0x0060,0x0600,0x0000,0x000C,0x3000,0x0000,0x0060,0x0600, X 0x0000,0x000C,0x3000,0x0000,0x0060,0x0600,0x0000,0x000C, X 0x6000,0x0000,0x0030,0x0C00,0x0000,0x0006,0x6000,0x0000, X 0x0030,0x0C00,0x0000,0x0006,0x6000,0x0000,0x0030,0x0C00, X 0x0000,0x0006,0x6000,0x0000,0x0030,0x0C00,0x0000,0x0006, X 0x6000,0x0000,0x0030,0x0C00,0x0000,0x0006,0xC000,0x0000, X 0x0018,0x1800,0x0000,0x0003,0xC000,0x0000,0x0018,0x1800, X 0x0000,0x0003,0xC000,0x0000,0x0018,0x1800,0x0000,0x0003, X 0xC000,0x0000,0x0018,0x1800,0x0000,0x0003,0xC000,0x0000, X 0x0018,0x1800,0x0000,0x0003,0xC000,0x0000,0x0018,0x1800, X 0x0000,0x0003,0xC000,0x0000,0x0018,0x1800,0x0000,0x0003, X 0xC000,0x0000,0x0018,0x1800,0x0000,0x0003,0xC000,0x0000, X 0x0018,0x1800,0x0000,0x0003,0xC000,0x0000,0x0018,0x1800, X 0x0000,0x0003,0xC000,0x0000,0x0018,0x1800,0x0000,0x0003, X 0xC000,0x0000,0x0018,0x1800,0x0000,0x0003,0xC000,0x0000, X 0x0018,0x1800,0x0000,0x0003,0x6000,0x0000,0x0030,0x0C00, X 0x0000,0x0006,0x6000,0x0000,0x0030,0x0C00,0x0000,0x0006, X 0x6000,0x0000,0x0030,0x0C00,0x0000,0x0006,0x6000,0x0000, X 0x0030,0x0C00,0x0000,0x0006,0x6000,0x0000,0x0030,0x0C00, X 0x0000,0x0006,0x3000,0x0000,0x0060,0x0600,0x0000,0x000C, X 0x3000,0x0000,0x0060,0x0600,0x0000,0x000C,0x3000,0x0000, X 0x0060,0x0600,0x0000,0x000C,0x1800,0x0000,0x00C0,0x0300, X 0x0000,0x0018,0x1800,0x0000,0x00C0,0x0300,0x0000,0x0018, X 0x0C00,0x0000,0x0180,0x0180,0x0000,0x0030,0x0C00,0x0000, X 0x0180,0x0180,0x0000,0x0030,0x0600,0x0000,0x0300,0x00C0, X 0x0000,0x0060,0x0600,0x0000,0x0300,0x00C0,0x0000,0x0060, X 0x0300,0x0000,0x0600,0x0060,0x0000,0x00C0,0x0380,0x0000, X 0x0E00,0x0070,0x0000,0x01C0,0x0180,0x0000,0x0C00,0x0030, X 0x0000,0x0180,0x00C0,0x0000,0x1800,0x0018,0x0000,0x0300, X 0x0060,0x0000,0x3000,0x000C,0x0000,0x0600,0x0038,0x0000, X 0xE000,0x0007,0x0000,0x1C00,0x001C,0x0001,0xC000,0x0003, X 0x8000,0x3800,0x000F,0x0007,0x8000,0x0001,0xE000,0xF000, X 0x0003,0xE03E,0x0000,0x0000,0x7C07,0xC000,0x0000,0xFFF8, X 0x0000,0x0000,0x1FFF,0x0000,0x0000,0x1FC0,0x0000,0x0000, X 0x03F8,0x0000 END_OF_FILE if test 2819 -ne `wc -c <'eyes.icon'`; then echo shar: \"'eyes.icon'\" unpacked with wrong size! fi # end of 'eyes.icon' fi if test -f 'matte.icon' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'matte.icon'\" else echo shar: Extracting \"'matte.icon'\" \(2819 characters\) sed "s/^X//" >'matte.icon' <<'END_OF_FILE' X/* Format_version=1, Width=96, Height=63, Depth=1, Valid_bits_per_item=16 X */ X 0xFFFF,0xE03F,0xFFFF,0xFFFF,0xFC07,0xFFFF,0xFFFF,0x0007, X 0xFFFF,0xFFFF,0xE000,0xFFFF,0xFFFC,0x0001,0xFFFF,0xFFFF, X 0x8000,0x3FFF,0xFFF0,0x0000,0x7FFF,0xFFFE,0x0000,0x0FFF, X 0xFFE0,0x0000,0x3FFF,0xFFFC,0x0000,0x07FF,0xFFC0,0x0000, X 0x1FFF,0xFFF8,0x0000,0x03FF,0xFF80,0x0000,0x0FFF,0xFFF0, X 0x0000,0x01FF,0xFF00,0x0000,0x07FF,0xFFE0,0x0000,0x00FF, X 0xFE00,0x0000,0x03FF,0xFFC0,0x0000,0x007F,0xFC00,0x0000, X 0x01FF,0xFF80,0x0000,0x003F,0xFC00,0x0000,0x01FF,0xFF80, X 0x0000,0x003F,0xF800,0x0000,0x00FF,0xFF00,0x0000,0x001F, X 0xF800,0x0000,0x00FF,0xFF00,0x0000,0x001F,0xF000,0x0000, X 0x007F,0xFE00,0x0000,0x000F,0xF000,0x0000,0x007F,0xFE00, X 0x0000,0x000F,0xE000,0x0000,0x003F,0xFC00,0x0000,0x0007, X 0xE000,0x0000,0x003F,0xFC00,0x0000,0x0007,0xC000,0x0000, X 0x001F,0xF800,0x0000,0x0003,0xC000,0x0000,0x001F,0xF800, X 0x0000,0x0003,0xC000,0x0000,0x001F,0xF800,0x0000,0x0003, X 0x8000,0x0000,0x000F,0xF000,0x0000,0x0001,0x8000,0x0000, X 0x000F,0xF000,0x0000,0x0001,0x8000,0x0000,0x000F,0xF000, X 0x0000,0x0001,0x8000,0x0000,0x000F,0xF000,0x0000,0x0001, X 0x8000,0x0000,0x000F,0xF000,0x0000,0x0001,0x0000,0x0000, X 0x0007,0xE000,0x0000,0x0000,0x0000,0x0000,0x0007,0xE000, X 0x0000,0x0000,0x0000,0x0000,0x0007,0xE000,0x0000,0x0000, X 0x0000,0x0000,0x0007,0xE000,0x0000,0x0000,0x0000,0x0000, X 0x0007,0xE000,0x0000,0x0000,0x0000,0x0000,0x0007,0xE000, X 0x0000,0x0000,0x0000,0x0000,0x0007,0xE000,0x0000,0x0000, X 0x0000,0x0000,0x0007,0xE000,0x0000,0x0000,0x0000,0x0000, X 0x0007,0xE000,0x0000,0x0000,0x0000,0x0000,0x0007,0xE000, X 0x0000,0x0000,0x0000,0x0000,0x0007,0xE000,0x0000,0x0000, X 0x0000,0x0000,0x0007,0xE000,0x0000,0x0000,0x0000,0x0000, X 0x0007,0xE000,0x0000,0x0000,0x8000,0x0000,0x000F,0xF000, X 0x0000,0x0001,0x8000,0x0000,0x000F,0xF000,0x0000,0x0001, X 0x8000,0x0000,0x000F,0xF000,0x0000,0x0001,0x8000,0x0000, X 0x000F,0xF000,0x0000,0x0001,0x8000,0x0000,0x000F,0xF000, X 0x0000,0x0001,0xC000,0x0000,0x001F,0xF800,0x0000,0x0003, X 0xC000,0x0000,0x001F,0xF800,0x0000,0x0003,0xC000,0x0000, X 0x001F,0xF800,0x0000,0x0003,0xE000,0x0000,0x003F,0xFC00, X 0x0000,0x0007,0xE000,0x0000,0x003F,0xFC00,0x0000,0x0007, X 0xF000,0x0000,0x007F,0xFE00,0x0000,0x000F,0xF000,0x0000, X 0x007F,0xFE00,0x0000,0x000F,0xF800,0x0000,0x00FF,0xFF00, X 0x0000,0x001F,0xF800,0x0000,0x00FF,0xFF00,0x0000,0x001F, X 0xFC00,0x0000,0x01FF,0xFF80,0x0000,0x003F,0xFC00,0x0000, X 0x01FF,0xFF80,0x0000,0x003F,0xFE00,0x0000,0x03FF,0xFFC0, X 0x0000,0x007F,0xFF00,0x0000,0x07FF,0xFFE0,0x0000,0x00FF, X 0xFF80,0x0000,0x0FFF,0xFFF0,0x0000,0x01FF,0xFFC0,0x0000, X 0x1FFF,0xFFF8,0x0000,0x03FF,0xFFE0,0x0000,0x3FFF,0xFFFC, X 0x0000,0x07FF,0xFFF0,0x0000,0x7FFF,0xFFFE,0x0000,0x0FFF, X 0xFFFC,0x0001,0xFFFF,0xFFFF,0x8000,0x3FFF,0xFFFF,0x0007, X 0xFFFF,0xFFFF,0xE000,0xFFFF,0xFFFF,0xE03F,0xFFFF,0xFFFF, X 0xFC07,0xFFFF END_OF_FILE if test 2819 -ne `wc -c <'matte.icon'`; then echo shar: \"'matte.icon'\" unpacked with wrong size! fi # end of 'matte.icon' fi if test -f 'pupil.icon' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'pupil.icon'\" else echo shar: Extracting \"'pupil.icon'\" \(186 characters\) sed "s/^X//" >'pupil.icon' <<'END_OF_FILE' X/* Format_version=1, Width=15, Height=15, Depth=1, Valid_bits_per_item=16 X */ X 0x07C0,0x1FF0,0x3FF8,0x7FFC,0x7FFC,0xFFFE,0xFFFE,0xFFFE, X 0xFFFE,0xFFFE,0x7FFC,0x7FFC,0x3FF8,0x1FF0,0x07C0 END_OF_FILE if test 186 -ne `wc -c <'pupil.icon'`; then echo shar: \"'pupil.icon'\" unpacked with wrong size! fi # end of 'pupil.icon' fi echo shar: End of shell archive. exit 0 Chuck Musciano ARPA : chuck@trantor.harris-atd.com Harris Corporation Usenet: ...!uunet!x102a!trantor!chuck PO Box 37, MS 3A/1912 AT&T : (407) 727-6131 Melbourne, FL 32902 FAX : (407) 727-{5118,5227,4004}