[comp.sources.x] v06i014: xfig, Part06/15

argv%turnpike@Sun.COM (Dan Heller) (03/04/90)

Submitted-by: Brian Smith <bvsmith@lbl.gov>
Posting-number: Volume 6, Issue 14
Archive-name: xfig2/part06



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then feed it
# into a shell via "sh file" or similar.  To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix@uunet.uu.net if you want that tool.
# If this archive is complete, you will see the following message at the end:
#		"End of archive 6 (of 15)."
# Contents:  xfig/autoarrow.c xfig/f2ps.c xfig/panel2.h
# Wrapped by argv@turnpike on Wed Feb 28 10:53:19 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'xfig/autoarrow.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xfig/autoarrow.c'\"
else
echo shar: Extracting \"'xfig/autoarrow.c'\" \(9172 characters\)
sed "s/^X//" >'xfig/autoarrow.c' <<'END_OF_FILE'
X/* 
X *	FIG : Facility for Interactive Generation of figures
X *
X *	Copyright (c) 1985 by Supoj Sutanthavibul (supoj@sally.UTEXAS.EDU)
X *	January 1985.
X *	1st revision : Aug 1985.
X *
X *	%W%	%G%
X*/
X#include "fig.h"
X#include "resources.h"
X#include "func.h"
X#include "object.h"
X#include "paintop.h"
X
X#define			TOLERANCE	7
X
Xextern			(*canvas_kbd_proc)();
Xextern			(*canvas_locmove_proc)();
Xextern			(*canvas_leftbut_proc)();
Xextern			(*canvas_middlebut_proc)();
Xextern			(*canvas_rightbut_proc)();
Xextern			null_proc();
Xextern			set_popupmenu();
Xextern F_line		*line_point_search();
Xextern F_spline		*spline_point_search();
Xextern F_arc		*arc_point_search();
Xextern F_arrow		*forward_arrow(), *backward_arrow();
X
Xextern int		foreground_color, background_color;
Xextern int		pointmarker_shown;
X
XF_point			*selected_point, *left_point;
Xint			arcpoint_num;
X			add_arrow_head();
X			delete_arrow_head();
X
X#define			round(x)	((int) (x + .5))
X
Xarrow_head_selected()
X{
X	canvas_kbd_proc = null_proc;
X	canvas_locmove_proc = null_proc;
X	canvas_leftbut_proc = add_arrow_head;
X	canvas_middlebut_proc = delete_arrow_head;
X	canvas_rightbut_proc = set_popupmenu;
X	set_cursor(&pick9_cursor);
X	}
X
Xadd_arrow_head(x, y)
Xint	x, y;
X{
X	F_line		*line;
X	F_spline	*spline;
X	F_arc		*arc;
X
X	if ((line = line_point_search(x, y, TOLERANCE,
X		&left_point, &selected_point)) != NULL) {
X		add_linearrow(line);
X	    }
X	else if ((spline = spline_point_search(x, y, 
X		TOLERANCE, &left_point, &selected_point)) != NULL){
X		add_splinearrow(spline);
X	    }
X	else if ((arc = arc_point_search(x, y, TOLERANCE, 
X		&arcpoint_num)) != NULL) {
X		add_arcarrow(arc);
X	    }
X	else
X	    return;
X
X	set_modifiedflag();
X	}
X
Xdelete_arrow_head(x, y)
Xint	x, y;
X{
X	F_line		*line;
X	F_spline	*spline;
X	F_arc		*arc;
X
X	if ((line = line_point_search(x, y, TOLERANCE,
X		&left_point, &selected_point)) != NULL) {
X		delete_linearrow(line);
X	    }
X	else if ((spline = spline_point_search(x, y, 
X		TOLERANCE, &left_point, &selected_point)) != NULL){
X		delete_splinearrow(spline);
X	    }
X	else if ((arc = arc_point_search(x, y, TOLERANCE, 
X		&arcpoint_num)) != NULL) {
X		delete_arcarrow(arc);
X	    }
X	else
X	    return;
X
X	set_modifiedflag();
X	}
X
Xadd_linearrow(line)
XF_line	*line;
X{
X	F_point	*p;
X
X	if (line->type == T_POLYGON 
X		|| line->type == T_BOX || line->type == T_ARC_BOX) 
X			return;
X	if (line->points->next == NULL) return;	/* A single point line */
X
X	if (left_point == NULL) { /*  selected_point is the first point */
X	    if (line->back_arrow) return;
X	    p = selected_point->next;
X	    line->back_arrow = backward_arrow();
X	    if (pointmarker_shown) toggle_linepointmarker(line);
X	    draw_arrow(p->x, p->y, selected_point->x, selected_point->y, 
X			line->back_arrow, PAINT);
X	    if (pointmarker_shown) toggle_linepointmarker(line);
X	    }
X	else if (selected_point->next == NULL) { /* forward arrow */
X	    if (line->for_arrow) return;
X	    line->for_arrow = forward_arrow();
X	    if (pointmarker_shown) toggle_linepointmarker(line);
X	    draw_arrow(left_point->x, left_point->y, 
X			selected_point->x, selected_point->y, 
X			line->for_arrow, PAINT);
X	    if (pointmarker_shown) toggle_linepointmarker(line);
X	    }
X	clean_up();
X	set_action_object(F_ADD_ARROW_HEAD, O_POLYLINE);
X	}
X
Xadd_arcarrow(arc)
XF_arc	*arc;
X{
X
X	if (arcpoint_num == 0) { /*  backward arrow  */
X	    if (arc->back_arrow) return;
X	    arc->back_arrow = backward_arrow();
X	    if (pointmarker_shown) toggle_arcpointmarker(arc);
X	    draw_arcarrow(arc, foreground_color);
X	    if (pointmarker_shown) toggle_arcpointmarker(arc);
X	    }
X	else if (arcpoint_num == 2) { /*  for_arrow  */
X	    if (arc->for_arrow) return;
X	    arc->for_arrow = forward_arrow();
X	    if (pointmarker_shown) toggle_arcpointmarker(arc);
X	    draw_arcarrow(arc, foreground_color);
X	    if (pointmarker_shown) toggle_arcpointmarker(arc);
X	    }
X	clean_up();
X	set_action_object(F_ADD_ARROW_HEAD, O_ARC);
X	}
X
Xadd_splinearrow(spline)
XF_spline	*spline;
X{
X	F_point		*p;
X	F_control	*c;
X
X	if (closed_spline(spline)) return;
X	if (left_point == NULL) { /* add backward arrow */
X	    if (spline->back_arrow) return;
X	    p = selected_point->next;
X	    spline->back_arrow = backward_arrow();
X	    if (pointmarker_shown) toggle_splinepointmarker(spline);
X	    if (normal_spline(spline)) {
X		draw_arrow(p->x, p->y, selected_point->x,
X			selected_point->y, spline->back_arrow, PAINT);
X		}
X	    else {
X		c = spline->controls;
X		draw_arrow(round(c->rx), round(c->ry), selected_point->x,
X			selected_point->y, spline->back_arrow, PAINT);
X		}
X	    if (pointmarker_shown) toggle_splinepointmarker(spline);
X	    }
X	else if (selected_point->next == NULL) { /* add forward arrow */
X	    if (spline->for_arrow) return;
X	    spline->for_arrow = forward_arrow();
X	    if (pointmarker_shown) toggle_splinepointmarker(spline);
X	    if (normal_spline(spline)) {
X		draw_arrow(left_point->x, left_point->y,
X			selected_point->x, selected_point->y,
X			spline->for_arrow, PAINT);
X		}
X	    else {
X		for (c = spline->controls; c->next != NULL; c = c->next);
X		draw_arrow(round(c->lx), round(c->ly), selected_point->x,
X			selected_point->y, spline->for_arrow, PAINT);
X		}
X	    if (pointmarker_shown) toggle_splinepointmarker(spline);
X	    }
X	clean_up();
X	set_action_object(F_ADD_ARROW_HEAD, O_SPLINE);
X	}
X
Xdelete_linearrow(line)
XF_line	*line;
X{
X	if (line->type == T_POLYGON 
X		|| line->type == T_BOX || line->type == T_ARC_BOX) 
X			return;
X
X	if (left_point == NULL) { /*  selected_point is the first point */
X	    if (! line->back_arrow) return;
X	    if (pointmarker_shown) toggle_linepointmarker(line);
X	    draw_line(line, INV_PAINT);
X	    line->back_arrow = 0;
X	    free((char*)line->back_arrow);
X	    line->for_arrow = NULL;
X	    draw_line(line, PAINT);
X	    if (pointmarker_shown) toggle_linepointmarker(line);
X	    }
X	else if (selected_point->next == NULL) { /* forward arrow */
X	    if (! line->for_arrow) return;
X	    if (pointmarker_shown) toggle_linepointmarker(line);
X	    draw_line(line, INV_PAINT);
X	    free((char*)line->for_arrow);
X	    line->for_arrow = NULL;
X	    draw_line(line, PAINT);
X	    if (pointmarker_shown) toggle_linepointmarker(line);
X	    }
X	clean_up();
X	set_action_object(F_DELETE_ARROW_HEAD, O_POLYLINE);
X	}
X
Xdelete_arcarrow(arc)
XF_arc	*arc;
X{
X	if (arcpoint_num == 0) { /*  backward arrow  */
X	    if (! arc->back_arrow) return;
X	    if (pointmarker_shown) toggle_arcpointmarker(arc);
X	    draw_arc(arc, background_color);
X	    free((char*)arc->back_arrow);
X	    arc->back_arrow = NULL;
X	    draw_arc(arc, foreground_color);
X	    if (pointmarker_shown) toggle_arcpointmarker(arc);
X	    }
X	else if (arcpoint_num == 2) { /*  for_arrow  */
X	    if (! arc->for_arrow) return;
X	    if (pointmarker_shown) toggle_arcpointmarker(arc);
X	    draw_arc(arc, background_color);
X	    free((char*)arc->for_arrow);
X	    arc->for_arrow = NULL;
X	    draw_arc(arc, foreground_color);
X	    if (pointmarker_shown) toggle_arcpointmarker(arc);
X	    }
X	clean_up();
X	set_action_object(F_DELETE_ARROW_HEAD, O_ARC);
X	}
X
Xdelete_splinearrow(spline)
XF_spline	*spline;
X{
X	F_point	*p;
X
X	if (closed_spline(spline)) return;
X	if (left_point == NULL) { /*  selected_point is the first point */
X	    if (! spline->back_arrow) return;
X	    if (pointmarker_shown) toggle_splinepointmarker(spline);
X	    p = selected_point->next;
X	    if (normal_spline(spline)) {
X		draw_arrow(p->x, p->y, selected_point->x,
X			selected_point->y, spline->back_arrow, ERASE);
X		pw_vector(canvas_pixwin, selected_point->x, selected_point->y,
X			round((p->x+selected_point->x)/2.0),
X			round((p->y+selected_point->y)/2.0), PAINT, spline->thickness);
X		}
X	    else {
X		F_control	*a, *b;
X
X		a = spline->controls;
X		b = a->next;
X		draw_arrow(round(a->rx), round(a->ry), selected_point->x,
X			selected_point->y, spline->back_arrow, ERASE);
X		bezier_spline(
X			(float)selected_point->x, (float)selected_point->y,
X			a->rx, a->ry, b->lx, b->ly, (float)p->x, (float)p->y,
X			PAINT,spline->thickness);
X		}
X	    free((char*)spline->back_arrow);
X	    spline->back_arrow = NULL;
X	    if (pointmarker_shown) toggle_splinepointmarker(spline);
X	    }
X	else if (selected_point->next == NULL) { /* forward arrow */
X	    if (! spline->for_arrow) return;
X	    if (pointmarker_shown) toggle_splinepointmarker(spline);
X	    if (normal_spline(spline)) {
X		draw_arrow(left_point->x, left_point->y,
X			selected_point->x, selected_point->y,
X			spline->for_arrow, ERASE);
X		pw_vector(canvas_pixwin, selected_point->x, selected_point->y,
X			round((selected_point->x+left_point->x)/2.0),
X			round((selected_point->y+left_point->y)/2.0),
X			PAINT, spline->thickness);
X		}
X	    else {
X		F_control	*a, *b;
X
X		a = spline->controls;
X		for (b = a->next; b->next != NULL; a = b, b = b->next);
X		draw_arrow(round(b->lx), round(b->ly), selected_point->x,
X			selected_point->y, spline->for_arrow, ERASE);
X		bezier_spline(
X			(float)left_point->x, (float)left_point->y,
X			a->rx, a->ry, b->lx, b->ly,
X			(float)selected_point->x, (float)selected_point->y,
X			PAINT,spline->thickness);
X		}
X	    free((char*)spline->for_arrow);
X	    spline->for_arrow = NULL;
X	    if (pointmarker_shown) toggle_splinepointmarker(spline);
X	    }
X	clean_up();
X	set_action_object(F_DELETE_ARROW_HEAD, O_SPLINE);
X	}
END_OF_FILE
if test 9172 -ne `wc -c <'xfig/autoarrow.c'`; then
    echo shar: \"'xfig/autoarrow.c'\" unpacked with wrong size!
