Cleanup: remove redundant, invalid info from headers
[blender.git] / source / blender / makesdna / DNA_color_types.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2006 Blender Foundation.
17  * All rights reserved.
18  * ***** END GPL/BL DUAL LICENSE BLOCK *****
19  */
20
21 /** \file DNA_color_types.h
22  *  \ingroup DNA
23  */
24
25 #ifndef __DNA_COLOR_TYPES_H__
26 #define __DNA_COLOR_TYPES_H__
27
28 #include "DNA_vec_types.h"
29
30 /* general defines for kernel functions */
31 #define CM_RESOL 32
32 #define CM_TABLE 256
33 #define CM_TABLEDIV             (1.0f/256.0f)
34
35 #define CM_TOT  4
36
37 typedef struct CurveMapPoint {
38         float x, y;
39         short flag, shorty;             /* shorty for result lookup */
40 } CurveMapPoint;
41
42 /* curvepoint->flag */
43 enum {
44         CUMA_SELECT = (1 << 0),
45         CUMA_HANDLE_VECTOR = (1 << 1),
46         CUMA_HANDLE_AUTO_ANIM = (1 << 2),
47 };
48
49 typedef struct CurveMap {
50         short totpoint, flag;
51
52         float range;                                    /* quick multiply value for reading table */
53         float mintable, maxtable;               /* the x-axis range for the table */
54         float ext_in[2], ext_out[2];    /* for extrapolated curves, the direction vector */
55         CurveMapPoint *curve;                   /* actual curve */
56         CurveMapPoint *table;                   /* display and evaluate table */
57
58         CurveMapPoint *premultable;             /* for RGB curves, premulled table */
59         float premul_ext_in[2];                 /* for RGB curves, premulled extrapolation vector */
60         float premul_ext_out[2];
61 } CurveMap;
62
63 /* cuma->flag */
64 #define CUMA_EXTEND_EXTRAPOLATE 1
65
66 typedef struct CurveMapping {
67         int flag, cur;                                  /* cur; for buttons, to show active curve */
68         int preset;
69         int changed_timestamp;
70
71         rctf curr, clipr;                               /* current rect, clip rect (is default rect too) */
72
73         CurveMap cm[4];                                 /* max 4 builtin curves per mapping struct now */
74         float black[3], white[3];               /* black/white point (black[0] abused for current frame) */
75         float bwmul[3];                                 /* black/white point multiply value, for speed */
76
77         float sample[3];                                /* sample values, if flag set it draws line and intersection */
78 } CurveMapping;
79
80 /* cumapping->flag */
81 #define CUMA_DO_CLIP            (1 << 0)
82 #define CUMA_PREMULLED          (1 << 1)
83 #define CUMA_DRAW_CFRA          (1 << 2)
84 #define CUMA_DRAW_SAMPLE        (1 << 3)
85
86 /* cumapping->preset */
87 typedef enum eCurveMappingPreset {
88         CURVE_PRESET_LINE   = 0,
89         CURVE_PRESET_SHARP  = 1,
90         CURVE_PRESET_SMOOTH = 2,
91         CURVE_PRESET_MAX    = 3,
92         CURVE_PRESET_MID9   = 4,
93         CURVE_PRESET_ROUND  = 5,
94         CURVE_PRESET_ROOT   = 6,
95 } eCurveMappingPreset;
96
97 /* histogram->mode */
98 enum {
99         HISTO_MODE_LUMA   = 0,
100         HISTO_MODE_RGB    = 1,
101         HISTO_MODE_R      = 2,
102         HISTO_MODE_G      = 3,
103         HISTO_MODE_B      = 4,
104         HISTO_MODE_ALPHA  = 5,
105 };
106
107 enum {
108         HISTO_FLAG_LINE        = (1 << 0),
109         HISTO_FLAG_SAMPLELINE  = (1 << 1),
110 };
111
112 typedef struct Histogram {
113         int channels;
114         int x_resolution;
115         float data_luma[256];
116         float data_r[256];
117         float data_g[256];
118         float data_b[256];
119         float data_a[256];
120         float xmax, ymax;
121         short mode;
122         short flag;
123         int height;
124
125         /* sample line only */
126         /* image coords src -> dst */
127         float co[2][2];
128 } Histogram;
129
130
131 typedef struct Scopes {
132         int ok;
133         int sample_full;
134         int sample_lines;
135         float accuracy;
136         int wavefrm_mode;
137         float wavefrm_alpha;
138         float wavefrm_yfac;
139         int wavefrm_height;
140         float vecscope_alpha;
141         int vecscope_height;
142         float minmax[3][2];
143         struct Histogram hist;
144         float *waveform_1;
145         float *waveform_2;
146         float *waveform_3;
147         float *vecscope;
148         int waveform_tot;
149         int pad;
150 } Scopes;
151
152 /* scopes->wavefrm_mode */
153 #define SCOPES_WAVEFRM_LUMA             0
154 #define SCOPES_WAVEFRM_RGB_PARADE       1
155 #define SCOPES_WAVEFRM_YCC_601  2
156 #define SCOPES_WAVEFRM_YCC_709  3
157 #define SCOPES_WAVEFRM_YCC_JPEG 4
158 #define SCOPES_WAVEFRM_RGB              5
159
160 typedef struct ColorManagedViewSettings {
161         int flag, pad;
162         char look[64];   /* look which is being applied when displaying buffer on the screen (prior to view transform) */
163         char view_transform[64];   /* view transform which is being applied when displaying buffer on the screen */
164         float exposure;            /* fstop exposure */
165         float gamma;               /* post-display gamma transform */
166         struct CurveMapping *curve_mapping;  /* pre-display RGB curves transform */
167         void *pad2;
168 } ColorManagedViewSettings;
169
170 typedef struct ColorManagedDisplaySettings {
171         char display_device[64];
172 } ColorManagedDisplaySettings;
173
174 typedef struct ColorManagedColorspaceSettings {
175         char name[64];    /* MAX_COLORSPACE_NAME */
176 } ColorManagedColorspaceSettings;
177
178 /* ColorManagedViewSettings->flag */
179 enum {
180         COLORMANAGE_VIEW_USE_CURVES = (1 << 0),
181 };
182
183 #endif