ftp.nice.ch/pub/next/graphics/convertors/CmdLineGIFeditor.s.tar.gz#/GIFeditor/contrast.c

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

/*
 *  contrast.c
 *
 *  Jim Kiraly
 *  July 19 1991
 *
 *  This routine will adjust the contrast of an image
 *
 *  I am fairly sure that this doesn't work correctly.
 *  
 */

#include <stdio.h>

extern FILE *in, *out;


/*
 *  contImage - adjust the contrast of an image
 *
 */


int contImage ( colors, number )
int colors;
char *number;
{
  int count, j, cValue;
  int max[3], low[3], mid[3], temp;
  unsigned char rgbs[3][256];

  fprintf ( stderr, "adjusting contrast...\n" );

  sscanf ( number, "%x", &cValue );

  max[0] = max[1] = max[2] = 0;
  low[0] = low[1] = low[2] = 0;

  for (count=0; count<colors; count++) 
    for (j=0; j<=2; j++) {
      rgbs[j][count] = getc ( in );
      
      if (rgbs[j][count]>max[j])
        max[j]=rgbs[j][count];

      if (rgbs[j][count]<low[j])
        low[j]=rgbs[j][count];
    }

  for (j=0; j<=2; j++)
    mid[j]=(low[j] + max[j])/2;

  for (count=0; count<colors; count++)
    for (j=0; j<=2; j++) {

      if (mid[j]<1)
        mid[j]=1;

      if (rgbs[j][count]>mid[j])
        temp = rgbs[j][count] + (cValue * ((rgbs[j][count]+1)/mid[j]));
      else
      if (rgbs[j][count]<mid[j])
        temp = rgbs[j][count] - (cValue * ((rgbs[j][count]+1)/mid[j]));
      else
        temp = rgbs[j][count];

      if (temp>255) temp = 255;
      if (temp<0) temp = 0;

      rgbs[j][count] = (unsigned char) temp;

      putc ( rgbs[j][count], out );
    }
  return 1;
}

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