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