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