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