Merge branch 'blender2.7'
[blender.git] / source / blender / makesdna / DNA_ipo_types.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): Joshua Leung
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file DNA_ipo_types.h
29  *  \ingroup DNA
30  *  \deprecated
31  *   The contents of this file are now officially deprecated. They were used for the 'old' animation system,
32  *   which has (as of 2.50) been replaced with a completely new system by Joshua Leung (aligorith). All defines,
33  *   etc. are only still maintained to provide backwards compatibility for old files.
34  */
35
36 #ifndef __DNA_IPO_TYPES_H__
37 #define __DNA_IPO_TYPES_H__
38
39 #include "DNA_listBase.h"
40 #include "DNA_curve_types.h"
41 #include "DNA_vec_types.h"
42
43 #include "DNA_ID.h"
44
45 #include "BLI_compiler_attrs.h"
46
47 /* -------------------------- Type Defines --------------------------- */
48
49
50 /* --- IPO Curve Driver --- */
51
52 /* IPO Curve Driver */
53 typedef struct IpoDriver {
54         /** Target/driver ob. */
55         struct Object *ob;
56         /** Sub-channel to use. */
57         short blocktype, adrcode;
58
59         /** Driver settings. */
60         short type, flag;
61         /** Bone, or python expression here. */
62         char name[128];
63 } IpoDriver;
64
65 /* --- IPO Curve --- */
66
67 /* IPO Curve */
68 typedef struct IpoCurve {
69         struct IpoCurve *next,  *prev;
70
71         /** Array of BPoints (sizeof(BPoint) * totvert) - i.e. baked/imported data. */
72         struct BPoint *bp;
73         /** Array of BezTriples (sizeof(BezTriple) * totvert)  - i.e. user-editable keyframes . */
74         struct BezTriple *bezt;
75
76         /** Bounding boxes. */
77         rctf maxrct, totrct;
78
79         /** Blocktype= ipo-blocktype; adrcode= type of ipo-curve; vartype= 'format' of data. */
80         short blocktype, adrcode, vartype;
81         /** Total number of BezTriples (i.e. keyframes) on curve. */
82         short totvert;
83         /** Interpolation and extrapolation modes . */
84         short ipo, extrap;
85         /** Flag= settings; rt= ???. */
86         short flag, rt;
87         /** Minimum/maximum y-extents for curve. */
88         float ymin, ymax;
89         /** ???. */
90         unsigned int bitmask;
91
92         /** Minimum/maximum values for sliders (in action editor). */
93         float slide_min, slide_max;
94         /** Value of ipo-curve for current frame. */
95         float curval;
96
97         /** Pointer to ipo-driver for this curve. */
98         IpoDriver *driver;
99 } IpoCurve;
100
101 /* --- ID-Datablock --- */
102
103 /* IPO Data-Block */
104 typedef struct Ipo {
105         ID id;
106
107         /** A list of IpoCurve structs in a linked list. */
108         ListBase curve;
109         /** Rect defining extents of keyframes?. */
110         rctf cur;
111
112         /** Blocktype: self-explanatory; showkey: either 0 or 1
113          * (show vertical yellow lines for editing). */
114         short blocktype, showkey;
115         /** Muteipo: either 0 or 1 (whether ipo block is muted). */
116         short muteipo, pad;
117 } Ipo;
118
119 /* ----------- adrcodes (for matching ipo-curves to data) ------------- */
120
121 /* defines: are these duped or new? */
122 #define IPOBUTY 17
123
124 #define TOB_IPO 1
125 #define TOB_IPODROT     2
126
127 /* disptype */
128 #define IPO_DISPDEGR    1
129 #define IPO_DISPBITS    2
130 #define IPO_DISPTIME    3
131
132 /* ********** Object (ID_OB) ********** */
133
134 #define OB_TOTIPO       30
135 #define OB_TOTNAM       30
136
137 #define OB_LOC_X        1
138 #define OB_LOC_Y        2
139 #define OB_LOC_Z        3
140 #define OB_DLOC_X       4
141 #define OB_DLOC_Y       5
142 #define OB_DLOC_Z       6
143
144 #define OB_ROT_X        7
145 #define OB_ROT_Y        8
146 #define OB_ROT_Z        9
147 #define OB_DROT_X       10
148 #define OB_DROT_Y       11
149 #define OB_DROT_Z       12
150
151 #define OB_SIZE_X       13
152 #define OB_SIZE_Y       14
153 #define OB_SIZE_Z       15
154 #define OB_DSIZE_X      16
155 #define OB_DSIZE_Y      17
156 #define OB_DSIZE_Z      18
157
158 #define OB_LAY          19
159
160 #define OB_TIME         20
161
162 #define OB_COL_R        21
163 #define OB_COL_G        22
164 #define OB_COL_B        23
165 #define OB_COL_A        24
166
167 #define OB_PD_FSTR      25
168 #define OB_PD_FFALL     26
169 #define OB_PD_SDAMP     27
170 #define OB_PD_RDAMP     28
171 #define OB_PD_PERM      29
172 #define OB_PD_FMAXD     30
173
174 /* exception: driver channel, for bone driver only */
175 #define OB_ROT_DIFF     100
176
177
178 /* ********** Material (ID_MA) ********** */
179
180 #define MA_TOTIPO       40
181 #define MA_TOTNAM       26
182
183 #define MA_COL_R        1
184 #define MA_COL_G        2
185 #define MA_COL_B        3
186 #define MA_SPEC_R       4
187 #define MA_SPEC_G       5
188 #define MA_SPEC_B       6
189 #define MA_MIR_R        7
190 #define MA_MIR_G        8
191 #define MA_MIR_B        9
192 #define MA_REF          10
193 #define MA_ALPHA        11
194 #define MA_EMIT         12
195 #define MA_AMB          13
196 #define MA_SPEC         14
197 #define MA_HARD         15
198 #define MA_SPTR         16
199 #define MA_IOR          17
200 #define MA_MODE         18
201 #define MA_HASIZE       19
202 #define MA_TRANSLU      20
203 #define MA_RAYM         21
204 #define MA_FRESMIR      22
205 #define MA_FRESMIRI     23
206 #define MA_FRESTRA      24
207 #define MA_FRESTRAI     25
208 #define MA_ADD          26
209
210 #define MA_MAP1         (1<<5)
211 #define MA_MAP2         (1<<6)
212 #define MA_MAP3         (1<<7)
213 #define MA_MAP4         (1<<8)
214 #define MA_MAP5         (1<<9)
215 #define MA_MAP6         (1<<10)
216 #define MA_MAP7         (1<<11)
217 #define MA_MAP8         (1<<12)
218 #define MA_MAP9         (1<<13)
219 #define MA_MAP10        (1<<14)
220 #define MA_MAP11        (1<<15)
221 #define MA_MAP12        (1<<16)
222 #define MA_MAP13        (1<<17)
223 #define MA_MAP14        (1<<18)
224 #define MA_MAP15        (1<<19)
225 #define MA_MAP16        (1<<20)
226 #define MA_MAP17        (1<<21)
227 #define MA_MAP18        (1<<22)
228
229 /* ********** Texture Slots (MTex) ********** */
230
231 #define TEX_TOTNAM      14
232
233 #define MAP_OFS_X       1
234 #define MAP_OFS_Y       2
235 #define MAP_OFS_Z       3
236 #define MAP_SIZE_X      4
237 #define MAP_SIZE_Y      5
238 #define MAP_SIZE_Z      6
239 #define MAP_R           7
240 #define MAP_G           8
241 #define MAP_B           9
242
243 #define MAP_DVAR        10
244 #define MAP_COLF        11
245 #define MAP_NORF        12
246 #define MAP_VARF        13
247 #define MAP_DISP        14
248
249 /* ********** Texture (ID_TE) ********** */
250
251 #define TE_TOTIPO       26
252 #define TE_TOTNAM       26
253
254 #define TE_NSIZE        1
255 #define TE_NDEPTH       2
256 #define TE_NTYPE        3
257 #define TE_TURB         4
258
259 #define TE_VNW1         5
260 #define TE_VNW2         6
261 #define TE_VNW3         7
262 #define TE_VNW4         8
263 #define TE_VNMEXP       9
264 #define TE_VN_DISTM     10
265 #define TE_VN_COLT      11
266
267 #define TE_ISCA         12
268 #define TE_DISTA        13
269
270 #define TE_MG_TYP       14
271 #define TE_MGH          15
272 #define TE_MG_LAC       16
273 #define TE_MG_OCT       17
274 #define TE_MG_OFF       18
275 #define TE_MG_GAIN      19
276
277 #define TE_N_BAS1       20
278 #define TE_N_BAS2       21
279
280 #define TE_COL_R    22
281 #define TE_COL_G    23
282 #define TE_COL_B    24
283 #define TE_BRIGHT       25
284 #define TE_CONTRA       26
285
286 /* ******** Sequence (ID_SEQ) ********** */
287
288 #define SEQ_TOTIPO      1
289 #define SEQ_TOTNAM      1
290
291 #define SEQ_FAC1        1
292 #define SEQ_FAC_SPEED   2
293 #define SEQ_FAC_OPACITY 3
294
295 /* ********* Curve (ID_CU) *********** */
296
297 #define CU_TOTIPO       1
298 #define CU_TOTNAM       1
299
300 #define CU_SPEED        1
301
302 /* ********* ShapeKey (ID_KE) *********** */
303
304 #define KEY_TOTIPO      64
305 #define KEY_TOTNAM      64
306
307 #define KEY_SPEED       0
308 #define KEY_NR          1
309
310 /* ********* World (ID_WO) *********** */
311
312 #define WO_TOTIPO       29
313 #define WO_TOTNAM       16
314
315 #define WO_HOR_R        1
316 #define WO_HOR_G        2
317 #define WO_HOR_B        3
318 #define WO_ZEN_R        4
319 #define WO_ZEN_G        5
320 #define WO_ZEN_B        6
321
322 #define WO_EXPOS        7
323
324 #define WO_MISI         8
325 #define WO_MISTDI       9
326 #define WO_MISTSTA      10
327 #define WO_MISTHI       11
328
329 /* Stars are deprecated */
330 #define WO_STAR_R       12
331 #define WO_STAR_G       13
332 #define WO_STAR_B       14
333 #define WO_STARDIST     15
334 #define WO_STARSIZE     16
335
336 /* ********** Lamp (ID_LA) ********** */
337
338 #define LA_TOTIPO       21
339 #define LA_TOTNAM       10
340
341 #define LA_ENERGY       1
342 #define LA_COL_R        2
343 #define LA_COL_G        3
344 #define LA_COL_B        4
345 #define LA_DIST         5
346 #define LA_SPOTSI       6
347 #define LA_SPOTBL       7
348 #define LA_QUAD1        8
349 #define LA_QUAD2        9
350 #define LA_HALOINT      10
351
352 /* ********* Camera (ID_CA) ************ */
353
354 #define CAM_TOTIPO      7
355 #define CAM_TOTNAM      7
356
357 #define CAM_LENS        1
358 #define CAM_STA         2
359 #define CAM_END         3
360
361 /* yafray aperture & focal distance curves */
362 #define CAM_YF_APERT    4
363 #define CAM_YF_FDIST    5
364
365 #define CAM_SHIFT_X             6
366 #define CAM_SHIFT_Y             7
367
368 /* ********* Sound (ID_SO) *********** */
369
370 #define SND_TOTIPO      4
371 #define SND_TOTNAM      4
372
373 #define SND_VOLUME      1
374 #define SND_PITCH       2
375 #define SND_PANNING     3
376 #define SND_ATTEN       4
377
378 /* ******* PoseChannel (ID_PO) ********* */
379
380 #define AC_TOTIPO       13
381 #define AC_TOTNAM       13
382
383 #define AC_LOC_X        1
384 #define AC_LOC_Y        2
385 #define AC_LOC_Z        3
386
387 #define AC_SIZE_X       13
388 #define AC_SIZE_Y       14
389 #define AC_SIZE_Z       15
390
391 #define AC_EUL_X        16
392 #define AC_EUL_Y        17
393 #define AC_EUL_Z        18
394
395 #define AC_QUAT_W       25
396 #define AC_QUAT_X       26
397 #define AC_QUAT_Y       27
398 #define AC_QUAT_Z       28
399
400 /* ******** Constraint (ID_CO) ********** */
401
402 #define CO_TOTIPO       2
403 #define CO_TOTNAM       2
404
405 #define CO_ENFORCE      1
406 #define CO_HEADTAIL     2
407
408 /* ****** FluidSim (ID_FLUIDSIM) ****** */
409
410 #define FLUIDSIM_TOTIPO 13
411 #define FLUIDSIM_TOTNAM 13
412
413 #define FLUIDSIM_VISC   1
414 #define FLUIDSIM_TIME   2
415
416 #define FLUIDSIM_GRAV_X 3
417 #define FLUIDSIM_GRAV_Y 4
418 #define FLUIDSIM_GRAV_Z 5
419
420 #define FLUIDSIM_VEL_X  6
421 #define FLUIDSIM_VEL_Y  7
422 #define FLUIDSIM_VEL_Z  8
423
424 #define FLUIDSIM_ACTIVE 9
425
426 #define FLUIDSIM_ATTR_FORCE_STR         10
427 #define FLUIDSIM_ATTR_FORCE_RADIUS      11
428 #define FLUIDSIM_VEL_FORCE_STR          12
429 #define FLUIDSIM_VEL_FORCE_RADIUS       13
430
431 /* ******************** */
432 /* particle ipos */
433
434 /* ******* Particle (ID_PA) ******** */
435 #define PART_TOTIPO             25
436 #define PART_TOTNAM             25
437
438 #define PART_EMIT_FREQ  1
439 /* #define PART_EMIT_LIFE       2 */ /*UNUSED*/
440 #define PART_EMIT_VEL   3
441 #define PART_EMIT_AVE   4
442 /* #define PART_EMIT_SIZE       5 */ /*UNUSED*/
443
444 #define PART_AVE                6
445 #define PART_SIZE               7
446 #define PART_DRAG               8
447 #define PART_BROWN              9
448 #define PART_DAMP               10
449 #define PART_LENGTH             11
450 #define PART_CLUMP              12
451
452 #define PART_GRAV_X             13
453 #define PART_GRAV_Y             14
454 #define PART_GRAV_Z             15
455
456 #define PART_KINK_AMP   16
457 #define PART_KINK_FREQ  17
458 #define PART_KINK_SHAPE 18
459
460 #define PART_BB_TILT    19
461
462 #define PART_PD_FSTR    20
463 #define PART_PD_FFALL   21
464 #define PART_PD_FMAXD   22
465
466 #define PART_PD2_FSTR   23
467 #define PART_PD2_FFALL  24
468 #define PART_PD2_FMAXD  25
469
470
471 /* -------------------- Defines: Flags and Types ------------------ */
472
473 /* ----- IPO Curve Defines ------- */
474
475 /* icu->vartype */
476 #define IPO_CHAR                0
477 #define IPO_SHORT               1
478 #define IPO_INT                 2
479 #define IPO_LONG                3
480 #define IPO_FLOAT               4
481 #define IPO_DOUBLE              5
482 #define IPO_FLOAT_DEGR  6
483
484         /* very special case, in keys */
485 #define IPO_BEZTRIPLE   100
486 #define IPO_BPOINT              101
487
488 /* icu->vartype */
489 #define IPO_BITS                16
490 #define IPO_CHAR_BIT    16
491 #define IPO_SHORT_BIT   17
492 #define IPO_INT_BIT             18
493
494 /* icu->ipo:  the type of curve */
495 #define IPO_CONST               0
496 #define IPO_LIN                 1
497 #define IPO_BEZ                 2
498         /* not used yet */
499 #define IPO_MIXED               3
500
501 /* icu->extrap */
502 #define IPO_HORIZ               0
503 #define IPO_DIR                 1
504 #define IPO_CYCL                2
505 #define IPO_CYCLX               3
506
507 /* icu->flag */
508 #define IPO_VISIBLE             1
509 #define IPO_SELECT              2
510 #define IPO_EDIT                4
511 #define IPO_LOCK                8
512 #define IPO_AUTO_HORIZ  16
513 #define IPO_ACTIVE              32
514 #define IPO_PROTECT             64
515 #define IPO_MUTE                128
516
517 /* ---------- IPO Drivers ----------- */
518
519 /* offset in driver->name for finding second posechannel for rot-diff  */
520 #define DRIVER_NAME_OFFS        32
521
522 /* driver->type */
523 #define IPO_DRIVER_TYPE_NORMAL          0
524 #define IPO_DRIVER_TYPE_PYTHON          1
525
526 /* driver->flag */
527         /* invalid flag: currently only used for buggy pydriver expressions */
528 #define IPO_DRIVER_FLAG_INVALID         (1<<0)
529
530 #endif