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

Comparing ray/src/px/ra_pict.c (file contents):
Revision 2.6 by greg, Fri Jun 4 14:47:37 1993 UTC vs.
Revision 2.11 by greg, Tue Mar 20 18:45:04 2018 UTC

# Line 1 | Line 1
1 /* Copyright (c) 1992 Regents of the University of California */
2
1   #ifndef lint
2 < static char SCCSid[] = "$SunId$ LBL";
2 > static const char       RCSid[] = "$Id$";
3   #endif
6
4   /*              Convert an Radiance image to APPLE pict format.
5   *
6   *                      Orginally Iris to PICT by       Paul Haeberli - 1990
# Line 21 | Line 18 | static char SCCSid[] = "$SunId$ LBL";
18  
19   #include <stdio.h>
20   #include <math.h>
21 < #ifdef MSDOS
25 < #include <fcntl.h>
26 < #endif
21 > #include  <time.h>
22  
23 + #include "platform.h"
24 + #include "rtio.h"
25   #include "pict.h"
26   #include "color.h"
27   #include "resolu.h"
28  
32 extern char     *malloc();
33
29   int     outbytes;                   /* This had better be 32 bits! */
30   char    *progname;
31   int     verbose = 0;
32 < float   gamma = 2.0;
32 > float   gamcor = 2.0;
33   int     bradj = 0;
34  
35 <        /* First some utility routines */
35 > static void putrect(int xorg, int yorg, int xsize, int ysize);
36 > static void putfprect(int xorg, int yorg, int xsize, int ysize);
37 > static void putalong(long l);
38 > static void putashort(short s);
39 > static void putbyte(int b);
40 > static void putbytes(unsigned char *buf, int n );
41 > static void putpict(int xsize, int ysize);
42 > static void getrow(FILE *in, char *cbuf, int xsize);
43 > static int packbits(unsigned char *ibits, unsigned char *pbits, int nbits);
44 > static void usage(void);
45  
46 < putrect(xorg,yorg,xsize,ysize)
47 < int xorg, yorg, xsize, ysize;
46 >
47 >        /* First some utility routines */
48 > static void
49 > putrect(
50 >        int xorg,
51 >        int yorg,
52 >        int xsize,
53 >        int ysize
54 > )
55   {
56      putashort(yorg);
57      putashort(xorg);
# Line 48 | Line 59 | int xorg, yorg, xsize, ysize;
59      putashort(xsize);
60   }
61  
62 < putfprect(xorg,yorg,xsize,ysize)
63 < int xorg, yorg, xsize, ysize;
62 > static void
63 > putfprect(
64 >        int xorg,
65 >        int yorg,
66 >        int xsize,
67 >        int ysize
68 > )
69   {
70      putalong(yorg<<16);
71      putalong(xorg<<16);
# Line 57 | Line 73 | int xorg, yorg, xsize, ysize;
73      putalong(xsize<<16);
74   }
75  
76 < putalong(l)
77 < long l;
76 > static void
77 > putalong(
78 >        long l
79 > )
80   {
81      putbyte((l>>24)&0xff);
82      putbyte((l>>16)&0xff);
# Line 66 | Line 84 | long l;
84      putbyte((l>>0)&0xff);
85   }
86  
87 < putashort(s)
88 < short s;
87 > static void
88 > putashort(
89 >        short s
90 > )
91   {
92      putbyte((s>>8)&0xff);
93      putbyte((s>>0)&0xff);
94   }
95  
96 < putbyte(b)
97 < int b;
96 > static void
97 > putbyte(
98 >        int b
99 > )
100   {
101      if (putc(b,stdout) == EOF && ferror(stdout)) {
102          fprintf(stderr,"%s: error on write\n", progname);
# Line 83 | Line 105 | int b;
105      outbytes++;
106   }
107  
108 < putbytes(buf,n)
109 < unsigned char *buf;
110 < int n;
108 > static void
109 > putbytes(
110 >        unsigned char *buf,
111 >        int n
112 > )
113   {
114      if(!fwrite(buf,n,1,stdout)) {
115          fprintf(stderr,"%s: error on write\n", progname);
# Line 94 | Line 118 | int n;
118      outbytes+=n;
119   }
120  
121 < main(argc,argv)
122 < int argc;
123 < char **argv;
121 > int
122 > main(
123 >        int argc,
124 >        char **argv
125 > )
126   {
127      int xsize, ysize;
128      int i, picsize;
129      int ssizepos, lsizepos;
130 < #ifdef MSDOS
131 <    extern int  _fmode;
132 <    _fmode = O_BINARY;
107 <    setmode(fileno(stdin), O_BINARY);
108 <    setmode(fileno(stdout), O_BINARY);
109 < #endif
130 >        SET_DEFAULT_BINARY();
131 >    SET_FILE_BINARY(stdin);
132 >    SET_FILE_BINARY(stdout);
133      progname = argv[0];
134  
135      for (i = 1; i < argc ; i++)
136          if (argv[i][0] ==  '-')
137              switch (argv[i][1]) {
138 <                case 'g':       gamma = atof(argv[++i]);
138 >                case 'g':       gamcor = atof(argv[++i]);
139                                  break;
140  
141                  case 'e':       if (argv[i+1][0] != '+' && argv[i+1][0] != '-')
# Line 132 | Line 155 | char **argv;
155                                  goto outofparse;
156                                  break;              /* NOTREACHED */
157  
158 <                otherwise:      usage();
158 >                default:
159 >                                usage();
160                                  break;
161                   }
162          else
# Line 158 | Line 182 | outofparse:
182   #ifdef DEBUG
183          fprintf(stderr, "Input file: %s\n", i <= argc - 1 ? argv[i] : "stdin");
184          fprintf(stderr, "Outut file: %s\n", i <= argc - 2 ? argv[i+1] : "stdout" );
185 <        fprintf(stderr, "Gamma: %f\n", gamma);
185 >        fprintf(stderr, "Gamma: %f\n", gamcor);
186          fprintf(stderr, "Brightness adjust: %d\n", bradj);
187          fprintf(stderr, "Verbose: %s\n", verbose ? "on" : "off");
188   #endif
# Line 173 | Line 197 | outofparse:
197  
198              /* Set the gamma correction */
199  
200 <    setcolrgam(gamma);
200 >    setcolrgam(gamcor);
201  
202      for(i=0; i<HEADER_SIZE; i++)
203          putbyte(0);
# Line 196 | Line 220 | outofparse:
220  
221      if (verbose)
222          fprintf(stderr, "%s: The picture is %d by %d, with a gamma of %f\n",
223 <            progname, xsize, ysize, gamma);
223 >            progname, xsize, ysize, gamcor);
224  
225  
226      putpict(xsize, ysize);      /* Here is where all the work is done */
# Line 216 | Line 240 | outofparse:
240      return 0;       /* lint fodder */
241   }
242  
243 < putpict(xsize, ysize)
244 < int xsize;
245 < int ysize;
243 > static void
244 > putpict(
245 >        int xsize,
246 >        int ysize
247 > )
248   {
249      int     y;
250      int     nbytes, rowbytes;
251      char    *cbuf, *pbuf;
252  
253 <    cbuf = malloc(4 * xsize);
253 >    cbuf = (char *)malloc(4 * xsize);
254  
255      if (cbuf == NULL) {
256          fprintf(stderr, "%s: not enough memory\n", progname);
257          exit(1);
258          }
259  
260 <    pbuf = malloc(4 * xsize);
260 >    pbuf = (char *)malloc(4 * xsize);
261  
262      if (pbuf == NULL) {
263          fprintf(stderr, "%s: not enough memory\n", progname);
# Line 289 | Line 315 | int ysize;
315      free(pbuf);
316   }
317  
318 < int getrow(in, cbuf, xsize)
319 < FILE *in;
320 < char *cbuf;
321 < int xsize;
318 > static void
319 > getrow(
320 >        FILE *in,
321 >        char *cbuf,
322 >        int xsize
323 > )
324   {
325      extern char *tempbuffer();          /* defined in color.c */
326      COLR    *scanin = NULL;
# Line 323 | Line 351 | int xsize;
351   }
352  
353  
354 < packbits(ibits,pbits,nbits)
355 < unsigned char *ibits, *pbits;
356 < int nbits;
354 > static int
355 > packbits(
356 >        unsigned char *ibits,
357 >        unsigned char *pbits,
358 >        int nbits
359 > )
360   {
330    int bytes;                      /* UNUSED */
361      unsigned char *sptr;
362      unsigned char *ibitsend;
363      unsigned char *optr = pbits;
# Line 368 | Line 398 | int nbits;
398      return optr-pbits;
399   }
400  
401 < usage()
401 > static void
402 > usage(void)
403   {
404      fprintf(stderr, "Usage: %s [-v] [-g gamma] [infile [outfile]]\n",
405          progname);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines