Two bugfixes:
[blender.git] / source / blender / makesdna / DNA_scene_types.h
1 /**
2  * $Id$ 
3  *
4  * ***** BEGIN GPL/BL DUAL 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. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code is: all of this file.
27  *
28  * Contributor(s): none yet.
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  */
32 #ifndef DNA_SCENE_TYPES_H
33 #define DNA_SCENE_TYPES_H
34
35 #ifdef __cplusplus
36 extern "C" {
37 #endif
38
39 #include "DNA_vec_types.h"
40 #include "DNA_listBase.h"
41 #include "DNA_scriptlink_types.h"
42 #include "DNA_ID.h"
43 #include "DNA_scriptlink_types.h"
44
45 struct Radio;
46 struct Object;
47 struct World;
48 struct Scene;
49 struct Image;
50 struct Group;
51 struct bNodeTree;
52
53 typedef struct Base {
54         struct Base *next, *prev;
55         unsigned int lay, selcol;
56         int flag;
57         short sx, sy;
58         struct Object *object;
59 } Base;
60
61 typedef struct AviCodecData {
62         void                    *lpFormat;  /* save format */
63         void                    *lpParms;   /* compressor options */
64         unsigned int    cbFormat;           /* size of lpFormat buffer */
65         unsigned int    cbParms;            /* size of lpParms buffer */
66
67         unsigned int    fccType;            /* stream type, for consistency */
68         unsigned int    fccHandler;         /* compressor */
69         unsigned int    dwKeyFrameEvery;    /* keyframe rate */
70         unsigned int    dwQuality;          /* compress quality 0-10,000 */
71         unsigned int    dwBytesPerSecond;   /* bytes per second */
72         unsigned int    dwFlags;            /* flags... see below */
73         unsigned int    dwInterleaveEvery;  /* for non-video streams only */
74         unsigned int    pad;
75
76         char                    avicodecname[128];
77 } AviCodecData;
78
79 typedef struct QuicktimeCodecData {
80
81         void                    *cdParms;   /* codec/compressor options */
82         void                    *pad;       /* padding */
83
84         unsigned int    cdSize;             /* size of cdParms buffer */
85         unsigned int    pad2;               /* padding */
86
87         char                    qtcodecname[128];
88 } QuicktimeCodecData;
89
90 typedef struct FFMpegCodecData {
91         int type;
92         int codec;
93         int audio_codec;
94         int video_bitrate;
95         int audio_bitrate;
96         int gop_size;
97         int flags;
98
99         int rc_min_rate;
100         int rc_max_rate;
101         int rc_buffer_size;
102         int mux_packet_size;
103         int mux_rate;
104 } FFMpegCodecData;
105
106
107 typedef struct AudioData {
108         int mixrate;
109         float main;             /* Main mix in dB */
110         short flag;
111         short pad[3];
112 } AudioData;
113
114 typedef struct SceneRenderLayer {
115         struct SceneRenderLayer *next, *prev;
116         
117         char name[32];
118         
119         struct Material *mat_override;
120         struct Group *light_override;
121         
122         unsigned int lay;               /* scene->lay itself has priority over this */
123         unsigned int lay_zmask; /* has to be after lay, this is for Z-masking */
124         int layflag;
125         
126         int pad;
127         
128         int passflag;                   /* pass_xor has to be after passflag */
129         int pass_xor;
130 } SceneRenderLayer;
131
132 /* srl->layflag */
133 #define SCE_LAY_SOLID   1
134 #define SCE_LAY_ZTRA    2
135 #define SCE_LAY_HALO    4
136 #define SCE_LAY_EDGE    8
137 #define SCE_LAY_SKY             16
138 #define SCE_LAY_STRAND  32
139         /* flags between 32 and 0x8000 are set to 1 already, for future options */
140
141 #define SCE_LAY_ALL_Z   0x8000
142 #define SCE_LAY_XOR             0x10000
143 #define SCE_LAY_DISABLE 0x20000
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          * Adjustment factors for the aspect ratio in the x direction
204          */
205         short xasp;
206         /**
207          * Adjustment factors for the aspect ratio in the x direction
208          */
209         short yasp;
210         /**
211          * The number of part to use in the x direction
212          */
213         short xparts;
214         /**
215          * The number of part to use in the y direction
216          */
217         short yparts;
218         
219         short winpos, planes, imtype, subimtype;
220         
221         /** Mode bits:                                                           */
222         /* 0: Enable backbuffering for images                                    */
223         short bufflag;
224         short quality;
225         
226         /**
227          * Flags for render settings. Use bit-masking to access the settings.
228          */
229         short scemode;
230
231         /**
232          * Flags for render settings. Use bit-masking to access the settings.
233          */
234         int mode;
235
236         /* render engine, octree resolution */
237         short renderer, ocres, rpad[2];
238
239         /**
240          * What to do with the sky/background. Picks sky/premul/key
241          * blending for the background
242          */
243         short alphamode;
244
245         /**
246          * The number of samples to use per pixel.
247          */
248         short osa;
249
250         short frs_sec, edgeint;
251         
252         /* safety, border and display rect */
253         rctf safety, border;
254         rcti disprect;
255         
256         /* information on different layers to be rendered */
257         ListBase layers;
258         short actlay, pad;
259
260         float frs_sec_base;
261         
262         /**
263          * Value used to define filter size for all filter options  */
264         float gauss;
265         
266         /** post-production settings. Depricated, but here for upwards compat (initialized to 1) */      
267         float postmul, postgamma, posthue, postsat;      
268         
269         /* Dither noise intensity */
270         float dither_intensity;
271         
272         /* Bake Render options */
273         short bake_osa, bake_filter, bake_mode, bake_flag;
274         short bake_normal_space, bpad;
275         float bake_maxdist;
276         
277         /* yafray: global panel params. TODO: move elsewhere */
278         short GIquality, GIcache, GImethod, GIphotons, GIdirect;
279         short YF_AA, YFexportxml, YF_nobump, YF_clamprgb, yfpad1;
280         int GIdepth, GIcausdepth, GIpixelspersample;
281         int GIphotoncount, GImixphotons;
282         float GIphotonradius;
283         int YF_numprocs, YF_raydepth, YF_AApasses, YF_AAsamples;
284         float GIshadowquality, GIrefinement, GIpower, GIindirpower;
285         float YF_gamma, YF_exposure, YF_raybias, YF_AApixelsize, YF_AAthreshold;
286
287         /* paths to backbufffer, output, ftype */
288         char backbuf[160], pic[160];
289
290         /* stamps flags. */
291         int stamp;
292         short stamp_font_id, pad3; /* select one of blenders bitmap fonts */
293
294         /* stamp info user data. */
295         char stamp_udata[160];
296
297         /* foreground/background color. */
298         float fg_stamp[4];
299         float bg_stamp[4];
300 } RenderData;
301
302
303 typedef struct GameFraming {
304         float col[3];
305         char type, pad1, pad2, pad3;
306 } GameFraming;
307
308 #define SCE_GAMEFRAMING_BARS   0
309 #define SCE_GAMEFRAMING_EXTEND 1
310 #define SCE_GAMEFRAMING_SCALE  2
311
312 typedef struct TimeMarker {
313         struct TimeMarker *next, *prev;
314         int frame;
315         char name[64];
316         unsigned int flag;
317 } TimeMarker;
318
319 typedef struct ImagePaintSettings {
320         struct Brush *brush;
321         short flag, tool;
322         int pad3;
323 } ImagePaintSettings;
324
325 typedef struct ParticleBrushData {
326         short size, strength;   /* commong settings */
327         short step, invert;             /* for specific brushes only */
328 } ParticleBrushData;
329
330 typedef struct ParticleEditSettings {
331         short flag;
332         short totrekey;
333         short totaddkey;
334         short brushtype;
335
336         ParticleBrushData brush[7]; /* 7 = PE_TOT_BRUSH */
337
338         float emitterdist;
339         int draw_timed;
340 } ParticleEditSettings;
341
342 typedef struct TransformOrientation {
343         struct TransformOrientation *next, *prev;
344         char name[36];
345         float mat[3][3];
346 } TransformOrientation;
347
348 typedef struct ToolSettings {
349         /* Subdivide Settings */
350         short cornertype;
351         short editbutflag;
352         /*Triangle to Quad conversion threshold*/
353         float jointrilimit;
354         /* Extrude Tools */
355         float degr; 
356         short step;
357         short turn; 
358         
359         float extr_offs; 
360         float doublimit;
361         
362         /* Primitive Settings */
363         /* UV Sphere */
364         short segments;
365         short rings;
366         
367         /* Cylinder - Tube - Circle */
368         short vertices;
369
370         /* UV Calculation */
371         short unwrapper;
372         float uvcalc_radius;
373         float uvcalc_cubesize;
374         short uvcalc_mapdir;
375         short uvcalc_mapalign;
376         short uvcalc_flag;
377
378         /* Auto-IK */
379         short autoik_chainlen;
380
381         /* Image Paint (8 byttse aligned please!) */
382         struct ImagePaintSettings imapaint;
383
384         /* Particle Editing */
385         struct ParticleEditSettings particle;
386         
387         /* Select Group Threshold */
388         float select_thresh;
389         
390         /* IPO-Editor */
391         float clean_thresh;
392         
393         /* Retopo */
394         char retopo_mode;
395         char retopo_paint_tool;
396         char line_div, ellipse_div, retopo_hotspot;
397
398         /* Multires */
399         char multires_subdiv_type;
400         
401         /* Skeleton generation */
402         short skgen_resolution;
403         float skgen_threshold_internal;
404         float skgen_threshold_external;
405         float skgen_length_ratio;
406         float skgen_length_limit;
407         float skgen_angle_limit;
408         float skgen_correlation_limit;
409         float skgen_symmetry_limit;
410         short skgen_options;
411         char  skgen_postpro;
412         char  skgen_postpro_passes;
413         char  skgen_subdivisions[3];
414         
415         char pad3[5];
416 } ToolSettings;
417
418 /* Used by all brushes to store their properties, which can be directly set
419    by the interface code. Note that not all properties are actually used by
420    all the brushes. */
421 typedef struct BrushData
422 {
423         short size;
424         char strength, dir; /* Not used for smooth brush */
425         char airbrush;
426         char view;
427         char pad[2];
428 } BrushData;
429
430 struct SculptSession;
431 typedef struct SculptData
432 {
433         /* Data stored only from entering sculptmode until exiting sculptmode */
434         struct SculptSession *session;
435
436         /* Pointers to all of sculptmodes's textures */
437         struct MTex *mtex[10];
438
439         /* Editable brush shape */
440         struct CurveMapping *cumap;
441
442         /* Settings for each brush */
443         BrushData drawbrush, smoothbrush, pinchbrush, inflatebrush, grabbrush, layerbrush, flattenbrush;
444         short brush_type;
445
446         /* For the Brush Shape */
447         short texact, texnr;
448         short spacing;
449         char texrept;
450         char texfade;
451         char texsep;
452
453         char averaging;
454         char flags;
455         
456         /* Control tablet input */
457         char tablet_size, tablet_strength;
458         
459         /* Symmetry is separate from the other BrushData because the same
460            settings are always used for all brush types */
461         char symm;
462         
463         /* Added to store if the 'Rake' setting has been set */
464         char rake;
465         char pad[7];
466 } SculptData;
467
468 typedef struct Scene {
469         ID id;
470         struct Object *camera;
471         struct World *world;
472         
473         struct Scene *set;
474         struct Image *ima;
475         
476         ListBase base;
477         struct Base *basact;
478         
479         float cursor[3];
480         float twcent[3];                        /* center for transform widget */
481         float twmin[3], twmax[3];       /* boundbox of selection for transform widget */
482         unsigned int lay;
483         
484         /* editmode stuff */
485         float editbutsize;                      /* size of normals */
486         short selectmode;                                               /* for mesh only! */
487         short proportional, prop_mode;
488         short automerge, pad5, pad6, pad7;
489         
490         short use_nodes;
491         
492         struct bNodeTree *nodetree;     
493         
494         void *ed;                                                               /* sequence editor data is allocated here */
495         struct Radio *radio;
496         
497         struct GameFraming framing;
498
499         struct ToolSettings *toolsettings;
500
501         /* migrate or replace? depends on some internal things... */
502         /* no, is on the right place (ton) */
503         struct RenderData r;
504         struct AudioData audio; 
505         
506         ScriptLink scriptlink;
507         
508         ListBase markers;
509         ListBase transform_spaces;
510         
511         short jumpframe, pad1;
512         short snap_flag, snap_target;
513         
514         /* none of the dependancy graph  vars is mean to be saved */
515         struct  DagForest *theDag;
516         short dagisvalid, dagflags;
517         short pad4, recalc;                             /* recalc = counterpart of ob->recalc */
518
519         /* Sculptmode data */
520         struct SculptData sculptdata;
521 } Scene;
522
523
524 /* **************** RENDERDATA ********************* */
525
526 /* bufflag */
527 #define R_BACKBUF               1
528 #define R_BACKBUFANIM   2
529 #define R_FRONTBUF              4
530 #define R_FRONTBUFANIM  8
531
532 /* mode (int now) */
533 #define R_OSA                   0x0001
534 #define R_SHADOW                0x0002
535 #define R_GAMMA                 0x0004
536 #define R_ORTHO                 0x0008
537 #define R_ENVMAP                0x0010
538 #define R_EDGE                  0x0020
539 #define R_FIELDS                0x0040
540 #define R_FIELDSTILL    0x0080
541 #define R_RADIO                 0x0100
542 #define R_BORDER                0x0200
543 #define R_PANORAMA              0x0400
544 #define R_CROP                  0x0800
545 #define R_COSMO                 0x1000
546 #define R_ODDFIELD              0x2000
547 #define R_MBLUR                 0x4000
548                 /* unified was here */
549 #define R_RAYTRACE      0x10000
550                 /* R_GAUSS is obsolete, but used to retrieve setting from old files */
551 #define R_GAUSS         0x20000
552                 /* fbuf obsolete... */
553 #define R_FBUF                  0x40000
554                 /* threads obsolete... is there for old files */
555 #define R_THREADS               0x80000
556 #define R_SPEED                 0x100000
557 #define R_SSS                   0x200000
558 #define R_NO_OVERWRITE  0x400000 /* skip existing files */
559 #define R_TOUCH                 0x800000 /* touch files before rendering */
560
561
562 /* filtertype */
563 #define R_FILTER_BOX    0
564 #define R_FILTER_TENT   1
565 #define R_FILTER_QUAD   2
566 #define R_FILTER_CUBIC  3
567 #define R_FILTER_CATROM 4
568 #define R_FILTER_GAUSS  5
569 #define R_FILTER_MITCH  6
570 #define R_FILTER_FAST_GAUSS     7 /* note, this is only used for nodes at the moment */
571
572 /* yafray: renderer flag (not only exclusive to yafray) */
573 #define R_INTERN        0
574 #define R_YAFRAY        1
575
576 /* scemode */
577 #define R_DOSEQ                         0x0001
578 #define R_BG_RENDER                     0x0002
579                 /* passepartout is camera option now, keep this for backward compatibility */
580 #define R_PASSEPARTOUT          0x0004
581 #define R_PREVIEWBUTS           0x0008
582 #define R_EXTENSION                     0x0010
583 #define R_NODE_PREVIEW          0x0020
584 #define R_DOCOMP                        0x0040
585 #define R_COMP_CROP                     0x0080
586 #define R_FREE_IMAGE            0x0100
587 #define R_SINGLE_LAYER          0x0200
588 #define R_EXR_TILE_FILE         0x0400
589 #define R_COMP_FREE                     0x0800
590 #define R_NO_IMAGE_LOAD         0x1000
591 #define R_NO_TEX                0x2000
592 #define R_STAMP_INFO            0x4000
593
594 /* r->stamp */
595 #define R_STAMP_TIME    0x0001
596 #define R_STAMP_FRAME   0x0002
597 #define R_STAMP_DATE    0x0004
598 #define R_STAMP_CAMERA  0x0008
599 #define R_STAMP_SCENE   0x0010
600 #define R_STAMP_NOTE    0x0020
601 #define R_STAMP_DRAW    0x0040 /* draw in the image */
602 #define R_STAMP_MARKER  0x0080
603 #define R_STAMP_FILENAME        0x0100
604 #define R_STAMP_SEQSTRIP        0x0200
605
606 /* alphamode */
607 #define R_ADDSKY                0
608 #define R_ALPHAPREMUL   1
609 #define R_ALPHAKEY              2
610
611 /* planes */
612 #define R_PLANES24              24
613 #define R_PLANES32              32
614 #define R_PLANESBW              8
615
616 /* imtype */
617 #define R_TARGA         0
618 #define R_IRIS          1
619 #define R_HAMX          2
620 #define R_FTYPE         3 /* ftype is nomore */
621 #define R_JPEG90        4
622 #define R_MOVIE         5
623 #define R_IRIZ          7
624 #define R_RAWTGA        14
625 #define R_AVIRAW        15
626 #define R_AVIJPEG       16
627 #define R_PNG           17
628 #define R_AVICODEC      18
629 #define R_QUICKTIME 19
630 #define R_BMP           20
631 #define R_RADHDR        21
632 #define R_TIFF          22
633 #define R_OPENEXR       23
634 #define R_FFMPEG        24
635 #define R_FRAMESERVER   25
636 #define R_CINEON                26
637 #define R_DPX                   27
638 #define R_MULTILAYER    28
639 #define R_DDS                   29
640
641 /* subimtype, flag options for imtype */
642 #define R_OPENEXR_HALF  1
643 #define R_OPENEXR_ZBUF  2
644 #define R_PREVIEW_JPG   4
645
646 /* bake_mode: same as RE_BAKE_xxx defines */
647 /* bake_flag: */
648 #define R_BAKE_CLEAR            1
649 #define R_BAKE_OSA                      2
650 #define R_BAKE_TO_ACTIVE        4
651
652 /* bake_normal_space */
653 #define R_BAKE_SPACE_CAMERA      0
654 #define R_BAKE_SPACE_WORLD       1
655 #define R_BAKE_SPACE_OBJECT      2
656 #define R_BAKE_SPACE_TANGENT 3
657
658 /* **************** SCENE ********************* */
659 #define RAD_PHASE_PATCHES       1
660 #define RAD_PHASE_FACES         2
661
662 /* base->flag is in DNA_object_types.h */
663
664 /* scene->snap_flag */
665 #define SCE_SNAP                                1
666 /* scene->snap_target */
667 #define SCE_SNAP_TARGET_CLOSEST 0
668 #define SCE_SNAP_TARGET_CENTER  1
669 #define SCE_SNAP_TARGET_MEDIAN  2
670 #define SCE_SNAP_TARGET_ACTIVE  3
671
672 /* sce->selectmode */
673 #define SCE_SELECT_VERTEX       1 /* for mesh */
674 #define SCE_SELECT_EDGE         2
675 #define SCE_SELECT_FACE         4
676
677 /* sce->selectmode for particles */
678 #define SCE_SELECT_PATH         1
679 #define SCE_SELECT_POINT        2
680 #define SCE_SELECT_END          4
681
682 /* sce->recalc (now in use by previewrender) */
683 #define SCE_PRV_CHANGED         1
684
685 /* sce->prop_mode (proportional falloff) */
686 #define PROP_SMOOTH            0
687 #define PROP_SPHERE            1
688 #define PROP_ROOT              2
689 #define PROP_SHARP             3
690 #define PROP_LIN               4
691 #define PROP_CONST             5
692 #define PROP_RANDOM             6
693
694         /* return flag next_object function */
695 #define F_START                 0
696 #define F_SCENE                 1
697 #define F_SET                   2
698 #define F_DUPLI                 3
699
700 /* audio->flag */
701 #define AUDIO_MUTE              1
702 #define AUDIO_SYNC              2
703 #define AUDIO_SCRUB             4
704
705 #define FFMPEG_MULTIPLEX_AUDIO  1
706 #define FFMPEG_AUTOSPLIT_OUTPUT 2
707
708 /* SculptData.flags */
709 #define SCULPT_INPUT_SMOOTH 1
710 #define SCULPT_DRAW_FAST    2
711 #define SCULPT_DRAW_BRUSH   4
712 /* SculptData.brushtype */
713 #define DRAW_BRUSH    1
714 #define SMOOTH_BRUSH  2
715 #define PINCH_BRUSH   3
716 #define INFLATE_BRUSH 4
717 #define GRAB_BRUSH    5
718 #define LAYER_BRUSH   6
719 #define FLATTEN_BRUSH 7
720 /* SculptData.texrept */
721 #define SCULPTREPT_DRAG 1
722 #define SCULPTREPT_TILE 2
723 #define SCULPTREPT_3D   3
724
725 #define SYMM_X 1
726 #define SYMM_Y 2
727 #define SYMM_Z 4
728
729 /* toolsettings->imagepaint_flag */
730 #define IMAGEPAINT_DRAWING                              1
731 #define IMAGEPAINT_DRAW_TOOL                    2
732 #define IMAGEPAINT_DRAW_TOOL_DRAWING    4
733
734 /* toolsettings->particle flag */
735 #define PE_KEEP_LENGTHS                 1
736 #define PE_LOCK_FIRST                   2
737 #define PE_DEFLECT_EMITTER              4
738 #define PE_INTERPOLATE_ADDED    8
739 #define PE_SHOW_CHILD                   16
740 #define PE_SHOW_TIME                    32
741 #define PE_X_MIRROR                             64
742
743 /* toolsetting->particle brushtype */
744 #define PE_BRUSH_NONE           -1
745 #define PE_BRUSH_COMB           0
746 #define PE_BRUSH_CUT            1
747 #define PE_BRUSH_LENGTH         2
748 #define PE_BRUSH_PUFF           3
749 #define PE_BRUSH_ADD            4
750 #define PE_BRUSH_WEIGHT         5
751 #define PE_BRUSH_SMOOTH         6
752
753 /* this must equal ParticleEditSettings.brush array size */
754 #define PE_TOT_BRUSH            7  
755
756 /* toolsettings->retopo_mode */
757 #define RETOPO 1
758 #define RETOPO_PAINT 2
759
760 /* toolsettings->retopo_paint_tool */
761 #define RETOPO_PEN 1
762 #define RETOPO_LINE 2
763 #define RETOPO_ELLIPSE 4
764
765 /* toolsettings->skgen_options */
766 #define SKGEN_FILTER_INTERNAL   1
767 #define SKGEN_FILTER_EXTERNAL   2
768 #define SKGEN_SYMMETRY                  4
769 #define SKGEN_CUT_LENGTH                8
770 #define SKGEN_CUT_ANGLE                 16
771 #define SKGEN_CUT_CORRELATION   32
772
773 #define SKGEN_SUB_LENGTH                0
774 #define SKGEN_SUB_ANGLE                 1
775 #define SKGEN_SUB_CORRELATION   2
776 #define SKGEN_SUB_TOTAL                 3
777
778 /* toolsettings->skgen_postpro */
779 #define SKGEN_SMOOTH                    0
780 #define SKGEN_AVERAGE                   1
781 #define SKGEN_SHARPEN                   2
782
783 #ifdef __cplusplus
784 }
785 #endif
786
787 #endif