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