This is main.c in view mode; [Download] [Up]
/*
* gifmod.c
*
* Jim W Kiraly
* July 27 1991
*
* This program can be used to modify gif files colors maps.
*
* Usage:
* gifmod [-iscrgb] [[+/-]##] infile outfile
*
* options:
* -i invert color map (negative look)
* -s grey scale an image
* -c contrast image by ##
* -r|g|b set red, green, blue to absolute ## or add/sub value
* from each red, green, blue value
*
* Examples:
*
* gifmod -i in.gif out.gif - Inverts an image
* gifmod -r 40 -g -1d -b +2B in.gif out.gif
*
* -options can not be mixed with the exception of r|g|b.
*/
/*
* includes and other things
*
*/
#include <stdio.h>
#include <math.h>
#include "gifver.h"
int ParseArgs();
int invertImage();
int greyImage();
int rgbImage();
int openFiles();
int contImage();
FILE *in, *out;
char *jargv[6];
/*
* main - call parse args, and then do appropriate set ups
*
*/
main ( argc, argv )
int argc;
char **argv;
{
int routine;
char *version=GIFVER;
int count, colors;
unsigned char byte;
routine = ParseArgs ( argc, argv );
if (routine==0) {
fprintf ( stderr, "gifmod - version %s - by Jim Kiraly\n\n", version );
fprintf ( stderr, "usage:\t%s [-isrgb] [{+/-}XX] in out\n\n", argv[0] );
fprintf ( stderr, "\t -i - invert an image\n" );
fprintf ( stderr, "\t -s - grey scale an image\n" );
fprintf ( stderr, "\t -c {+/-} ## - adjust contrast by hex value\n" );
fprintf ( stderr, "\t -r {+/-} ## - adjust red by hex value\n" );
fprintf ( stderr, "\t -g or -b - same as red, for green and blue\n" );
exit(0);
}
openFiles ( jargv[1], jargv[2] );
for (count=1; count<=11; count++) {
byte = getc(in);
putc ( byte, out );
}
colors = byte & 0x07;
colors++;
colors = pow ( (double) 2.0, (double) colors );
fprintf ( stderr, "%s: %d color image\n", argv[0], colors );
byte = getc(in); putc ( byte, out );
byte = getc(in); putc ( byte, out );
if (routine==1)
invertImage ( colors );
if (routine==2)
greyImage ( colors );
if (routine==3)
rgbImage ( colors, jargv[3], jargv[4], jargv[5] );
if (routine==4)
contImage ( colors, jargv[3] );
while (!feof(in)) {
byte = getc(in);
if (!feof(in))
putc (byte, out);
}
fclose (in);
fclose (out);
}
/*
* openFiles - open the files and report errors
*
*/
int openFiles ( inf, outf )
char *inf;
char *outf;
{
in = (FILE *) fopen ( inf, "rb" );
out = (FILE *) fopen ( outf, "wb" );
if (in==(FILE *) NULL) {
fprintf ( stderr, "error opening %s\n", inf );
exit (-1);
}
if (out==(FILE *) NULL) {
fprintf ( stderr, "error opening %s\n", outf );
exit (-1);
}
return 1;
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.