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.25 by greg, Mon Aug 28 15:59:46 2017 UTC vs.
Revision 2.29 by greg, Thu Aug 2 18:33:50 2018 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 146 | Line 146 | rmx_load_float(RMATRIX *rm, FILE *fp)
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  
# Line 334 | Line 326 | rmx_write_float(const RMATRIX *rm, FILE *fp)
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              }
# Line 627 | Line 611 | rmx_scale(RMATRIX *rm, const double sf[])
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  
# Line 642 | Line 628 | rmx_transform(const RMATRIX *msrc, int n, const double
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--; )

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines