Pose brush: Smooth Iterations Brush Property
[blender.git] / source / blender / makesdna / DNA_brush_types.h
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2005 Blender Foundation.
17  * All rights reserved.
18  */
19
20 /** \file
21  * \ingroup DNA
22  */
23
24 #ifndef __DNA_BRUSH_TYPES_H__
25 #define __DNA_BRUSH_TYPES_H__
26
27 #include "DNA_ID.h"
28 #include "DNA_texture_types.h" /* for MTex */
29 #include "DNA_curve_types.h"
30
31 //#ifndef MAX_MTEX // XXX Not used?
32 //#define MAX_MTEX  18
33 //#endif
34
35 struct CurveMapping;
36 struct Image;
37 struct MTex;
38 struct Material;
39
40 typedef struct BrushClone {
41   /** Image for clone tool. */
42   struct Image *image;
43   /** Offset of clone image from canvas. */
44   float offset[2];
45   /** Transparency for drawing of clone image. */
46   float alpha;
47   char _pad[4];
48 } BrushClone;
49
50 typedef struct BrushGpencilSettings {
51   /** Amount of smoothing to apply to newly created strokes. */
52   float draw_smoothfac;
53   /** Amount of sensitivity to apply to newly created strokes. */
54   float draw_sensitivity;
55   /** Amount of alpha strength to apply to newly created strokes. */
56   float draw_strength;
57   /** Amount of jitter to apply to newly created strokes. */
58   float draw_jitter;
59   /** Angle when the brush has full thickness. */
60   float draw_angle;
61   /** Factor to apply when angle change (only 90 degrees). */
62   float draw_angle_factor;
63   /** Factor of randomness for pressure. */
64   float draw_random_press;
65   /** Factor of strength for strength. */
66   float draw_random_strength;
67   /** Factor of randomness for subdivision. */
68   float draw_random_sub;
69   /** Number of times to apply smooth factor to new strokes. */
70   short draw_smoothlvl;
71   /** Number of times to subdivide new strokes. */
72   short draw_subdivide;
73   short _pad;
74
75   /** Number of times to apply thickness smooth factor to new strokes. */
76   short thick_smoothlvl;
77   /** Amount of thickness smoothing to apply to newly created strokes. */
78   float thick_smoothfac;
79
80   /** Factor for transparency. */
81   float fill_threshold;
82   /** Number of pixel to consider the leak is too small (x 2). */
83   short fill_leak;
84   /** Fill zoom factor */
85   short fill_factor;
86   char _pad_1[4];
87
88   /** Number of simplify steps. */
89   int fill_simplylvl;
90   /** Type of control lines drawing mode. */
91   int fill_draw_mode;
92   /** Icon identifier. */
93   int icon_id;
94
95   /** Maximum distance before generate new point for very fast mouse movements. */
96   int input_samples;
97   /** Random factor for UV rotation. */
98   float uv_random;
99   /** Moved to 'Brush.gpencil_tool'. */
100   int brush_type DNA_DEPRECATED;
101   /** Soft, hard or stroke. */
102   int eraser_mode;
103   /** Smooth while drawing factor. */
104   float active_smooth;
105   /** Factor to apply to strength for soft eraser. */
106   float era_strength_f;
107   /** Factor to apply to thickness for soft eraser. */
108   float era_thickness_f;
109   /** Internal grease pencil drawing flags. */
110   int flag;
111
112   /** gradient control along y for color */
113   float gradient_f;
114   /** factor xy of shape for dots gradients */
115   float gradient_s[2];
116   /** Simplify adaptive factor */
117   float simplify_f;
118
119   struct CurveMapping *curve_sensitivity;
120   struct CurveMapping *curve_strength;
121   struct CurveMapping *curve_jitter;
122
123   /* optional link of material to replace default in context */
124   /** Material. */
125   struct Material *material;
126 } BrushGpencilSettings;
127
128 /* BrushGpencilSettings->gp_flag */
129 typedef enum eGPDbrush_Flag {
130   /* brush use pressure */
131   GP_BRUSH_USE_PRESSURE = (1 << 0),
132   /* brush use pressure for alpha factor */
133   GP_BRUSH_USE_STENGTH_PRESSURE = (1 << 1),
134   /* brush use pressure for alpha factor */
135   GP_BRUSH_USE_JITTER_PRESSURE = (1 << 2),
136   /* enable screen cursor */
137   GP_BRUSH_ENABLE_CURSOR = (1 << 5),
138   /* fill hide transparent */
139   GP_BRUSH_FILL_HIDE = (1 << 6),
140   /* show fill help lines */
141   GP_BRUSH_FILL_SHOW_HELPLINES = (1 << 7),
142   /* lazy mouse */
143   GP_BRUSH_STABILIZE_MOUSE = (1 << 8),
144   /* lazy mouse override (internal only) */
145   GP_BRUSH_STABILIZE_MOUSE_TEMP = (1 << 9),
146   /* default eraser brush for quick switch */
147   GP_BRUSH_DEFAULT_ERASER = (1 << 10),
148   /* settings group */
149   GP_BRUSH_GROUP_SETTINGS = (1 << 11),
150   /* Random settings group */
151   GP_BRUSH_GROUP_RANDOM = (1 << 12),
152   /* Keep material assigned to brush */
153   GP_BRUSH_MATERIAL_PINNED = (1 << 13),
154   /* Do not show fill color while drawing (no lasso mode) */
155   GP_BRUSH_DISSABLE_LASSO = (1 << 14),
156   /* Do not erase strokes oLcluded */
157   GP_BRUSH_OCCLUDE_ERASER = (1 << 15),
158   /* Post process trim stroke */
159   GP_BRUSH_TRIM_STROKE = (1 << 16),
160 } eGPDbrush_Flag;
161
162 /* BrushGpencilSettings->gp_fill_draw_mode */
163 typedef enum eGP_FillDrawModes {
164   GP_FILL_DMODE_BOTH = 0,
165   GP_FILL_DMODE_STROKE = 1,
166   GP_FILL_DMODE_CONTROL = 2,
167 } eGP_FillDrawModes;
168
169 /* BrushGpencilSettings->gp_eraser_mode */
170 typedef enum eGP_BrushEraserMode {
171   GP_BRUSH_ERASER_SOFT = 0,
172   GP_BRUSH_ERASER_HARD = 1,
173   GP_BRUSH_ERASER_STROKE = 2,
174 } eGP_BrushEraserMode;
175
176 /* BrushGpencilSettings default brush icons */
177 typedef enum eGP_BrushIcons {
178   GP_BRUSH_ICON_PENCIL = 1,
179   GP_BRUSH_ICON_PEN = 2,
180   GP_BRUSH_ICON_INK = 3,
181   GP_BRUSH_ICON_INKNOISE = 4,
182   GP_BRUSH_ICON_BLOCK = 5,
183   GP_BRUSH_ICON_MARKER = 6,
184   GP_BRUSH_ICON_FILL = 7,
185   GP_BRUSH_ICON_ERASE_SOFT = 8,
186   GP_BRUSH_ICON_ERASE_HARD = 9,
187   GP_BRUSH_ICON_ERASE_STROKE = 10,
188   GP_BRUSH_ICON_AIRBRUSH = 11,
189   GP_BRUSH_ICON_CHISEL = 12,
190 } eGP_BrushIcons;
191
192 typedef enum eBrushCurvePreset {
193   BRUSH_CURVE_CUSTOM = 0,
194   BRUSH_CURVE_SMOOTH = 1,
195   BRUSH_CURVE_SPHERE = 2,
196   BRUSH_CURVE_ROOT = 3,
197   BRUSH_CURVE_SHARP = 4,
198   BRUSH_CURVE_LIN = 5,
199   BRUSH_CURVE_POW4 = 6,
200   BRUSH_CURVE_INVSQUARE = 7,
201   BRUSH_CURVE_CONSTANT = 8,
202 } eBrushCurvePreset;
203
204 typedef enum eBrushElasticDeformType {
205   BRUSH_ELASTIC_DEFORM_GRAB = 0,
206   BRUSH_ELASTIC_DEFORM_GRAB_BISCALE = 1,
207   BRUSH_ELASTIC_DEFORM_GRAB_TRISCALE = 2,
208   BRUSH_ELASTIC_DEFORM_SCALE = 3,
209   BRUSH_ELASTIC_DEFORM_TWIST = 4,
210 } eBrushElasticDeformType;
211
212 typedef enum eAutomasking_flag {
213   BRUSH_AUTOMASKING_TOPOLOGY = (1 << 0),
214 } eAutomasking_flag;
215
216 typedef struct Brush {
217   ID id;
218
219   struct BrushClone clone;
220   /** Falloff curve. */
221   struct CurveMapping *curve;
222   struct MTex mtex;
223   struct MTex mask_mtex;
224
225   struct Brush *toggle_brush;
226
227   struct ImBuf *icon_imbuf;
228   PreviewImage *preview;
229   /** Color gradient. */
230   struct ColorBand *gradient;
231   struct PaintCurve *paint_curve;
232
233   /** 1024 = FILE_MAX. */
234   char icon_filepath[1024];
235
236   float normal_weight;
237   /** Rake actual data (not texture), used for sculpt. */
238   float rake_factor;
239
240   /** Blend mode. */
241   short blend;
242   /** #eObjectMode: to see if the brush is compatible, use for display only. */
243   short ob_mode;
244   /** Brush weight. */
245   float weight;
246   /** Brush diameter. */
247   int size;
248   /** General purpose flags. */
249   int flag;
250   int flag2;
251   int sampling_flag;
252
253   /** Pressure influence for mask. */
254   int mask_pressure;
255   /** Jitter the position of the brush. */
256   float jitter;
257   /** Absolute jitter in pixels. */
258   int jitter_absolute;
259   int overlay_flags;
260   /** Spacing of paint operations. */
261   int spacing;
262   /** Turning radius (in pixels) for smooth stroke. */
263   int smooth_stroke_radius;
264   /** Higher values limit fast changes in the stroke direction. */
265   float smooth_stroke_factor;
266   /** Paint operations / second (airbrush). */
267   float rate;
268
269   /** Color. */
270   float rgb[3];
271   /** Opacity. */
272   float alpha;
273
274   /** Background color. */
275   float secondary_rgb[3];
276
277   /** Rate */
278   float dash_ratio;
279   int dash_samples;
280
281   /** The direction of movement for sculpt vertices. */
282   int sculpt_plane;
283
284   /** Offset for plane brushes (clay, flatten, fill, scrape). */
285   float plane_offset;
286
287   int gradient_spacing;
288   /** Source for stroke color gradient application. */
289   char gradient_stroke_mode;
290   /** Source for fill tool color gradient application. */
291   char gradient_fill_mode;
292
293   char _pad0;
294
295   /** Projection shape (sphere, circle). */
296   char falloff_shape;
297   float falloff_angle;
298
299   /** Active sculpt tool. */
300   char sculpt_tool;
301   /** Active sculpt tool. */
302   char uv_sculpt_tool;
303   /** Active vertex paint. */
304   char vertexpaint_tool;
305   /** Active weight paint. */
306   char weightpaint_tool;
307   /** Active image paint tool. */
308   char imagepaint_tool;
309   /** Enum eBrushMaskTool, only used if sculpt_tool is SCULPT_TOOL_MASK. */
310   char mask_tool;
311   /** Active grease pencil tool. */
312   char gpencil_tool;
313   char _pad1[5];
314
315   float autosmooth_factor;
316
317   float topology_rake_factor;
318
319   float crease_pinch_factor;
320
321   float normal_radius_factor;
322
323   float plane_trim;
324   /** Affectable height of brush (layer height for layer tool, i.e.). */
325   float height;
326
327   float texture_sample_bias;
328
329   int curve_preset;
330   int automasking_flags;
331
332   int elastic_deform_type;
333   float elastic_deform_volume_preservation;
334
335   /* pose */
336   float pose_offset;
337   int pose_smooth_iterations;
338
339   char _pad2[4];
340
341   /* multiplane scrape */
342   float multiplane_scrape_angle;
343
344   /* overlay */
345   int texture_overlay_alpha;
346   int mask_overlay_alpha;
347   int cursor_overlay_alpha;
348
349   float unprojected_radius;
350
351   /* soften/sharpen */
352   float sharp_threshold;
353   int blur_kernel_radius;
354   int blur_mode;
355
356   /* fill tool */
357   float fill_threshold;
358
359   float add_col[3];
360   float sub_col[3];
361
362   float stencil_pos[2];
363   float stencil_dimension[2];
364
365   float mask_stencil_pos[2];
366   float mask_stencil_dimension[2];
367
368   struct BrushGpencilSettings *gpencil_settings;
369
370 } Brush;
371 typedef struct PaletteColor {
372   struct PaletteColor *next, *prev;
373   /* two values, one to store rgb, other to store values for sculpt/weight */
374   float rgb[3];
375   float value;
376 } PaletteColor;
377
378 typedef struct Palette {
379   ID id;
380
381   /** Pointer to individual colors. */
382   ListBase colors;
383
384   int active_color;
385   char _pad[4];
386 } Palette;
387
388 typedef struct PaintCurvePoint {
389   /** Bezier handle. */
390   BezTriple bez;
391   /** Pressure on that point. */
392   float pressure;
393 } PaintCurvePoint;
394
395 typedef struct PaintCurve {
396   ID id;
397   /** Points of curve. */
398   PaintCurvePoint *points;
399   int tot_points;
400   /** Index where next point will be added. */
401   int add_index;
402 } PaintCurve;
403
404 /* Brush.gradient_source */
405 typedef enum eBrushGradientSourceStroke {
406   BRUSH_GRADIENT_PRESSURE = 0,       /* gradient from pressure */
407   BRUSH_GRADIENT_SPACING_REPEAT = 1, /* gradient from spacing */
408   BRUSH_GRADIENT_SPACING_CLAMP = 2,  /* gradient from spacing */
409 } eBrushGradientSourceStroke;
410
411 typedef enum eBrushGradientSourceFill {
412   BRUSH_GRADIENT_LINEAR = 0, /* gradient from pressure */
413   BRUSH_GRADIENT_RADIAL = 1, /* gradient from spacing */
414 } eBrushGradientSourceFill;
415
416 /* Brush.flag */
417 typedef enum eBrushFlags {
418   BRUSH_AIRBRUSH = (1 << 0),
419   BRUSH_FLAG_UNUSED_1 = (1 << 1), /* cleared */
420   BRUSH_ALPHA_PRESSURE = (1 << 2),
421   BRUSH_SIZE_PRESSURE = (1 << 3),
422   BRUSH_JITTER_PRESSURE = (1 << 4),
423   BRUSH_SPACING_PRESSURE = (1 << 5),
424   BRUSH_ORIGINAL_PLANE = (1 << 6),
425   BRUSH_GRAB_ACTIVE_VERTEX = (1 << 7),
426   BRUSH_ANCHORED = (1 << 8),
427   BRUSH_DIR_IN = (1 << 9),
428   BRUSH_SPACE = (1 << 10),
429   BRUSH_SMOOTH_STROKE = (1 << 11),
430   BRUSH_PERSISTENT = (1 << 12),
431   BRUSH_ACCUMULATE = (1 << 13),
432   BRUSH_LOCK_ALPHA = (1 << 14),
433   BRUSH_ORIGINAL_NORMAL = (1 << 15),
434   BRUSH_OFFSET_PRESSURE = (1 << 16),
435   BRUSH_SCENE_SPACING = (1 << 17),
436   BRUSH_SPACE_ATTEN = (1 << 18),
437   BRUSH_ADAPTIVE_SPACE = (1 << 19),
438   BRUSH_LOCK_SIZE = (1 << 20),
439   BRUSH_USE_GRADIENT = (1 << 21),
440   BRUSH_EDGE_TO_EDGE = (1 << 22),
441   BRUSH_DRAG_DOT = (1 << 23),
442   BRUSH_INVERSE_SMOOTH_PRESSURE = (1 << 24),
443   BRUSH_FRONTFACE_FALLOFF = (1 << 25),
444   BRUSH_PLANE_TRIM = (1 << 26),
445   BRUSH_FRONTFACE = (1 << 27),
446   BRUSH_CUSTOM_ICON = (1 << 28),
447   BRUSH_LINE = (1 << 29),
448   BRUSH_ABSOLUTE_JITTER = (1 << 30),
449   BRUSH_CURVE = (1u << 31),
450 } eBrushFlags;
451
452 /* Brush.sampling_flag */
453 typedef enum eBrushSamplingFlags {
454   BRUSH_PAINT_ANTIALIASING = (1 << 0),
455 } eBrushSamplingFlags;
456
457 /* Brush.flag2 */
458 typedef enum eBrushFlags2 {
459   BRUSH_MULTIPLANE_SCRAPE_DYNAMIC = (1 << 0),
460   BRUSH_MULTIPLANE_SCRAPE_PLANES_PREVIEW = (1 << 1),
461 } eBrushFlags2;
462
463 typedef enum {
464   BRUSH_MASK_PRESSURE_RAMP = (1 << 1),
465   BRUSH_MASK_PRESSURE_CUTOFF = (1 << 2),
466 } BrushMaskPressureFlags;
467
468 /* Brush.overlay_flags */
469 typedef enum eOverlayFlags {
470   BRUSH_OVERLAY_CURSOR = (1),
471   BRUSH_OVERLAY_PRIMARY = (1 << 1),
472   BRUSH_OVERLAY_SECONDARY = (1 << 2),
473   BRUSH_OVERLAY_CURSOR_OVERRIDE_ON_STROKE = (1 << 3),
474   BRUSH_OVERLAY_PRIMARY_OVERRIDE_ON_STROKE = (1 << 4),
475   BRUSH_OVERLAY_SECONDARY_OVERRIDE_ON_STROKE = (1 << 5),
476 } eOverlayFlags;
477
478 #define BRUSH_OVERLAY_OVERRIDE_MASK \
479   (BRUSH_OVERLAY_CURSOR_OVERRIDE_ON_STROKE | BRUSH_OVERLAY_PRIMARY_OVERRIDE_ON_STROKE | \
480    BRUSH_OVERLAY_SECONDARY_OVERRIDE_ON_STROKE)
481
482 /* Brush.sculpt_tool */
483 typedef enum eBrushSculptTool {
484   SCULPT_TOOL_DRAW = 1,
485   SCULPT_TOOL_SMOOTH = 2,
486   SCULPT_TOOL_PINCH = 3,
487   SCULPT_TOOL_INFLATE = 4,
488   SCULPT_TOOL_GRAB = 5,
489   SCULPT_TOOL_LAYER = 6,
490   SCULPT_TOOL_FLATTEN = 7,
491   SCULPT_TOOL_CLAY = 8,
492   SCULPT_TOOL_FILL = 9,
493   SCULPT_TOOL_SCRAPE = 10,
494   SCULPT_TOOL_NUDGE = 11,
495   SCULPT_TOOL_THUMB = 12,
496   SCULPT_TOOL_SNAKE_HOOK = 13,
497   SCULPT_TOOL_ROTATE = 14,
498   SCULPT_TOOL_SIMPLIFY = 15,
499   SCULPT_TOOL_CREASE = 16,
500   SCULPT_TOOL_BLOB = 17,
501   SCULPT_TOOL_CLAY_STRIPS = 18,
502   SCULPT_TOOL_MASK = 19,
503   SCULPT_TOOL_DRAW_SHARP = 20,
504   SCULPT_TOOL_ELASTIC_DEFORM = 21,
505   SCULPT_TOOL_POSE = 22,
506   SCULPT_TOOL_MULTIPLANE_SCRAPE = 23,
507 } eBrushSculptTool;
508
509 /* Brush.uv_sculpt_tool */
510 typedef enum eBrushUVSculptTool {
511   UV_SCULPT_TOOL_GRAB = 0,
512   UV_SCULPT_TOOL_RELAX = 1,
513   UV_SCULPT_TOOL_PINCH = 2,
514 } eBrushUVSculptTool;
515
516 /** When #BRUSH_ACCUMULATE is used */
517 #define SCULPT_TOOL_HAS_ACCUMULATE(t) \
518   ELEM(t, \
519        SCULPT_TOOL_DRAW, \
520        SCULPT_TOOL_DRAW_SHARP, \
521        SCULPT_TOOL_CREASE, \
522        SCULPT_TOOL_BLOB, \
523        SCULPT_TOOL_LAYER, \
524        SCULPT_TOOL_INFLATE, \
525        SCULPT_TOOL_CLAY, \
526        SCULPT_TOOL_CLAY_STRIPS, \
527        SCULPT_TOOL_ROTATE, \
528        SCULPT_TOOL_SCRAPE, \
529        SCULPT_TOOL_FLATTEN)
530
531 #define SCULPT_TOOL_HAS_NORMAL_WEIGHT(t) \
532   ELEM(t, SCULPT_TOOL_GRAB, SCULPT_TOOL_SNAKE_HOOK, SCULPT_TOOL_ELASTIC_DEFORM)
533
534 #define SCULPT_TOOL_HAS_RAKE(t) ELEM(t, SCULPT_TOOL_SNAKE_HOOK)
535
536 #define SCULPT_TOOL_HAS_DYNTOPO(t) \
537   (ELEM(t, /* These brushes, as currently coded, cannot support dynamic topology */ \
538         SCULPT_TOOL_GRAB, \
539         SCULPT_TOOL_ROTATE, \
540         SCULPT_TOOL_THUMB, \
541         SCULPT_TOOL_LAYER, \
542         SCULPT_TOOL_DRAW_SHARP, \
543         SCULPT_TOOL_ELASTIC_DEFORM, \
544         SCULPT_TOOL_POSE, \
545 \
546         /* These brushes could handle dynamic topology, \ \
547          * but user feedback indicates it's better not to */ \
548         SCULPT_TOOL_SMOOTH, \
549         SCULPT_TOOL_MASK) == 0)
550
551 #define SCULPT_TOOL_HAS_TOPOLOGY_RAKE(t) \
552   (ELEM(t, /* These brushes, as currently coded, cannot support topology rake. */ \
553         SCULPT_TOOL_GRAB, \
554         SCULPT_TOOL_ROTATE, \
555         SCULPT_TOOL_THUMB, \
556         SCULPT_TOOL_DRAW_SHARP, \
557         SCULPT_TOOL_MASK) == 0)
558
559 /* ImagePaintSettings.tool */
560 typedef enum eBrushImagePaintTool {
561   PAINT_TOOL_DRAW = 0,
562   PAINT_TOOL_SOFTEN = 1,
563   PAINT_TOOL_SMEAR = 2,
564   PAINT_TOOL_CLONE = 3,
565   PAINT_TOOL_FILL = 4,
566   PAINT_TOOL_MASK = 5,
567 } eBrushImagePaintTool;
568
569 typedef enum eBrushVertexPaintTool {
570   VPAINT_TOOL_DRAW = 0,
571   VPAINT_TOOL_BLUR = 1,
572   VPAINT_TOOL_AVERAGE = 2,
573   VPAINT_TOOL_SMEAR = 3,
574 } eBrushVertexPaintTool;
575
576 typedef enum eBrushWeightPaintTool {
577   WPAINT_TOOL_DRAW = 0,
578   WPAINT_TOOL_BLUR = 1,
579   WPAINT_TOOL_AVERAGE = 2,
580   WPAINT_TOOL_SMEAR = 3,
581 } eBrushWeightPaintTool;
582
583 /* BrushGpencilSettings->brush type */
584 typedef enum eBrushGPaintTool {
585   GPAINT_TOOL_DRAW = 0,
586   GPAINT_TOOL_FILL = 1,
587   GPAINT_TOOL_ERASE = 2,
588 } eBrushGPaintTool;
589
590 /* direction that the brush displaces along */
591 enum {
592   SCULPT_DISP_DIR_AREA = 0,
593   SCULPT_DISP_DIR_VIEW = 1,
594   SCULPT_DISP_DIR_X = 2,
595   SCULPT_DISP_DIR_Y = 3,
596   SCULPT_DISP_DIR_Z = 4,
597 };
598
599 typedef enum {
600   BRUSH_MASK_DRAW = 0,
601   BRUSH_MASK_SMOOTH = 1,
602 } BrushMaskTool;
603
604 /* blur kernel types, Brush.blur_mode */
605 typedef enum eBlurKernelType {
606   KERNEL_GAUSSIAN,
607   KERNEL_BOX,
608 } eBlurKernelType;
609
610 /* Brush.falloff_shape */
611 enum {
612   PAINT_FALLOFF_SHAPE_SPHERE = 0,
613   PAINT_FALLOFF_SHAPE_TUBE = 1,
614 };
615
616 #define MAX_BRUSH_PIXEL_RADIUS 500
617 #define GP_MAX_BRUSH_PIXEL_RADIUS 1000
618
619 #endif /* __DNA_BRUSH_TYPES_H__ */