ftp.nice.ch/pub/next/unix/graphics/urt.3.0.s.tar.gz#/urt.3.0.s/get/getiris.c

This is getiris.c in view mode; [Download] [Up]

/* 
 * getiris.c - Whoop up an rle with 24 bits ( no mex ).
 * 
 * Author:	Glenn McMinn
 * 		Computer Science Dept.
 * 		University of Utah
 * Date:	Tue Feb  3 1987
 * Copyright (c) 1987 Glenn McMinn
 * 
 */


#define MIN(a,b) ( a<b ? a : b)

#include "gl.h"
#include "device.h"
#include "stdio.h"
#include "rle.h"
#ifdef USE_STDLIB_H
#include <stdlib.h>
#else

#ifdef VOID_STAR
extern void *malloc();
#else
extern char *malloc();
#endif
extern void free();

#endif /* USE_STDLIB_H */

main(argc,argv)
int argc;
char **argv;
{
        int x_len, y_len;
	int i;
	unsigned char **scan;
	Device val;

	/* This program runs without mex running. */
	if ( ismex())
	{
		fprintf( stderr, "getiris:  can't run under mex!\n");
		exit(0);
	}
	ginit();

	/* Turn off cursor so that picture doesn't have a glich. */
	cursoff();
	RGBmode();
	gconfig();
	RGBcolor(0, 0, 0);
	clear();

	/* Setup mouse buttons so that they are queued. */
	qdevice( LEFTMOUSE );
	qdevice( RIGHTMOUSE );
	qdevice( MIDDLEMOUSE );
	qreset();

	/* Take input from file argument or stdin. */ 	
	rle_dflt_hdr.rle_file = rle_open_f("getiris", argv[1], "r");
	rle_get_setup( &rle_dflt_hdr );

	x_len = rle_dflt_hdr.xmax - rle_dflt_hdr.xmin + 1;
	y_len = rle_dflt_hdr.ymax - rle_dflt_hdr.ymin + 1;
	rle_dflt_hdr.xmax -= rle_dflt_hdr.xmin;
	rle_dflt_hdr.xmin = 0;

	/* Grab a scanline. */
	scan = (unsigned char **) malloc( (rle_dflt_hdr.ncolors +
				       rle_dflt_hdr.alpha) *
				      sizeof( unsigned char * ) );
	for ( i = 0; i < rle_dflt_hdr.ncolors + rle_dflt_hdr.alpha; i++ )
	    scan[i] = (unsigned char *)malloc( x_len );

	if ( rle_dflt_hdr.alpha )
	{
	    scan++;
	}

	/* Display each scanline. */
        for ( i = 0; i < MIN(y_len,768) ; i ++)
	{
		rle_getrow(&rle_dflt_hdr, scan );

		cmov2i(0, i);
		writeRGB(x_len, scan[0], scan[1], scan[2]);
	}

	/* Wait for a mouse button push. */
	qread( &val);

	/* Set the iris back up so that it is not scrogged. */
	singlebuffer();
	gconfig();
	clear();
	gexit();
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.