436 |
|
for (i = 0; i < rm->nrows; i++) { |
437 |
|
for (j = rm->ncols; j--; ) { |
438 |
|
const double *dp = rmx_lval(rm,i,j); |
439 |
< |
setcolr(scan[j], dp[0], dp[1], dp[2]); |
439 |
> |
if (rm->ncomp == 1) |
440 |
> |
setcolr(scan[j], dp[0], dp[0], dp[0]); |
441 |
> |
else |
442 |
> |
setcolr(scan[j], dp[0], dp[1], dp[2]); |
443 |
|
} |
444 |
|
if (fwritecolrs(scan, rm->ncols, fp) < 0) { |
445 |
|
free(scan); |
492 |
|
fprintf(fp, "NROWS=%d\n", rm->nrows); |
493 |
|
fprintf(fp, "NCOLS=%d\n", rm->ncols); |
494 |
|
fprintf(fp, "NCOMP=%d\n", rm->ncomp); |
495 |
< |
} else if (rm->ncomp != 3) { /* wrong # components? */ |
496 |
< |
CMATRIX *cm; /* convert & write */ |
494 |
< |
if (rm->ncomp != 1) /* only convert grayscale */ |
495 |
< |
return(0); |
496 |
< |
if (!(cm = cm_from_rmatrix(rm))) |
497 |
< |
return(0); |
498 |
< |
fputformat(cm_fmt_id[dtype], fp); |
499 |
< |
fputc('\n', fp); |
500 |
< |
ok = cm_write(cm, dtype, fp); |
501 |
< |
cm_free(cm); |
502 |
< |
return(ok); |
503 |
< |
} |
495 |
> |
} else if ((rm->ncomp != 3) & (rm->ncomp != 1)) |
496 |
> |
return(0); /* wrong # components */ |
497 |
|
if ((dtype == DTfloat) | (dtype == DTdouble)) |
498 |
|
fputendian(fp); /* important to record */ |
499 |
|
fputformat(cm_fmt_id[dtype], fp); |