This is getqcr.c in view mode; [Download] [Up]
/*
* getqcr.c - Image display for the Matrix QCR-Z
*
* Author: John W. Peterson
* Computer Science Dept.
* University of Utah
* Date: Wed Jan 20 1988
* Copyright (c) 1988, University of Utah
*
* BUGS
* verbose flag should turn on "reading red..." type messages.
* Should handle single channel images as black and white.
*/
#include <stdio.h>
#include "qcr.h"
#include "rle.h"
main (argc, argv)
int argc;
char ** argv;
{
rle_pixel * camera_data = NULL, * cdptr;
rle_pixel ** rows;
char * filename;
int color = 0;
int y, i, ysize;
int verbose_flag = 0, double_flag = 0, exposures = 1, exp_flag = 0;
int center_flag = 0, pos_flag = 0, fourK = 0, xstart = 0, ystart = 0;
if (! scanargs( argc, argv,
"% v%- d%- c%- f%- p%-xpos!dyposn!d e%-num!d infile!s",
&verbose_flag, &double_flag, ¢er_flag,
&fourK, &pos_flag, &xstart, &ystart,
&exp_flag, &exposures, &filename ))
exit(-1);
rle_dflt_hdr.ncolors = 1; /* Assume at least one */
init_qcr( verbose_flag );
if (double_flag)
exposures = 2;
while( color < rle_dflt_hdr.ncolors )
{
rle_dflt_hdr.rle_file = rle_open_f( "getqcr", filename, "r" );
if ( rle_dflt_hdr.ncolors > 1 &&
rle_dflt_hdr.rle_file == stdin &&
fseek( rle_dflt_hdr.rle_file, 0L, 0 ) < 0 )
{
fprintf( "Can't pipe color data to getqcr.\n" );
exit( -1 );
}
rle_get_setup_ok( &rle_dflt_hdr, "getqcr", filename );
if (! pos_flag)
{
xstart = rle_dflt_hdr.xmin;
ystart = rle_dflt_hdr.ymin;
}
rle_dflt_hdr.xmax -= rle_dflt_hdr.xmin;
rle_dflt_hdr.xmin = 0;
ysize = (rle_dflt_hdr.ymax - rle_dflt_hdr.ymin + 1);
if (! camera_data) /* Only allocate once */
{
rows = (rle_pixel **) malloc( rle_dflt_hdr.ncolors
* sizeof( rle_pixel * ));
camera_data = (rle_pixel *)
malloc( (rle_dflt_hdr.xmax + 1) * ysize);
if (! (rows && camera_data))
{
fprintf(stderr, "getqcr: out of memory\n");
exit(-2);
}
}
/* Only read one color at a time, never alpha */
for (i = -rle_dflt_hdr.alpha; i < rle_dflt_hdr.ncolors; i++)
RLE_CLR_BIT( rle_dflt_hdr, i );
RLE_SET_BIT( rle_dflt_hdr, color );
rows[color] = camera_data;
if (center_flag)
set_up_qcr( rle_dflt_hdr.xmax + 1, ysize, ysize, 0 );
else
set_up_qcr_nc( xstart, ystart,
rle_dflt_hdr.xmax + 1, ysize, fourK );
for (y = rle_dflt_hdr.ymin; y <= rle_dflt_hdr.ymax; y++)
{
rle_getrow( &rle_dflt_hdr, rows );
rows[color] = &(rows[color][rle_dflt_hdr.xmax+1]);
}
for ( i = 0; i < exposures; i++)
send_pixel_image( color, camera_data,
(rle_dflt_hdr.xmax + 1) * ysize);
fclose( rle_dflt_hdr.rle_file );
color++;
}
exit( 0 );
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.