svn merge -r 12937:13095 https://svn.blender.org/svnroot/bf-blender/trunk/blender
[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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, 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
38 typedef int (GetRowFn)(LogImageFile* logImage, unsigned short* row, int lineNum);
39 typedef int (SetRowFn)(LogImageFile* logImage, const unsigned short* row, int lineNum);
40 typedef void (CloseFn)(LogImageFile* logImage);
41
42 struct _Log_Image_File_t_
43 {
44         /* specified in header */
45         int width;
46         int height;
47         int depth;
48         int bitsPerPixel;
49         int imageOffset;
50
51         /* file buffer, measured in longwords (4 byte) */
52         int lineBufferLength;
53         unsigned int* lineBuffer;
54
55         /* pixel buffer, holds 10 bit pixel values */
56         unsigned short* pixelBuffer;
57         int pixelBufferUsed;
58
59         /* io stuff */
60         FILE* file;
61         int reading;
62         int fileYPos;
63
64         /* byte conversion stuff */
65         LogImageByteConversionParameters params;
66 #if 0
67         float gamma;
68         int blackPoint;
69         int whitePoint;
70 #endif
71         unsigned char lut10[1024];
72         unsigned short lut8[256];
73
74         /* pixel access functions */
75         GetRowFn* getRow;
76         SetRowFn* setRow;
77         CloseFn* close;
78         
79         unsigned char *membuffer;
80         unsigned long membuffersize;
81         unsigned char *memcursor;
82 };
83
84 void setupLut(LogImageFile*);
85
86 int pixelsToLongs(int numPixels);
87
88 /* typedefs used in original docs */
89 /* note size assumptions! */
90
91 typedef unsigned int U32;
92 typedef unsigned short U16;
93 typedef unsigned char U8;
94 typedef signed int S32;
95 typedef float R32;
96 typedef char ASCII;
97
98 R32 htonf(R32 f);
99 R32 ntohf(R32 f);
100 R32 undefined();
101 U16 reverseU16(U16 value);
102 U32 reverseU32(U32 value);
103 R32 reverseR32(R32 value);
104
105 #ifdef __cplusplus
106 }
107 #endif
108
109 #endif /* _LOG_IMAGE_CORE_H_ */