ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/setscan.c
Revision: 2.2
Committed: Sat Feb 22 02:07:30 2003 UTC (21 years, 2 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad3R5
Changes since 2.1: +1 -4 lines
Log Message:
Changes and check-in for 3.5 release
Includes new source files and modifications not recorded for many years
See ray/doc/notes/ReleaseNotes for notes between 3.1 and 3.5 release

File Contents

# User Rev Content
1 greg 1.3 #ifndef lint
2 greg 2.2 static const char RCSid[] = "$Id$";
3 greg 1.3 #endif
4     /*
5     * Convert angle ranges of the form a-b:s,c to discrete values
6     */
7 greg 1.1
8     #include <ctype.h>
9    
10 greg 1.3 #include "setscan.h"
11    
12 greg 1.1
13     setscan(ang, arg) /* set up scan according to arg */
14     register ANGLE *ang;
15     register char *arg;
16     {
17     int state = ',';
18     int start, finish, step;
19    
20     while (state) {
21     switch (state) {
22     case ',':
23     start = atoi(arg);
24     finish = start;
25     step = 1;
26     break;
27     case '-':
28     finish = atoi(arg);
29     if (finish < start)
30     return(-1);
31     break;
32     case ':':
33     step = atoi(arg);
34     break;
35     default:
36     return(-1);
37     }
38 greg 1.2 if (!isdigit(*arg))
39 greg 1.1 return(-1);
40     do
41     arg++;
42     while (isdigit(*arg));
43     state = *arg++;
44     if (!state || state == ',')
45     while (start <= finish) {
46     *ang++ = start;
47     start += step;
48     }
49     }
50     *ang = AEND;
51     return(0);
52     }