Initial revision
[blender.git] / source / blender / render / intern / include / gammaCorrectionTables.h
1 /*
2  * gammacorrectiontables.h
3  *
4  * $Id$
5  *
6  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License
10  * as published by the Free Software Foundation; either version 2
11  * of the License, or (at your option) any later version. The Blender
12  * Foundation also sells licenses for use in proprietary software under
13  * the Blender License.  See http://www.blender.org/BL/ for information
14  * about this.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License 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 Foundation,
23  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
24  *
25  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
26  * All rights reserved.
27  *
28  * The Original Code is: all of this file.
29  *
30  * Contributor(s): none yet.
31  *
32  * ***** END GPL/BL DUAL LICENSE BLOCK *****
33  */
34
35 #ifndef GAMMACORRECTIONTABLES_H
36 #define GAMMACORRECTIONTABLES_H
37
38
39
40 /* Default gamma. For most CRTs, gamma ranges from 2.2 to 2.5 (Foley), so    */
41 /* 2.35 seems appropriate enough. Experience teaches a different number      */
42 /* though. Old blender: 2.0. It  might be nice to make this a slider         */
43 #define RE_DEFAULT_GAMMA 2.0
44 /* This 400 is sort of based on the number of intensity levels needed for    */
45 /* the typical dynamic range of a medium, in this case CRTs. (Foley)         */
46 /* (Actually, it says the number should be between 400 and 535.)             */
47 #define RE_GAMMA_TABLE_SIZE 400
48
49 /**
50  * Initialise the gamma lookup tables
51  */
52 void makeGammaTables(float gamma);
53
54 /**
55  * Returns true if the table is initialised, false otherwise
56  */
57 int gammaTableIsInitialised(void);
58
59 /**
60  * Apply gamma correction on col
61  */
62 float gammaCorrect(float col);
63
64 /**
65  * Apply inverse gamma correction on col
66  */
67 float invGammaCorrect(float col);
68
69 /**
70  * Tell whether or not to do gamma.
71  */
72 int doGamma(void);
73
74 /**
75  * Set/unset performing gamma corrections.
76  */
77 void setDoGamma(int);
78
79 #endif