fdist[p] = i_max(xd*xd, yd*yd); /* manhattan distance */
break;
default:
- m_fatal(3,"i_gradgen: Unknown distance measure\n");
+ i_fatal(3,"i_gradgen: Unknown distance measure\n");
}
cs += fdist[p];
}
mindist = i_max(xd*xd, yd*yd); /* manhattan distance */
break;
default:
- m_fatal(3,"i_nearest_color: Unknown distance measure\n");
+ i_fatal(3,"i_nearest_color: Unknown distance measure\n");
}
for(p = 1; p<num; p++) {
curdist = i_max(xd*xd, yd*yd); /* manhattan distance */
break;
default:
- m_fatal(3,"i_nearest_color: Unknown distance measure\n");
+ i_fatal(3,"i_nearest_color: Unknown distance measure\n");
}
if (curdist < mindist) {
mindist = curdist;
mindist = i_max(xd*xd, yd*yd); /* manhattan distance */
break;
default:
- m_fatal(3,"i_nearest_color: Unknown distance measure\n");
+ i_fatal(3,"i_nearest_color: Unknown distance measure\n");
}
for(p = 1; p<num; p++) {
curdist = i_max(xd*xd, yd*yd); /* manhattan distance */
break;
default:
- m_fatal(3,"i_nearest_color: Unknown distance measure\n");
+ i_fatal(3,"i_nearest_color: Unknown distance measure\n");
}
if (curdist < mindist) {
mindist = curdist;
}
/*
-=item i_diff_image(im1, im2, mindiff)
+=item i_diff_image(im1, im2, mindist)
Creates a new image that is transparent, except where the pixel in im2
is different from im1, where it is the pixel from im2.
*/
i_img *
-i_diff_image(i_img *im1, i_img *im2, int mindiff) {
+i_diff_image(i_img *im1, i_img *im2, double mindist) {
i_img *out;
int outchans, diffchans;
int xsize, ysize;
i_color *line2 = mymalloc(xsize * sizeof(*line1)); /* checked 17feb2005 tonyc */
i_color empty;
int x, y, ch;
+ int imindist = (int)mindist;
for (ch = 0; ch < MAXCHANNELS; ++ch)
empty.channel[ch] = 0;
int diff = 0;
for (ch = 0; ch < diffchans; ++ch) {
if (line1[x].channel[ch] != line2[x].channel[ch]
- && abs(line1[x].channel[ch] - line2[x].channel[ch]) > mindiff) {
+ && abs(line1[x].channel[ch] - line2[x].channel[ch]) > imindist) {
diff = 1;
break;
}
i_fcolor *line2 = mymalloc(xsize * sizeof(*line2)); /* checked 17feb2005 tonyc */
i_fcolor empty;
int x, y, ch;
- double dist = mindiff / 255;
+ double dist = mindist / 255.0;
for (ch = 0; ch < MAXCHANNELS; ++ch)
empty.channel[ch] = 0;
int diff = 0;
for (ch = 0; ch < diffchans; ++ch) {
if (line1[x].channel[ch] != line2[x].channel[ch]
- && abs(line1[x].channel[ch] - line2[x].channel[ch]) > dist) {
+ && fabs(line1[x].channel[ch] - line2[x].channel[ch]) > dist) {
diff = 1;
break;
}
i_fountain_repeat repeat, int combine, int super_sample,
double ssample_param, int count, i_fountain_seg *segs) {
int i, j;
- i_fountain_seg *my_segs = mymalloc(sizeof(i_fountain_seg) * count);
+ int bytes;
+ i_fountain_seg *my_segs = mymalloc(sizeof(i_fountain_seg) * count); /* checked 2jul06 - duplicating original */
/*int have_alpha = im->channels == 2 || im->channels == 4;*/
memset(state, 0, sizeof(*state));
switch (super_sample) {
case i_fts_grid:
ssample_param = floor(0.5 + sqrt(ssample_param));
- state->ssample_data = mymalloc(sizeof(i_fcolor) * ssample_param * ssample_param);
+ bytes = ssample_param * ssample_param * sizeof(i_fcolor);
+ if (bytes / sizeof(i_fcolor) == ssample_param * ssample_param) {
+ state->ssample_data = mymalloc(sizeof(i_fcolor) * ssample_param * ssample_param); /* checked 1jul06 tonyc */
+ }
+ else {
+ super_sample = i_fts_none;
+ }
break;
case i_fts_random:
case i_fts_circle:
ssample_param = floor(0.5+ssample_param);
- state->ssample_data = mymalloc(sizeof(i_fcolor) * ssample_param);
+ bytes = sizeof(i_fcolor) * ssample_param;
+ if (bytes / sizeof(i_fcolor) == ssample_param) {
+ state->ssample_data = mymalloc(sizeof(i_fcolor) * ssample_param);
+ }
+ else {
+ super_sample = i_fts_none;
+ }
break;
}
state->parm = ssample_param;