ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/normcodec.h
Revision: 2.5
Committed: Wed Aug 24 19:55:58 2022 UTC (20 months, 1 week ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad5R4, HEAD
Changes since 2.4: +1 -2 lines
Log Message:
perf: Eliminated unnecessary curpos optimization to simplify code

File Contents

# Content
1 /* RCSid $Id: normcodec.h,v 2.4 2019/11/07 23:20:28 greg Exp $ */
2 /*
3 * Definitions and declarations for 32-bit vector normal encode/decode
4 *
5 * Include after rtio.h and fvect.h
6 * Includes resolu.h
7 */
8
9 #ifndef _RAD_NORMALCODEC_H_
10 #define _RAD_NORMALCODEC_H_
11
12 #include "resolu.h"
13
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17
18 #define NORMAL32FMT "32-bit_encoded_normal"
19
20 #define HF_HEADIN 0x1 /* expect input header */
21 #define HF_HEADOUT 0x2 /* write header to stdout */
22 #define HF_RESIN 0x4 /* expect resolution string */
23 #define HF_RESOUT 0x8 /* write resolution to stdout */
24 #define HF_STDERR 0x10 /* report errors to stderr */
25 #define HF_ALL 0x1f /* all flags above */
26 #define HF_ENCODE 0x20 /* we are encoding */
27
28 /* Structure for encoding/decoding normals */
29 typedef struct {
30 FILE *finp; /* input stream */
31 const char *inpname; /* input name */
32 short format; /* decoded format */
33 short swapped; /* byte-swapped input */
34 long dstart; /* start of data */
35 short hdrflags; /* header i/o flags */
36 char inpfmt[MAXFMTLEN]; /* format from header */
37 RESOLU res; /* input resolution */
38 } NORMCODEC;
39
40 /* Set codec defaults */
41 extern void set_nc_defaults(NORMCODEC *ncp);
42
43 /* Load/copy header */
44 extern int process_nc_header(NORMCODEC *ncp, int ac, char *av[]);
45
46 /* Check that we have what we need to decode normals */
47 extern int check_decode_normals(NORMCODEC *ncp);
48
49 /* Decode next normal from input */
50 extern int decode_normal_next(FVECT nrm, NORMCODEC *ncp);
51
52 /* Seek to the indicated pixel position */
53 extern int seek_nc_pix(NORMCODEC *ncp, int x, int y);
54
55 /* Read and decode normal for the given pixel */
56 extern int decode_normal_pix(FVECT nrm, NORMCODEC *ncp, int x, int y);
57
58 extern char *progname; /* global argv[0] (set by main) */
59
60 #ifdef __cplusplus
61 }
62 #endif
63 #endif /* _RAD_NORMALCODEC_H_ */