b8a734b6e941ffa5b7a616b29784b26626e3c762
[blender-staging.git] / source / blender / makesdna / DNA_scene_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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): none yet.
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  */
29 #ifndef DNA_SCENE_TYPES_H
30 #define DNA_SCENE_TYPES_H
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35
36 #include "DNA_vec_types.h"
37 #include "DNA_listBase.h"
38 #include "DNA_scriptlink_types.h"
39 #include "DNA_ID.h"
40 #include "DNA_scriptlink_types.h"
41
42 struct Radio;
43 struct Object;
44 struct World;
45 struct Scene;
46 struct Image;
47 struct Group;
48 struct bNodeTree;
49
50 typedef struct Base {
51         struct Base *next, *prev;
52         unsigned int lay, selcol;
53         int flag;
54         short sx, sy;
55         struct Object *object;
56 } Base;
57
58 typedef struct AviCodecData {
59         void                    *lpFormat;  /* save format */
60         void                    *lpParms;   /* compressor options */
61         unsigned int    cbFormat;           /* size of lpFormat buffer */
62         unsigned int    cbParms;            /* size of lpParms buffer */
63
64         unsigned int    fccType;            /* stream type, for consistency */
65         unsigned int    fccHandler;         /* compressor */
66         unsigned int    dwKeyFrameEvery;    /* keyframe rate */
67         unsigned int    dwQuality;          /* compress quality 0-10,000 */
68         unsigned int    dwBytesPerSecond;   /* bytes per second */
69         unsigned int    dwFlags;            /* flags... see below */
70         unsigned int    dwInterleaveEvery;  /* for non-video streams only */
71         unsigned int    pad;
72
73         char                    avicodecname[128];
74 } AviCodecData;
75
76 typedef struct QuicktimeCodecData {
77
78         void                    *cdParms;   /* codec/compressor options */
79         void                    *pad;       /* padding */
80
81         unsigned int    cdSize;             /* size of cdParms buffer */
82         unsigned int    pad2;               /* padding */
83
84         char                    qtcodecname[128];
85 } QuicktimeCodecData;
86
87 typedef struct FFMpegCodecData {
88         int type;
89         int codec;
90         int audio_codec;
91         int video_bitrate;
92         int audio_bitrate;
93         int gop_size;
94         int flags;
95
96         int rc_min_rate;
97         int rc_max_rate;
98         int rc_buffer_size;
99         int mux_packet_size;
100         int mux_rate;
101         IDProperty *properties;
102 } FFMpegCodecData;
103
104
105 typedef struct AudioData {
106         int mixrate;
107         float main;             /* Main mix in dB */
108         short flag;
109         short pad[3];
110 } AudioData;
111
112 typedef struct SceneRenderLayer {
113         struct SceneRenderLayer *next, *prev;
114         
115         char name[32];
116         
117         struct Material *mat_override;
118         struct Group *light_override;
119         
120         unsigned int lay;               /* scene->lay itself has priority over this */
121         unsigned int lay_zmask; /* has to be after lay, this is for Z-masking */
122         int layflag;
123         
124         int pad;
125         
126         int passflag;                   /* pass_xor has to be after passflag */
127         int pass_xor;
128 } SceneRenderLayer;
129
130 /* srl->layflag */
131 #define SCE_LAY_SOLID   1
132 #define SCE_LAY_ZTRA    2
133 #define SCE_LAY_HALO    4
134 #define SCE_LAY_EDGE    8
135 #define SCE_LAY_SKY             16
136 #define SCE_LAY_STRAND  32
137         /* flags between 32 and 0x8000 are set to 1 already, for future options */
138
139 #define SCE_LAY_ALL_Z           0x8000
140 #define SCE_LAY_XOR                     0x10000
141 #define SCE_LAY_DISABLE         0x20000
142 #define SCE_LAY_ZMASK           0x40000
143 #define SCE_LAY_NEG_ZMASK       0x80000
144
145 /* srl->passflag */
146 #define SCE_PASS_COMBINED       1
147 #define SCE_PASS_Z                      2
148 #define SCE_PASS_RGBA           4
149 #define SCE_PASS_DIFFUSE        8
150 #define SCE_PASS_SPEC           16
151 #define SCE_PASS_SHADOW         32
152 #define SCE_PASS_AO                     64
153 #define SCE_PASS_REFLECT        128
154 #define SCE_PASS_NORMAL         256
155 #define SCE_PASS_VECTOR         512
156 #define SCE_PASS_REFRACT        1024
157 #define SCE_PASS_INDEXOB        2048
158 #define SCE_PASS_UV                     4096
159 #define SCE_PASS_RADIO          8192
160 #define SCE_PASS_MIST           16384
161
162 /* note, srl->passflag is treestore element 'nr' in outliner, short still... */
163
164
165 typedef struct RenderData {
166         
167         struct AviCodecData *avicodecdata;
168         struct QuicktimeCodecData *qtcodecdata;
169         struct FFMpegCodecData ffcodecdata;
170
171         int cfra, sfra, efra;   /* frames as in 'images' */
172         int psfra, pefra;               /* start+end frames of preview range */
173
174         int images, framapto;
175         short flag, threads;
176
177         float ctime;                    /* use for calcutions */
178         float framelen, blurfac;
179
180         /** For UR edge rendering: give the edges this color */
181         float edgeR, edgeG, edgeB;
182         
183         short fullscreen, xplay, yplay, freqplay;       /* standalone player */
184         short depth, attrib, rt1, rt2;                  /* standalone player */
185
186         short stereomode;       /* standalone player stereo settings */
187         
188         short dimensionspreset;         /* for the dimensions presets menu */
189         
190         short filtertype;       /* filter is box, tent, gauss, mitch, etc */
191
192         short size, maximsize;  /* size in %, max in Kb */
193         /* from buttons: */
194         /**
195          * The desired number of pixels in the x direction
196          */
197         short xsch;
198         /**
199          * The desired number of pixels in the y direction
200          */
201         short ysch;
202         /**
203          * The number of part to use in the x direction
204          */
205         short xparts;
206         /**
207          * The number of part to use in the y direction
208          */
209         short yparts;
210         
211         short winpos, planes, imtype, subimtype;
212         
213         /** Mode bits:                                                           */
214         /* 0: Enable backbuffering for images                                    */
215         short bufflag;
216         short quality;
217         
218         short rpad, rpad1, rpad2;
219
220         /**
221          * Flags for render settings. Use bit-masking to access the settings.
222          */
223         int scemode;
224
225         /**
226          * Flags for render settings. Use bit-masking to access the settings.
227          */
228         int mode;
229
230         /* render engine, octree resolution */
231         short renderer, ocres;
232
233         /**
234          * What to do with the sky/background. Picks sky/premul/key
235          * blending for the background
236          */
237         short alphamode;
238
239         /**
240          * The number of samples to use per pixel.
241          */
242         short osa;
243
244         short frs_sec, edgeint;
245         
246         /* safety, border and display rect */
247         rctf safety, border;
248         rcti disprect;
249         
250         /* information on different layers to be rendered */
251         ListBase layers;
252         short actlay, pad;
253         
254         /**
255          * Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
256          */
257         float xasp;
258         /**
259          * Adjustment factors for the aspect ratio in the x direction, was a short in 2.45
260          */
261         float yasp;
262
263         float frs_sec_base;
264         
265         /**
266          * Value used to define filter size for all filter options  */
267         float gauss;
268         
269         /** post-production settings. Depricated, but here for upwards compat (initialized to 1) */      
270         float postmul, postgamma, posthue, postsat;      
271         
272         /* Dither noise intensity */
273         float dither_intensity;
274         
275         /* Bake Render options */
276         short bake_osa, bake_filter, bake_mode, bake_flag;
277         short bake_normal_space, bake_quad_split;
278         float bake_maxdist, bake_biasdist, bake_pad;
279         
280         /* yafray: global panel params. TODO: move elsewhere */
281         short GIquality, GIcache, GImethod, GIphotons, GIdirect;
282         short YF_AA, YFexportxml, YF_nobump, YF_clamprgb, yfpad1;
283         int GIdepth, GIcausdepth, GIpixelspersample;
284         int GIphotoncount, GImixphotons;
285         float GIphotonradius;
286         int YF_raydepth, YF_AApasses, YF_AAsamples, yfpad2;
287         float GIshadowquality, GIrefinement, GIpower, GIindirpower;
288         float YF_gamma, YF_exposure, YF_raybias, YF_AApixelsize, YF_AAthreshold;
289
290         /* paths to backbufffer, output, ftype */
291         char backbuf[160], pic[160];
292
293         /* stamps flags. */
294         int stamp;
295         short stamp_font_id, pad3; /* select one of blenders bitmap fonts */
296
297         /* stamp info user data. */
298         char stamp_udata[160];
299
300         /* foreground/background color. */
301         float fg_stamp[4];
302         float bg_stamp[4];
303
304         /* render simplify */
305         int simplify_subsurf;
306         int simplify_shadowsamples;
307         float simplify_particles;
308         float simplify_aosss;
309
310         /* cineon */
311         short cineonwhite, cineonblack;
312         float cineongamma;
313         
314         /* jpeg2000 */
315         short jp2_preset, jp2_depth;
316         int rpad3;
317 } RenderData;
318
319 /* control render convert and shading engine */
320 typedef struct RenderProfile {
321         struct RenderProfile *next, *prev;
322         char name[32];
323         
324         short particle_perc;
325         short subsurf_max;
326         short shadbufsample_max;
327         short pad1;
328         
329         float ao_error, pad2;
330         
331 } RenderProfile;
332
333 typedef struct GameFraming {
334         float col[3];
335         char type, pad1, pad2, pad3;
336 } GameFraming;
337
338 #define SCE_GAMEFRAMING_BARS   0
339 #define SCE_GAMEFRAMING_EXTEND 1
340 #define SCE_GAMEFRAMING_SCALE  2
341
342 typedef struct TimeMarker {
343         struct TimeMarker *next, *prev;
344         int frame;
345         char name[64];
346         unsigned int flag;
347 } TimeMarker;
348
349 typedef struct ImagePaintSettings {
350         struct Brush *brush;
351         short flag, tool;
352         
353         /* for projection painting only */
354         short seam_bleed,normal_angle;
355 } ImagePaintSettings;
356
357 typedef struct ParticleBrushData {
358         short size, strength;   /* common settings */
359         short step, invert;             /* for specific brushes only */
360 } ParticleBrushData;
361
362 typedef struct ParticleEditSettings {
363         short flag;
364         short totrekey;
365         short totaddkey;
366         short brushtype;
367
368         ParticleBrushData brush[7]; /* 7 = PE_TOT_BRUSH */
369
370         float emitterdist;
371         int draw_timed;
372 } ParticleEditSettings;
373
374 typedef struct TransformOrientation {
375         struct TransformOrientation *next, *prev;
376         char name[36];
377         float mat[3][3];
378 } TransformOrientation;
379
380 typedef struct ToolSettings {
381         /* Subdivide Settings */
382         short cornertype;
383         short editbutflag;
384         /*Triangle to Quad conversion threshold*/
385         float jointrilimit;
386         /* Extrude Tools */
387         float degr; 
388         short step;
389         short turn; 
390         
391         float extr_offs; 
392         float doublimit;
393         
394         /* Primitive Settings */
395         /* UV Sphere */
396         short segments;
397         short rings;
398         
399         /* Cylinder - Tube - Circle */
400         short vertices;
401
402         /* UV Calculation */
403         short unwrapper;
404         float uvcalc_radius;
405         float uvcalc_cubesize;
406         short uvcalc_mapdir;
407         short uvcalc_mapalign;
408         short uvcalc_flag;
409
410         /* Auto-IK */
411         short autoik_chainlen;
412
413         /* Image Paint (8 byttse aligned please!) */
414         struct ImagePaintSettings imapaint;
415
416         /* Particle Editing */
417         struct ParticleEditSettings particle;
418         
419         /* Select Group Threshold */
420         float select_thresh;
421         
422         /* IPO-Editor */
423         float clean_thresh;
424         
425         /* Retopo */
426         char retopo_mode;
427         char retopo_paint_tool;
428         char line_div, ellipse_div, retopo_hotspot;
429
430         /* Multires */
431         char multires_subdiv_type;
432         
433         /* Skeleton generation */
434         short skgen_resolution;
435         float skgen_threshold_internal;
436         float skgen_threshold_external;
437         float skgen_length_ratio;
438         float skgen_length_limit;
439         float skgen_angle_limit;
440         float skgen_correlation_limit;
441         float skgen_symmetry_limit;
442         float skgen_retarget_angle_weight;
443         float skgen_retarget_length_weight;
444         float skgen_retarget_distance_weight;
445         short skgen_options;
446         char  skgen_postpro;
447         char  skgen_postpro_passes;
448         char  skgen_subdivisions[3];
449         char  skgen_multi_level;
450         
451         /* Skeleton Sketching */
452         struct Object *skgen_template;
453         char bone_sketching;
454         char bone_sketching_convert;
455         char skgen_subdivision_number;
456         char skgen_retarget_options;
457         char skgen_retarget_roll;
458         char skgen_side_string[8];
459         char skgen_num_string[8];
460         
461         /* Alt+RMB option */
462         char edge_mode;
463         char pad3[2];
464 } ToolSettings;
465
466 /* Used by all brushes to store their properties, which can be directly set
467    by the interface code. Note that not all properties are actually used by
468    all the brushes. */
469 typedef struct BrushData
470 {
471         short size;
472         char strength, dir; /* Not used for smooth brush */
473         char view;
474         char flag;
475         char pad[2];
476 } BrushData;
477
478 struct SculptSession;
479 typedef struct SculptData
480 {
481         /* Note! all pointers in this struct must be duplicated header_info.c's copy_scene function */
482         
483         /* Data stored only from entering sculptmode until exiting sculptmode */
484         struct SculptSession *session;
485
486         /* Pointers to all of sculptmodes's textures */
487         struct MTex *mtex[18];
488
489         /* Editable brush shape */
490         struct CurveMapping *cumap;
491
492         /* Settings for each brush */
493         BrushData drawbrush, smoothbrush, pinchbrush, inflatebrush, grabbrush, layerbrush, flattenbrush;
494
495         /* For rotating around a pivot point */
496         float pivot[3];
497
498         short brush_type;
499
500         /* For the Brush Shape */
501         short texact, texnr;
502         short spacing;
503         char texrept;
504         char texfade;
505         char texsep;
506
507         char averaging;
508         char flags;
509         
510         /* Control tablet input */
511         char tablet_size, tablet_strength;
512         
513         /* Symmetry is separate from the other BrushData because the same
514            settings are always used for all brush types */
515         char symm;
516
517         /* Added to store if the 'Rake' setting has been set */
518         char rake;
519         char axislock;
520         char pad[2];
521 } SculptData;
522
523 typedef struct Scene {
524         ID id;
525         struct Object *camera;
526         struct World *world;
527         
528         struct Scene *set;
529         struct Image *ima;
530         
531         ListBase base;
532         struct Base *basact;
533         
534         float cursor[3];
535         float twcent[3];                        /* center for transform widget */
536         float twmin[3], twmax[3];       /* boundbox of selection for transform widget */
537         unsigned int lay;
538         
539         /* editmode stuff */
540         float editbutsize;                      /* size of normals */
541         short selectmode;                                               /* for mesh only! */
542         short proportional, prop_mode;
543         short automerge, pad5, pad6;
544         
545         short autokey_mode;                                     /* mode for autokeying (defines in DNA_userdef_types.h */
546         
547         short use_nodes;
548         
549         struct bNodeTree *nodetree;     
550         
551         void *ed;                                                               /* sequence editor data is allocated here */
552         struct Radio *radio;
553         
554         struct GameFraming framing;
555
556         struct ToolSettings *toolsettings;
557
558         /* migrate or replace? depends on some internal things... */
559         /* no, is on the right place (ton) */
560         struct RenderData r;
561         struct AudioData audio; 
562         
563         ScriptLink scriptlink;
564         
565         ListBase markers;
566         ListBase transform_spaces;
567         
568         short jumpframe;
569         short snap_mode, snap_flag, snap_target;
570         
571         /* none of the dependancy graph  vars is mean to be saved */
572         struct  DagForest *theDag;
573         short dagisvalid, dagflags;
574         short pad4, recalc;                             /* recalc = counterpart of ob->recalc */
575
576         /* Sculptmode data */
577         struct SculptData sculptdata;
578
579         /* frame step. */
580         int frame_step;
581         int pad;
582 } Scene;
583
584
585 /* **************** RENDERDATA ********************* */
586
587 /* bufflag */
588 #define R_BACKBUF               1
589 #define R_BACKBUFANIM   2
590 #define R_FRONTBUF              4
591 #define R_FRONTBUFANIM  8
592
593 /* mode (int now) */
594 #define R_OSA                   0x0001
595 #define R_SHADOW                0x0002
596 #define R_GAMMA                 0x0004
597 #define R_ORTHO                 0x0008
598 #define R_ENVMAP                0x0010
599 #define R_EDGE                  0x0020
600 #define R_FIELDS                0x0040
601 #define R_FIELDSTILL    0x0080
602 #define R_RADIO                 0x0100
603 #define R_BORDER                0x0200
604 #define R_PANORAMA              0x0400
605 #define R_CROP                  0x0800
606 #define R_COSMO                 0x1000
607 #define R_ODDFIELD              0x2000
608 #define R_MBLUR                 0x4000
609                 /* unified was here */
610 #define R_RAYTRACE      0x10000
611                 /* R_GAUSS is obsolete, but used to retrieve setting from old files */
612 #define R_GAUSS         0x20000
613                 /* fbuf obsolete... */
614 #define R_FBUF                  0x40000
615                 /* threads obsolete... is there for old files, now use for autodetect threads */
616 #define R_THREADS               0x80000
617                 /* Use the same flag for autothreads */
618 #define R_FIXED_THREADS         0x80000 
619
620 #define R_SPEED                 0x100000
621 #define R_SSS                   0x200000
622 #define R_NO_OVERWRITE  0x400000 /* skip existing files */
623 #define R_TOUCH                 0x800000 /* touch files before rendering */
624 #define R_SIMPLIFY              0x1000000
625
626
627 /* filtertype */
628 #define R_FILTER_BOX    0
629 #define R_FILTER_TENT   1
630 #define R_FILTER_QUAD   2
631 #define R_FILTER_CUBIC  3
632 #define R_FILTER_CATROM 4
633 #define R_FILTER_GAUSS  5
634 #define R_FILTER_MITCH  6
635 #define R_FILTER_FAST_GAUSS     7 /* note, this is only used for nodes at the moment */
636
637 /* yafray: renderer flag (not only exclusive to yafray) */
638 #define R_INTERN        0
639 #define R_YAFRAY        1
640
641 /* scemode (int now) */
642 #define R_DOSEQ                         0x0001
643 #define R_BG_RENDER                     0x0002
644                 /* passepartout is camera option now, keep this for backward compatibility */
645 #define R_PASSEPARTOUT          0x0004
646 #define R_PREVIEWBUTS           0x0008
647 #define R_EXTENSION                     0x0010
648 #define R_NODE_PREVIEW          0x0020
649 #define R_DOCOMP                        0x0040
650 #define R_COMP_CROP                     0x0080
651 #define R_FREE_IMAGE            0x0100
652 #define R_SINGLE_LAYER          0x0200
653 #define R_EXR_TILE_FILE         0x0400
654 #define R_COMP_FREE                     0x0800
655 #define R_NO_IMAGE_LOAD         0x1000
656 #define R_NO_TEX                        0x2000
657 #define R_STAMP_INFO            0x4000
658 #define R_FULL_SAMPLE           0x8000
659 #define R_COMP_RERENDER         0x10000
660
661 /* r->stamp */
662 #define R_STAMP_TIME    0x0001
663 #define R_STAMP_FRAME   0x0002
664 #define R_STAMP_DATE    0x0004
665 #define R_STAMP_CAMERA  0x0008
666 #define R_STAMP_SCENE   0x0010
667 #define R_STAMP_NOTE    0x0020
668 #define R_STAMP_DRAW    0x0040 /* draw in the image */
669 #define R_STAMP_MARKER  0x0080
670 #define R_STAMP_FILENAME        0x0100
671 #define R_STAMP_SEQSTRIP        0x0200
672
673 /* alphamode */
674 #define R_ADDSKY                0
675 #define R_ALPHAPREMUL   1
676 #define R_ALPHAKEY              2
677
678 /* planes */
679 #define R_PLANES24              24
680 #define R_PLANES32              32
681 #define R_PLANESBW              8
682
683 /* imtype */
684 #define R_TARGA         0
685 #define R_IRIS          1
686 #define R_HAMX          2
687 #define R_FTYPE         3 /* ftype is nomore */
688 #define R_JPEG90        4
689 #define R_MOVIE         5
690 #define R_IRIZ          7
691 #define R_RAWTGA        14
692 #define R_AVIRAW        15
693 #define R_AVIJPEG       16
694 #define R_PNG           17
695 #define R_AVICODEC      18
696 #define R_QUICKTIME 19
697 #define R_BMP           20
698 #define R_RADHDR        21
699 #define R_TIFF          22
700 #define R_OPENEXR       23
701 #define R_FFMPEG        24
702 #define R_FRAMESERVER   25
703 #define R_CINEON                26
704 #define R_DPX                   27
705 #define R_MULTILAYER    28
706 #define R_DDS                   29
707 #define R_JP2                   30
708
709 /* subimtype, flag options for imtype */
710 #define R_OPENEXR_HALF  1
711 #define R_OPENEXR_ZBUF  2
712 #define R_PREVIEW_JPG   4
713 #define R_CINEON_LOG    8
714 #define R_TIFF_16BIT    16
715
716 #define R_JPEG2K_12BIT  32 /* Jpeg2000 */
717 #define R_JPEG2K_16BIT  64
718 #define R_JPEG2K_YCC    128 /* when disabled use RGB */
719 #define R_JPEG2K_CINE_PRESET    256
720 #define R_JPEG2K_CINE_48FPS             512
721
722
723 /* bake_mode: same as RE_BAKE_xxx defines */
724 /* bake_flag: */
725 #define R_BAKE_CLEAR            1
726 #define R_BAKE_OSA                      2
727 #define R_BAKE_TO_ACTIVE        4
728 #define R_BAKE_NORMALIZE        8
729
730 /* bake_normal_space */
731 #define R_BAKE_SPACE_CAMERA      0
732 #define R_BAKE_SPACE_WORLD       1
733 #define R_BAKE_SPACE_OBJECT      2
734 #define R_BAKE_SPACE_TANGENT 3
735
736 /* **************** SCENE ********************* */
737 #define RAD_PHASE_PATCHES       1
738 #define RAD_PHASE_FACES         2
739
740 /* base->flag is in DNA_object_types.h */
741
742 /* scene->snap_flag */
743 #define SCE_SNAP                                1
744 #define SCE_SNAP_ROTATE                 2
745 #define SCE_SNAP_PEEL_OBJECT    4
746 /* scene->snap_target */
747 #define SCE_SNAP_TARGET_CLOSEST 0
748 #define SCE_SNAP_TARGET_CENTER  1
749 #define SCE_SNAP_TARGET_MEDIAN  2
750 #define SCE_SNAP_TARGET_ACTIVE  3
751 /* scene->snap_mode */
752 #define SCE_SNAP_MODE_VERTEX    0
753 #define SCE_SNAP_MODE_EDGE              1
754 #define SCE_SNAP_MODE_FACE              2
755 #define SCE_SNAP_MODE_VOLUME    3
756
757 /* sce->selectmode */
758 #define SCE_SELECT_VERTEX       1 /* for mesh */
759 #define SCE_SELECT_EDGE         2
760 #define SCE_SELECT_FACE         4
761
762 /* sce->selectmode for particles */
763 #define SCE_SELECT_PATH         1
764 #define SCE_SELECT_POINT        2
765 #define SCE_SELECT_END          4
766
767 /* sce->recalc (now in use by previewrender) */
768 #define SCE_PRV_CHANGED         1
769
770 /* sce->prop_mode (proportional falloff) */
771 #define PROP_SMOOTH            0
772 #define PROP_SPHERE            1
773 #define PROP_ROOT              2
774 #define PROP_SHARP             3
775 #define PROP_LIN               4
776 #define PROP_CONST             5
777 #define PROP_RANDOM             6
778
779         /* return flag next_object function */
780 #define F_START                 0
781 #define F_SCENE                 1
782 #define F_SET                   2
783 #define F_DUPLI                 3
784
785 /* audio->flag */
786 #define AUDIO_MUTE              1
787 #define AUDIO_SYNC              2
788 #define AUDIO_SCRUB             4
789
790 #define FFMPEG_MULTIPLEX_AUDIO  1
791 #define FFMPEG_AUTOSPLIT_OUTPUT 2
792
793 /* Sculpt brush flags */
794 #define SCULPT_BRUSH_AIRBRUSH 1
795 #define SCULPT_BRUSH_ANCHORED 2
796 /* SculptData.flags */
797 #define SCULPT_INPUT_SMOOTH 1
798 #define SCULPT_DRAW_FAST    2
799 #define SCULPT_DRAW_BRUSH   4
800 /* SculptData.brushtype */
801 #define DRAW_BRUSH    1
802 #define SMOOTH_BRUSH  2
803 #define PINCH_BRUSH   3
804 #define INFLATE_BRUSH 4
805 #define GRAB_BRUSH    5
806 #define LAYER_BRUSH   6
807 #define FLATTEN_BRUSH 7
808 /* SculptData.texrept */
809 #define SCULPTREPT_DRAG 1
810 #define SCULPTREPT_TILE 2
811 #define SCULPTREPT_3D   3
812
813 #define SYMM_X 1
814 #define SYMM_Y 2
815 #define SYMM_Z 4
816
817 #define AXISLOCK_X 1
818 #define AXISLOCK_Y 2
819 #define AXISLOCK_Z 4
820
821 /* toolsettings->imagepaint_flag */
822 #define IMAGEPAINT_DRAWING                              1
823 #define IMAGEPAINT_DRAW_TOOL                    2
824 #define IMAGEPAINT_DRAW_TOOL_DRAWING    4
825
826 /* projection painting only */
827 #define IMAGEPAINT_PROJECT_DISABLE              8       /* Non projection 3D painting */
828 #define IMAGEPAINT_PROJECT_XRAY                 16
829 #define IMAGEPAINT_PROJECT_BACKFACE             32
830 #define IMAGEPAINT_PROJECT_FLAT                 64
831 #define IMAGEPAINT_PROJECT_LAYER_CLONE  128
832 #define IMAGEPAINT_PROJECT_LAYER_MASK   256
833 #define IMAGEPAINT_PROJECT_LAYER_MASK_INV       512
834
835 /* toolsettings->uvcalc_flag */
836 #define UVCALC_FILLHOLES                        1
837 #define UVCALC_NO_ASPECT_CORRECT        2       /* would call this UVCALC_ASPECT_CORRECT, except it should be default with old file */
838 #define UVCALC_TRANSFORM_CORRECT        4       /* adjust UV's while transforming to avoid distortion */
839
840 /* toolsettings->edge_mode */
841 #define EDGE_MODE_SELECT                                0
842 #define EDGE_MODE_TAG_SEAM                              1
843 #define EDGE_MODE_TAG_SHARP                             2
844 #define EDGE_MODE_TAG_CREASE                    3
845 #define EDGE_MODE_TAG_BEVEL                             4
846
847 /* toolsettings->particle flag */
848 #define PE_KEEP_LENGTHS                 1
849 #define PE_LOCK_FIRST                   2
850 #define PE_DEFLECT_EMITTER              4
851 #define PE_INTERPOLATE_ADDED    8
852 #define PE_SHOW_CHILD                   16
853 #define PE_SHOW_TIME                    32
854 #define PE_X_MIRROR                             64
855
856 /* toolsetting->particle brushtype */
857 #define PE_BRUSH_NONE           -1
858 #define PE_BRUSH_COMB           0
859 #define PE_BRUSH_CUT            1
860 #define PE_BRUSH_LENGTH         2
861 #define PE_BRUSH_PUFF           3
862 #define PE_BRUSH_ADD            4
863 #define PE_BRUSH_WEIGHT         5
864 #define PE_BRUSH_SMOOTH         6
865
866 /* this must equal ParticleEditSettings.brush array size */
867 #define PE_TOT_BRUSH            7  
868
869 /* toolsettings->retopo_mode */
870 #define RETOPO 1
871 #define RETOPO_PAINT 2
872
873 /* toolsettings->retopo_paint_tool */
874 #define RETOPO_PEN 1
875 #define RETOPO_LINE 2
876 #define RETOPO_ELLIPSE 4
877
878 /* toolsettings->skgen_options */
879 #define SKGEN_FILTER_INTERNAL   (1 << 0)
880 #define SKGEN_FILTER_EXTERNAL   (1 << 1)
881 #define SKGEN_SYMMETRY                  (1 << 2)
882 #define SKGEN_CUT_LENGTH                (1 << 3)
883 #define SKGEN_CUT_ANGLE                 (1 << 4)
884 #define SKGEN_CUT_CORRELATION   (1 << 5)
885 #define SKGEN_HARMONIC                  (1 << 6)
886 #define SKGEN_STICK_TO_EMBEDDING        (1 << 7)
887 #define SKGEN_ADAPTIVE_DISTANCE         (1 << 8)
888 #define SKGEN_FILTER_SMART              (1 << 9)
889 #define SKGEN_DISP_LENGTH               (1 << 10)
890 #define SKGEN_DISP_WEIGHT               (1 << 11)
891 #define SKGEN_DISP_ORIG                 (1 << 12)
892 #define SKGEN_DISP_EMBED                (1 << 13)
893 #define SKGEN_DISP_INDEX                (1 << 14)
894
895 #define SKGEN_SUB_LENGTH                0
896 #define SKGEN_SUB_ANGLE                 1
897 #define SKGEN_SUB_CORRELATION   2
898 #define SKGEN_SUB_TOTAL                 3
899
900 /* toolsettings->skgen_postpro */
901 #define SKGEN_SMOOTH                    0
902 #define SKGEN_AVERAGE                   1
903 #define SKGEN_SHARPEN                   2
904
905 /* toolsettings->bone_sketching */
906 #define BONE_SKETCHING                  1
907 #define BONE_SKETCHING_QUICK    2
908 #define BONE_SKETCHING_ADJUST   4
909
910 /* toolsettings->bone_sketching_convert */
911 #define SK_CONVERT_CUT_FIXED                    0
912 #define SK_CONVERT_CUT_LENGTH                   1
913 #define SK_CONVERT_CUT_ADAPTATIVE               2
914 #define SK_CONVERT_RETARGET                             3
915
916 /* toolsettings->skgen_retarget_options */
917 #define SK_RETARGET_AUTONAME                    1
918
919 /* toolsettings->skgen_retarget_roll */
920 #define SK_RETARGET_ROLL_VIEW                   1
921 #define SK_RETARGET_ROLL_JOINT                  2
922
923
924 #ifdef __cplusplus
925 }
926 #endif
927
928 #endif