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

Comparing ray/src/common/spec_rgb.c (file contents):
Revision 2.15 by greg, Tue Sep 5 21:54:32 2006 UTC vs.
Revision 2.25 by greg, Wed Aug 19 17:36:37 2020 UTC

# Line 38 | Line 38 | float  xyneu[2] = {1./3., 1./3.};      /* neutral xy chroma
38   #define  INCWL          10              /* wavelength increment */
39   #define  NINC           40              /* # of values */
40  
41 < static BYTE  chroma[3][NINC] = {
41 > static uby8  chroma[3][NINC] = {
42          {                                                       /* X */
43                  0,   0,   0,   2,   6,   13,  22,  30,  36,  41,
44                  42,  43,  43,  44,  46,  52,  60,  71,  87,  106,
# Line 111 | Line 111 | int  s,                        /* starting and ending wavelengths */
111   int  e
112   )
113   {
114 <        register int  i, d, r;
114 >        int  i, d, r;
115          
116          s -= STARTWL;
117          if (s < 0)
# Line 164 | Line 164 | COLOR  upper
164          int  rflags = 0;
165          double  brtmin, brtmax, v, vv;
166          COLOR  cgry;
167 <        register int  i;
167 >        int  i;
168                                          /* check for no check */
169          if (gamut == 0) return(0);
170                                          /* check brightness limits */
# Line 202 | Line 202 | COLOR  upper
202  
203   void
204   colortrans(                     /* convert c1 by mat and put into c2 */
205 < register COLOR  c2,
206 < register COLORMAT  mat,
207 < register COLOR  c1
205 > COLOR  c2,
206 > COLORMAT  mat,
207 > COLOR  c1
208   )
209   {
210          COLOR   cout;
# Line 225 | Line 225 | COLORMAT  m1
225   )
226   {
227          COLORMAT  mt;
228 <        register int  i, j;
228 >        int  i, j;
229  
230          for (i = 0; i < 3; i++)
231                  for (j = 0; j < 3; j++)
# Line 241 | Line 241 | colorprimsOK(                  /* are color primaries reasonable? */
241   RGBPRIMS  pr
242   )
243   {
244 <        int     i;
244 >        int     i, j;
245          
246 <        for (i = 0; i < 4; i++) {
247 <                if ((pr[i][CIEX] <= CEPS) | (pr[i][CIEY] <= CEPS))
246 >        for (i = 0; i < 3; i++) {
247 >                if ((pr[i][CIEX] <= -2.) | (pr[i][CIEY] <= -2.))
248                          return(0);
249 <                if ((pr[i][CIEX] >= 1.-CEPS) | (pr[i][CIEY] >= 1.-CEPS))
249 >                if ((pr[i][CIEX] >= 3.) | (pr[i][CIEY] >= 3.))
250                          return(0);
251 +                if (pr[i][CIEX] + pr[i][CIEY] <= -2.)
252 +                        return(0);
253 +                if (pr[i][CIEX] + pr[i][CIEY] >= 3.)
254 +                        return(0);
255          }
256 +        if ((pr[3][CIEX] <= 0.) | (pr[3][CIEX] >= 1.) |
257 +                        (pr[3][CIEY] <= 0.) | (pr[3][CIEY] >= 1.))
258 +                return(0);
259 +        for (i = 0; i < 4; i++)
260 +                for (j = i+1; j < 4; j++)
261 +                        if (CEQ(pr[i][CIEX],pr[j][CIEX]) &&
262 +                                        CEQ(pr[i][CIEY],pr[j][CIEY]))
263 +                                return(0);
264          return(1);
265   }
266  
# Line 257 | Line 269 | RGBPRIMS  pr
269   int
270   compxyz2rgbmat(                 /* compute conversion from CIE to RGB space */
271   COLORMAT  mat,
272 < register RGBPRIMS  pr
272 > RGBPRIMS  pr
273   )
274   {
275          double  C_rD, C_gD, C_bD;
276  
277          if (pr == stdprims) {   /* can use xyz2rgbmat */
278                  cpcolormat(mat, xyz2rgbmat);
279 <                return;
279 >                return(1);
280          }
281          if (CEQ(pr[WHT][CIEX],0.) | CEQ(pr[WHT][CIEY],0.))
282                  return(0);
# Line 317 | Line 329 | register RGBPRIMS  pr
329   int
330   comprgb2xyzmat(                 /* compute conversion from RGB to CIE space */
331   COLORMAT  mat,
332 < register RGBPRIMS  pr
332 > RGBPRIMS  pr
333   )
334   {
335          double  C_rD, C_gD, C_bD, D;
336  
337          if (pr == stdprims) {   /* can use rgb2xyzmat */
338                  cpcolormat(mat, rgb2xyzmat);
339 <                return;
339 >                return(1);
340          }
341          if (CEQ(pr[WHT][CIEX],0.) | CEQ(pr[WHT][CIEY],0.))
342                  return(0);
# Line 371 | Line 383 | RGBPRIMS  pr2
383                  mat[0][0] = mat[1][1] = mat[2][2] = 1.0;
384                  mat[0][1] = mat[0][2] = mat[1][0] =
385                  mat[1][2] = mat[2][0] = mat[2][1] = 0.0;
386 <                return;
386 >                return(1);
387          }
388          if (!comprgb2xyzmat(pr1toxyz, pr1))
389                  return(0);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines