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