Fix for compilation error caused by strict prototype checking
[blender.git] / source / blender / imbuf / intern / cineon / logImageCore.h
1 /*
2  *       Cineon image file format library definitions.
3  *       Cineon and DPX common structures.
4  *
5  *       This header file contains private details.
6  *       User code should generally use cineonlib.h and dpxlib.h only.
7  *       Hmm. I thought the two formats would have more in common!
8  *
9  *       Copyright 1999,2000,2001 David Hodson <hodsond@acm.org>
10  *
11  *       This program is free software; you can redistribute it and/or modify it
12  *       under the terms of the GNU General Public License as published by the Free
13  *       Software Foundation; either version 2 of the License, or (at your option)
14  *       any later version.
15  *
16  *       This program is distributed in the hope that it will be useful, but
17  *       WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18  *       or FITNESS FOR A PARTICULAR PURPOSE.    See the GNU General Public License
19  *       for more details.
20  *
21  *       You should have received a copy of the GNU General Public License
22  *       along with this program; if not, write to the Free Software
23  *       Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24  *
25  */
26
27 #ifndef _LOG_IMAGE_CORE_H_
28 #define _LOG_IMAGE_CORE_H_
29
30 #include <stdio.h>
31 #include "logImageLib.h"
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36
37 #include "BLO_sys_types.h" // for intptr_t support
38 #undef ntohl
39 #undef htonl
40 typedef int (GetRowFn)(LogImageFile* logImage, unsigned short* row, int lineNum);
41 typedef int (SetRowFn)(LogImageFile* logImage, const unsigned short* row, int lineNum);
42 typedef void (CloseFn)(LogImageFile* logImage);
43
44 struct _Log_Image_File_t_
45 {
46         /* specified in header */
47         int width;
48         int height;
49         int depth;
50         int bitsPerPixel;
51         int imageOffset;
52
53         /* file buffer, measured in longwords (4 byte) */
54         int lineBufferLength;
55         unsigned int* lineBuffer;
56
57         /* pixel buffer, holds 10 bit pixel values */
58         unsigned short* pixelBuffer;
59         int pixelBufferUsed;
60
61         /* io stuff */
62         FILE* file;
63         int reading;
64         int fileYPos;
65
66         /* byte conversion stuff */
67         LogImageByteConversionParameters params;
68 #if 0
69         float gamma;
70         int blackPoint;
71         int whitePoint;
72 #endif
73         unsigned char lut10[1024];
74         unsigned short lut8[256];
75
76         unsigned short lut10_16[1024];
77         unsigned short lut16_16[65536];
78
79         /* pixel access functions */
80         GetRowFn* getRow;
81         SetRowFn* setRow;
82         CloseFn* close;
83         
84         unsigned char *membuffer;
85         uintptr_t membuffersize;
86         unsigned char *memcursor;
87 };
88
89 void setupLut(LogImageFile*);
90 void setupLut16(LogImageFile*);
91
92 int pixelsToLongs(int numPixels);
93
94 /* typedefs used in original docs */
95 /* note size assumptions! */
96
97 typedef unsigned int U32;
98 typedef unsigned short U16;
99 typedef unsigned char U8;
100 typedef signed int S32;
101 typedef float R32;
102 typedef char ASCII;
103
104 R32 htonf(R32 f);
105 R32 ntohf(R32 f);
106 R32 undefined(void);
107 U16 reverseU16(U16 value);
108 U32 reverseU32(U32 value);
109 R32 reverseR32(R32 value);
110
111 #ifdef __cplusplus
112 }
113 #endif
114
115 #endif /* _LOG_IMAGE_CORE_H_ */