146 |
|
static int |
147 |
|
rmx_load_double(RMATRIX *rm, FILE *fp) |
148 |
|
{ |
149 |
< |
int i, j, k; |
150 |
< |
double val[100]; |
149 |
> |
int i, j; |
150 |
|
|
152 |
– |
if (rm->ncomp > 100) { |
153 |
– |
fputs("Unsupported # components in rmx_load_double()\n", stderr); |
154 |
– |
exit(1); |
155 |
– |
} |
151 |
|
for (i = 0; i < rm->nrows; i++) |
152 |
< |
for (j = 0; j < rm->ncols; j++) { |
153 |
< |
if (getbinary(val, sizeof(val[0]), rm->ncomp, fp) != rm->ncomp) |
152 |
> |
for (j = 0; j < rm->ncols; j++) |
153 |
> |
if (getbinary(&rmx_lval(rm,i,j,0), sizeof(double), rm->ncomp, fp) != rm->ncomp) |
154 |
|
return(0); |
160 |
– |
for (k = rm->ncomp; k--; ) |
161 |
– |
rmx_lval(rm,i,j,k) = val[k]; |
162 |
– |
} |
155 |
|
return(1); |
156 |
|
} |
157 |
|
|
326 |
|
static int |
327 |
|
rmx_write_double(const RMATRIX *rm, FILE *fp) |
328 |
|
{ |
329 |
< |
int i, j, k; |
338 |
< |
double val[100]; |
329 |
> |
int i, j; |
330 |
|
|
340 |
– |
if (rm->ncomp > 100) { |
341 |
– |
fputs("Unsupported # components in rmx_write_double()\n", stderr); |
342 |
– |
exit(1); |
343 |
– |
} |
331 |
|
for (i = 0; i < rm->nrows; i++) |
332 |
< |
for (j = 0; j < rm->ncols; j++) { |
333 |
< |
for (k = rm->ncomp; k--; ) |
347 |
< |
val[k] = rmx_lval(rm,i,j,k); |
348 |
< |
if (putbinary(val, sizeof(val[0]), rm->ncomp, fp) != rm->ncomp) |
332 |
> |
for (j = 0; j < rm->ncols; j++) |
333 |
> |
if (putbinary(&rmx_lval(rm,i,j,0), sizeof(double), rm->ncomp, fp) != rm->ncomp) |
334 |
|
return(0); |
350 |
– |
} |
335 |
|
return(1); |
336 |
|
} |
337 |
|
|
338 |
|
static int |
339 |
|
rmx_write_rgbe(const RMATRIX *rm, FILE *fp) |
340 |
|
{ |
341 |
< |
COLOR *scan = (COLOR *)malloc(sizeof(COLOR)*rm->ncols); |
341 |
> |
COLR *scan = (COLR *)malloc(sizeof(COLR)*rm->ncols); |
342 |
|
int i, j; |
343 |
|
|
344 |
|
if (scan == NULL) |
345 |
|
return(0); |
346 |
|
for (i = 0; i < rm->nrows; i++) { |
347 |
|
for (j = rm->ncols; j--; ) |
348 |
< |
setcolor(scan[j], rmx_lval(rm,i,j,0), |
348 |
> |
setcolr(scan[j], rmx_lval(rm,i,j,0), |
349 |
|
rmx_lval(rm,i,j,1), |
350 |
|
rmx_lval(rm,i,j,2) ); |
351 |
< |
if (fwritescan(scan, rm->ncols, fp) < 0) { |
351 |
> |
if (fwritecolrs(scan, rm->ncols, fp) < 0) { |
352 |
|
free(scan); |
353 |
|
return(0); |
354 |
|
} |
611 |
|
for (k = rm->ncomp; k--; ) |
612 |
|
rmx_lval(rm,i,j,k) *= sf[k]; |
613 |
|
|
614 |
+ |
if (rm->info) |
615 |
+ |
rmx_addinfo(rm, "Applied scalar\n"); |
616 |
|
return(1); |
617 |
|
} |
618 |
|
|
628 |
|
dnew = rmx_alloc(msrc->nrows, msrc->ncols, n); |
629 |
|
if (dnew == NULL) |
630 |
|
return(NULL); |
631 |
+ |
if (msrc->info) { |
632 |
+ |
char buf[128]; |
633 |
+ |
sprintf(buf, "Applied %dx%d matrix transform\n", |
634 |
+ |
dnew->ncomp, msrc->ncomp); |
635 |
+ |
rmx_addinfo(dnew, msrc->info); |
636 |
+ |
rmx_addinfo(dnew, buf); |
637 |
+ |
} |
638 |
|
dnew->dtype = msrc->dtype; |
639 |
|
for (i = dnew->nrows; i--; ) |
640 |
|
for (j = dnew->ncols; j--; ) |