fi
# end of 'xfig/autoarrow.c'
fi
if test -f 'xfig/f2ps.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xfig/f2ps.c'\"
else
echo shar: Extracting \"'xfig/f2ps.c'\" \(20059 characters\)
sed "s/^X//" >'xfig/f2ps.c' <<'END_OF_FILE'
X/* 
X *	F2ps : Fig-to-PostScript translator
X *
X *	Copyright (c) 1986 by Supoj Sutanthavibul (supoj@sally.UTEXAS.EDU)
X *	June 1986.
X *	1st revision : March 1988 - read fig 1.4 or 1.4X format
X *
X *	Version 2.0 additions (protocol 1.4X) by B.V. Smith 2/90
X *
X *	%W%	%G%
X*/
X#include "fig.h"
X#include "object.h"
X#include "resources.h"
X#include "psfonts.h"
X
X#undef cfree
X#undef free
X
X#define		PAGE_WIDTH		612	/* points; 8.5" */
X#define		PAGE_HEIGHT		792	/* points; 11" */
X#define		POINT_PER_INCH		72
X#define		DEFAULT_FONT_SIZE	11
X#define		DEFAULT_FONT		"Times-Roman"
X
Xextern	struct _fstruct fontnames[];		/* printer font names */
X
Xchar		Usage[] = "Usage: %s [-P][-L][-f font][-s size][-e scale][-N][-c] [input [output]]\n";
Xchar		*prog;
Xchar		*font = DEFAULT_FONT;
Xint		font_size = DEFAULT_FONT_SIZE;
Xint		cur_thickness;
Xint		cur_areafill=0;
Xint		show_page = 1;
Xint		center = 0;
Xint		landscape = 1;
Xdouble		scale = 1.0;
Xdouble		reduction;	/* converts screen ppi to printer points */
Xextern int	num_object;
Xchar		*from = NULL, *to = NULL;
XFILE		*ffp = NULL, *tfp = NULL;
Xchar		Err_incomp[] = "Incomplete %s object at line %d.";
Xchar		Err_mem[] = "Running out of memory.";
X
Xint		line_thickness; /* not needed for f2ps, arrow.c needs it for fig */
X
Xget_args(argc, argv)
Xint	 argc;
Xchar	*argv[];
X{
X	char	*a;
X	int	first = 1;
X
X	prog = *argv;
X	while (--argc) {
X	    a = *++argv;
X	    if (*a == '-') {
X		if (*++a == 'f') {	/* Font name followed */
X		    if (--argc)
X			font = *++argv;
X		    else
X			goto error_exit;
X		    }
X		else if (*a == 'c') {	/* Centering */
X		    center = 1;
X		    }
X		else if (*a == 'l' || *a == 'L') {	/* Landscape */
X		    landscape = 1;
X		    }
X		else if (*a == 'p' || *a == 'P') {	/* Portrait */
X		    landscape = 0;
X		    }
X		else if (*a == 's') {	/* Font size followed */
X		    if (--argc) {
X			font_size = atoi(*++argv);
X			}
X		    else
X			goto error_exit;
X		    }
X		else if (*a == 'e') {	/* Enlarging factor followed */
X		    if (--argc)
X			scale = atof(*++argv);
X		    else
X			goto error_exit;
X		    }
X		else if (*a == 'N') {	/* No "showpage" */
X		    show_page = 0;
X		    }
X		else
X		    goto error_exit;
X		}
X	    else if (first) {
X		from = a;	/*  from file  */
X		first = 0;
X		}
X	    else if (first == 0) {
X		to = a;		/*  to file  */
X		first = -1;
X		}
X	    else
X		goto error_exit;
X	    }
X	return;
X
X    error_exit:
X	fprintf(stderr, Usage, prog);
X	exit(0);
X	}
X
Xmain(argc, argv)
Xint	 argc;
Xchar	*argv[];
X{
X	F_compound	objects;
X	int		status;
X	char		c;
X
X	get_args(argc, argv);
X
X	if (to == NULL)
X	    tfp = stdout;
X	else if ((tfp = fopen(to, "w")) == NULL) {
X	    fprintf(stderr, "%s: Couldn't open %s", prog, to);
X	    fprintf(stderr, Usage, prog);
X	    exit(0);
X	    }
X
X	if (from)
X	    status = read_fig(from, &objects);
X	else 	/* read from stdin */
X	    status = readfp_fig(stdin, &objects);
X
X	if (status != 0) {
X	    if (from) read_fail_message(from, status);
X	    exit(0);
X	    }
X	genps_objects(&objects);
X	if (tfp != stdout) (void)fclose(tfp);
X	}
X
X#define		BEGIN_PROLOG	"\
X/$F2psDict 32 dict def \
X$F2psDict begin\
X $F2psDict /mtrx matrix put\
X"
X#define		ELLIPSE_PS	" \
X/DrawEllipse {\
X /endangle exch def\
X /startangle exch def\
X /yrad exch def\
X /xrad exch def\
X /y exch def\
X /x exch def\
X /savematrix mtrx currentmatrix def\
X x y translate xrad yrad scale 0 0 1 startangle endangle arc\
X savematrix setmatrix\
X } def\
X"
X#define		SPLINE_PS	" \
X/DrawSplineSection {\
X /y3 exch def\
X /x3 exch def\
X /y2 exch def\
X /x2 exch def\
X /y1 exch def\
X /x1 exch def\
X /xa x1 x2 add 2 div def\
X /ya y1 y2 add 2 div def\
X /xb x2 x3 add 2 div def\
X /yb y2 y3 add 2 div def\
X /x2 xa xb add 2 div def\
X /y2 ya yb add 2 div def x1 x2 sub abs 2 lt y1 y2 sub abs 2 lt and\
X  { x2 y2 lineto }\
X  { x2 y2 xb yb x3 y3 x1 y1 xa ya x2 y2 DrawSplineSection\
X  /y3 exch def\
X  /x3 exch def\
X  /yb exch def\
X  /xb exch def\
X  /y2 exch def\
X  /x2 exch def}\
X ifelse\
X x2 x3 sub abs 2 lt y2 y3 sub abs 2 lt and { x3 y3 lineto }\
X { x2 y2 xb yb x3 y3 DrawSplineSection } ifelse\
X } def\
X"
X#define		END_PROLOG	"\
X end\
X /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def\
X /$F2psEnd {$F2psEnteredState restore end} def\
X\n%%EndProlog\
X"
X
X#define		MAX	32000
X#define		MIN	-32000
Xstatic int	coord_system;
Xstatic int	llx = MAX, lly = MAX, urx = MIN, ury = MIN;
X
Xprolog(objects)
XF_compound	*objects;
X{
X	char		host[256];
X	struct passwd	*who;
X	long		when;
X	extern char	*ctime(), *strcpy();
X	extern long	time();
X
X	fprintf(tfp, "%%!\n");	/* PostScript magic strings */
X	who = getpwuid(getuid());
X	if (-1 == gethostname(host, sizeof(host)))
X	    (void)strcpy(host, "unknown-host!?!?");
X	(void) time(&when);
X	fprintf(tfp, "%%%%Title: %s\n", ((from) ? from : "stdin"));
X	fprintf(tfp, "%%%%Creator: %s\n", prog);
X	fprintf(tfp, "%%%%CreationDate: %s", ctime(&when));
X	fprintf(tfp, "%%%%For: %s@%s (%s)\n",
X			who->pw_name, host, who->pw_gecos);
X	fprintf(tfp, "%%%%Pages: %d\n", show_page);
X	fprintf(tfp, "%%%%BoundingBox: %d %d %d %d\n", llx, lly, urx, ury);
X	fprintf(tfp, "%%%%EndComments\n");
X	fprintf(tfp, "%s\n", BEGIN_PROLOG);
X	if (ellipse_exist(objects)) 
X		fprintf(tfp, "%s\n", ELLIPSE_PS);
X	if (normal_spline_exist(objects)) 
X		fprintf(tfp, "%s\n", SPLINE_PS);
X	fprintf(tfp, "%s\n", END_PROLOG);
X	fprintf(tfp, "$F2psBegin\n");
X	}
X
Xepilog()
X{
X	if (show_page) fprintf(tfp, "showpage\n");
X	fprintf(tfp, "$F2psEnd\n");
X	}
X
Xgenps_objects(objects)
XF_compound	*objects;
X{
X	double		tx, scalex, scaley;
X	double		dx, dy, origx, origy;
X	F_arc		*a;
X	F_compound	*c;
X	F_ellipse	*e;
X	F_line		*l;
X	F_spline	*s;
X	F_text		*t;
X	int		fill;
X	int		itmp;
X
X	/* Compute bounding box of objects */
X	compound_bound(objects, &llx, &lly, &urx, &ury);
X	if (llx > urx) {
X	    fprintf(stderr, "%s: No object",prog);
X	    return;
X	    }
X	coord_system = objects->nwcorner.y;
X	/* calculate reduction to convert screen points-per-inch to printer points */
X	reduction = POINT_PER_INCH / (float)objects->nwcorner.x;
X	scalex = scaley = scale * reduction;
X	/* convert to point unit */
X	llx = (int)ceil(llx * scalex);
X	lly = (int)ceil(lly * scaley);
X	urx = (int)ceil(urx * scalex);
X	ury = (int)ceil(ury * scaley);
X	if (landscape)		/* swap x,y */
X		{
X		itmp = llx; llx = lly; lly = itmp;
X		itmp = urx; urx = ury; ury = itmp;
X		}
X	if (center) {
X	    dx = urx - llx;
X	    dy = ury - lly;
X	    tx = (PAGE_WIDTH - dx) / 2.0;
X	    origx = tx - llx;
X	    if (landscape)
X		origx=0;
X		/*origx -= (dx-llx);*/
X	    urx = (llx=tx) + dx;
X	    ury = (PAGE_HEIGHT + dy) / 2.0;
X	    if (coord_system == 2)
X		origy = ury + lly;
X	    else
X		origy = ury - dy - lly;
X	    lly = ury - dy;
X	    }
X	else {
X	    origx = 0.0;
X	    origy = PAGE_HEIGHT;
X	    }
X	if (coord_system == 2) 
X		scaley = -scaley;
X
X	prolog(objects);
X
X	fprintf(tfp, "%f %f translate %.3f %.3f scale\n",
X		origx, origy, scalex, scaley);
X
X	/* **** Landscape mode **** */
X	if (landscape) {
X	    fprintf(tfp, "%d 0 translate 90 rotate\n", PAGE_WIDTH);
X	    /* uncomment this when we figure out what SCALE should be */
X	    /* if ((t = PAGE_HEIGHT / SCALE / WIDTH) < 1.0)
X		fprintf(tfp, "%f %f scale\n", t, t);
X	    */
X	    }
X	/* else if ((t = PAGE_HEIGHT / SCALE / HEIGHT) < 1.0)
X	    fprintf(tfp, "%f %f scale\n", t, t);
X	*/
X
X	/* make first pass with area-filled objects; second with non-filled */
X	for (fill=1; fill>=0; fill--)
X		{
X		for (a = objects->arcs; a != NULL; a = a->next) 
X			genps_arc(a,fill);
X		for (c = objects->compounds; c != NULL; c = c->next) 
X			genps_compound(c,fill);
X		for (e = objects->ellipses; e != NULL; e = e->next) 
X			genps_ellipse(e,fill);
X		for (l = objects->lines; l != NULL; l = l->next) 
X			genps_line(l,fill);
X		for (s = objects->splines; s != NULL; s = s->next) 
X			genps_spline(s,fill);
X		}
X	/* do text after everything else */
X	for (t = objects->texts; t != NULL; t = t->next) 
X		genps_text(t);
X	epilog();
X	}
X
Xset_style(s, v)
Xint	s;
Xfloat	v;
X{
X	if (s == DASH_LINE) {
X	    if (v > 0.0) fprintf(tfp, "\t[%f] 0 setdash\n", v);
X	    }
X	else if (s == DOTTED_LINE) {
X	    if (v > 0.0) fprintf(tfp, "\t[1 %f] 0 setdash\n", v);
X	    }
X	}
X
Xreset_style(s, v)
Xint	s;
Xfloat	v;
X{
X	if (s == DASH_LINE) {
X	    if (v > 0.0) fprintf(tfp, "\t[] 0 setdash\n");
X	    }
X	else if (s == DOTTED_LINE) {
X	    if (v > 0.0) fprintf(tfp, "\t[] 0 setdash\n");
X	    }
X	}
X
Xset_areafill(a)
Xint a;
X{
X	if (cur_areafill != a)
X		{
X		cur_areafill = a;
X		fprintf(tfp, "%.2f setgray\n",1.0-(a-1.0)/(NUMFILLPATS-1.0));
X		}
X	}
X
Xset_linewidth(w)
Xint	w;
X{
X	extern int	cur_thickness;
X
X	if (w != cur_thickness) {
X	    cur_thickness = w;
X	    fprintf(tfp, "%.3f setlinewidth\n", /* 0.7 * */ 1.0 * cur_thickness);
X	    }
X	}
X
Xgenps_compound(com,fill)
XF_compound	*com;
Xint fill;
X{
X	F_arc		*a;
X	F_compound	*c;
X	F_ellipse	*e;
X	F_line		*l;
X	F_spline	*s;
X	F_text		*t;
X
X	for (a = com->arcs; a != NULL; a = a->next) 
X		genps_arc(a,fill);
X	for (c = com->compounds; c != NULL; c = c->next) 
X		genps_compound(c,fill);
X	for (e = com->ellipses; e != NULL; e = e->next) 
X		genps_ellipse(e,fill);
X	for (l = com->lines; l != NULL; l = l->next) 
X		genps_line(l,fill);
X	for (s = com->splines; s != NULL; s = s->next) 
X		genps_spline(s,fill);
X	if (fill==0)	/* no filled text, just do text on the non-filled pass */
X		for (t = com->texts; t != NULL; t = t->next) 
X			genps_text(t);
X	}
X
Xgenps_line(l,fill)
XF_line	*l;
Xint fill;
X{
X	F_point		*p, *q;
X	int		radius;
X
X	if ((fill && l->area_fill==0) ||
X	    (fill==0 && l->area_fill))
X		return;
X
X	set_linewidth(l->thickness);
X	radius = l->pen;		/* radius of rounded-corner boxes */
X	p = l->points;
X	q = p->next;
X	if (q == NULL) { /* A single point line */
X	    fprintf(tfp, "newpath %d %d moveto %d %d lineto stroke\n",
X			p->x, p->y, p->x, p->y);
X	    return;
X	    }
X	if (l->back_arrow)
X	    draw_arrow_head((float)q->x, (float)q->y, (float)p->x,
X			(float)p->y, l->back_arrow->ht, l->back_arrow->wid);
X	set_style(l->style, l->style_val);
X	fprintf(tfp, "%% Polyline\n");
X	if (l->type == T_ARC_BOX)
X		{
X		register int xmin,xmax,ymin,ymax;
X
X		xmin = xmax = p->x;
X		ymin = ymax = p->y;
X		while (p->next != NULL)	/* find lower left and upper right corners */
X			{
X			p=p->next;
X			if (xmin > p->x)
X				xmin = p->x;
X			else if (xmax < p->x)
X				xmax = p->x;
X			if (ymin > p->y)
X				ymin = p->y;
X			else if (ymax < p->y)
X				ymax = p->y;
X			}
X		fprintf(tfp, "newpath %d %d moveto",xmin+radius, ymin);
X		fprintf(tfp, " %d %d %d %d %d arcto 4 {pop} repeat",
X				xmin, ymin, xmin, ymax-radius, radius);
X		fprintf(tfp, " %d %d %d %d %d arcto 4 {pop} repeat", /* arc through bl to br */
X				xmin, ymax, xmax-radius, ymax, radius);
X		fprintf(tfp, " %d %d %d %d %d arcto 4 {pop} repeat", /* arc through br to tr */
X				xmax, ymax, xmax, ymin+radius, radius);
X		fprintf(tfp, " %d %d %d %d %d arcto 4 {pop} repeat", /* arc through tr to tl */
X				xmax, ymin, xmin+radius, ymin, radius);
X		}
X	else
X		{
X		fprintf(tfp, "newpath %d %d moveto", p->x, p->y);
X		while (q->next != NULL) {
X		    p = q;
X		    q = q->next;
X		    if (l->type == T_ARC_BOX)
X			{
X			fprintf(tfp," %d %d %d %d %d arcto 4 {pop} repeat",
X					p->x,p->y,q->x,q->y,radius);
X			fprintf(tfp," 4 { pop } repeat");
X			}
X		    else
X			fprintf(tfp, " %d %d lineto", p->x, p->y);
X		    }
X		}
X	if (l->type == T_POLYLINE)
X	    fprintf(tfp, " %d %d lineto stroke\n", q->x, q->y);
X	else
X	    {
X	    fprintf(tfp, " closepath ");
X	    if (l->area_fill)
X		{
X		set_areafill(l->area_fill);
X		fprintf(tfp, " gsave fill grestore ");
X		set_areafill(NUMFILLPATS);	/* back to black line */
X		}
X	    fprintf(tfp, " stroke\n");
X	    }
X
X	reset_style(l->style, l->style_val);
X	if (l->for_arrow)
X	    draw_arrow_head((float)p->x, (float)p->y, (float)q->x,
X			(float)q->y, l->for_arrow->ht, l->for_arrow->wid);
X	}
X
Xgenps_spline(s,fill)
XF_spline	*s;
Xint fill;
X{
X	if (int_spline(s))
X	    genps_itp_spline(s,fill);
X	else
X	    genps_ctl_spline(s,fill);
X	}
X
Xgenps_itp_spline(s,fill)
XF_spline	*s;
Xint fill;
X{
X	F_point		*p, *q;
X	F_control	*a, *b;
X
X	if ((fill && s->area_fill==0) ||
X	    (fill==0 && s->area_fill))
X		return;
X
X	set_linewidth(s->thickness);
X	a = s->controls;
X	b = a->next;
X	p = s->points;
X	if (s->back_arrow)
X	    draw_arrow_head(b->lx, b->ly, (float)p->x,
X			(float)p->y, s->back_arrow->ht, s->back_arrow->wid);
X
X	set_style(s->style, s->style_val);
X	fprintf(tfp, "%% Interpolated spline\n");
X	fprintf(tfp, "newpath %d %d moveto\n", p->x, p->y);
X	for (q = p->next; q != NULL; p = q, q = q->next) {
X	    b = a->next;
X	    fprintf(tfp, "\t%.3f %.3f %.3f %.3f %d %d curveto\n",
X			a->rx, a->ry, b->lx, b->ly, q->x, q->y);
X	    a = b;
X	    b = b->next;
X	    }
X	if (closed_spline(s)) 
X		{
X		fprintf(tfp, " closepath ");
X		if (s->area_fill)
X			{
X			set_areafill(s->area_fill);
X			fprintf(tfp, " gsave fill grestore ");
X			set_areafill(NUMFILLPATS);	/* back to black for line */
X			}
X		}
X	fprintf(tfp, " stroke\n");
X	reset_style(s->style, s->style_val);
X
X	if (s->for_arrow)
X	    draw_arrow_head(a->lx, a->ly, (float)p->x,
X			(float)p->y, s->for_arrow->ht, s->for_arrow->wid);
X	}
X
Xgenps_ctl_spline(s,fill)
XF_spline	*s;
Xint fill;
X{
X	float		a, b, c, d, x1, y1, x2, y2, x3, y3;
X	F_point		*p, *q;
X
X	/*
X	if (first) {
X	    first = FALSE;
X	    fprintf(tfp, "%s\n", SPLINE_PS);
X	    }
X	*/
X
X	if ((fill && s->area_fill==0) ||
X	    (fill==0 && s->area_fill))
X		return;
X
X	p = s->points;
X	x1 = p->x; y1 = p->y;
X	p = p->next;
X	c = p->x; d = p->y;
X	set_linewidth(s->thickness);
X	x3 = a = (x1 + c) / 2;
X	y3 = b = (y1 + d) / 2;
X	if (s->back_arrow) {
X	    draw_arrow_head(c, d, x1, y1, s->back_arrow->ht, s->back_arrow->wid);
X	    }
X	set_style(s->style, s->style_val);
X	if (! closed_spline(s)) {
X	    fprintf(tfp, "%% Open spline\n");
X	    fprintf(tfp, "newpath %.3f %.3f moveto %.3f %.3f lineto\n",
X			x1, y1, x3, y3);
X	    }
X	else {
X	    fprintf(tfp, "%% Closed spline\n");
X	    fprintf(tfp, "newpath %.3f %.3f moveto\n", a, b);
X	    }
X	for (q = p->next; q != NULL; p = q, q = q->next) {
X	    x1 = x3; y1 = y3;
X	    x2 = c;  y2 = d;
X	    c = q->x; d = q->y;
X	    x3 = (x2 + c) / 2;
X	    y3 = (y2 + d) / 2;
X	    fprintf(tfp, "\t%.3f %.3f %.3f %.3f %.3f %.3f DrawSplineSection\n",
X			x1, y1, x2, y2, x3, y3);
X	    }
X	/*
X	* At this point, (x2,y2) and (c,d) are the position of the 
X	* next-to-last and last point respectively, in the point list
X	*/
X	if (closed_spline(s)) {
X	    fprintf(tfp, "\t%.3f %.3f %.3f %.3f %.3f %.3f DrawSplineSection closepath ",
X			x3, y3, c, d, a, b);
X	    if (s->area_fill)
X		{
X		set_areafill(s->area_fill);
X		fprintf(tfp, " gsave fill grestore\n");
X		set_areafill(NUMFILLPATS);	/* back to black for line */
X		}
X	    fprintf(tfp, " stroke\n");
X	    }
X	else {
X	    fprintf(tfp, "\t%.3f %.3f lineto stroke\n", c, d);
X	    }
X	reset_style(s->style, s->style_val);
X	if (s->for_arrow) {
X	    draw_arrow_head(x2, y2, c, d, s->for_arrow->ht,
X				s->for_arrow->wid);
X	    }
X	}
X
Xgenps_ellipse(e,fill)
XF_ellipse	*e;
Xint fill;
X{
X	if ((fill && e->area_fill==0) ||
X	    (fill==0 && e->area_fill))
X		return;
X
X	set_linewidth(e->thickness);
X	set_style(e->style, e->style_val);
X	fprintf(tfp, "%% Ellipse\n");
X	fprintf(tfp, "newpath %d %d %d %d 0 360 DrawEllipse\n",
X		e->center.x, e->center.y, e->radiuses.x, e->radiuses.y);
X	if (e->area_fill)
X		{
X		set_areafill(e->area_fill);
X		fprintf(tfp, " gsave fill grestore\n");
X		set_areafill(NUMFILLPATS);	/* back to black for line */
X		}
X	fprintf(tfp, " stroke\n");
X	reset_style(e->style, e->style_val);
X	}
X
X#define	TEXT_SET_PS	"\
Xfn%d.%d setfont\n\
X"
X#define TEXT_DEF_PS	"\
X/fn%d.%d /%s findfont %f scalefont def\n\
X"
X
X#define MAX_FONT_SIZES 20
X
Xgenps_text(t)
XF_text	*t;
X	{
X	char	*c;
X	static	int current_font = -1;
X	static	int current_size = -1;
X	static	int first[NUMFONTS][MAX_FONT_SIZES];
X	int	i,j,found;
X
X	if (current_font == -1)
X		for (i=0; i<NUMFONTS; i++)
X		    for (j=0; j<MAX_FONT_SIZES; j++)
X			first[i][j] = 0;
X
X	/* if different font or different size, choose new */
X	if (current_font != t->font || current_size != t->size)
X	    {
X	    found = FALSE;
X	    for (i=0; (first[t->font][i]!=0 && i<MAX_FONT_SIZES); i++)
X		if (first[t->font][i] == t->size)	/* look for this size */
X		    {
X		    found = TRUE;
X		    break;
X		    }
X	    if (!found)		/* if we haven't already done a 'findfont'... */
X		{
X		fprintf(tfp, TEXT_DEF_PS, t->font, t->size, fontnames[t->font].psfont, 
X					t->size/reduction);
X		if (i < MAX_FONT_SIZES)		/* insert this size in table */
X		    first[t->font][i] = t->size;
X		}
X	    fprintf(tfp, TEXT_SET_PS, t->font, t->size); /* now select the font */
X	    }
X	current_font = t->font;
X	current_size = t->size;
X
X	fprintf(tfp,"(");
X	for (c = t->cstring; *c; c++) 		/* push the string on the stack */
X	    {
X	    if (*c == '\\' || *c == '(' || *c == ')') 
X		putc('\\', tfp);
X	    putc(*c, tfp);
X	    }
X
X	if (t->type == T_CENTER_JUSTIFIED || t->type == T_RIGHT_JUSTIFIED)
X		{
X		/* dup the string and subtract half(all) of the width from the x position */
X		fprintf(tfp,") dup stringwidth pop %s %d exch sub ",
X				(t->type == T_CENTER_JUSTIFIED? "2 div": ""),t->base_x);	
X		fprintf(tfp,"%d moveto ",t->base_y);
X		}
X	else
X		fprintf(tfp,") %d %d moveto ",t->base_x,t->base_y);
X
X	if (coord_system == 2) 	/* upper left is 0,0 */
X	    fprintf(tfp, "1 -1 scale show 1 -1 scale\n");
X	else
X	    fprintf(tfp, "show\n");
X	}
X
Xgenps_arc(a,fill)
XF_arc	*a;
Xint fill;
X{
X	double		angle1, angle2, dx, dy, radius, x, y;
X	double		cx, cy, sx, sy, ex, ey;
X	int		direction;
X
X	if ((fill && a->area_fill==0) ||
X	    (fill==0 && a->area_fill))
X		return;
X
X	cx = a->center.x; cy = a->center.y;
X	sx = a->point[0].x; sy = a->point[0].y;
X	ex = a->point[2].x; ey = a->point[2].y;
X
X	if (coord_system == 2)
X	    direction = !a->direction;
X	else
X	    direction = a->direction;
X	set_linewidth(a->thickness);
X	if (a->for_arrow) {
X	    arc_tangent(cx, cy, ex, ey, direction, &x, &y);
X	    draw_arrow_head(x, y, ex, ey, a->for_arrow->ht, a->for_arrow->wid);
X	    }
X	if (a->back_arrow) {
X	    arc_tangent(cx, cy, sx, sy, !direction, &x, &y);
X	    draw_arrow_head(x, y, sx, sy, a->back_arrow->ht, a->back_arrow->wid);
X	    }
X	dx = cx - sx;
X	dy = cy - sy;
X	radius = sqrt(dx*dx + dy*dy);
X	angle1 = atan2(sy-cy, sx-cx) * 180 / M_PI;
X	angle2 = atan2(ey-cy, ex-cx) * 180 / M_PI;
X	/* direction = 1 -> Counterclockwise */
X	set_style(a->style, a->style_val);
X	fprintf(tfp, "newpath %.3f %.3f %.3f %.3f %.3f %s stroke\n",
X		cx, cy, radius, angle1, angle2,
X		((direction == 1) ? "arc" : "arcn"));
X	reset_style(a->style, a->style_val);
X	}
X
Xarc_tangent(x1, y1, x2, y2, direction, x, y)
Xdouble	x1, y1, x2, y2, *x, *y;
Xint	direction;
X{
X	if (direction) { /* counter clockwise  */
X	    *x = x2 + (y2 - y1);
X	    *y = y2 - (x2 - x1);
X	    }
X	else {
X	    *x = x2 - (y2 - y1);
X	    *y = y2 + (x2 - x1);
X	    }
X	}
X
X/*	draw arrow heading from (x1, y1) to (x2, y2)	*/
X
Xdraw_arrow_head(x1, y1, x2, y2, arrowht, arrowwid)
Xfloat	x1, y1, x2, y2, arrowht, arrowwid;
X{
X	float	x, y, xb, yb, dx, dy, l, sina, cosa;
X	float	xc, yc, xd, yd;
X
X	dx = x2 - x1;  dy = y1 - y2;
X	l = sqrt((double)(dx*dx + dy*dy));	/* length of line */
X	sina = dy / l;  cosa = dx / l;
X	xb = x2*cosa - y2*sina;
X	yb = x2*sina + y2*cosa;
X	x = xb - arrowht;
X	y = yb - arrowwid / 2;
X	xc = x*cosa + y*sina;			/* one tail of arrow */
X	yc = -x*sina + y*cosa;
X	y = yb + arrowwid / 2;
X	xd = x*cosa + y*sina;			/* other tail of arrow */
X	yd = -x*sina + y*cosa;
X	fprintf(tfp, "newpath %.3f %.3f moveto %.3f %.3f lineto %.3f %.3f lineto stroke\n",
X		xc, yc, x2, y2, xd, yd);
X	}
X
Xellipse_exist(ob)
XF_compound	*ob;
X{
X	F_compound	*c;
X
X	if (NULL != ob->ellipses) return(1);
X
X	for (c = ob->compounds; c != NULL; c = c->next) {
X	    if (ellipse_exist(c)) return(1);
X	    }
X
X	return(0);
X	}
X
Xnormal_spline_exist(ob)
XF_compound	*ob;
X{
X	F_spline	*s;
X	F_compound	*c;
X
X	for (s = ob->splines; s != NULL; s = s->next) {
X	    if (normal_spline(s)) return(1);
X	    }
X
X	for (c = ob->compounds; c != NULL; c = c->next) {
X	    if (normal_spline_exist(c)) return(1);
X	    }
X
X	return(0);
X	}
X
X/*VARARGS1*/
Xput_msg(format, arg1, arg2, arg3, arg4, arg5)
X	char    *format;
X	int     arg1, arg2, arg3, arg4, arg5;
X{
X	fprintf(stderr, format, arg1, arg2, arg3, arg4, arg5);
X}
X
X#ifdef sparc
X
XFREE ( x )    /*-- disable free --*/
X    char *x ;
X{
X    fprintf( stderr, "FREE -- %8x\n", x ) ;
X}
XCFREE ( x )   /*-- disable cfree --*/
X    char *x ;
X{
X    fprintf( stderr, "FREE -- %8x\n", x ) ;
X}
X
X#endif  sparc
END_OF_FILE
if test 20059 -ne `wc -c <'xfig/f2ps.c'`; then
    echo shar: \"'xfig/f2ps.c'\" unpacked with wrong size!
fi
# end of 'xfig/f2ps.c'
fi
if test -f 'xfig/panel2.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'xfig/panel2.h'\"
else
echo shar: Extracting \"'xfig/panel2.h'\" \(22782 characters\)
sed "s/^X//" >'xfig/panel2.h' <<'END_OF_FILE'
X/* 
X *	FIG : Facility for Interactive Generation of figures
X *
X *	Copyright (c) 1985 by Supoj Sutanthavibul (supoj@sally.UTEXAS.EDU)
X *      November 1985.
X *
X *      Bitmaps for second panel added by B.V.Smith 1989
X *	%W%	%G%
X*/
X
X
Xstatic char save_n_exit_image[192]={
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xc0,0x07,0x86,0x81,0xf9,0x03,0xe0,0x0e,0x86,0x81,0x19,0x02,
X	0x60,0x0c,0x8f,0x81,0x19,0x00,0xc0,0x81,0x19,0xc3,0x18,0x00,
X	0x80,0xc7,0x30,0xc3,0xf8,0x00,0x10,0xcc,0x3f,0x66,0x18,0x00,
X	0x30,0xec,0x7f,0x66,0x18,0x00,0xf0,0x6f,0x60,0x3c,0x18,0x02,
X	0xe0,0x67,0x60,0x39,0xf8,0x03,0x00,0x00,0x00,0x01,0x00,0x00,
X	0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x40,0x01,0x00,0x00,
X	0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,
X	0x00,0x00,0x40,0x01,0x00,0x00,0x00,0x00,0x40,0x01,0x00,0x00,
X	0x00,0x00,0x80,0x07,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,
X	0x80,0x87,0x61,0x7f,0xfe,0x01,0xc0,0x8c,0x61,0x19,0x32,0x01,
X	0x60,0x98,0x61,0x18,0x30,0x00,0x60,0x98,0x61,0x18,0x30,0x00,
X	0x60,0x98,0x61,0x18,0x30,0x00,0x60,0x98,0x61,0x18,0x30,0x00,
X	0x60,0x98,0x61,0x18,0x30,0x00,0xc0,0x0c,0x33,0x18,0x30,0x00,
X	0x80,0x07,0x1e,0x7e,0x30,0x00,0x00,0x7e,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
X };
Xmpr_static(save_n_exit_ic,46,32,1,save_n_exit_image);
X
Xstatic char save_image[192]={
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xc0,0x07,0x06,0x03,0xfb,0x03,0xe0,0x0e,0x06,0x03,0xfb,0x03,
X	0x60,0x0c,0x0f,0x03,0x1b,0x02,0xe0,0x00,0x0f,0x86,0x19,0x00,
X	0xc0,0x81,0x19,0x86,0x19,0x00,0x80,0x83,0x19,0x86,0xf9,0x01,
X	0x00,0xc7,0x30,0x86,0xf9,0x01,0x00,0xce,0x3f,0xcc,0x18,0x00,
X	0x30,0xcc,0x3f,0xcc,0x18,0x00,0x30,0x6c,0x60,0xcc,0x18,0x02,
X	0xf0,0x6f,0x60,0x78,0xf8,0x03,0xe0,0x67,0x60,0x78,0xf8,0x03,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
X };
Xmpr_static(save_ic,46,32,1,save_image);
X
Xstatic char save_in_image[192] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x86,0x81,0xf9,0x03,
X	0xe0,0x0f,0x86,0x81,0xf9,0x03,0x60,0x0c,0x8f,0x81,0x19,0x02,
X	0xe0,0x00,0x0f,0xc3,0x18,0x00,0xc0,0x81,0x19,0xc3,0x18,0x00,
X	0x80,0x83,0x19,0xc3,0xf8,0x01,0x00,0xc7,0x30,0xc3,0xf8,0x01,
X	0x00,0xce,0x3f,0x66,0x18,0x00,0x30,0xcc,0x3f,0x66,0x18,0x00,
X	0x30,0x6c,0x60,0x66,0x18,0x02,0xf0,0x6f,0x60,0x3c,0xf8,0x03,
X	0xe0,0x67,0x60,0x3c,0xf8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x38,0x06,0x00,0x00,
X	0x00,0xfc,0x38,0x06,0x00,0x00,0x00,0x30,0x78,0x06,0x00,0x00,
X	0x00,0x30,0x58,0x06,0x00,0x00,0x00,0x30,0x58,0x06,0x00,0x00,
X	0x00,0x30,0xd8,0x06,0x00,0x00,0x00,0x30,0xd8,0x06,0x00,0x00,
X	0x00,0x30,0x98,0x06,0x00,0x00,0x00,0x30,0x98,0x06,0x00,0x00,
X	0x00,0x30,0x98,0x07,0x00,0x00,0x00,0xfc,0x18,0x67,0x1b,0x00,
X	0x00,0xfc,0x18,0x67,0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
X };
Xmpr_static(save_in_ic,46,32,1,save_in_image);
X
Xstatic char read_image[192] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xf0,0xc3,0x1f,0x0c,0x7e,0x00,0xf0,0xc7,0x1f,0x0c,0xfe,0x00,
X	0x30,0xce,0x10,0x1e,0xc6,0x01,0x30,0xcc,0x00,0x1e,0x86,0x01,
X	0x30,0xce,0x00,0x33,0x86,0x01,0xf0,0xc7,0x0f,0x33,0x86,0x01,
X	0xf0,0xc3,0x8f,0x61,0x86,0x01,0xb0,0xc1,0x80,0x7f,0x86,0x01,
X	0x30,0xc3,0x80,0x7f,0x86,0x01,0x30,0xc6,0xd0,0xc0,0xc6,0x01,
X	0x30,0xcc,0xdf,0xc0,0xfe,0x00,0x30,0xd8,0xdf,0xc0,0x7e,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
X };
Xmpr_static(read_ic,46,32,1,read_image);
X
Xstatic char undo_image[224] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x3c,0x83,0xf1,
X	0x07,0x7c,0x00,0x30,0x18,0x87,0xf1,0x0f,0xfe,0x00,0x30,0x18,
X	0x87,0x31,0x1c,0xc7,0x01,0x30,0x18,0x8f,0x31,0x18,0x83,0x01,
X	0x30,0x18,0x8f,0x31,0x18,0x83,0x01,0x30,0x18,0x9b,0x31,0x18,
X	0x83,0x01,0x30,0x18,0x9b,0x31,0x18,0x83,0x01,0x30,0x18,0xbb,
X	0x31,0x18,0x83,0x01,0x30,0x18,0xb3,0x31,0x18,0x83,0x01,0x30,
X	0x18,0xb3,0x31,0x18,0x83,0x01,0x30,0x18,0xe3,0x31,0x18,0x83,
X	0x01,0x30,0x18,0xe3,0x31,0x18,0x83,0x01,0x70,0x1c,0xc3,0x31,
X	0x1c,0xc7,0x01,0xe0,0x0f,0xc3,0xf1,0x0f,0xfe,0x00,0xc0,0x07,
X	0x83,0xf1,0x07,0x7c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
Xmpr_static(undo_ic, 52, 32, 1, undo_image);
X
Xstatic char quit_image[192] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc3,0x30,0x3f,0xff,0x00,
X	0x60,0xc6,0x30,0x0c,0x99,0x00,0x30,0xcc,0x30,0x0c,0x18,0x00,
X	0x30,0xcc,0x30,0x0c,0x18,0x00,0x30,0xcc,0x30,0x0c,0x18,0x00,
X	0x30,0xcc,0x30,0x0c,0x18,0x00,0x30,0xcc,0x30,0x0c,0x18,0x00,
X	0x30,0xcc,0x30,0x0c,0x18,0x00,0x30,0xcc,0x30,0x0c,0x18,0x00,
X	0x30,0xcc,0x30,0x0c,0x18,0x00,0x60,0x86,0x19,0x0c,0x18,0x00,
X	0xc0,0x03,0x0f,0x3f,0x18,0x01,0x00,0x03,0x00,0x00,0x80,0x01,
X	0x00,0x06,0x00,0x00,0xc0,0x00,0x00,0xfc,0xff,0xff,0x7f,0x00,
X	0x00,0xf8,0xff,0xff,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
X };
Xmpr_static(quit_ic, 46, 32, 1, quit_image);
X
Xstatic char edit_image[192] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xc0,0x9f,0x1f,0x3f,0xff,0x00,0xc0,0x9f,0x3f,0x3f,0xff,0x00,
X	0xc0,0x90,0x71,0x0c,0x99,0x00,0xc0,0x80,0x61,0x0c,0x18,0x00,
X	0xc0,0x80,0x61,0x0c,0x18,0x00,0xc0,0x8f,0x61,0x0c,0x18,0x00,
X	0xc0,0x8f,0x61,0x0c,0x18,0x00,0xc0,0x80,0x61,0x0c,0x18,0x00,
X	0xc0,0x80,0x61,0x0c,0x18,0x00,0xc0,0x90,0x71,0x0c,0x18,0x00,
X	0xc0,0x9f,0x3f,0x3f,0x18,0x00,0xc0,0x9f,0x1f,0x3f,0x18,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
X };
Xmpr_static(edit_ic, 46, 32, 1, edit_image);
X
Xstatic char cdir_image[192] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x80,0xc7,0x8f,0x9f,0x1f,0x00,0xc0,0xcc,0x18,0x86,0x31,0x00,
X	0x60,0xcc,0x30,0x86,0x61,0x00,0x60,0xc0,0x30,0x86,0x61,0x00,
X	0x60,0xc0,0x30,0x86,0x61,0x00,0x60,0xc0,0x30,0x86,0x31,0x00,
X	0x60,0xc0,0x30,0x86,0x1f,0x00,0x60,0xc0,0x30,0x86,0x0d,0x00,
X	0x60,0xc0,0x30,0x86,0x19,0x00,0x60,0xcc,0x30,0x86,0x31,0x00,
X	0xc0,0xcc,0x18,0x86,0x61,0x00,0x80,0xc7,0x8f,0x9f,0xc1,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
X };
Xmpr_static(cdir_ic, 46, 32, 1, cdir_image);
X
Xstatic char pdir_image[192] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xe0,0x87,0x1f,0x7e,0x7e,0x00,0x60,0x8c,0x31,0x18,0xc6,0x00,
X	0x60,0x98,0x61,0x18,0x86,0x01,0x60,0x98,0x61,0x18,0x86,0x01,
X	0x60,0x98,0x61,0x18,0x86,0x01,0x60,0x8c,0x61,0x18,0xc6,0x00,
X	0xe0,0x87,0x61,0x18,0x7e,0x00,0x60,0x80,0x61,0x18,0x36,0x00,
X	0x60,0x80,0x61,0x18,0x66,0x00,0x60,0x80,0x61,0x18,0xc6,0x00,
X	0x60,0x80,0x31,0x18,0x86,0x01,0x60,0x80,0x1f,0x7e,0x06,0x03,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
X };
Xmpr_static(pdir_ic, 46, 32, 1, pdir_image);
X
Xstatic char print_image[224] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
X	0xff,0xff,0xff,0x0f,0x20,0x00,0x00,0x00,0x00,0x00,0x08,0x20,
X	0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x00,0x00,0x00,0x00,
X	0x08,0xe0,0xff,0xff,0xff,0xff,0xff,0x0f,0xa0,0x00,0x00,0x00,
X	0x00,0x00,0x08,0xa0,0x00,0x00,0xf8,0x03,0x00,0x08,0xa0,0x00,
X	0x00,0x08,0x02,0x00,0x08,0xa0,0x00,0x00,0xf8,0x03,0x00,0x08,
X	0xa0,0x00,0x00,0xa8,0x02,0x00,0x04,0xa0,0x00,0x00,0xf8,0x03,
X	0x00,0x02,0xa0,0x00,0x00,0x00,0x00,0x00,0x01,0xe0,0xff,0xff,
X	0xff,0xff,0xff,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x00,0xfc,
X	0xf8,0xff,0xff,0xff,0x9f,0x00,0x84,0x00,0x00,0x00,0x00,0x80,
X	0x00,0x84,0xf8,0xff,0xff,0xff,0x9f,0x00,0xfc,0x00,0x00,0x00,
X	0x00,0x80,0x00,0xe0,0xf8,0xff,0xff,0xff,0x9f,0x00,0xc0,0x00,
X	0x00,0x00,0x00,0x80,0x00,0x80,0xf8,0xff,0xff,0xff,0x9f,0x00,
X	0x80,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0xf8,0xff,0xff,0xff,
X	0x9f,0x00,0x00,0x01,0x00,0x00,0x00,0x80,0x00,0x00,0xfe,0xff,
X	0xff,0xff,0xff,0x00,0x00,0x7c,0x00,0x00,0x00,0x7c,0x00,0x00,
X	0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
Xmpr_static(print_ic, 54, 32, 1, print_image);
X
Xstatic char print_sel_image[224] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0xff,0xff,
X	0x3f,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,0x00,0xe0,
X	0xff,0xff,0x3f,0x00,0x00,0x00,0x20,0x00,0x00,0x20,0x00,0x00,
X	0x00,0x20,0x00,0x07,0x20,0x00,0x00,0x00,0x20,0x00,0x07,0x10,
X	0x00,0x00,0x00,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0xe0,0xff,
X	0xff,0x07,0x00,0x00,0x00,0x78,0x00,0x00,0x04,0x00,0x00,0x00,
X	0x48,0xfe,0xff,0x04,0x00,0x00,0x00,0x78,0x00,0x00,0x04,0x00,
X	0x00,0x00,0x40,0xfe,0xff,0x04,0x00,0x00,0x00,0x40,0x00,0x00,
X	0x04,0x00,0x00,0x00,0xc0,0xff,0xff,0x07,0x00,0x00,0x00,0x00,
X	0x07,0xc0,0x01,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0e,0xc0,0x00,
X	0x00,0x00,0x00,0x00,0x11,0x80,0x00,0x00,0x04,0x00,0x00,0x01,
X	0x80,0x00,0x00,0x04,0x00,0x00,0x01,0x87,0x70,0x38,0x1e,0x00,
X	0x00,0x8e,0x88,0x88,0x44,0x04,0x00,0x00,0x90,0x8f,0xf8,0x04,
X	0x04,0x00,0x00,0x90,0x80,0x08,0x04,0x04,0x00,0x00,0x91,0x88,
X	0x88,0x44,0x24,0x00,0x00,0x0e,0xc7,0x71,0x38,0x18,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
Xmpr_static(print_sel_ic, 54, 32, 1, print_sel_image);
X
Xstatic char size_image[224] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
X	0x00,0x00,0x00,0x00,0xc0,0xff,0x00,0x00,0x00,0x00,0x00,0xe0,
X	0xff,0x00,0x00,0x00,0x00,0x00,0xf0,0xff,0x00,0x00,0x00,0x00,
X	0x00,0x78,0xe0,0x00,0x00,0x00,0x00,0x00,0x38,0xc0,0x00,0x00,
X	0x00,0x00,0x00,0x38,0xc0,0x00,0x00,0x00,0x00,0x00,0x38,0x80,
X	0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,
X	0x00,0x00,0xf0,0x0f,0x00,0x00,0x00,0x00,0x00,0xc0,0x3f,0x30,
X	0x00,0x00,0x00,0x00,0x80,0x7f,0x30,0x00,0x00,0x00,0x00,0x00,
X	0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0xf8,0x0f,0x3e,
X	0x00,0x00,0xf0,0x31,0xf8,0x0f,0x7f,0x00,0x00,0xe0,0x31,0x08,
X	0x86,0xe3,0x00,0x00,0xe0,0x31,0x00,0x83,0xff,0x00,0x08,0xe0,
X	0x31,0x80,0x81,0xff,0x00,0x18,0xe0,0x31,0xc0,0x80,0x01,0x00,
X	0x38,0xf0,0x30,0x61,0x88,0xe3,0x00,0xf8,0xff,0xf0,0xf1,0x0f,
X	0xff,0x00,0xf8,0x7f,0xe0,0xf8,0x0f,0x3c,0x00,0xf8,0x1f,0x00,
X	0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
Xmpr_static(size_ic, 52, 32, 1, size_image);
X
Xstatic char font_image[224] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,0x00,0xf8,
X	0xff,0xff,0x01,0x00,0x00,0x00,0xf8,0xff,0xff,0x01,0x00,0x00,
X	0x00,0xe0,0x07,0xfc,0x01,0x00,0x00,0x00,0xc0,0x07,0xf0,0x01,
X	0x00,0x00,0x00,0xc0,0x07,0xe0,0x01,0x00,0x00,0x00,0xc0,0x07,
X	0xe0,0x01,0x00,0x00,0x00,0xc0,0x07,0xe3,0x01,0x00,0x00,0x00,
X	0xc0,0x07,0xe7,0x01,0x00,0x00,0x00,0xc0,0x07,0x07,0x00,0x00,
X	0x00,0x00,0xc0,0x87,0x07,0x00,0x00,0x00,0x00,0xc0,0xff,0x07,
X	0x00,0x00,0x00,0x00,0xc0,0xff,0x07,0x00,0x00,0x06,0x00,0xc0,
X	0xff,0x07,0x00,0x00,0x06,0x00,0xc0,0x87,0x07,0x00,0x80,0x1f,
X	0x00,0xc0,0x07,0x07,0x00,0x80,0x1f,0x00,0xc0,0x07,0xe7,0xc3,
X	0x1c,0x06,0x00,0xc0,0x07,0xf3,0xc7,0x3f,0x06,0x00,0xc0,0x07,
X	0x38,0xce,0x63,0x06,0x00,0xc0,0x07,0x18,0xcc,0x61,0x06,0x00,
X	0xe0,0x0f,0x18,0xcc,0x60,0x06,0x00,0xf8,0xff,0x18,0xcc,0x60,
X	0x86,0x01,0xf8,0xff,0x38,0xce,0x60,0x8c,0x01,0xf8,0xff,0xf0,
X	0xc7,0x60,0xfc,0x00,0x00,0x00,0xe0,0xc3,0x60,0x78,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
Xmpr_static(font_ic, 52, 32, 1, font_image);
X
Xstatic char textL_image[224] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
X	0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0xc0,0xf8,0x1f,0x00,0x00,0x00,0x3c,0x00,0x98,0x19,
X	0x00,0x00,0x00,0x18,0x00,0x88,0x11,0x00,0x00,0x02,0x18,0xc0,
X	0x80,0x01,0x00,0x00,0x03,0x18,0xc0,0x80,0x81,0xe7,0xb8,0x0f,
X	0x18,0xc0,0x80,0xc1,0xcc,0x18,0x03,0x18,0xc0,0x80,0x61,0x98,
X	0x0d,0x03,0x18,0xc0,0x80,0xe1,0x1f,0x07,0x03,0x18,0x00,0x80,
X	0x61,0x00,0x06,0x03,0x18,0xc0,0x80,0x61,0x00,0x07,0x03,0x18,
X	0xc0,0x80,0xe1,0x90,0x0d,0x03,0x18,0xc0,0x80,0xc1,0xcd,0x18,
X	0x17,0x18,0x04,0xc0,0x83,0xe7,0x38,0x0e,0xfc,0xc7,0x00,0x00,
X	0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
X	0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
X	0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
X	0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
X	0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0};
Xmpr_static(textL_ic, 54, 32, 1, textL_image);
X
Xstatic char change_text_image[192] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x7f,0x00,0x00,0x00,0x00,
X	0xe0,0x7f,0x00,0x00,0x00,0x00,0xc0,0x60,0x00,0xc0,0x7f,0x00,
X	0xc0,0x40,0x00,0xc0,0x7f,0x00,0xc0,0x00,0x00,0xc0,0x7f,0x00,
X	0xc0,0x08,0x08,0xc1,0x01,0x00,0xc0,0x0f,0x0c,0xc3,0x01,0x00,
X	0xc0,0x0f,0xfe,0xc7,0x3f,0x00,0xc0,0x08,0xfe,0xc7,0x3f,0x00,
X	0xc0,0x00,0x0c,0xc3,0x3f,0x00,0xc0,0x00,0x08,0xc1,0x01,0x00,
X	0xc0,0x00,0x00,0xc0,0x01,0x00,0xc0,0x40,0x00,0xc0,0x7f,0x00,
X	0xc0,0x60,0x00,0xc0,0x7f,0x00,0xe0,0x7f,0x00,0xc0,0x7f,0x00,
X	0xf0,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
Xmpr_static(change_text_ic, 46, 32, 1, change_text_image);
X
Xstatic char textC_image[224] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
X	0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0xc0,0xf8,0x1f,0x00,0x00,0x00,0xe0,0x01,0x98,0x19,
X	0x00,0x00,0x00,0x38,0x06,0x88,0x11,0x00,0x00,0x02,0x0c,0xc4,
X	0x80,0x01,0x00,0x00,0x03,0x0c,0xc0,0x80,0x81,0xe7,0xb8,0x0f,
X	0x06,0xc0,0x80,0xc1,0xcc,0x18,0x03,0x06,0xc0,0x80,0x61,0x98,
X	0x0d,0x03,0x06,0xc0,0x80,0xe1,0x1f,0x07,0x03,0x06,0x00,0x80,
X	0x61,0x00,0x06,0x03,0x06,0xc0,0x80,0x61,0x00,0x07,0x03,0x0c,
X	0xc0,0x80,0xe1,0x90,0x0d,0x03,0x0c,0xc4,0x80,0xc1,0xcd,0x18,
X	0x17,0x38,0xc6,0xc0,0x83,0xe7,0x38,0x0e,0xe0,0xc1,0x00,0x00,
X	0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
X	0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
X	0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
X	0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
X	0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0};
Xmpr_static(textC_ic, 54, 32, 1, textC_image);
X
Xstatic char textR_image[224] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
X	0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0xc0,0xf8,0x1f,0x00,0x00,0x00,0xfe,0x01,0x98,0x19,
X	0x00,0x00,0x00,0x8c,0x03,0x88,0x11,0x00,0x00,0x02,0x0c,0xc3,
X	0x80,0x01,0x00,0x00,0x03,0x0c,0xc3,0x80,0x81,0xe7,0xb8,0x0f,
X	0x0c,0xc3,0x80,0xc1,0xcc,0x18,0x03,0x8c,0xc1,0x80,0x61,0x98,
X	0x0d,0x03,0xfc,0xc0,0x80,0xe1,0x1f,0x07,0x03,0xcc,0x00,0x80,
X	0x61,0x00,0x06,0x03,0x8c,0xc1,0x80,0x61,0x00,0x07,0x03,0x0c,
X	0xc3,0x80,0xe1,0x90,0x0d,0x03,0x0c,0xc3,0x80,0xc1,0xcd,0x18,
X	0x17,0x0c,0x06,0xc0,0x83,0xe7,0x38,0x0e,0x1e,0xcf,0x00,0x00,
X	0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
X	0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
X	0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
X	0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
X	0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0xc0};
Xmpr_static(textR_ic, 54, 32, 1, textR_image);
X
X/* image with L dominant, P light */
Xstatic char land_image[128] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xf8,0x03,0x54,0x05,0xf0,0x01,0xa8,0x0a,0xe0,0x00,0x10,0x14,
X	0xe0,0x00,0x28,0x08,0xe0,0x00,0x10,0x14,0xe0,0x00,0xa8,0x0a,
X	0xe0,0x00,0x50,0x05,0xe0,0x00,0x28,0x00,0xe0,0x00,0x10,0x00,
X	0xe0,0x00,0x28,0x00,0xe0,0x60,0x10,0x00,0xf0,0x3f,0xa8,0x00,
X	0xf8,0x1f,0x54,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x1f,0x00,
X	0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,
X	0x00,0x04,0x10,0x00,0x00,0x04,0x10,0x00,0x00,0xfc,0x1f,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
Xmpr_static(land_ic, 32, 32, 1, land_image);
X
X/* image with L light , P dominant */
Xstatic char port_image[128] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0xa8,0x02,0xfe,0x07,0x50,0x01,0xfc,0x0f,0xa0,0x00,0x38,0x18,
X	0x40,0x00,0x38,0x18,0xa0,0x00,0x38,0x18,0x40,0x00,0xf8,0x0f,
X	0xa0,0x00,0xf8,0x07,0x40,0x00,0x38,0x00,0xa0,0x00,0x38,0x00,
X	0x40,0x00,0x38,0x00,0xa0,0x20,0x38,0x00,0x50,0x15,0xfc,0x00,
X	0xa8,0x0a,0xfe,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0xf8,0x03,0x00,0x00,0x08,0x02,0x00,0x00,0x08,0x02,0x00,
X	0x00,0x08,0x02,0x00,0x00,0x08,0x02,0x00,0x00,0x08,0x02,0x00,
X	0x00,0x08,0x02,0x00,0x00,0x08,0x02,0x00,0x00,0x08,0x02,0x00,
X	0x00,0x08,0x02,0x00,0x00,0xf8,0x03,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
Xmpr_static(port_ic, 32, 32, 1, port_image);
X
Xstatic char redisp_image[256] = {
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00,0xa8,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x2a,
X	0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0xa8,0xaa,0xaa,0xaa,
X	0xaa,0xaa,0xaa,0x2a,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x14,
X	0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x2e,0x14,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x17,0x28,0x54,0x55,0x55,0x55,0x55,0x55,0x2f,
X	0x14,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x17,0x28,0x54,0x55,0x55,
X	0x55,0x55,0x55,0x2f,0x14,0x0a,0x00,0x00,0x00,0x00,0xa0,0x17,
X	0x28,0x94,0x07,0x80,0x00,0x00,0x40,0x2f,0x14,0x8a,0x08,0x80,
X	0x00,0x00,0xa0,0x17,0x28,0x94,0x08,0x80,0x00,0x00,0x40,0x2f,
X	0x14,0x8a,0xc8,0xb1,0x1a,0x27,0xa4,0x17,0x28,0x94,0x27,0xca,
X	0x24,0x28,0x44,0x2f,0x14,0x8a,0xe2,0x8b,0x04,0x2f,0xa4,0x17,
X	0x28,0x94,0x24,0x88,0x84,0x28,0x44,0x2f,0x14,0x8a,0x28,0xc8,
X	0x84,0xac,0xa5,0x17,0x28,0x94,0xc8,0xb1,0x04,0x4b,0x42,0x2f,
X	0x14,0x0a,0x00,0x00,0x00,0x00,0xa0,0x17,0x28,0x54,0x55,0x55,
X	0x55,0x55,0x55,0x2f,0x14,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0x17,
X	0x28,0xfe,0xff,0xff,0xff,0xff,0xff,0x2f,0x14,0xff,0xff,0xff,
X	0xff,0xff,0xff,0x17,0xa8,0xff,0xff,0xff,0xff,0xff,0xff,0x2f,
X	0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x15,0xa8,0xaa,0xaa,0xaa,
X	0xaa,0xaa,0xaa,0x2a,0x54,0x55,0x55,0x55,0x55,0x55,0x55,0x15,
X	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
X	0x00,0x00,0x00,0x00};
Xmpr_static(redisp_ic,64,32,1,redisp_image);
END_OF_FILE
if test 22782 -ne `wc -c <'xfig/panel2.h'`; then
    echo shar: \"'xfig/panel2.h'\" unpacked with wrong size!
fi
# end of 'xfig/panel2.h'
fi
echo shar: End of archive 6 \(of 15\).
cp /dev/null ark6isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 15 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0
dan
-----------------------------------------------------------
		    O'Reilly && Associates
		argv@sun.com / argv@ora.com
	   632 Petaluma Ave, Sebastopol, CA 95472 
     800-338-NUTS, in CA: 800-533-NUTS, FAX 707-829-0104
    Opinions expressed reflect those of the author only.