ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/rmatrix.c
(Generate patch)

Comparing ray/src/util/rmatrix.c (file contents):
Revision 2.26 by greg, Mon Apr 9 21:30:07 2018 UTC vs.
Revision 2.32 by greg, Mon Aug 12 04:46:34 2019 UTC

# Line 81 | Line 81 | static int
81   get_dminfo(char *s, void *p)
82   {
83          RMATRIX *ip = (RMATRIX *)p;
84 <        char    fmt[64];
84 >        char    fmt[MAXFMTLEN];
85          int     i;
86  
87          if (headidval(fmt, s))
# Line 290 | Line 290 | loaderr:                                       /* should report error? */
290   static int
291   rmx_write_ascii(const RMATRIX *rm, FILE *fp)
292   {
293 +        const char      *fmt = (rm->dtype == DTfloat) ? " %.7e" :
294 +                        (rm->dtype == DTrgbe) | (rm->dtype == DTxyze) ? " %.3e" :
295 +                                " %.15e" ;
296          int     i, j, k;
297  
298          for (i = 0; i < rm->nrows; i++) {
299              for (j = 0; j < rm->ncols; j++) {
300                  for (k = 0; k < rm->ncomp; k++)
301 <                    fprintf(fp, " %.15e", rmx_lval(rm,i,j,k));
301 >                    fprintf(fp, fmt, rmx_lval(rm,i,j,k));
302                  fputc('\t', fp);
303              }
304              fputc('\n', fp);
# Line 338 | Line 341 | rmx_write_double(const RMATRIX *rm, FILE *fp)
341   static int
342   rmx_write_rgbe(const RMATRIX *rm, FILE *fp)
343   {
344 <        COLOR   *scan = (COLOR *)malloc(sizeof(COLOR)*rm->ncols);
344 >        COLR    *scan = (COLR *)malloc(sizeof(COLR)*rm->ncols);
345          int     i, j;
346  
347          if (scan == NULL)
348                  return(0);
349          for (i = 0; i < rm->nrows; i++) {
350              for (j = rm->ncols; j--; )
351 <                setcolor(scan[j],       rmx_lval(rm,i,j,0),
351 >                setcolr(scan[j],        rmx_lval(rm,i,j,0),
352                                          rmx_lval(rm,i,j,1),
353                                          rmx_lval(rm,i,j,2)      );
354 <            if (fwritescan(scan, rm->ncols, fp) < 0) {
354 >            if (fwritecolrs(scan, rm->ncols, fp) < 0) {
355                  free(scan);
356                  return(0);
357              }
# Line 463 | Line 466 | rmx_transpose(const RMATRIX *rm)
466  
467          if (rm == NULL)
468                  return(0);
469 +        if ((rm->nrows == 1) | (rm->ncols == 1)) {
470 +                dnew = rmx_copy(rm);
471 +                if (dnew == NULL)
472 +                        return(NULL);
473 +                dnew->nrows = rm->ncols;
474 +                dnew->ncols = rm->nrows;
475 +                return(dnew);
476 +        }
477          dnew = rmx_alloc(rm->ncols, rm->nrows, rm->ncomp);
478          if (dnew == NULL)
479                  return(NULL);
# Line 611 | Line 622 | rmx_scale(RMATRIX *rm, const double sf[])
622                  for (k = rm->ncomp; k--; )
623                      rmx_lval(rm,i,j,k) *= sf[k];
624  
625 +        if (rm->info)
626 +                rmx_addinfo(rm, "Applied scalar\n");
627          return(1);
628   }
629  
# Line 626 | Line 639 | rmx_transform(const RMATRIX *msrc, int n, const double
639          dnew = rmx_alloc(msrc->nrows, msrc->ncols, n);
640          if (dnew == NULL)
641                  return(NULL);
642 +        if (msrc->info) {
643 +                char    buf[128];
644 +                sprintf(buf, "Applied %dx%d matrix transform\n",
645 +                                dnew->ncomp, msrc->ncomp);
646 +                rmx_addinfo(dnew, msrc->info);
647 +                rmx_addinfo(dnew, buf);
648 +        }
649          dnew->dtype = msrc->dtype;
650          for (i = dnew->nrows; i--; )
651              for (j = dnew->ncols; j--; )

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines