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

Comparing ray/src/cv/mgflib/context.c (file contents):
Revision 1.8 by greg, Sat Jun 25 11:55:45 1994 UTC vs.
Revision 1.9 by greg, Sat Jun 25 16:33:14 1994 UTC

# Line 63 | Line 63 | register char  **av;
63                  lp = lu_find(&clr_tab, av[1]);  /* lookup context */
64                  if (lp == NULL)
65                          return(MG_EMEM);
66 +                c_ccolor = (C_COLOR *)lp->data;
67                  if (ac == 2) {          /* reestablish previous context */
68 <                        if (lp->data == NULL)
68 >                        if (c_ccolor == NULL)
69                                  return(MG_EUNDEF);
69                        c_ccolor = (C_COLOR *)lp->data;
70                          return(MG_OK);
71                  }
72                  if (av[2][0] != '=' || av[2][1])
73                          return(MG_ETYPE);
74 <                if (lp->key == NULL) {  /* create new color context */
74 >                if (c_ccolor == NULL) { /* create new color context */
75                          lp->key = (char *)malloc(strlen(av[1])+1);
76                          if (lp->key == NULL)
77                                  return(MG_EMEM);
# Line 79 | Line 79 | register char  **av;
79                          lp->data = (char *)malloc(sizeof(C_COLOR));
80                          if (lp->data == NULL)
81                                  return(MG_EMEM);
82 +                        c_ccolor = (C_COLOR *)lp->data;
83 +                        c_ccolor->clock = 0;
84                  }
83                c_ccolor = (C_COLOR *)lp->data;
85                  if (ac == 3) {          /* use default template */
86 +                        i = c_ccolor->clock;
87                          *c_ccolor = c_dfcolor;
88 <                        c_ccolor->name = lp->key;
88 >                        c_ccolor->name = av[1];
89 >                        c_ccolor->clock = i + 1;
90                          return(MG_OK);
91                  }
92                  lp = lu_find(&clr_tab, av[3]);  /* lookup template */
# Line 91 | Line 94 | register char  **av;
94                          return(MG_EMEM);
95                  if (lp->data == NULL)
96                          return(MG_EUNDEF);
97 +                i = c_ccolor->clock;
98                  *c_ccolor = *(C_COLOR *)lp->data;
99 <                c_ccolor->name = lp->key;
100 <                c_ccolor->clock = 1;
97 <                if (ac > 4)
98 <                        return(MG_EARGC);
99 >                c_ccolor->name = av[1];
100 >                c_ccolor->clock = i + 1;
101                  return(MG_OK);
102          case MG_E_CXY:          /* assign CIE XY value */
103                  if (ac != 3)
# Line 155 | Line 157 | c_hmaterial(ac, av)            /* handle material entity */
157   int     ac;
158   register char   **av;
159   {
160 +        int     i;
161          register LUENT  *lp;
162  
163          switch (mg_entity(av[0])) {
# Line 169 | Line 172 | register char  **av;
172                  lp = lu_find(&mat_tab, av[1]);  /* lookup context */
173                  if (lp == NULL)
174                          return(MG_EMEM);
175 +                c_cmaterial = (C_MATERIAL *)lp->data;
176                  if (ac == 2) {          /* reestablish previous context */
177 <                        if (lp->data == NULL)
177 >                        if (c_cmaterial == NULL)
178                                  return(MG_EUNDEF);
175                        c_cmaterial = (C_MATERIAL *)lp->data;
179                          return(MG_OK);
180                  }
181                  if (av[2][0] != '=' || av[2][1])
182                          return(MG_ETYPE);
183 <                if (lp->key == NULL) {  /* create new material context */
183 >                if (c_cmaterial == NULL) {      /* create new material */
184                          lp->key = (char *)malloc(strlen(av[1])+1);
185                          if (lp->key == NULL)
186                                  return(MG_EMEM);
# Line 185 | Line 188 | register char  **av;
188                          lp->data = (char *)malloc(sizeof(C_MATERIAL));
189                          if (lp->data == NULL)
190                                  return(MG_EMEM);
191 +                        c_cmaterial = (C_MATERIAL *)lp->data;
192 +                        c_cmaterial->clock = 0;
193                  }
189                c_cmaterial = (C_MATERIAL *)lp->data;
194                  if (ac == 3) {          /* use default template */
195 +                        i = c_cmaterial->clock;
196                          *c_cmaterial = c_dfmaterial;
197 <                        c_cmaterial->name = lp->key;
197 >                        c_cmaterial->name = av[1];
198 >                        c_cmaterial->clock = i + 1;
199                          return(MG_OK);
200                  }
201                  lp = lu_find(&mat_tab, av[3]);  /* lookup template */
# Line 197 | Line 203 | register char  **av;
203                          return(MG_EMEM);
204                  if (lp->data == NULL)
205                          return(MG_EUNDEF);
206 +                i = c_cmaterial->clock;
207                  *c_cmaterial = *(C_MATERIAL *)lp->data;
208 <                c_cmaterial->name = lp->key;
209 <                c_cmaterial->clock = 1;
203 <                if (ac > 4)
204 <                        return(MG_EARGC);
208 >                c_cmaterial->name = av[1];
209 >                c_cmaterial->clock = i + 1;
210                  return(MG_OK);
211          case MG_E_RD:           /* set diffuse reflectance */
212                  if (ac != 2)
# Line 272 | Line 277 | c_hvertex(ac, av)              /* handle a vertex entity */
277   int     ac;
278   register char   **av;
279   {
280 +        int     i;
281          register LUENT  *lp;
282  
283          switch (mg_entity(av[0])) {
# Line 286 | Line 292 | register char  **av;
292                  lp = lu_find(&vtx_tab, av[1]);  /* lookup context */
293                  if (lp == NULL)
294                          return(MG_EMEM);
295 +                c_cvertex = (C_VERTEX *)lp->data;
296                  if (ac == 2) {          /* reestablish previous context */
297 <                        if (lp->data == NULL)
297 >                        if (c_cvertex == NULL)
298                                  return(MG_EUNDEF);
292                        c_cvertex = (C_VERTEX *)lp->data;
299                          return(MG_OK);
300                  }
301                  if (av[2][0] != '=' || av[2][1])
302                          return(MG_ETYPE);
303 <                if (lp->key == NULL) {  /* create new vertex context */
303 >                if (c_cvertex == NULL) {        /* create new vertex context */
304                          lp->key = (char *)malloc(strlen(av[1])+1);
305                          if (lp->key == NULL)
306                                  return(MG_EMEM);
# Line 302 | Line 308 | register char  **av;
308                          lp->data = (char *)malloc(sizeof(C_VERTEX));
309                          if (lp->data == NULL)
310                                  return(MG_EMEM);
311 +                        c_cvertex = (C_VERTEX *)lp->data;
312                  }
306                c_cvertex = (C_VERTEX *)lp->data;
313                  if (ac == 3) {          /* use default template */
314 +                        i = c_cvertex->clock;
315                          *c_cvertex = c_dfvertex;
316 <                        c_cvertex->name = lp->key
316 >                        c_cvertex->name = av[1];
317 >                        c_cvertex->clock = i + 1;
318                          return(MG_OK);
319                  }
320                  lp = lu_find(&vtx_tab, av[3]);  /* lookup template */
# Line 314 | Line 322 | register char  **av;
322                          return(MG_EMEM);
323                  if (lp->data == NULL)
324                          return(MG_EUNDEF);
325 +                i = c_cvertex->clock;
326                  *c_cvertex = *(C_VERTEX *)lp->data;
327 <                c_cvertex->name = lp->key
328 <                c_cvertex->clock = 1;
320 <                if (ac > 4)
321 <                        return(MG_EARGC);
327 >                c_cvertex->name = av[1];
328 >                c_cvertex->clock = i + 1;
329                  return(MG_OK);
330          case MG_E_POINT:        /* set point */
331                  if (ac != 4)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines