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

Comparing ray/src/gen/xform.c (file contents):
Revision 2.18 by gwlarson, Fri Jun 4 15:51:04 1999 UTC vs.
Revision 2.22 by gwlarson, Fri Jun 4 17:24:56 1999 UTC

# Line 29 | Line 29 | int  xfa;                              /* start of xf arguments */
29   XF  tot;                                /* total transformation */
30   int  reverse;                           /* boolean true if scene mirrored */
31  
32 < int  invert = 0;                        /* boolean true to invert surfaces */
32 > int  invert;                            /* boolean true to invert surfaces */
33  
34 < int  expand = 1;                        /* boolean true to expand commands */
34 > int  expand;                            /* boolean true to expand commands */
35  
36 < char  *newmod = NULL;                   /* new modifier for surfaces */
36 > char  *newmod;                          /* new modifier for surfaces */
37  
38 < char  *idprefix = NULL;                 /* prefix for object identifiers */
38 > char  *idprefix;                        /* prefix for object identifiers */
39  
40   #define  ALIAS          NUMOTYPE        /* put alias at end of array */
41  
# Line 61 | Line 61 | main(argc, argv)               /* get transform options and transfo
61   int  argc;
62   char  *argv[];
63   {
64 +        int  mal_prefix = 0;
65          char  *fname;
66          int  a;
67                                          /* check for argument list file */
# Line 72 | Line 73 | char  *argv[];
73                  if (!strcmp(argv[a], "-a"))
74                          return(doarray(argc, argv, a));
75  
76 <        initotypes();
76 >        initotypes();                   /* initialize */
77 >        invert = 0;
78 >        expand = 1;
79 >        newmod = NULL;
80 >        idprefix = NULL;
81  
82          for (a = 1; a < argc; a++) {
83                  if (argv[a][0] == '-')
84                          switch (argv[a][1]) {
85                          case 'm':
86 <                                if (argv[a][2] || a+1 >= argc)
86 >                                if (argv[a][2] | a+1 >= argc)
87                                          break;
88 <                                newmod = argv[++a];
88 >                                a++;
89 >                                if (newmod == NULL)
90 >                                        newmod = argv[a];
91                                  continue;
92                          case 'n':
93 <                                if (argv[a][2] || a+1 >= argc)
93 >                                if (argv[a][2] | a+1 >= argc)
94                                          break;
95 <                                idprefix = argv[++a];
95 >                                a++;
96 >                                if (idprefix == NULL)
97 >                                        idprefix = argv[a];
98 >                                else {
99 >                                        register char   *newp;
100 >                                        newp = (char *)malloc(strlen(idprefix)+
101 >                                                        strlen(argv[a])+2);
102 >                                        if (newp == NULL)
103 >                                                exit(2);
104 >                                        sprintf(newp, "%s.%s",
105 >                                                        idprefix, argv[a]);
106 >                                        if (mal_prefix++)
107 >                                                free((char *)idprefix);
108 >                                        idprefix = newp;
109 >                                }
110                                  continue;
111                          case 'c':
112                                  if (argv[a][2])
# Line 100 | Line 121 | char  *argv[];
121                          case 'I':
122                                  if (argv[a][2])
123                                          break;
124 <                                invert = 1;
124 >                                invert = !invert;
125                                  continue;
126                          }
127                  break;
# Line 143 | Line 164 | char  *argv[];
164                          xform(mainfn, mainfp);
165                  }
166  
167 +        if (mal_prefix)
168 +                free((char *)idprefix);
169          return(0);
170   }
171  
# Line 152 | Line 175 | char  **av;
175   int  ac, fi;
176   {
177          char  *newav[256], **avp;
178 <        char  argbuf[2048];
178 >        char  argbuf[1024];
179          char  newid[128];
180          char  *oldid;
181          register char   *cp;
# Line 197 | Line 220 | int  ac, fi;
220                  for (i = 1; i < fi; i++)
221                          avp[i] = av[i];
222                  newac = i;
223 <                cp = argbuf;                    /* parse new words */
223 >                cp = argbuf;            /* parse new words */
224 >                if (*cp == '!') cp++;
225 >                if (!strncmp(cp, "xform ", 6)) cp += 6;
226                  for ( ; ; ) {
227                          while (isspace(*cp))    /* nullify spaces */
228                                  *cp++ = '\0';
# Line 336 | Line 361 | FILE  *fin;
361          } else {
362                  printf("\n%s", buf);
363                  if (xac > 1) {
364 <                        printf(" | %s", xav[0]);
364 >                        printf(" | %s -e", xav[0]);     /* expand next time */
365                          for (i = 1; i < xac; i++)
366 <                                printf(" %s", xav[i]);
366 >                                if (i >= xfa || strcmp(xav[i], "-c"))
367 >                                        printf(" %s", xav[i]);
368                  }
369                  putchar('\n');
370          }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines