This is opaqim.c in view mode; [Download] [Up]
/*
* OpaqueImage () - changes the color of an opaque pixel to the asked color
*
* RCS:
* $Revision: 2.3 $
* $Date: 1996/05/03 02:21:34 $
*
* Security:
* Unclassified
*
* Description:
* From ImageMagick
*
* Input Parameters:
* type identifier description
*
* text
*
* Output Parameters:
* type identifier description
*
* text
*
* Return Values:
* value description
*
* Side Effects:
* text
*
* Limitations and Comments:
* text
*
* Development History:
* who when why
* muquit@semcor.com 19-Feb-96 first cut
*/
#include "combine.h"
#if __STDC__ || defined(sgi) || defined(_AIX)
void OpaqueImage (Image *image,
unsigned char sred,unsigned char sgreen,unsigned char sblue,
unsigned char pred,unsigned char pgreen,unsigned char pblue)
#else
void OpaqueImage (image,sred,sgreen,sblue,pred,pgreen,pblue)
Image
*image;
unsigned char
sred,
sgreen,
sblue;
unsigned char
pred,
pgreen,
pblue;
#endif
{
#define DeltaX 16
register Runlength
*p;
register int
i;
p=image->pixels;
switch(image->class)
{
case DirectClass:
{
for (i=0; i < image->packets; i++)
{
if (((int) p->red < (int) (sred+DeltaX)) &&
((int) p->red > (int) (sred-DeltaX)) &&
((int) p->green < (int) (sgreen+DeltaX)) &&
((int) p->green > (int) (sgreen-DeltaX)) &&
((int) p->blue < (int) (sblue+DeltaX)) &&
((int) p->blue > (int) (sblue-DeltaX)))
{
p->red=pred;
p->green=pgreen;
p->blue=pblue;
}
p++;
}
break;
}
case PseudoClass:
{
double
distance_squared,
min_distance;
int
distance;
register int
index;
min_distance=3.0*(MaxRGB+1)*(MaxRGB+1);
index=0;
for (i=0; i < image->colors; i++)
{
distance=(int) sred-(int) image->colormap[i].red;
distance_squared=(unsigned int) (distance*distance);
distance=(int) sgreen-(int) image->colormap[i].green;
distance_squared+=(unsigned int) (distance*distance);
distance=(int) sblue-(int) image->colormap[i].blue;
distance_squared+=(unsigned int) (distance*distance);
if (distance_squared < min_distance)
{
min_distance=distance_squared;
index=i;
}
}
image->colormap[index].red=pred;
image->colormap[index].green=pgreen;
image->colormap[index].blue=pblue;
break;
}
}
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.