🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: mod.computers.masscomp
1 messages
1 total messages Started by Stan Barber Wed, 03 Sep 1986 03:27
Fractals on the Masscomp
#48
Author: Stan Barber
Date: Wed, 03 Sep 1986 03:27
775 lines
20107 bytes
This is a 2-d fractal program that has passed around on the net.
I have attempted to make it work on the Masscomp.
Modify it if you wish, but pass the changes along.
Stan

#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
#	Makefile
#	README
#	general.c
#	gosper.c
#	init.c
#	koch.c
#	main.c
#	monkey.c
#	plot.c
#	defs.h
#	g.h
#	gen.h
#	pix.h
# This archive created: Tue Sep  2 15:52:49 1986
export PATH; PATH=/bin:/usr/bin:$PATH
echo shar: "extracting 'Makefile'" '(563 characters)'
if test -f 'Makefile'
then
	echo shar: "will not over-write existing file 'Makefile'"
else
sed 's/^	X//' << \SHAR_EOF > 'Makefile'
	XGENOBJ = init.o plot.o
	XFRACTOBJ = general.o koch.o monkey.o gosper.o
	X# LIB = -lm -lpixrect
	XLIB = -lm -lgp
	XCFLAGS = -O
	X
	Xfractals: main.o $(FRACTOBJ) $(GENOBJ)
	X	cc -o fractals $(CFLAGS) main.o $(FRACTOBJ) $(GENOBJ) $(LIB)
	X
	Xkoch.o: koch.c gen.h g.h
	X	cc $(CFLAGS) -c koch.c
	X
	Xmonkey.o: monkey.o gen.h g.h
	X	cc $(CFLAGS) -c monkey.c
	X
	Xgosper.o: gosper.c gen.h g.h
	X	cc $(CFLAGS) -c gosper.c
	X
	Xgeneral.o: general.c gen.h g.h
	X	cc $(CFLAGS) -c general.c
	X
	Xplot.o: plot.c g.h pix.h
	X	cc $(CFLAGS) -c plot.c
	X
	Xinit.o: init.c defs.h
	X	cc $(CFLAGS) -c init.c
	X
	Xclean:
	X	rm *.o fractals
SHAR_EOF
if test 563 -ne "`wc -c < 'Makefile'`"
then
	echo shar: "error transmitting 'Makefile'" '(should have been 563 characters)'
fi
fi
echo shar: "extracting 'README'" '(1270 characters)'
if test -f 'README'
then
	echo shar: "will not over-write existing file 'README'"
else
sed 's/^	X//' << \SHAR_EOF > 'README'
	X
	X
	X     These files:
	X	      
	X	      defs.h		random definitions
	X	      pix.h		pixrect definitions
	X              g.h		few constants
	X              gen.h		generator structure
	X
	X              general.c		a general curve generator
	X              gosper.c		gosper curve generator
	X              koch.c		koch curve generator
	X              monkey.c		monkey curve generator (My favorite)
	X
	X              plot.c		plot a line relatively
	X	      main.c		trivial driver for all the routines
	X	      init.c		routines to setup screen under pixrect
	X
	X    Comprise  a collection of simple  fractal curve  generators.
	X    They  do not  generate nifty 3D dragons  or towers or archs,
	X    but  they  are  entertaining  and probably  good for tiling.
	X
	X	 All I ask is that you not (how incredibly unlikely) try
	X    to  sell these for profit.  I can ofcourse assume no respon-
	X    sibility for how these work out for you.  They work fine for
	X    me  on a SUN (TM) workstation under 4.2 Unix (TM) using SUN-
	X    core. [Now under pixrect ... -David Kovar]
	X
	X			 Jim Hutchison
	X
	X			 hutch@sdcsvax
	X
	X			 {ihnp4,ucbvax}!sdcsvax!hutch
	XADDITIONAL NOTE:
	XI have added modification to work on Masscomp displays. To use under Sun's again,
	Xadjust the Makefile as marked.
	XStan Barber (sob@rice.edu or siesmo!soma!sob)
	X
SHAR_EOF
if test 1270 -ne "`wc -c < 'README'`"
then
	echo shar: "error transmitting 'README'" '(should have been 1270 characters)'
fi
fi
echo shar: "extracting 'general.c'" '(676 characters)'
if test -f 'general.c'
then
	echo shar: "will not over-write existing file 'general.c'"
else
sed 's/^	X//' << \SHAR_EOF > 'general.c'
	X/*
	X * general()
	X *
	X * Draw a Generic Fractal curve.
	X *
	X * Author: Jim Hutchison (hutch@sdcsvax)
	X * (this is free, but credit me)
	X */
	X
	X#ifdef sun
	X#include <usercore.h>
	X#endif
	X#include <math.h>
	X#include "g.h"
	X#include "gen.h"
	X
	Xgeneral(len,angle,min_len,scale,flip,shape,size)
	Xdouble len,angle,min_len,scale;
	Xint flip;
	XGEN *shape;
	Xint size;
	X{
	Xregister int i;
	XGEN *gp;
	X
	X    if (len > min_len) {				/* draw generator */
	X	gp = shape + ((flip == 1)? 0 : size );
	X	for(i = 0 ; i < GEN_SIDES ; i++, gp += flip)
	X	    general(len/gp->div,
	X		   angle + gp->angle,
	X		   min_len,
	X		   scale * gp->scale,
	X		   gp->flip * flip);
	X
	X    } else			/* draw side */
	X	plot_line(len * scale, angle);
	X}
SHAR_EOF
if test 676 -ne "`wc -c < 'general.c'`"
then
	echo shar: "error transmitting 'general.c'" '(should have been 676 characters)'
fi
fi
echo shar: "extracting 'gosper.c'" '(1000 characters)'
if test -f 'gosper.c'
then
	echo shar: "will not over-write existing file 'gosper.c'"
else
sed 's/^	X//' << \SHAR_EOF > 'gosper.c'
	X/*
	X * Gosper()
	X *
	X * Draw a Gosper curve according to Dr. Mandelbrot.
	X * start with flip at 1 usually, but -1 is fine also.
	X *
	X * Author: Jim Hutchison (hutch@sdcsvax)
	X * (this is free, but credit me)
	X */
	X
	X#ifdef sun
	X#include <usercore.h>
	X#endif
	X#include <math.h>
	X#include "g.h"
	X#include "gen.h"
	X
	X#ifdef GEN_SIDES
	X#undef GEN_SIDES
	X#endif
	X#define GEN_SIDES	7
	X#define GEN_MAX		GEN_SIDES - 1L
	Xstatic GEN generator[GEN_SIDES] = {
	X    /* angle		flip */
	X
	X    { 0.0,		 1 },
	X    { PIO3,		-1 },
	X    { PI,		-1 },
	X    { (2.0 * PIO3),	 1 },
	X    { 0.0,		 1 },
	X    { 0.0,		 1 },
	X    { (TWOPI - PIO3),	-1 }
	X};
	X
	Xgosper(len,angle,min_len,flip)
	Xdouble len,angle,min_len;
	Xint flip;
	X{
	Xregister int i;
	Xregister GEN *gp;
	X
	X    if (len > min_len) {	/* draw generator */
	X	angle += (TWOPI - PIO6);/* tilt */
	X	gp = &generator[ (flip == 1)? 0 : GEN_MAX ];
	X	for(i = 0 ; i < GEN_SIDES ; i++, gp += flip)
	X	    gosper(len/2.0, angle + gp->angle, min_len, gp->flip * flip);
	X    }
	X    else			/* draw side */
	X	plot_line(len, angle);
	X}
SHAR_EOF
if test 1000 -ne "`wc -c < 'gosper.c'`"
then
	echo shar: "error transmitting 'gosper.c'" '(should have been 1000 characters)'
fi
fi
echo shar: "extracting 'init.c'" '(2600 characters)'
if test -f 'init.c'
then
	echo shar: "will not over-write existing file 'init.c'"
else
sed 's/^	X//' << \SHAR_EOF > 'init.c'
	X#ifdef mc300
	X#define MASSCOMP
	X#endif
	X#ifdef mc500
	X#define MASSCOMP
	X#endif
	X#ifdef mc700
	X#define MASSCOMP
	X#endif
	X#include <stdio.h>
	X#ifndef MASSCOMP
	X#include <pixrect/pixrect_hs.h>
	X#endif
	X#include <sys/ioctl.h>
	X#ifdef sun
	X#include <sun/fbio.h>
	X#endif
	X#include <sys/file.h>
	X
	X#include "defs.h"
	X
	X#ifndef MASSCOMP
	Xchar            *PR_DEVICE = "/dev/fb";         /* for console frame buffer */
	X
	Xstruct pixrect  *px_screen;             /* console screen pixrect */
	X#else
	Xint		gp_assigned;
	X#endif
	Xint             SCREEN_WIDTH, SCREEN_HEIGHT;
	X
	X/*
	X *  Set up the screen for the subsequent screen graphics mmanipulations.
	X *  All operations are done with the pixrect facilities of the SUN
	X *  workstation 1.1 release.
	X */
	X
	Xinitpix()
	X{
	X        char    *getenv();
	X
	X        if (init_screen())
	X                return(-1);
	X
	X#ifdef notdef
	X        pr_rop(px_screen, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, PIX_SET, 
	X                (struct pixrect *)NULL, 0, 0);
	X#endif        
	X        return(0);
	X}
	X
	X
	X/*
	X *  Initialize the pixrect from the whole screen.
	X */
	X
	Xinit_screen()
	X{
	X
	X#ifdef MASSCOMP
	X	int 	hwconfig[18];
	X	if (gp_assigned == 0){
	X		mgiasngp(0,0);	/* assign default graphics processor */
	X		mgigethc(18, hwconfig);
	X		SCREEN_WIDTH = hwconfig[0];
	X		SCREEN_HEIGHT = hwconfig[1];
	X		gp_assigned++;
	X		if ( SCREEN_WIDTH <= 0  || SCREEN_HEIGHT <= 0 ) {
	X        	        fprintf(stderr, "Can't get the window size.\n");
	X                	return(-1);
	X	        }
	X	}
	X        mgiclearpln(0, -1, 0);
	X	mgihue(2);
	X#else
	X        int     fd;
	X        if ( (fd = open(PR_DEVICE, O_RDWR)) < 0 ) {
	X                fprintf(stderr, "Cannot open \"%s\": %s\n", PR_DEVICE, ERRSTR);
	X                return(-1);
	X        }
	X        if ( getsize(fd) )
	X                return(-1);
	X        close(fd);
	X
	X        if ((px_screen = pr_open(PR_DEVICE)) == NULL) {
	X                fputs("Cannot open ", stderr);
	X                perror(PR_DEVICE);
	X                return(-1);
	X        }
	X
	X        return(0);
	X#endif
	X}
	X
	X
	X#ifndef MASSCOMP
	X/*
	X *  Get the number of pixels of the screen size.  If the size
	X *  is zero, we assume an error.
	X */
	X
	Xgetsize(fd)
	X{
	X        struct fbtype fbt;
	X
	X        if (ioctl(fd, FBIOGTYPE, (char *)&fbt) < 0) {
	X                perror("FBIOGTYPE ioctl");
	X                return(-1);
	X        }
	X
	X        SCREEN_WIDTH = fbt.fb_width;
	X        SCREEN_HEIGHT = fbt.fb_height;
	X
	X        if ( SCREEN_WIDTH <= 0  || SCREEN_HEIGHT <= 0 ) {
	X                fprintf(stderr, "Can't get the window size.\n");
	X                return(-1);
	X        }
	X
	X        return(0);
	X}
	X#endif
	X
	Xclosepix()
	X{
	X#ifdef MASSCOMP
	X	if (gp_assigned) mgideagp();
	X#endif
	X	return(0);
	X}
echo shar: "a missing newline was added to 'init.c'"
SHAR_EOF
if test 2600 -ne "`wc -c < 'init.c'`"
then
	echo shar: "error transmitting 'init.c'" '(should have been 2600 characters)'
fi
fi
echo shar: "extracting 'koch.c'" '(940 characters)'
if test -f 'koch.c'
then
	echo shar: "will not over-write existing file 'koch.c'"
else
sed 's/^	X//' << \SHAR_EOF > 'koch.c'
	X/*
	X * koch()
	X *
	X * Draw a Koch lake according to Dr. Mandelbrot.
	X *
	X * Author: Jim Hutchison (hutch@sdcsvax)
	X * (this is free, but credit me)
	X */
	X
	X#ifdef sun
	X#include <usercore.h>
	X#endif
	X#include <math.h>
	X#include "g.h"
	X#include "gen.h"
	X
	Xkoch(len,angle,min_len)
	Xdouble len,angle,min_len;
	X{
	Xint i;
	X
	X    for (i = 0 ; i < 4 ; i++, angle += PIO2)	/* square seed */
	X	koch_side(len, angle, min_len);
	X}
	X
	X#ifdef GEN_SIDES
	X#undef GEN_SIDES
	X#endif
	X#define GEN_SIDES	8
	X
	XGEN genkoch[GEN_SIDES] = {
	X   /* Angle */
	X    { 0.0	},
	X    { PIO2	},
	X    { 0.0	},
	X    { - PIO2	},
	X    { - PIO2	},
	X    { 0.0	},
	X    { PIO2	},
	X    { 0.0	}
	X};
	X
	X/*
	X *	Draw a side recursively.
	X */
	X
	Xkoch_side(len,angle,min_len)
	Xdouble len,angle,min_len;
	X{
	Xregister int i;
	XGEN *gp;
	X
	X    if (len > min_len)		/* draw generator */
	X	for(i = 0, gp = genkoch ; i < GEN_SIDES ; i++, gp++)
	X	    koch_side(len/2.0, angle + gp->angle, min_len);
	X    else			/* draw side */
	X	plot_line(len, angle);
	X}
SHAR_EOF
if test 940 -ne "`wc -c < 'koch.c'`"
then
	echo shar: "error transmitting 'koch.c'" '(should have been 940 characters)'
fi
fi
echo shar: "extracting 'main.c'" '(1292 characters)'
if test -f 'main.c'
then
	echo shar: "will not over-write existing file 'main.c'"
else
sed 's/^	X//' << \SHAR_EOF > 'main.c'
	X#include <stdio.h>
	Xmain()
	X{
	X    int choice = 0;
	X    double len, angle, min_len, scale;
	X    int flip;
	X    
	X    while(choice < 1 || choice > 4) {
	X        printf("Choose a fractal: \n");
	X	printf("\t1) Monkey \n");
	X	printf("\t2) Koch lakes \n");
	X	printf("\t3) General (not handled yet)\n");
	X	printf("\t4) Gosper\n");
	X
	X	printf("\nChoice? ");
	X	scanf("%d", &choice);
	X    }    
	X    
	X    printf("All values should be doubles (xxx.x) save for 'flip', an int.\n");
	X    printf("Reasonable values for monkey are: 10.0 0.0 1.0 1.0 1 \n");
	X    
	Xswitch (choice) {
	X    case 1: 			/* Monkey */
	X	printf ("Length, angle, min. length, scale, flip: ");
	X	scanf ("%lf %lf %lf %lf %d",
	X		&len, &angle, &min_len, &scale, &flip);
	X	initpix(); /* initialize the graphics device */
	X	monkey (len, angle, min_len, scale, flip);
	X	break;
	X    case 2: 			/* Koch lakes */
	X	printf ("Length, angle, minimum length: ");
	X	scanf ("%lf %lf %lf", &len, &angle, &min_len);
	X	initpix();
	X	koch (len, angle, min_len);
	X	break;
	X    case 3: 			/* General. Not handled yet */
	X	printf ("Not handled.\n");
	X	break;
	X    case 4: 
	X	printf ("Length, angle, minimum length, flip: ");
	X	scanf ("%lf %lf %lf %", &len, &angle, &min_len, &flip);
	X	initpix(); 
	X	gosper (len, angle, min_len, flip);
	X	break;
	X}
	X	closepix();	/* close the graphics device */    
	X}
SHAR_EOF
if test 1292 -ne "`wc -c < 'main.c'`"
then
	echo shar: "error transmitting 'main.c'" '(should have been 1292 characters)'
fi
fi
echo shar: "extracting 'monkey.c'" '(1281 characters)'
if test -f 'monkey.c'
then
	echo shar: "will not over-write existing file 'monkey.c'"
else
sed 's/^	X//' << \SHAR_EOF > 'monkey.c'
	X/*
	X * Monkey()
	X *
	X * Draw a Monkey curve according to Dr. Mandelbrot.
	X *
	X * Author: Jim Hutchison (hutch@sdcsvax)
	X * (this is free, but credit me)
	X */
	X
	X#ifdef sun
	X#include <usercore.h>
	X#endif
	X#include <math.h>
	X#include "g.h"
	X#include "gen.h"
	X
	X#ifdef GEN_SIDES
	X#undef GEN_SIDES
	X#endif
	X#define GEN_SIDES	11
	X#define GEN_MAX		GEN_SIDES - 1
	X
	XGEN genmonkey[GEN_SIDES] = {
	X   /* Angle			Flip	Scale */
	X
	X    { PIO3,			-1,	1.0 },	/* R */
	X    { PIO3,			 1,	1.0 },  /* L */
	X    { 0.0, 			 1,	1.0 },  /* L */
	X    { (TWOPI - PIO3),		 1,	1.0 },  /* L */
	X
	X    { (2.0 * PIO3 + PIO6),	 1,	0.5 },  /* L */
	X    { (2.0 * PIO3 + PIO6),	-1,	0.5 },  /* R */
	X    { (PI + PIO6), 		-1,	0.5 },  /* R */
	X    { (TWOPI - PIO2),		-1,	0.5 },  /* R */
	X    { (TWOPI - PIO2),		 1,	0.5 },  /* L */
	X
	X    { 0.0,			-1,	1.0 },  /* R */
	X    { 0.0,			 1,	1.0 }   /* L */
	X};
	X
	X/*
	X *	Draw a monkey curve
	X */
	X
	Xmonkey(len,angle,min_len,scale,flip)
	Xdouble len,angle,min_len,scale;
	Xint flip;
	X{
	Xregister int i;
	XGEN *gp;
	X
	X    if (len > min_len) {				/* draw generator */
	X	gp = &genmonkey[ (flip == 1)? 0 : GEN_MAX ];
	X	for(i = 0 ; i < GEN_SIDES ; i++, gp += flip)
	X	    monkey(len/2.0,
	X		   angle + gp->angle,
	X		   min_len,
	X		   scale * gp->scale,
	X		   gp->flip * flip);
	X
	X    } else			/* draw side */
	X	plot_line(len * scale, angle);
	X}
SHAR_EOF
if test 1281 -ne "`wc -c < 'monkey.c'`"
then
	echo shar: "error transmitting 'monkey.c'" '(should have been 1281 characters)'
fi
fi
echo shar: "extracting 'plot.c'" '(987 characters)'
if test -f 'plot.c'
then
	echo shar: "will not over-write existing file 'plot.c'"
else
sed 's/^	X//' << \SHAR_EOF > 'plot.c'
	X/*
	X * Plot_line()
	X *
	X * Draw a line by length and angle relative to current x,y
	X *
	X * Author: Jim Hutchison (hutch@sdcsvax)
	X * (this is free, but dis/credit me)
	X */
	X#ifdef mc300
	X#define MASSCOMP
	X#endif
	X#ifdef mc500
	X#define MASSCOMP
	X#endif
	X#ifdef mc700
	X#define MASSCOMP
	X#endif
	X#include <math.h>
	X#include "g.h"
	X#ifdef sun
	X#include "pix.h"
	X#endif
	X
	Xstatic double crntx = D_X, crnty = D_Y;	/* or global for presetting */
	X
	Xset_coord(x,y)
	Xdouble x,y;
	X{
	X    crntx = x;
	X    crnty = y;
	X}
	X
	X/*
	X *	Plot a line by length and angle from current position
	X */
	X
	Xplot_line(length,angle)
	Xdouble length,angle;
	X{
	Xdouble dx,dy;
	X
	X    MOD(angle,TWOPI);
	X
	X    dx = length * cos(angle);
	X    dy = length * sin(angle);
	X
	X#ifdef MASSCOMP
	X    mgil((int)(crntx * 10.0), (int)(crnty * 10.0),
	X	 (int)((crntx + dx) * 10.0), (int)((crnty + dy) * 10.0));
	X#else
	X    line((int)(crntx * 10.0), (int)(crnty * 10.0),
	X	 (int)((crntx + dx) * 10.0), (int)((crnty + dy) * 10.0), OP_WRITE);
	X#endif
	X    crntx += dx;
	X    crnty += dy;
	X}
	X
	X
SHAR_EOF
if test 987 -ne "`wc -c < 'plot.c'`"
then
	echo shar: "error transmitting 'plot.c'" '(should have been 987 characters)'
fi
fi
echo shar: "extracting 'defs.h'" '(530 characters)'
if test -f 'defs.h'
then
	echo shar: "will not over-write existing file 'defs.h'"
else
sed 's/^	X//' << \SHAR_EOF > 'defs.h'
	X#define LEFT    01
	X#define RIGHT   02
	X
	X#define MINXPOS         50
	X#define MAXXPOS         (SCREEN_WIDTH-50)
	X#define MINYPOS         100
	X#define MAXYPOS         (SCREEN_HEIGHT-100)
	X
	X#ifndef CTRL
	X# define CTRL(c)        ('c' & 037)
	X#endif
	X
	X#define MAX(a,b)        ((a) > (b) ? (a) : (b))
	X#define ABS(d)          ((d) < 0 ? -(d) : (d))
	X
	Xextern int      errno, sys_nerr;
	Xextern char     *sys_errlist[];
	X
	X#define ERRSTR  (errno < sys_nerr ? sys_errlist[errno] : "Unknown Error")
	X
	X#define MEM_WIDTH       32
	X#define MEM_HEIGHT      32
	X
SHAR_EOF
if test 530 -ne "`wc -c < 'defs.h'`"
then
	echo shar: "error transmitting 'defs.h'" '(should have been 530 characters)'
fi
fi
echo shar: "extracting 'g.h'" '(471 characters)'
if test -f 'g.h'
then
	echo shar: "will not over-write existing file 'g.h'"
else
sed 's/^	X//' << \SHAR_EOF > 'g.h'
	X/*
	X * G.h
	X * 
	X * Constants for convenience when doing radial fractal work under SUNCORE
	X *
	X * Author: Jim Hutchison (hutch@sdcsvax)
	X */
	X
	X#define SQRT2		1.41421
	X#define PI		3.1415926536
	X#define PIO2		(PI / 2.0)
	X#define PIO3		(PI / 3.0)
	X#define PIO4		(PI / 4.0)
	X#define PIO6		(PI / 6.0)
	X#define TWOPIO3		(2.0 * PI / 3.0)
	X#define TWOPI		(2.0 * PI)
	X#define D_X	        0.0
	X#define D_Y	        0.0
	X#define GEN_SIDES	10
	X
	X#define MOD(a,b)	while(a > b) a -= b	/* sad but true */
SHAR_EOF
if test 471 -ne "`wc -c < 'g.h'`"
then
	echo shar: "error transmitting 'g.h'" '(should have been 471 characters)'
fi
fi
echo shar: "extracting 'gen.h'" '(425 characters)'
if test -f 'gen.h'
then
	echo shar: "will not over-write existing file 'gen.h'"
else
sed 's/^	X//' << \SHAR_EOF > 'gen.h'
	X/*
	X * Author: Jim Hutchison (hutch@sdcsvax)
	X * Curve generators and initiators ( can be same structure )
	X * Various and sundry generators and a very general one.
	X */
	X
	Xtypedef struct gen {		/* an initiator or generator */
	X    double	angle;	/* next turtle turn	      */
	X    int		flip;	/* Flip flop multiplier       */
	X    double	scale; 	/* scale factor for sides     */
	X    double	div; 	/* division factor for length */
	X} GEN;
SHAR_EOF
if test 425 -ne "`wc -c < 'gen.h'`"
then
	echo shar: "error transmitting 'gen.h'" '(should have been 425 characters)'
fi
fi
echo shar: "extracting 'pix.h'" '(857 characters)'
if test -f 'pix.h'
then
	echo shar: "will not over-write existing file 'pix.h'"
else
sed 's/^	X//' << \SHAR_EOF > 'pix.h'
	X/*
	X *  Basic operations on the screen as a whole pixrect.
	X */
	X
	X#include <pixrect/pixrect_hs.h>
	X
	Xextern struct pixrect   *px_screen;
	X
	X#define OP_CLEAR        PIX_CLR
	X#define OP_SET          PIX_SET
	X#define OP_PAINT        (PIX_SRC|PIX_DST)
	X#define OP_WRITE        PIX_SRC
	X#define OP_MASK         (PIX_SRC&PIX_DST)
	X#define OP_ERASE        (PIX_NOT(PIX_SRC)&PIX_DST)
	X#define OP_INVERT       (PIX_NOT(PIX_SRC^PIX_DST))
	X#define OP_NOT(op)      PIX_NOT(op)
	X
	X#define WHITE           CLEAR
	X#define BLACK           SET
	X
	Xextern int              SCREEN_WIDTH, SCREEN_HEIGHT;
	X
	X#define point(x,y,op)           pr_put(px_screen, x, y, (op == PIX_CLR) ? 0 : 1)
	X#define line(x1,y1,x2,y2,op)    pr_vector(px_screen, x1, y1, x2, y2, op, 0)
	X#define block(x,y,w,h,op)       pr_rop(px_screen, x, y, w, h, op, \
	X                                        (struct pixrect *)0, 0, 0)
SHAR_EOF
if test 857 -ne "`wc -c < 'pix.h'`"
then
	echo shar: "error transmitting 'pix.h'" '(should have been 857 characters)'
fi
fi
exit 0
#	End of shell archive
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads