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

Comparing ray/src/gen/replmarks.c (file contents):
Revision 2.10 by greg, Fri Jan 2 17:11:40 2004 UTC vs.
Revision 2.11 by greg, Thu Jan 29 22:20:31 2004 UTC

# Line 28 | Line 28 | static const char RCSid[] = "$Id";
28   #define  MAXVERT        6       /* maximum number of vertices for markers */
29   #define  MAXMARK        32      /* maximum number of markers */
30  
31 + #define  USE_XFORM      1       /* use !xform inline command */
32 + #define  USE_INSTANCE   2       /* use instance primitive */
33 + #define  USE_MESH       3       /* use mesh primitive */
34 +
35   typedef struct {
36          short   beg, end;               /* beginning and ending vertex */
37          float   len2;                   /* length squared */
# Line 38 | Line 42 | struct mrkr {
42          double  mscale;                 /* scale by this to get unit */
43          char    *modin;                 /* input modifier indicating marker */
44          char    *objname;               /* output object file or octree */
45 <        int     doxform;                /* true if xform, false if instance */
45 >        int     usetype;                /* one of USE_* above */
46   }  marker[MAXMARK];             /* array of markers */
47   int     nmarkers = 0;           /* number of markers */
48  
# Line 70 | Line 74 | main(
74                  do {
75                          switch (argv[i][1]) {
76                          case 'i':
77 <                                marker[nmarkers].doxform = 0;
77 >                                marker[nmarkers].usetype = USE_INSTANCE;
78                                  marker[nmarkers].objname = argv[++i];
79                                  break;
80 +                        case 'I':
81 +                                marker[nmarkers].usetype = USE_MESH;
82 +                                marker[nmarkers].objname = argv[++i];
83 +                                break;
84                          case 'x':
85 <                                marker[nmarkers].doxform = 1;
85 >                                marker[nmarkers].usetype = USE_XFORM;
86                                  marker[nmarkers].objname = argv[++i];
87                                  break;
88                          case 'e':
# Line 122 | Line 130 | main(
130          return 0;
131   userr:
132          fprintf(stderr,
133 < "Usage: %s [-e][-s size][-m modout] {-x objfile|-i octree} modname .. [file ..]\n",
133 > "Usage: %s [-e][-s size][-m modout] {-x objfile|-i octree|-I mesh} modname .. [file ..]\n",
134                  progname);
135          return 1;
136   }
# Line 240 | Line 248 | replace(               /* replace marker */
248          char    buf[256];
249  
250          buf[0] = '\0';                  /* bug fix thanks to schorsch */
251 <        if (m->doxform) {
251 >        if (m->usetype == USE_XFORM) {
252                  sprintf(buf, "xform -n %s", mark);
253                  if (m->modout != NULL)
254                          sprintf(buf+strlen(buf), " -m %s", m->modout);
# Line 255 | Line 263 | replace(               /* replace marker */
263          } else {
264                  if ((n = buildxf(buf, m->mscale, fin)) < 0)
265                          goto badxf;
266 <                printf("\n%s instance %s\n",
267 <                                m->modout==NULL?"void":m->modout, mark);
266 >                printf("\n%s %s %s\n",
267 >                                m->modout==NULL?"void":m->modout,
268 >                                m->usetype==USE_INSTANCE?"instance":"mesh",
269 >                                mark);
270                  printf("%d %s%s\n0\n0\n", n+1, m->objname, buf);
271          }
272          return;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines