This is getfb.c in view mode; [Download] [Up]
/* * getfb.c - Display Extended Run Length Encoding with Alpha1 channel * on BRL libfb frame buffer. * * Author: Paul R. Stay * Ballistic Research Labratory * Aberdeen Proving Ground, Md. * Date: Mon Jun 23 1986 */ #include <stdio.h> #include <brlcad/fb.h> #include "rle.h" #ifdef USE_STDLIB_H #include <stdlib.h> #endif #define MAX_PIXELS 1024 main( argc, argv) int argc; char ** argv; { FILE *rle_fd; FBIO *fbp; int r_debug; char * rle_file; register int i,j; unsigned char scanline[4][MAX_PIXELS]; /* Run length scan line */ unsigned char *rows[4]; /* Character pointers for rle_getrow */ RGBpixel pix[MAX_PIXELS]; /* pixel structure */ int x_len, y_len; argc--; argv++; while( argv[0][0] == '-') { switch( argv[0][1] ) { case 'D': r_debug = 1; break; default: break; } argc--; argv++; } rle_file = argv[0]; rle_dflt_hdr.rle_file = rle_open_f("getfb", rle_file, "r"); if( rle_get_setup( &rle_dflt_hdr ) < 0 ) { fprintf(stderr, "getfb: Error reading setup information\n"); exit(1); } if (r_debug) { fprintf( stderr,"Image bounds\n\tmin %d %d\n\tmax %d %d\n", rle_dflt_hdr.xmin, rle_dflt_hdr.ymin, rle_dflt_hdr.xmax, rle_dflt_hdr.ymax ); if ( rle_dflt_hdr.alpha ) fprintf( stderr, "Alpha Channel present\n"); rle_debug(1); } /* We`re only interested in R, G, & B */ RLE_CLR_BIT(rle_dflt_hdr, RLE_ALPHA); for (i = 3; i < rle_dflt_hdr.ncolors; i++) RLE_CLR_BIT(rle_dflt_hdr, i); x_len = rle_dflt_hdr.xmax - rle_dflt_hdr.xmin + 1; y_len = rle_dflt_hdr.ymax - rle_dflt_hdr.ymin + 1; if( (fbp = fb_open( "", rle_dflt_hdr.xmax+1, rle_dflt_hdr.ymax+1 )) == NULL ) exit(12); for ( i = rle_dflt_hdr.ymin; i <= rle_dflt_hdr.ymax; i++) { rows[0] = (unsigned char *)-1; rows[1] = scanline[1]; rows[2] = scanline[2]; rows[3] = scanline[3]; rle_getrow(&rle_dflt_hdr, &rows[1] ); for ( j = 0; j < x_len; j++) { pix[j][RED] = scanline[1][j]; pix[j][GRN] = scanline[2][j]; pix[j][BLU] = scanline[3][j]; } fb_write( fbp, rle_dflt_hdr.xmin, i, pix, x_len ); } exit(0); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.