| 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); |
| 563 |
|
rmx_transpose(const RMATRIX *rm) |
| 564 |
|
{ |
| 565 |
|
RMATRIX *dnew; |
| 566 |
< |
int i, j, k; |
| 566 |
> |
int i, j; |
| 567 |
|
|
| 568 |
|
if (!rm) |
| 569 |
|
return(0); |
| 585 |
|
dnew->dtype = rm->dtype; |
| 586 |
|
for (i = dnew->nrows; i--; ) |
| 587 |
|
for (j = dnew->ncols; j--; ) |
| 588 |
< |
memcpy(rmx_lval(dnew,i,j), rmx_lval(rm,i,j), |
| 588 |
> |
memcpy(rmx_lval(dnew,i,j), rmx_lval(rm,j,i), |
| 589 |
|
sizeof(double)*dnew->ncomp); |
| 590 |
|
return(dnew); |
| 591 |
|
} |