Applied Ian Calvert's patch (#7801) to add a "rake" setting to sculpt mode; when...
[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         int layflag;
124         int passflag;                   /* pass_xor has to be after passflag */
125         int pass_xor;
126 } SceneRenderLayer;
127
128 /* srl->layflag */
129 #define SCE_LAY_SOLID   1
130 #define SCE_LAY_ZTRA    2
131 #define SCE_LAY_HALO    4
132 #define SCE_LAY_EDGE    8
133 #define SCE_LAY_SKY             16
134 #define SCE_LAY_STRAND  32
135         /* flags between 32 and 0x8000 are set to 1 already, for future options */
136
137 #define SCE_LAY_ALL_Z   0x8000
138 #define SCE_LAY_XOR             0x10000
139 #define SCE_LAY_DISABLE 0x20000
140
141 /* srl->passflag */
142 #define SCE_PASS_COMBINED       1
143 #define SCE_PASS_Z                      2
144 #define SCE_PASS_RGBA           4
145 #define SCE_PASS_DIFFUSE        8
146 #define SCE_PASS_SPEC           16
147 #define SCE_PASS_SHADOW         32
148 #define SCE_PASS_AO                     64
149 #define SCE_PASS_REFLECT        128
150 #define SCE_PASS_NORMAL         256
151 #define SCE_PASS_VECTOR         512
152 #define SCE_PASS_REFRACT        1024
153 #define SCE_PASS_INDEXOB        2048
154 #define SCE_PASS_UV                     4096
155 #define SCE_PASS_RADIO          8192
156 /* note, srl->passflag is treestore element 'nr' in outliner, short still... */
157
158
159 typedef struct RenderData {
160         
161         struct AviCodecData *avicodecdata;
162         struct QuicktimeCodecData *qtcodecdata;
163         struct FFMpegCodecData ffcodecdata;
164
165         int cfra, sfra, efra;   /* frames as in 'images' */
166         int psfra, pefra;               /* start+end frames of preview range */
167
168         int images, framapto;
169         short flag, threads;
170
171         float ctime;                    /* use for calcutions */
172         float framelen, blurfac;
173
174         /** For UR edge rendering: give the edges this color */
175         float edgeR, edgeG, edgeB;
176         
177         short fullscreen, xplay, yplay, freqplay;       /* standalone player */
178         short depth, attrib, rt1, rt2;                  /* standalone player */
179
180         short stereomode;       /* standalone player stereo settings */
181         
182         short dimensionspreset;         /* for the dimensions presets menu */
183         
184         short filtertype;       /* filter is box, tent, gauss, mitch, etc */
185
186         short size, maximsize;  /* size in %, max in Kb */
187         /* from buttons: */
188         /**
189          * The desired number of pixels in the x direction
190          */
191         short xsch;
192         /**
193          * The desired number of pixels in the y direction
194          */
195         short ysch;
196         /**
197          * Adjustment factors for the aspect ratio in the x direction
198          */
199         short xasp;
200         /**
201          * Adjustment factors for the aspect ratio in the x direction
202          */
203         short yasp;
204         /**
205          * The number of part to use in the x direction
206          */
207         short xparts;
208         /**
209          * The number of part to use in the y direction
210          */
211         short yparts;
212         
213         short winpos, planes, imtype, subimtype;
214         
215         /** Mode bits:                                                           */
216         /* 0: Enable backbuffering for images                                    */
217         short bufflag;
218         short quality;
219         
220         /**
221          * Flags for render settings. Use bit-masking to access the settings.
222          */
223         short 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, rpad[2];
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         float frs_sec_base;
255         
256         /**
257          * Value used to define filter size for all filter options  */
258         float gauss;
259         
260         /** post-production settings. Depricated, but here for upwards compat (initialized to 1) */      
261         float postmul, postgamma, posthue, postsat;      
262         
263         /* Dither noise intensity */
264         float dither_intensity;
265         
266         /* Bake Render options */
267         short bake_osa, bake_filter, bake_mode, bake_flag;
268         short bake_normal_space, bpad;
269         float bake_maxdist;
270         
271         /* yafray: global panel params. TODO: move elsewhere */
272         short GIquality, GIcache, GImethod, GIphotons, GIdirect;
273         short YF_AA, YFexportxml, YF_nobump, YF_clamprgb, yfpad1;
274         int GIdepth, GIcausdepth, GIpixelspersample;
275         int GIphotoncount, GImixphotons;
276         float GIphotonradius;
277         int YF_numprocs, YF_raydepth, YF_AApasses, YF_AAsamples;
278         float GIshadowquality, GIrefinement, GIpower, GIindirpower;
279         float YF_gamma, YF_exposure, YF_raybias, YF_AApixelsize, YF_AAthreshold;
280
281         /* paths to backbufffer, output, ftype */
282         char backbuf[160], pic[160], ftype[160];
283
284         /* stamps flags. */
285         int stamp;
286         short stamp_font_id, pad3; /* select one of blenders bitmap fonts */
287
288         /* stamp info user data. */
289         char stamp_udata[160];
290
291         /* foreground/background color. */
292         float fg_stamp[4];
293         float bg_stamp[4];
294 } RenderData;
295
296
297 typedef struct GameFraming {
298         float col[3];
299         char type, pad1, pad2, pad3;
300 } GameFraming;
301
302 #define SCE_GAMEFRAMING_BARS   0
303 #define SCE_GAMEFRAMING_EXTEND 1
304 #define SCE_GAMEFRAMING_SCALE  2
305
306 typedef struct TimeMarker {
307         struct TimeMarker *next, *prev;
308         int frame;
309         char name[64];
310         unsigned int flag;
311 } TimeMarker;
312
313 typedef struct ImagePaintSettings {
314         struct Brush *brush;
315         short flag, tool;
316         int pad3;
317 } ImagePaintSettings;
318
319 typedef struct ParticleBrushData {
320         short size, strength;   /* commong settings */
321         short step, invert;             /* for specific brushes only */
322 } ParticleBrushData;
323
324 typedef struct ParticleEditSettings {
325         short flag;
326         short totrekey;
327         short totaddkey;
328         short brushtype;
329
330         ParticleBrushData brush[7]; /* 7 = PE_TOT_BRUSH */
331
332         float emitterdist;
333         int draw_timed;
334 } ParticleEditSettings;
335
336 typedef struct ToolSettings {
337         /* Subdivide Settings */
338         short cornertype;
339         short editbutflag;
340         /*Triangle to Quad conversion threshold*/
341         float jointrilimit;
342         /* Extrude Tools */
343         float degr; 
344         short step;
345         short turn; 
346         
347         float extr_offs; 
348         float doublimit;
349         
350         /* Primitive Settings */
351         /* UV Sphere */
352         short segments;
353         short rings;
354         
355         /* Cylinder - Tube - Circle */
356         short vertices;
357
358         /* UV Calculation */
359         short unwrapper;
360         float uvcalc_radius;
361         float uvcalc_cubesize;
362         short uvcalc_mapdir;
363         short uvcalc_mapalign;
364         short uvcalc_flag;
365
366         /* Auto-IK */
367         short autoik_chainlen;
368
369         /* Image Paint (8 byte aligned please!) */
370         struct ImagePaintSettings imapaint;
371
372         /* Particle Editing */
373         struct ParticleEditSettings particle;
374         
375         /* Select Group Threshold */
376         float select_thresh;
377         
378         /* IPO-Editor */
379         float clean_thresh;
380         
381         /* Retopo */
382         char retopo_mode;
383         char retopo_paint_tool;
384         char line_div, ellipse_div, retopo_hotspot;
385
386         /* Multires */
387         char multires_subdiv_type;
388         
389         /* Skeleton generation */
390         short skgen_resolution;
391         float skgen_threshold_internal;
392         float skgen_threshold_external;
393         float skgen_length_ratio;
394         float skgen_length_limit;
395         float skgen_angle_limit;
396         float skgen_correlation_limit;
397         float skgen_symmetry_limit;
398         short skgen_options;
399         char  skgen_postpro;
400         char  skgen_postpro_passes;
401         char  skgen_subdivisions[3];
402         
403         char pad3[5];
404 } ToolSettings;
405
406 /* Used by all brushes to store their properties, which can be directly set
407    by the interface code. Note that not all properties are actually used by
408    all the brushes. */
409 typedef struct BrushData
410 {
411         short size;
412         char strength, dir; /* Not used for smooth brush */
413         char airbrush;
414         char view;
415         char pad[2];
416 } BrushData;
417
418 struct SculptSession;
419 typedef struct SculptData
420 {
421         /* Data stored only from entering sculptmode until exiting sculptmode */
422         struct SculptSession *session;
423
424         /* Pointers to all of sculptmodes's textures */
425         struct MTex *mtex[10];
426
427         /* Settings for each brush */
428         BrushData drawbrush, smoothbrush, pinchbrush, inflatebrush, grabbrush, layerbrush, flattenbrush;
429         short brush_type;
430
431         /* For the Brush Shape */
432         short texact, texnr;
433         short spacing;
434         char texrept;
435         char texfade;
436         char texsep;
437
438         char averaging;
439         char flags;
440         
441         /* Control tablet input */
442         char tablet_size, tablet_strength;
443         
444         /* Symmetry is separate from the other BrushData because the same
445            settings are always used for all brush types */
446         char symm;
447         
448         /* Added to store if the 'Rake' setting has been set */
449         char rake;
450         char pad[7];
451 } SculptData;
452
453 typedef struct Scene {
454         ID id;
455         struct Object *camera;
456         struct World *world;
457         
458         struct Scene *set;
459         struct Image *ima;
460         
461         ListBase base;
462         struct Base *basact;
463         
464         float cursor[3];
465         float twcent[3];                        /* center for transform widget */
466         float twmin[3], twmax[3];       /* boundbox of selection for transform widget */
467         unsigned int lay;
468         
469         /* editmode stuff */
470         float editbutsize;                      /* size of normals */
471         short selectmode;                                               /* for mesh only! */
472         short proportional, prop_mode;
473         short automerge, pad5, pad6, pad7;
474         
475         short use_nodes;
476         
477         struct bNodeTree *nodetree;     
478         
479         void *ed;                                                               /* sequence editor data is allocated here */
480         struct Radio *radio;
481         
482         struct GameFraming framing;
483
484         struct ToolSettings *toolsettings;
485
486         /* migrate or replace? depends on some internal things... */
487         /* no, is on the right place (ton) */
488         struct RenderData r;
489         struct AudioData audio; 
490         
491         ScriptLink scriptlink;
492         
493         ListBase markers;
494         
495         short jumpframe, pad1;
496         short snap_flag, snap_target;
497         
498         /* none of the dependancy graph  vars is mean to be saved */
499         struct  DagForest *theDag;
500         short dagisvalid, dagflags;
501         short pad4, recalc;                             /* recalc = counterpart of ob->recalc */
502
503         /* Sculptmode data */
504         struct SculptData sculptdata;
505 } Scene;
506
507
508 /* **************** RENDERDATA ********************* */
509
510 /* bufflag */
511 #define R_BACKBUF               1
512 #define R_BACKBUFANIM   2
513 #define R_FRONTBUF              4
514 #define R_FRONTBUFANIM  8
515
516 /* mode (int now) */
517 #define R_OSA                   0x0001
518 #define R_SHADOW                0x0002
519 #define R_GAMMA                 0x0004
520 #define R_ORTHO                 0x0008
521 #define R_ENVMAP                0x0010
522 #define R_EDGE                  0x0020
523 #define R_FIELDS                0x0040
524 #define R_FIELDSTILL    0x0080
525 #define R_RADIO                 0x0100
526 #define R_BORDER                0x0200
527 #define R_PANORAMA              0x0400
528 #define R_CROP                  0x0800
529 #define R_COSMO                 0x1000
530 #define R_ODDFIELD              0x2000
531 #define R_MBLUR                 0x4000
532                 /* unified was here */
533 #define R_RAYTRACE      0x10000
534                 /* R_GAUSS is obsolete, but used to retrieve setting from old files */
535 #define R_GAUSS         0x20000
536                 /* fbuf obsolete... */
537 #define R_FBUF                  0x40000
538                 /* threads obsolete... is there for old files */
539 #define R_THREADS               0x80000
540 #define R_SPEED                 0x100000
541 #define R_SSS                   0x200000
542
543 /* filtertype */
544 #define R_FILTER_BOX    0
545 #define R_FILTER_TENT   1
546 #define R_FILTER_QUAD   2
547 #define R_FILTER_CUBIC  3
548 #define R_FILTER_CATROM 4
549 #define R_FILTER_GAUSS  5
550 #define R_FILTER_MITCH  6
551 #define R_FILTER_FAST_GAUSS     7 /* note, this is only used for nodes at the moment */
552
553 /* yafray: renderer flag (not only exclusive to yafray) */
554 #define R_INTERN        0
555 #define R_YAFRAY        1
556
557 /* scemode */
558 #define R_DOSEQ                         0x0001
559 #define R_BG_RENDER                     0x0002
560                 /* passepartout is camera option now, keep this for backward compatibility */
561 #define R_PASSEPARTOUT          0x0004
562 #define R_PREVIEWBUTS           0x0008
563 #define R_EXTENSION                     0x0010
564 #define R_NODE_PREVIEW          0x0020
565 #define R_DOCOMP                        0x0040
566 #define R_COMP_CROP                     0x0080
567 #define R_FREE_IMAGE            0x0100
568 #define R_SINGLE_LAYER          0x0200
569 #define R_EXR_TILE_FILE         0x0400
570 #define R_COMP_FREE                     0x0800
571 #define R_NO_IMAGE_LOAD         0x1000
572 #define R_NO_TEX                0x2000
573 #define R_STAMP_INFO            0x4000
574
575 /* r->stamp */
576 #define R_STAMP_TIME    0x0001
577 #define R_STAMP_FRAME   0x0002
578 #define R_STAMP_DATE    0x0004
579 #define R_STAMP_CAMERA  0x0008
580 #define R_STAMP_SCENE   0x0010
581 #define R_STAMP_NOTE    0x0020
582 #define R_STAMP_DRAW    0x0040 /* draw in the image */
583 #define R_STAMP_MARKER  0x0080
584 #define R_STAMP_FILENAME        0x0100
585 #define R_STAMP_SEQSTRIP        0x0200
586
587 /* alphamode */
588 #define R_ADDSKY                0
589 #define R_ALPHAPREMUL   1
590 #define R_ALPHAKEY              2
591
592 /* planes */
593 #define R_PLANES24              24
594 #define R_PLANES32              32
595 #define R_PLANESBW              8
596
597 /* imtype */
598 #define R_TARGA         0
599 #define R_IRIS          1
600 #define R_HAMX          2
601 #define R_FTYPE         3
602 #define R_JPEG90        4
603 #define R_MOVIE         5
604 #define R_IRIZ          7
605 #define R_RAWTGA        14
606 #define R_AVIRAW        15
607 #define R_AVIJPEG       16
608 #define R_PNG           17
609 #define R_AVICODEC      18
610 #define R_QUICKTIME 19
611 #define R_BMP           20
612 #define R_RADHDR        21
613 #define R_TIFF          22
614 #define R_OPENEXR       23
615 #define R_FFMPEG        24
616 #define R_FRAMESERVER   25
617 #define R_CINEON                26
618 #define R_DPX                   27
619 #define R_MULTILAYER    28
620 #define R_DDS                   29
621
622 /* subimtype, flag options for imtype */
623 #define R_OPENEXR_HALF  1
624 #define R_OPENEXR_ZBUF  2
625 #define R_PREVIEW_JPG   4
626
627 /* bake_mode: same as RE_BAKE_xxx defines */
628 /* bake_flag: */
629 #define R_BAKE_CLEAR            1
630 #define R_BAKE_OSA                      2
631 #define R_BAKE_TO_ACTIVE        4
632
633 /* bake_normal_space */
634 #define R_BAKE_SPACE_CAMERA      0
635 #define R_BAKE_SPACE_WORLD       1
636 #define R_BAKE_SPACE_OBJECT      2
637 #define R_BAKE_SPACE_TANGENT 3
638
639 /* **************** SCENE ********************* */
640 #define RAD_PHASE_PATCHES       1
641 #define RAD_PHASE_FACES         2
642
643 /* base->flag is in DNA_object_types.h */
644
645 /* scene->snap_flag */
646 #define SCE_SNAP                                1
647 /* scene->snap_target */
648 #define SCE_SNAP_TARGET_CLOSEST 0
649 #define SCE_SNAP_TARGET_CENTER  1
650 #define SCE_SNAP_TARGET_MEDIAN  2
651
652 /* sce->selectmode */
653 #define SCE_SELECT_VERTEX       1 /* for mesh */
654 #define SCE_SELECT_EDGE         2
655 #define SCE_SELECT_FACE         4
656
657 /* sce->selectmode for particles */
658 #define SCE_SELECT_PATH         1
659 #define SCE_SELECT_POINT        2
660 #define SCE_SELECT_END          4
661
662 /* sce->recalc (now in use by previewrender) */
663 #define SCE_PRV_CHANGED         1
664
665 /* sce->prop_mode (proportional falloff) */
666 #define PROP_SMOOTH            0
667 #define PROP_SPHERE            1
668 #define PROP_ROOT              2
669 #define PROP_SHARP             3
670 #define PROP_LIN               4
671 #define PROP_CONST             5
672 #define PROP_RANDOM             6
673
674         /* return flag next_object function */
675 #define F_START                 0
676 #define F_SCENE                 1
677 #define F_SET                   2
678 #define F_DUPLI                 3
679
680 /* audio->flag */
681 #define AUDIO_MUTE              1
682 #define AUDIO_SYNC              2
683 #define AUDIO_SCRUB             4
684
685 #define FFMPEG_MULTIPLEX_AUDIO  1
686 #define FFMPEG_AUTOSPLIT_OUTPUT 2
687
688 /* SculptData.flags */
689 #define SCULPT_INPUT_SMOOTH 1
690 #define SCULPT_DRAW_FAST    2
691 #define SCULPT_DRAW_BRUSH   4
692 /* SculptData.brushtype */
693 #define DRAW_BRUSH    1
694 #define SMOOTH_BRUSH  2
695 #define PINCH_BRUSH   3
696 #define INFLATE_BRUSH 4
697 #define GRAB_BRUSH    5
698 #define LAYER_BRUSH   6
699 #define FLATTEN_BRUSH 7
700 /* SculptData.texrept */
701 #define SCULPTREPT_DRAG 1
702 #define SCULPTREPT_TILE 2
703 #define SCULPTREPT_3D   3
704
705 #define SYMM_X 1
706 #define SYMM_Y 2
707 #define SYMM_Z 4
708
709 /* toolsettings->imagepaint_flag */
710 #define IMAGEPAINT_DRAWING                              1
711 #define IMAGEPAINT_DRAW_TOOL                    2
712 #define IMAGEPAINT_DRAW_TOOL_DRAWING    4
713
714 /* toolsettings->particle flag */
715 #define PE_KEEP_LENGTHS                 1
716 #define PE_LOCK_FIRST                   2
717 #define PE_DEFLECT_EMITTER              4
718 #define PE_INTERPOLATE_ADDED    8
719 #define PE_SHOW_CHILD                   16
720 #define PE_SHOW_TIME                    32
721 #define PE_X_MIRROR                             64
722
723 /* toolsetting->particle brushtype */
724 #define PE_BRUSH_NONE           -1
725 #define PE_BRUSH_COMB           0
726 #define PE_BRUSH_CUT            1
727 #define PE_BRUSH_LENGTH         2
728 #define PE_BRUSH_PUFF           3
729 #define PE_BRUSH_ADD            4
730 #define PE_BRUSH_WEIGHT         5
731 #define PE_BRUSH_SMOOTH         6
732
733 /* this must equal ParticleEditSettings.brush array size */
734 #define PE_TOT_BRUSH            7  
735
736 /* toolsettings->retopo_mode */
737 #define RETOPO 1
738 #define RETOPO_PAINT 2
739
740 /* toolsettings->retopo_paint_tool */
741 #define RETOPO_PEN 1
742 #define RETOPO_LINE 2
743 #define RETOPO_ELLIPSE 4
744
745 /* toolsettings->skgen_options */
746 #define SKGEN_FILTER_INTERNAL   1
747 #define SKGEN_FILTER_EXTERNAL   2
748 #define SKGEN_SYMMETRY                  4
749 #define SKGEN_CUT_LENGTH                8
750 #define SKGEN_CUT_ANGLE                 16
751 #define SKGEN_CUT_CORRELATION   32
752
753 #define SKGEN_SUB_LENGTH                0
754 #define SKGEN_SUB_ANGLE                 1
755 #define SKGEN_SUB_CORRELATION   2
756 #define SKGEN_SUB_TOTAL                 3
757
758 /* toolsettings->skgen_postpro */
759 #define SKGEN_SMOOTH                    0
760 #define SKGEN_AVERAGE                   1
761 #define SKGEN_SHARPEN                   2
762
763 #ifdef __cplusplus
764 }
765 #endif
766
767 #endif