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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines