diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_linestyle.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_linestyle.c | 3623 |
1 files changed, 1957 insertions, 1666 deletions
diff --git a/source/blender/makesrna/intern/rna_linestyle.c b/source/blender/makesrna/intern/rna_linestyle.c index 8e791561694..3a6f283e1dc 100644 --- a/source/blender/makesrna/intern/rna_linestyle.c +++ b/source/blender/makesrna/intern/rna_linestyle.c @@ -36,1879 +36,2170 @@ #include "WM_api.h" const EnumPropertyItem rna_enum_linestyle_color_modifier_type_items[] = { - {LS_MODIFIER_ALONG_STROKE, "ALONG_STROKE", ICON_MODIFIER, "Along Stroke", ""}, - {LS_MODIFIER_CREASE_ANGLE, "CREASE_ANGLE", ICON_MODIFIER, "Crease Angle", ""}, - {LS_MODIFIER_CURVATURE_3D, "CURVATURE_3D", ICON_MODIFIER, "Curvature 3D", ""}, - {LS_MODIFIER_DISTANCE_FROM_CAMERA, "DISTANCE_FROM_CAMERA", ICON_MODIFIER, "Distance from Camera", ""}, - {LS_MODIFIER_DISTANCE_FROM_OBJECT, "DISTANCE_FROM_OBJECT", ICON_MODIFIER, "Distance from Object", ""}, - {LS_MODIFIER_MATERIAL, "MATERIAL", ICON_MODIFIER, "Material", ""}, - {LS_MODIFIER_NOISE, "NOISE", ICON_MODIFIER, "Noise", ""}, - {LS_MODIFIER_TANGENT, "TANGENT", ICON_MODIFIER, "Tangent", ""}, - {0, NULL, 0, NULL, NULL}, + {LS_MODIFIER_ALONG_STROKE, "ALONG_STROKE", ICON_MODIFIER, "Along Stroke", ""}, + {LS_MODIFIER_CREASE_ANGLE, "CREASE_ANGLE", ICON_MODIFIER, "Crease Angle", ""}, + {LS_MODIFIER_CURVATURE_3D, "CURVATURE_3D", ICON_MODIFIER, "Curvature 3D", ""}, + {LS_MODIFIER_DISTANCE_FROM_CAMERA, + "DISTANCE_FROM_CAMERA", + ICON_MODIFIER, + "Distance from Camera", + ""}, + {LS_MODIFIER_DISTANCE_FROM_OBJECT, + "DISTANCE_FROM_OBJECT", + ICON_MODIFIER, + "Distance from Object", + ""}, + {LS_MODIFIER_MATERIAL, "MATERIAL", ICON_MODIFIER, "Material", ""}, + {LS_MODIFIER_NOISE, "NOISE", ICON_MODIFIER, "Noise", ""}, + {LS_MODIFIER_TANGENT, "TANGENT", ICON_MODIFIER, "Tangent", ""}, + {0, NULL, 0, NULL, NULL}, }; const EnumPropertyItem rna_enum_linestyle_alpha_modifier_type_items[] = { - {LS_MODIFIER_ALONG_STROKE, "ALONG_STROKE", ICON_MODIFIER, "Along Stroke", ""}, - {LS_MODIFIER_CREASE_ANGLE, "CREASE_ANGLE", ICON_MODIFIER, "Crease Angle", ""}, - {LS_MODIFIER_CURVATURE_3D, "CURVATURE_3D", ICON_MODIFIER, "Curvature 3D", ""}, - {LS_MODIFIER_DISTANCE_FROM_CAMERA, "DISTANCE_FROM_CAMERA", ICON_MODIFIER, "Distance from Camera", ""}, - {LS_MODIFIER_DISTANCE_FROM_OBJECT, "DISTANCE_FROM_OBJECT", ICON_MODIFIER, "Distance from Object", ""}, - {LS_MODIFIER_MATERIAL, "MATERIAL", ICON_MODIFIER, "Material", ""}, - {LS_MODIFIER_NOISE, "NOISE", ICON_MODIFIER, "Noise", ""}, - {LS_MODIFIER_TANGENT, "TANGENT", ICON_MODIFIER, "Tangent", ""}, - {0, NULL, 0, NULL, NULL}, + {LS_MODIFIER_ALONG_STROKE, "ALONG_STROKE", ICON_MODIFIER, "Along Stroke", ""}, + {LS_MODIFIER_CREASE_ANGLE, "CREASE_ANGLE", ICON_MODIFIER, "Crease Angle", ""}, + {LS_MODIFIER_CURVATURE_3D, "CURVATURE_3D", ICON_MODIFIER, "Curvature 3D", ""}, + {LS_MODIFIER_DISTANCE_FROM_CAMERA, + "DISTANCE_FROM_CAMERA", + ICON_MODIFIER, + "Distance from Camera", + ""}, + {LS_MODIFIER_DISTANCE_FROM_OBJECT, + "DISTANCE_FROM_OBJECT", + ICON_MODIFIER, + "Distance from Object", + ""}, + {LS_MODIFIER_MATERIAL, "MATERIAL", ICON_MODIFIER, "Material", ""}, + {LS_MODIFIER_NOISE, "NOISE", ICON_MODIFIER, "Noise", ""}, + {LS_MODIFIER_TANGENT, "TANGENT", ICON_MODIFIER, "Tangent", ""}, + {0, NULL, 0, NULL, NULL}, }; const EnumPropertyItem rna_enum_linestyle_thickness_modifier_type_items[] = { - {LS_MODIFIER_ALONG_STROKE, "ALONG_STROKE", ICON_MODIFIER, "Along Stroke", ""}, - {LS_MODIFIER_CALLIGRAPHY, "CALLIGRAPHY", ICON_MODIFIER, "Calligraphy", ""}, - {LS_MODIFIER_CREASE_ANGLE, "CREASE_ANGLE", ICON_MODIFIER, "Crease Angle", ""}, - {LS_MODIFIER_CURVATURE_3D, "CURVATURE_3D", ICON_MODIFIER, "Curvature 3D", ""}, - {LS_MODIFIER_DISTANCE_FROM_CAMERA, "DISTANCE_FROM_CAMERA", ICON_MODIFIER, "Distance from Camera", ""}, - {LS_MODIFIER_DISTANCE_FROM_OBJECT, "DISTANCE_FROM_OBJECT", ICON_MODIFIER, "Distance from Object", ""}, - {LS_MODIFIER_MATERIAL, "MATERIAL", ICON_MODIFIER, "Material", ""}, - {LS_MODIFIER_NOISE, "NOISE", ICON_MODIFIER, "Noise", ""}, - {LS_MODIFIER_TANGENT, "TANGENT", ICON_MODIFIER, "Tangent", ""}, - {0, NULL, 0, NULL, NULL}, + {LS_MODIFIER_ALONG_STROKE, "ALONG_STROKE", ICON_MODIFIER, "Along Stroke", ""}, + {LS_MODIFIER_CALLIGRAPHY, "CALLIGRAPHY", ICON_MODIFIER, "Calligraphy", ""}, + {LS_MODIFIER_CREASE_ANGLE, "CREASE_ANGLE", ICON_MODIFIER, "Crease Angle", ""}, + {LS_MODIFIER_CURVATURE_3D, "CURVATURE_3D", ICON_MODIFIER, "Curvature 3D", ""}, + {LS_MODIFIER_DISTANCE_FROM_CAMERA, + "DISTANCE_FROM_CAMERA", + ICON_MODIFIER, + "Distance from Camera", + ""}, + {LS_MODIFIER_DISTANCE_FROM_OBJECT, + "DISTANCE_FROM_OBJECT", + ICON_MODIFIER, + "Distance from Object", + ""}, + {LS_MODIFIER_MATERIAL, "MATERIAL", ICON_MODIFIER, "Material", ""}, + {LS_MODIFIER_NOISE, "NOISE", ICON_MODIFIER, "Noise", ""}, + {LS_MODIFIER_TANGENT, "TANGENT", ICON_MODIFIER, "Tangent", ""}, + {0, NULL, 0, NULL, NULL}, }; const EnumPropertyItem rna_enum_linestyle_geometry_modifier_type_items[] = { - {LS_MODIFIER_2D_OFFSET, "2D_OFFSET", ICON_MODIFIER, "2D Offset", ""}, - {LS_MODIFIER_2D_TRANSFORM, "2D_TRANSFORM", ICON_MODIFIER, "2D Transform", ""}, - {LS_MODIFIER_BACKBONE_STRETCHER, "BACKBONE_STRETCHER", ICON_MODIFIER, "Backbone Stretcher", ""}, - {LS_MODIFIER_BEZIER_CURVE, "BEZIER_CURVE", ICON_MODIFIER, "Bezier Curve", ""}, - {LS_MODIFIER_BLUEPRINT, "BLUEPRINT", ICON_MODIFIER, "Blueprint", ""}, - {LS_MODIFIER_GUIDING_LINES, "GUIDING_LINES", ICON_MODIFIER, "Guiding Lines", ""}, - {LS_MODIFIER_PERLIN_NOISE_1D, "PERLIN_NOISE_1D", ICON_MODIFIER, "Perlin Noise 1D", ""}, - {LS_MODIFIER_PERLIN_NOISE_2D, "PERLIN_NOISE_2D", ICON_MODIFIER, "Perlin Noise 2D", ""}, - {LS_MODIFIER_POLYGONIZATION, "POLYGONIZATION", ICON_MODIFIER, "Polygonization", ""}, - {LS_MODIFIER_SAMPLING, "SAMPLING", ICON_MODIFIER, "Sampling", ""}, - {LS_MODIFIER_SIMPLIFICATION, "SIMPLIFICATION", ICON_MODIFIER, "Simplification", ""}, - {LS_MODIFIER_SINUS_DISPLACEMENT, "SINUS_DISPLACEMENT", ICON_MODIFIER, "Sinus Displacement", ""}, - {LS_MODIFIER_SPATIAL_NOISE, "SPATIAL_NOISE", ICON_MODIFIER, "Spatial Noise", ""}, - {LS_MODIFIER_TIP_REMOVER, "TIP_REMOVER", ICON_MODIFIER, "Tip Remover", ""}, - {0, NULL, 0, NULL, NULL}, + {LS_MODIFIER_2D_OFFSET, "2D_OFFSET", ICON_MODIFIER, "2D Offset", ""}, + {LS_MODIFIER_2D_TRANSFORM, "2D_TRANSFORM", ICON_MODIFIER, "2D Transform", ""}, + {LS_MODIFIER_BACKBONE_STRETCHER, + "BACKBONE_STRETCHER", + ICON_MODIFIER, + "Backbone Stretcher", + ""}, + {LS_MODIFIER_BEZIER_CURVE, "BEZIER_CURVE", ICON_MODIFIER, "Bezier Curve", ""}, + {LS_MODIFIER_BLUEPRINT, "BLUEPRINT", ICON_MODIFIER, "Blueprint", ""}, + {LS_MODIFIER_GUIDING_LINES, "GUIDING_LINES", ICON_MODIFIER, "Guiding Lines", ""}, + {LS_MODIFIER_PERLIN_NOISE_1D, "PERLIN_NOISE_1D", ICON_MODIFIER, "Perlin Noise 1D", ""}, + {LS_MODIFIER_PERLIN_NOISE_2D, "PERLIN_NOISE_2D", ICON_MODIFIER, "Perlin Noise 2D", ""}, + {LS_MODIFIER_POLYGONIZATION, "POLYGONIZATION", ICON_MODIFIER, "Polygonization", ""}, + {LS_MODIFIER_SAMPLING, "SAMPLING", ICON_MODIFIER, "Sampling", ""}, + {LS_MODIFIER_SIMPLIFICATION, "SIMPLIFICATION", ICON_MODIFIER, "Simplification", ""}, + {LS_MODIFIER_SINUS_DISPLACEMENT, + "SINUS_DISPLACEMENT", + ICON_MODIFIER, + "Sinus Displacement", + ""}, + {LS_MODIFIER_SPATIAL_NOISE, "SPATIAL_NOISE", ICON_MODIFIER, "Spatial Noise", ""}, + {LS_MODIFIER_TIP_REMOVER, "TIP_REMOVER", ICON_MODIFIER, "Tip Remover", ""}, + {0, NULL, 0, NULL, NULL}, }; #ifdef RNA_RUNTIME -#include "BLI_string_utils.h" +# include "BLI_string_utils.h" -#include "BKE_linestyle.h" -#include "BKE_texture.h" +# include "BKE_linestyle.h" +# include "BKE_texture.h" -#include "DEG_depsgraph.h" +# include "DEG_depsgraph.h" -#include "ED_node.h" +# include "ED_node.h" -#include "RNA_access.h" +# include "RNA_access.h" static StructRNA *rna_LineStyle_color_modifier_refine(struct PointerRNA *ptr) { - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - - switch (m->type) { - case LS_MODIFIER_ALONG_STROKE: - return &RNA_LineStyleColorModifier_AlongStroke; - case LS_MODIFIER_DISTANCE_FROM_CAMERA: - return &RNA_LineStyleColorModifier_DistanceFromCamera; - case LS_MODIFIER_DISTANCE_FROM_OBJECT: - return &RNA_LineStyleColorModifier_DistanceFromObject; - case LS_MODIFIER_MATERIAL: - return &RNA_LineStyleColorModifier_Material; - case LS_MODIFIER_TANGENT: - return &RNA_LineStyleColorModifier_Tangent; - case LS_MODIFIER_NOISE: - return &RNA_LineStyleColorModifier_Noise; - case LS_MODIFIER_CREASE_ANGLE: - return &RNA_LineStyleColorModifier_CreaseAngle; - case LS_MODIFIER_CURVATURE_3D: - return &RNA_LineStyleColorModifier_Curvature_3D; - default: - return &RNA_LineStyleColorModifier; - } + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + + switch (m->type) { + case LS_MODIFIER_ALONG_STROKE: + return &RNA_LineStyleColorModifier_AlongStroke; + case LS_MODIFIER_DISTANCE_FROM_CAMERA: + return &RNA_LineStyleColorModifier_DistanceFromCamera; + case LS_MODIFIER_DISTANCE_FROM_OBJECT: + return &RNA_LineStyleColorModifier_DistanceFromObject; + case LS_MODIFIER_MATERIAL: + return &RNA_LineStyleColorModifier_Material; + case LS_MODIFIER_TANGENT: + return &RNA_LineStyleColorModifier_Tangent; + case LS_MODIFIER_NOISE: + return &RNA_LineStyleColorModifier_Noise; + case LS_MODIFIER_CREASE_ANGLE: + return &RNA_LineStyleColorModifier_CreaseAngle; + case LS_MODIFIER_CURVATURE_3D: + return &RNA_LineStyleColorModifier_Curvature_3D; + default: + return &RNA_LineStyleColorModifier; + } } static StructRNA *rna_LineStyle_alpha_modifier_refine(struct PointerRNA *ptr) { - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - - switch (m->type) { - case LS_MODIFIER_ALONG_STROKE: - return &RNA_LineStyleAlphaModifier_AlongStroke; - case LS_MODIFIER_DISTANCE_FROM_CAMERA: - return &RNA_LineStyleAlphaModifier_DistanceFromCamera; - case LS_MODIFIER_DISTANCE_FROM_OBJECT: - return &RNA_LineStyleAlphaModifier_DistanceFromObject; - case LS_MODIFIER_MATERIAL: - return &RNA_LineStyleAlphaModifier_Material; - case LS_MODIFIER_TANGENT: - return &RNA_LineStyleAlphaModifier_Tangent; - case LS_MODIFIER_NOISE: - return &RNA_LineStyleAlphaModifier_Noise; - case LS_MODIFIER_CREASE_ANGLE: - return &RNA_LineStyleAlphaModifier_CreaseAngle; - case LS_MODIFIER_CURVATURE_3D: - return &RNA_LineStyleAlphaModifier_Curvature_3D; - default: - return &RNA_LineStyleAlphaModifier; - } + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + + switch (m->type) { + case LS_MODIFIER_ALONG_STROKE: + return &RNA_LineStyleAlphaModifier_AlongStroke; + case LS_MODIFIER_DISTANCE_FROM_CAMERA: + return &RNA_LineStyleAlphaModifier_DistanceFromCamera; + case LS_MODIFIER_DISTANCE_FROM_OBJECT: + return &RNA_LineStyleAlphaModifier_DistanceFromObject; + case LS_MODIFIER_MATERIAL: + return &RNA_LineStyleAlphaModifier_Material; + case LS_MODIFIER_TANGENT: + return &RNA_LineStyleAlphaModifier_Tangent; + case LS_MODIFIER_NOISE: + return &RNA_LineStyleAlphaModifier_Noise; + case LS_MODIFIER_CREASE_ANGLE: + return &RNA_LineStyleAlphaModifier_CreaseAngle; + case LS_MODIFIER_CURVATURE_3D: + return &RNA_LineStyleAlphaModifier_Curvature_3D; + default: + return &RNA_LineStyleAlphaModifier; + } } static StructRNA *rna_LineStyle_thickness_modifier_refine(struct PointerRNA *ptr) { - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - - switch (m->type) { - case LS_MODIFIER_ALONG_STROKE: - return &RNA_LineStyleThicknessModifier_AlongStroke; - case LS_MODIFIER_DISTANCE_FROM_CAMERA: - return &RNA_LineStyleThicknessModifier_DistanceFromCamera; - case LS_MODIFIER_DISTANCE_FROM_OBJECT: - return &RNA_LineStyleThicknessModifier_DistanceFromObject; - case LS_MODIFIER_MATERIAL: - return &RNA_LineStyleThicknessModifier_Material; - case LS_MODIFIER_CALLIGRAPHY: - return &RNA_LineStyleThicknessModifier_Calligraphy; - case LS_MODIFIER_TANGENT: - return &RNA_LineStyleThicknessModifier_Tangent; - case LS_MODIFIER_NOISE: - return &RNA_LineStyleThicknessModifier_Noise; - case LS_MODIFIER_CREASE_ANGLE: - return &RNA_LineStyleThicknessModifier_CreaseAngle; - case LS_MODIFIER_CURVATURE_3D: - return &RNA_LineStyleThicknessModifier_Curvature_3D; - default: - return &RNA_LineStyleThicknessModifier; - } + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + + switch (m->type) { + case LS_MODIFIER_ALONG_STROKE: + return &RNA_LineStyleThicknessModifier_AlongStroke; + case LS_MODIFIER_DISTANCE_FROM_CAMERA: + return &RNA_LineStyleThicknessModifier_DistanceFromCamera; + case LS_MODIFIER_DISTANCE_FROM_OBJECT: + return &RNA_LineStyleThicknessModifier_DistanceFromObject; + case LS_MODIFIER_MATERIAL: + return &RNA_LineStyleThicknessModifier_Material; + case LS_MODIFIER_CALLIGRAPHY: + return &RNA_LineStyleThicknessModifier_Calligraphy; + case LS_MODIFIER_TANGENT: + return &RNA_LineStyleThicknessModifier_Tangent; + case LS_MODIFIER_NOISE: + return &RNA_LineStyleThicknessModifier_Noise; + case LS_MODIFIER_CREASE_ANGLE: + return &RNA_LineStyleThicknessModifier_CreaseAngle; + case LS_MODIFIER_CURVATURE_3D: + return &RNA_LineStyleThicknessModifier_Curvature_3D; + default: + return &RNA_LineStyleThicknessModifier; + } } static StructRNA *rna_LineStyle_geometry_modifier_refine(struct PointerRNA *ptr) { - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - - switch (m->type) { - case LS_MODIFIER_SAMPLING: - return &RNA_LineStyleGeometryModifier_Sampling; - case LS_MODIFIER_BEZIER_CURVE: - return &RNA_LineStyleGeometryModifier_BezierCurve; - case LS_MODIFIER_SINUS_DISPLACEMENT: - return &RNA_LineStyleGeometryModifier_SinusDisplacement; - case LS_MODIFIER_SPATIAL_NOISE: - return &RNA_LineStyleGeometryModifier_SpatialNoise; - case LS_MODIFIER_PERLIN_NOISE_1D: - return &RNA_LineStyleGeometryModifier_PerlinNoise1D; - case LS_MODIFIER_PERLIN_NOISE_2D: - return &RNA_LineStyleGeometryModifier_PerlinNoise2D; - case LS_MODIFIER_BACKBONE_STRETCHER: - return &RNA_LineStyleGeometryModifier_BackboneStretcher; - case LS_MODIFIER_TIP_REMOVER: - return &RNA_LineStyleGeometryModifier_TipRemover; - case LS_MODIFIER_POLYGONIZATION: - return &RNA_LineStyleGeometryModifier_Polygonalization; - case LS_MODIFIER_GUIDING_LINES: - return &RNA_LineStyleGeometryModifier_GuidingLines; - case LS_MODIFIER_BLUEPRINT: - return &RNA_LineStyleGeometryModifier_Blueprint; - case LS_MODIFIER_2D_OFFSET: - return &RNA_LineStyleGeometryModifier_2DOffset; - case LS_MODIFIER_2D_TRANSFORM: - return &RNA_LineStyleGeometryModifier_2DTransform; - case LS_MODIFIER_SIMPLIFICATION: - return &RNA_LineStyleGeometryModifier_Simplification; - default: - return &RNA_LineStyleGeometryModifier; - } + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + + switch (m->type) { + case LS_MODIFIER_SAMPLING: + return &RNA_LineStyleGeometryModifier_Sampling; + case LS_MODIFIER_BEZIER_CURVE: + return &RNA_LineStyleGeometryModifier_BezierCurve; + case LS_MODIFIER_SINUS_DISPLACEMENT: + return &RNA_LineStyleGeometryModifier_SinusDisplacement; + case LS_MODIFIER_SPATIAL_NOISE: + return &RNA_LineStyleGeometryModifier_SpatialNoise; + case LS_MODIFIER_PERLIN_NOISE_1D: + return &RNA_LineStyleGeometryModifier_PerlinNoise1D; + case LS_MODIFIER_PERLIN_NOISE_2D: + return &RNA_LineStyleGeometryModifier_PerlinNoise2D; + case LS_MODIFIER_BACKBONE_STRETCHER: + return &RNA_LineStyleGeometryModifier_BackboneStretcher; + case LS_MODIFIER_TIP_REMOVER: + return &RNA_LineStyleGeometryModifier_TipRemover; + case LS_MODIFIER_POLYGONIZATION: + return &RNA_LineStyleGeometryModifier_Polygonalization; + case LS_MODIFIER_GUIDING_LINES: + return &RNA_LineStyleGeometryModifier_GuidingLines; + case LS_MODIFIER_BLUEPRINT: + return &RNA_LineStyleGeometryModifier_Blueprint; + case LS_MODIFIER_2D_OFFSET: + return &RNA_LineStyleGeometryModifier_2DOffset; + case LS_MODIFIER_2D_TRANSFORM: + return &RNA_LineStyleGeometryModifier_2DTransform; + case LS_MODIFIER_SIMPLIFICATION: + return &RNA_LineStyleGeometryModifier_Simplification; + default: + return &RNA_LineStyleGeometryModifier; + } } static char *rna_LineStyle_color_modifier_path(PointerRNA *ptr) { - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - char name_esc[sizeof(m->name) * 2]; - BLI_strescape(name_esc, m->name, sizeof(name_esc)); - return BLI_sprintfN("color_modifiers[\"%s\"]", name_esc); + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + char name_esc[sizeof(m->name) * 2]; + BLI_strescape(name_esc, m->name, sizeof(name_esc)); + return BLI_sprintfN("color_modifiers[\"%s\"]", name_esc); } static char *rna_LineStyle_alpha_modifier_path(PointerRNA *ptr) { - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - char name_esc[sizeof(m->name) * 2]; - BLI_strescape(name_esc, m->name, sizeof(name_esc)); - return BLI_sprintfN("alpha_modifiers[\"%s\"]", name_esc); + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + char name_esc[sizeof(m->name) * 2]; + BLI_strescape(name_esc, m->name, sizeof(name_esc)); + return BLI_sprintfN("alpha_modifiers[\"%s\"]", name_esc); } static char *rna_LineStyle_thickness_modifier_path(PointerRNA *ptr) { - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - char name_esc[sizeof(m->name) * 2]; - BLI_strescape(name_esc, m->name, sizeof(name_esc)); - return BLI_sprintfN("thickness_modifiers[\"%s\"]", name_esc); + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + char name_esc[sizeof(m->name) * 2]; + BLI_strescape(name_esc, m->name, sizeof(name_esc)); + return BLI_sprintfN("thickness_modifiers[\"%s\"]", name_esc); } static char *rna_LineStyle_geometry_modifier_path(PointerRNA *ptr) { - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - char name_esc[sizeof(m->name) * 2]; - BLI_strescape(name_esc, m->name, sizeof(name_esc)); - return BLI_sprintfN("geometry_modifiers[\"%s\"]", name_esc); + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + char name_esc[sizeof(m->name) * 2]; + BLI_strescape(name_esc, m->name, sizeof(name_esc)); + return BLI_sprintfN("geometry_modifiers[\"%s\"]", name_esc); } static void rna_LineStyleColorModifier_name_set(PointerRNA *ptr, const char *value) { - FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - - BLI_strncpy_utf8(m->name, value, sizeof(m->name)); - BLI_uniquename(&linestyle->color_modifiers, m, "ColorModifier", '.', - offsetof(LineStyleModifier, name), sizeof(m->name)); + FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + + BLI_strncpy_utf8(m->name, value, sizeof(m->name)); + BLI_uniquename(&linestyle->color_modifiers, + m, + "ColorModifier", + '.', + offsetof(LineStyleModifier, name), + sizeof(m->name)); } static void rna_LineStyleAlphaModifier_name_set(PointerRNA *ptr, const char *value) { - FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - - BLI_strncpy_utf8(m->name, value, sizeof(m->name)); - BLI_uniquename(&linestyle->alpha_modifiers, m, "AlphaModifier", '.', - offsetof(LineStyleModifier, name), sizeof(m->name)); + FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + + BLI_strncpy_utf8(m->name, value, sizeof(m->name)); + BLI_uniquename(&linestyle->alpha_modifiers, + m, + "AlphaModifier", + '.', + offsetof(LineStyleModifier, name), + sizeof(m->name)); } static void rna_LineStyleThicknessModifier_name_set(PointerRNA *ptr, const char *value) { - FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - - BLI_strncpy_utf8(m->name, value, sizeof(m->name)); - BLI_uniquename(&linestyle->thickness_modifiers, m, "ThicknessModifier", '.', - offsetof(LineStyleModifier, name), sizeof(m->name)); + FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + + BLI_strncpy_utf8(m->name, value, sizeof(m->name)); + BLI_uniquename(&linestyle->thickness_modifiers, + m, + "ThicknessModifier", + '.', + offsetof(LineStyleModifier, name), + sizeof(m->name)); } static void rna_LineStyleGeometryModifier_name_set(PointerRNA *ptr, const char *value) { - FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; - LineStyleModifier *m = (LineStyleModifier *)ptr->data; - - BLI_strncpy_utf8(m->name, value, sizeof(m->name)); - BLI_uniquename(&linestyle->geometry_modifiers, m, "GeometryModifier", '.', - offsetof(LineStyleModifier, name), sizeof(m->name)); + FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; + LineStyleModifier *m = (LineStyleModifier *)ptr->data; + + BLI_strncpy_utf8(m->name, value, sizeof(m->name)); + BLI_uniquename(&linestyle->geometry_modifiers, + m, + "GeometryModifier", + '.', + offsetof(LineStyleModifier, name), + sizeof(m->name)); } static void rna_LineStyle_mtex_begin(CollectionPropertyIterator *iter, PointerRNA *ptr) { - FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; - rna_iterator_array_begin(iter, (void *)linestyle->mtex, sizeof(MTex *), MAX_MTEX, 0, NULL); + FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; + rna_iterator_array_begin(iter, (void *)linestyle->mtex, sizeof(MTex *), MAX_MTEX, 0, NULL); } static PointerRNA rna_LineStyle_active_texture_get(PointerRNA *ptr) { - FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; - Tex *tex; + FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; + Tex *tex; - tex = give_current_linestyle_texture(linestyle); - return rna_pointer_inherit_refine(ptr, &RNA_Texture, tex); + tex = give_current_linestyle_texture(linestyle); + return rna_pointer_inherit_refine(ptr, &RNA_Texture, tex); } static void rna_LineStyle_active_texture_set(PointerRNA *ptr, PointerRNA value) { - FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; + FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->id.data; - set_current_linestyle_texture(linestyle, value.data); + set_current_linestyle_texture(linestyle, value.data); } static void rna_LineStyle_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr) { - FreestyleLineStyle *linestyle = ptr->id.data; + FreestyleLineStyle *linestyle = ptr->id.data; - DEG_id_tag_update(&linestyle->id, 0); - WM_main_add_notifier(NC_LINESTYLE, linestyle); + DEG_id_tag_update(&linestyle->id, 0); + WM_main_add_notifier(NC_LINESTYLE, linestyle); } static void rna_LineStyle_use_nodes_update(bContext *C, PointerRNA *ptr) { - FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->data; + FreestyleLineStyle *linestyle = (FreestyleLineStyle *)ptr->data; - if (linestyle->use_nodes && linestyle->nodetree == NULL) - BKE_linestyle_default_shader(C, linestyle); + if (linestyle->use_nodes && linestyle->nodetree == NULL) + BKE_linestyle_default_shader(C, linestyle); - rna_LineStyle_update(CTX_data_main(C), CTX_data_scene(C), ptr); + rna_LineStyle_update(CTX_data_main(C), CTX_data_scene(C), ptr); } -static LineStyleModifier *rna_LineStyle_color_modifier_add(FreestyleLineStyle *linestyle, ReportList *reports, - const char *name, int type) +static LineStyleModifier *rna_LineStyle_color_modifier_add(FreestyleLineStyle *linestyle, + ReportList *reports, + const char *name, + int type) { - LineStyleModifier *modifier = BKE_linestyle_color_modifier_add(linestyle, name, type); + LineStyleModifier *modifier = BKE_linestyle_color_modifier_add(linestyle, name, type); - if (!modifier) { - BKE_report(reports, RPT_ERROR, "Failed to add the color modifier"); - return NULL; - } + if (!modifier) { + BKE_report(reports, RPT_ERROR, "Failed to add the color modifier"); + return NULL; + } - DEG_id_tag_update(&linestyle->id, 0); - WM_main_add_notifier(NC_LINESTYLE, linestyle); + DEG_id_tag_update(&linestyle->id, 0); + WM_main_add_notifier(NC_LINESTYLE, linestyle); - return modifier; + return modifier; } -static void rna_LineStyle_color_modifier_remove(FreestyleLineStyle *linestyle, ReportList *reports, +static void rna_LineStyle_color_modifier_remove(FreestyleLineStyle *linestyle, + ReportList *reports, PointerRNA *modifier_ptr) { - LineStyleModifier *modifier = modifier_ptr->data; + LineStyleModifier *modifier = modifier_ptr->data; - if (BKE_linestyle_color_modifier_remove(linestyle, modifier) == -1) { - BKE_reportf(reports, RPT_ERROR, "Color modifier '%s' could not be removed", modifier->name); - return; - } + if (BKE_linestyle_color_modifier_remove(linestyle, modifier) == -1) { + BKE_reportf(reports, RPT_ERROR, "Color modifier '%s' could not be removed", modifier->name); + return; + } - RNA_POINTER_INVALIDATE(modifier_ptr); + RNA_POINTER_INVALIDATE(modifier_ptr); - DEG_id_tag_update(&linestyle->id, 0); - WM_main_add_notifier(NC_LINESTYLE, linestyle); + DEG_id_tag_update(&linestyle->id, 0); + WM_main_add_notifier(NC_LINESTYLE, linestyle); } -static LineStyleModifier *rna_LineStyle_alpha_modifier_add(FreestyleLineStyle *linestyle, ReportList *reports, - const char *name, int type) +static LineStyleModifier *rna_LineStyle_alpha_modifier_add(FreestyleLineStyle *linestyle, + ReportList *reports, + const char *name, + int type) { - LineStyleModifier *modifier = BKE_linestyle_alpha_modifier_add(linestyle, name, type); + LineStyleModifier *modifier = BKE_linestyle_alpha_modifier_add(linestyle, name, type); - if (!modifier) { - BKE_report(reports, RPT_ERROR, "Failed to add the alpha modifier"); - return NULL; - } + if (!modifier) { + BKE_report(reports, RPT_ERROR, "Failed to add the alpha modifier"); + return NULL; + } - DEG_id_tag_update(&linestyle->id, 0); - WM_main_add_notifier(NC_LINESTYLE, linestyle); + DEG_id_tag_update(&linestyle->id, 0); + WM_main_add_notifier(NC_LINESTYLE, linestyle); - return modifier; + return modifier; } -static void rna_LineStyle_alpha_modifier_remove(FreestyleLineStyle *linestyle, ReportList *reports, +static void rna_LineStyle_alpha_modifier_remove(FreestyleLineStyle *linestyle, + ReportList *reports, PointerRNA *modifier_ptr) { - LineStyleModifier *modifier = modifier_ptr->data; + LineStyleModifier *modifier = modifier_ptr->data; - if (BKE_linestyle_alpha_modifier_remove(linestyle, modifier) == -1) { - BKE_reportf(reports, RPT_ERROR, "Alpha modifier '%s' could not be removed", modifier->name); - return; - } + if (BKE_linestyle_alpha_modifier_remove(linestyle, modifier) == -1) { + BKE_reportf(reports, RPT_ERROR, "Alpha modifier '%s' could not be removed", modifier->name); + return; + } - RNA_POINTER_INVALIDATE(modifier_ptr); + RNA_POINTER_INVALIDATE(modifier_ptr); - DEG_id_tag_update(&linestyle->id, 0); - WM_main_add_notifier(NC_LINESTYLE, linestyle); + DEG_id_tag_update(&linestyle->id, 0); + WM_main_add_notifier(NC_LINESTYLE, linestyle); } -static LineStyleModifier *rna_LineStyle_thickness_modifier_add(FreestyleLineStyle *linestyle, ReportList *reports, - const char *name, int type) +static LineStyleModifier *rna_LineStyle_thickness_modifier_add(FreestyleLineStyle *linestyle, + ReportList *reports, + const char *name, + int type) { - LineStyleModifier *modifier = BKE_linestyle_thickness_modifier_add(linestyle, name, type); + LineStyleModifier *modifier = BKE_linestyle_thickness_modifier_add(linestyle, name, type); - if (!modifier) { - BKE_report(reports, RPT_ERROR, "Failed to add the thickness modifier"); - return NULL; - } + if (!modifier) { + BKE_report(reports, RPT_ERROR, "Failed to add the thickness modifier"); + return NULL; + } - DEG_id_tag_update(&linestyle->id, 0); - WM_main_add_notifier(NC_LINESTYLE, linestyle); + DEG_id_tag_update(&linestyle->id, 0); + WM_main_add_notifier(NC_LINESTYLE, linestyle); - return modifier; + return modifier; } -static void rna_LineStyle_thickness_modifier_remove(FreestyleLineStyle *linestyle, ReportList *reports, +static void rna_LineStyle_thickness_modifier_remove(FreestyleLineStyle *linestyle, + ReportList *reports, PointerRNA *modifier_ptr) { - LineStyleModifier *modifier = modifier_ptr->data; + LineStyleModifier *modifier = modifier_ptr->data; - if (BKE_linestyle_thickness_modifier_remove(linestyle, modifier) == -1) { - BKE_reportf(reports, RPT_ERROR, "Thickness modifier '%s' could not be removed", modifier->name); - return; - } + if (BKE_linestyle_thickness_modifier_remove(linestyle, modifier) == -1) { + BKE_reportf( + reports, RPT_ERROR, "Thickness modifier '%s' could not be removed", modifier->name); + return; + } - RNA_POINTER_INVALIDATE(modifier_ptr); + RNA_POINTER_INVALIDATE(modifier_ptr); - DEG_id_tag_update(&linestyle->id, 0); - WM_main_add_notifier(NC_LINESTYLE, linestyle); + DEG_id_tag_update(&linestyle->id, 0); + WM_main_add_notifier(NC_LINESTYLE, linestyle); } -static LineStyleModifier *rna_LineStyle_geometry_modifier_add(FreestyleLineStyle *linestyle, ReportList *reports, - const char *name, int type) +static LineStyleModifier *rna_LineStyle_geometry_modifier_add(FreestyleLineStyle *linestyle, + ReportList *reports, + const char *name, + int type) { - LineStyleModifier *modifier = BKE_linestyle_geometry_modifier_add(linestyle, name, type); + LineStyleModifier *modifier = BKE_linestyle_geometry_modifier_add(linestyle, name, type); - if (!modifier) { - BKE_report(reports, RPT_ERROR, "Failed to add the geometry modifier"); - return NULL; - } + if (!modifier) { + BKE_report(reports, RPT_ERROR, "Failed to add the geometry modifier"); + return NULL; + } - DEG_id_tag_update(&linestyle->id, 0); - WM_main_add_notifier(NC_LINESTYLE, linestyle); + DEG_id_tag_update(&linestyle->id, 0); + WM_main_add_notifier(NC_LINESTYLE, linestyle); - return modifier; + return modifier; } -static void rna_LineStyle_geometry_modifier_remove(FreestyleLineStyle *linestyle, ReportList *reports, +static void rna_LineStyle_geometry_modifier_remove(FreestyleLineStyle *linestyle, + ReportList *reports, PointerRNA *modifier_ptr) { - LineStyleModifier *modifier = modifier_ptr->data; + LineStyleModifier *modifier = modifier_ptr->data; - if (BKE_linestyle_geometry_modifier_remove(linestyle, modifier) == -1) { - BKE_reportf(reports, RPT_ERROR, "Geometry modifier '%s' could not be removed", modifier->name); - return; - } + if (BKE_linestyle_geometry_modifier_remove(linestyle, modifier) == -1) { + BKE_reportf(reports, RPT_ERROR, "Geometry modifier '%s' could not be removed", modifier->name); + return; + } - RNA_POINTER_INVALIDATE(modifier_ptr); + RNA_POINTER_INVALIDATE(modifier_ptr); - DEG_id_tag_update(&linestyle->id, 0); - WM_main_add_notifier(NC_LINESTYLE, linestyle); + DEG_id_tag_update(&linestyle->id, 0); + WM_main_add_notifier(NC_LINESTYLE, linestyle); } #else -#include "BLI_math.h" +# include "BLI_math.h" static void rna_def_linestyle_mtex(BlenderRNA *brna) { - StructRNA *srna; - PropertyRNA *prop; - - static const EnumPropertyItem texco_items[] = { - {TEXCO_WINDOW, "WINDOW", 0, "Window", "Use screen coordinates as texture coordinates"}, - {TEXCO_GLOB, "GLOBAL", 0, "Global", "Use global coordinates for the texture coordinates"}, - {TEXCO_STROKE, "ALONG_STROKE", 0, "Along stroke", "Use stroke length for texture coordinates"}, - {TEXCO_ORCO, "ORCO", 0, "Generated", "Use the original undeformed coordinates of the object"}, - {0, NULL, 0, NULL, NULL}, - }; - - static const EnumPropertyItem prop_mapping_items[] = { - {MTEX_FLAT, "FLAT", 0, "Flat", "Map X and Y coordinates directly"}, - {MTEX_CUBE, "CUBE", 0, "Cube", "Map using the normal vector"}, - {MTEX_TUBE, "TUBE", 0, "Tube", "Map with Z as central axis"}, - {MTEX_SPHERE, "SPHERE", 0, "Sphere", "Map with Z as central axis"}, - {0, NULL, 0, NULL, NULL}, - }; - - static const EnumPropertyItem prop_x_mapping_items[] = { - {0, "NONE", 0, "None", ""}, - {1, "X", 0, "X", ""}, - {2, "Y", 0, "Y", ""}, - {3, "Z", 0, "Z", ""}, - {0, NULL, 0, NULL, NULL}, - }; - - static const EnumPropertyItem prop_y_mapping_items[] = { - {0, "NONE", 0, "None", ""}, - {1, "X", 0, "X", ""}, - {2, "Y", 0, "Y", ""}, - {3, "Z", 0, "Z", ""}, - {0, NULL, 0, NULL, NULL}, - }; - - static const EnumPropertyItem prop_z_mapping_items[] = { - {0, "NONE", 0, "None", ""}, - {1, "X", 0, "X", ""}, - {2, "Y", 0, "Y", ""}, - {3, "Z", 0, "Z", ""}, - {0, NULL, 0, NULL, NULL}, - }; - - srna = RNA_def_struct(brna, "LineStyleTextureSlot", "TextureSlot"); - RNA_def_struct_sdna(srna, "MTex"); - RNA_def_struct_ui_text(srna, "LineStyle Texture Slot", "Texture slot for textures in a LineStyle data-block"); - - prop = RNA_def_property(srna, "mapping_x", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "projx"); - RNA_def_property_enum_items(prop, prop_x_mapping_items); - RNA_def_property_ui_text(prop, "X Mapping", ""); - RNA_def_property_update(prop, 0, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "mapping_y", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "projy"); - RNA_def_property_enum_items(prop, prop_y_mapping_items); - RNA_def_property_ui_text(prop, "Y Mapping", ""); - RNA_def_property_update(prop, 0, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "mapping_z", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "projz"); - RNA_def_property_enum_items(prop, prop_z_mapping_items); - RNA_def_property_ui_text(prop, "Z Mapping", ""); - RNA_def_property_update(prop, 0, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "mapping", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_items(prop, prop_mapping_items); - RNA_def_property_ui_text(prop, "Mapping", ""); - RNA_def_property_update(prop, 0, "rna_LineStyle_update"); - - /* map to */ - prop = RNA_def_property(srna, "use_map_color_diffuse", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_COL); - RNA_def_property_ui_text(prop, "Diffuse Color", "The texture affects basic color of the stroke"); - RNA_def_property_update(prop, 0, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_map_alpha", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_ALPHA); - RNA_def_property_ui_text(prop, "Alpha", "The texture affects the alpha value"); - RNA_def_property_update(prop, 0, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "texture_coords", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "texco"); - RNA_def_property_enum_items(prop, texco_items); - RNA_def_property_ui_text(prop, "Texture Coordinates", - "Texture coordinates used to map the texture onto the background"); - RNA_def_property_update(prop, 0, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "alpha_factor", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "alphafac"); - RNA_def_property_ui_range(prop, -1, 1, 10, 3); - RNA_def_property_ui_text(prop, "Alpha Factor", "Amount texture affects alpha"); - RNA_def_property_update(prop, 0, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "diffuse_color_factor", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "colfac"); - RNA_def_property_ui_range(prop, 0, 1, 10, 3); - RNA_def_property_ui_text(prop, "Diffuse Color Factor", "Amount texture affects diffuse color"); - RNA_def_property_update(prop, 0, "rna_LineStyle_update"); + StructRNA *srna; + PropertyRNA *prop; + + static const EnumPropertyItem texco_items[] = { + {TEXCO_WINDOW, "WINDOW", 0, "Window", "Use screen coordinates as texture coordinates"}, + {TEXCO_GLOB, "GLOBAL", 0, "Global", "Use global coordinates for the texture coordinates"}, + {TEXCO_STROKE, + "ALONG_STROKE", + 0, + "Along stroke", + "Use stroke length for texture coordinates"}, + {TEXCO_ORCO, + "ORCO", + 0, + "Generated", + "Use the original undeformed coordinates of the object"}, + {0, NULL, 0, NULL, NULL}, + }; + + static const EnumPropertyItem prop_mapping_items[] = { + {MTEX_FLAT, "FLAT", 0, "Flat", "Map X and Y coordinates directly"}, + {MTEX_CUBE, "CUBE", 0, "Cube", "Map using the normal vector"}, + {MTEX_TUBE, "TUBE", 0, "Tube", "Map with Z as central axis"}, + {MTEX_SPHERE, "SPHERE", 0, "Sphere", "Map with Z as central axis"}, + {0, NULL, 0, NULL, NULL}, + }; + + static const EnumPropertyItem prop_x_mapping_items[] = { + {0, "NONE", 0, "None", ""}, + {1, "X", 0, "X", ""}, + {2, "Y", 0, "Y", ""}, + {3, "Z", 0, "Z", ""}, + {0, NULL, 0, NULL, NULL}, + }; + + static const EnumPropertyItem prop_y_mapping_items[] = { + {0, "NONE", 0, "None", ""}, + {1, "X", 0, "X", ""}, + {2, "Y", 0, "Y", ""}, + {3, "Z", 0, "Z", ""}, + {0, NULL, 0, NULL, NULL}, + }; + + static const EnumPropertyItem prop_z_mapping_items[] = { + {0, "NONE", 0, "None", ""}, + {1, "X", 0, "X", ""}, + {2, "Y", 0, "Y", ""}, + {3, "Z", 0, "Z", ""}, + {0, NULL, 0, NULL, NULL}, + }; + + srna = RNA_def_struct(brna, "LineStyleTextureSlot", "TextureSlot"); + RNA_def_struct_sdna(srna, "MTex"); + RNA_def_struct_ui_text( + srna, "LineStyle Texture Slot", "Texture slot for textures in a LineStyle data-block"); + + prop = RNA_def_property(srna, "mapping_x", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "projx"); + RNA_def_property_enum_items(prop, prop_x_mapping_items); + RNA_def_property_ui_text(prop, "X Mapping", ""); + RNA_def_property_update(prop, 0, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "mapping_y", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "projy"); + RNA_def_property_enum_items(prop, prop_y_mapping_items); + RNA_def_property_ui_text(prop, "Y Mapping", ""); + RNA_def_property_update(prop, 0, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "mapping_z", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "projz"); + RNA_def_property_enum_items(prop, prop_z_mapping_items); + RNA_def_property_ui_text(prop, "Z Mapping", ""); + RNA_def_property_update(prop, 0, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "mapping", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_items(prop, prop_mapping_items); + RNA_def_property_ui_text(prop, "Mapping", ""); + RNA_def_property_update(prop, 0, "rna_LineStyle_update"); + + /* map to */ + prop = RNA_def_property(srna, "use_map_color_diffuse", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_COL); + RNA_def_property_ui_text(prop, "Diffuse Color", "The texture affects basic color of the stroke"); + RNA_def_property_update(prop, 0, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_map_alpha", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_ALPHA); + RNA_def_property_ui_text(prop, "Alpha", "The texture affects the alpha value"); + RNA_def_property_update(prop, 0, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "texture_coords", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "texco"); + RNA_def_property_enum_items(prop, texco_items); + RNA_def_property_ui_text(prop, + "Texture Coordinates", + "Texture coordinates used to map the texture onto the background"); + RNA_def_property_update(prop, 0, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "alpha_factor", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "alphafac"); + RNA_def_property_ui_range(prop, -1, 1, 10, 3); + RNA_def_property_ui_text(prop, "Alpha Factor", "Amount texture affects alpha"); + RNA_def_property_update(prop, 0, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "diffuse_color_factor", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "colfac"); + RNA_def_property_ui_range(prop, 0, 1, 10, 3); + RNA_def_property_ui_text(prop, "Diffuse Color Factor", "Amount texture affects diffuse color"); + RNA_def_property_update(prop, 0, "rna_LineStyle_update"); } -static void rna_def_modifier_type_common( - StructRNA *srna, const EnumPropertyItem *modifier_type_items, - const char *set_name_func, const bool blend, const bool color) +static void rna_def_modifier_type_common(StructRNA *srna, + const EnumPropertyItem *modifier_type_items, + const char *set_name_func, + const bool blend, + const bool color) { - PropertyRNA *prop; - - /* TODO: Check this is not already defined somewhere else, e.g. in nodes... */ - static const EnumPropertyItem value_blend_items[] = { - {LS_VALUE_BLEND, "MIX", 0, "Mix", ""}, - {LS_VALUE_ADD, "ADD", 0, "Add", ""}, - {LS_VALUE_SUB, "SUBTRACT", 0, "Subtract", ""}, - {LS_VALUE_MULT, "MULTIPLY", 0, "Multiply", ""}, - {LS_VALUE_DIV, "DIVIDE", 0, "Divide", ""}, - {LS_VALUE_DIFF, "DIFFERENCE", 0, "Difference", ""}, - {LS_VALUE_MIN, "MINIMUM", 0, "Minimum", ""}, - {LS_VALUE_MAX, "MAXIMUM", 0, "Maximum", ""}, - {0, NULL, 0, NULL, NULL}, - }; - - prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "modifier.type"); - RNA_def_property_enum_items(prop, modifier_type_items); - RNA_def_property_clear_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Modifier Type", "Type of the modifier"); - - prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); - RNA_def_property_string_sdna(prop, NULL, "modifier.name"); - RNA_def_property_string_funcs(prop, NULL, NULL, set_name_func); - RNA_def_property_ui_text(prop, "Modifier Name", "Name of the modifier"); - RNA_def_property_update(prop, NC_LINESTYLE, NULL); - RNA_def_struct_name_property(srna, prop); - - if (blend) { - prop = RNA_def_property(srna, "blend", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "modifier.blend"); - RNA_def_property_enum_items(prop, (color) ? rna_enum_ramp_blend_items : value_blend_items); - RNA_def_property_ui_text(prop, "Blend", "Specify how the modifier value is blended into the base value"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "influence", PROP_FLOAT, PROP_FACTOR); - RNA_def_property_float_sdna(prop, NULL, "modifier.influence"); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Influence", "Influence factor by which the modifier changes the property"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - } - - prop = RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "modifier.flags", LS_MODIFIER_ENABLED); - RNA_def_property_ui_text(prop, "Use", "Enable or disable this modifier during stroke rendering"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "modifier.flags", LS_MODIFIER_EXPANDED); - RNA_def_property_ui_text(prop, "Expanded", "True if the modifier tab is expanded"); + PropertyRNA *prop; + + /* TODO: Check this is not already defined somewhere else, e.g. in nodes... */ + static const EnumPropertyItem value_blend_items[] = { + {LS_VALUE_BLEND, "MIX", 0, "Mix", ""}, + {LS_VALUE_ADD, "ADD", 0, "Add", ""}, + {LS_VALUE_SUB, "SUBTRACT", 0, "Subtract", ""}, + {LS_VALUE_MULT, "MULTIPLY", 0, "Multiply", ""}, + {LS_VALUE_DIV, "DIVIDE", 0, "Divide", ""}, + {LS_VALUE_DIFF, "DIFFERENCE", 0, "Difference", ""}, + {LS_VALUE_MIN, "MINIMUM", 0, "Minimum", ""}, + {LS_VALUE_MAX, "MAXIMUM", 0, "Maximum", ""}, + {0, NULL, 0, NULL, NULL}, + }; + + prop = RNA_def_property(srna, "type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "modifier.type"); + RNA_def_property_enum_items(prop, modifier_type_items); + RNA_def_property_clear_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Modifier Type", "Type of the modifier"); + + prop = RNA_def_property(srna, "name", PROP_STRING, PROP_NONE); + RNA_def_property_string_sdna(prop, NULL, "modifier.name"); + RNA_def_property_string_funcs(prop, NULL, NULL, set_name_func); + RNA_def_property_ui_text(prop, "Modifier Name", "Name of the modifier"); + RNA_def_property_update(prop, NC_LINESTYLE, NULL); + RNA_def_struct_name_property(srna, prop); + + if (blend) { + prop = RNA_def_property(srna, "blend", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "modifier.blend"); + RNA_def_property_enum_items(prop, (color) ? rna_enum_ramp_blend_items : value_blend_items); + RNA_def_property_ui_text( + prop, "Blend", "Specify how the modifier value is blended into the base value"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "influence", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "modifier.influence"); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text( + prop, "Influence", "Influence factor by which the modifier changes the property"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + } + + prop = RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "modifier.flags", LS_MODIFIER_ENABLED); + RNA_def_property_ui_text(prop, "Use", "Enable or disable this modifier during stroke rendering"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "modifier.flags", LS_MODIFIER_EXPANDED); + RNA_def_property_ui_text(prop, "Expanded", "True if the modifier tab is expanded"); } static void rna_def_color_modifier(StructRNA *srna) { - rna_def_modifier_type_common(srna, rna_enum_linestyle_color_modifier_type_items, - "rna_LineStyleColorModifier_name_set", true, true); + rna_def_modifier_type_common(srna, + rna_enum_linestyle_color_modifier_type_items, + "rna_LineStyleColorModifier_name_set", + true, + true); } static void rna_def_alpha_modifier(StructRNA *srna) { - rna_def_modifier_type_common(srna, rna_enum_linestyle_alpha_modifier_type_items, - "rna_LineStyleAlphaModifier_name_set", true, false); + rna_def_modifier_type_common(srna, + rna_enum_linestyle_alpha_modifier_type_items, + "rna_LineStyleAlphaModifier_name_set", + true, + false); } static void rna_def_thickness_modifier(StructRNA *srna) { - rna_def_modifier_type_common(srna, rna_enum_linestyle_thickness_modifier_type_items, - "rna_LineStyleThicknessModifier_name_set", true, false); + rna_def_modifier_type_common(srna, + rna_enum_linestyle_thickness_modifier_type_items, + "rna_LineStyleThicknessModifier_name_set", + true, + false); } static void rna_def_geometry_modifier(StructRNA *srna) { - rna_def_modifier_type_common(srna, rna_enum_linestyle_geometry_modifier_type_items, - "rna_LineStyleGeometryModifier_name_set", false, false); + rna_def_modifier_type_common(srna, + rna_enum_linestyle_geometry_modifier_type_items, + "rna_LineStyleGeometryModifier_name_set", + false, + false); } static void rna_def_modifier_color_ramp_common(StructRNA *srna, int range) { - PropertyRNA *prop; - - prop = RNA_def_property(srna, "color_ramp", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "color_ramp"); - RNA_def_property_struct_type(prop, "ColorRamp"); - RNA_def_property_ui_text(prop, "Color Ramp", "Color ramp used to change line color"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - if (range) { - prop = RNA_def_property(srna, "range_min", PROP_FLOAT, PROP_DISTANCE); - RNA_def_property_float_sdna(prop, NULL, "range_min"); - RNA_def_property_ui_text(prop, "Range Min", "Lower bound of the input range the mapping is applied"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "range_max", PROP_FLOAT, PROP_DISTANCE); - RNA_def_property_float_sdna(prop, NULL, "range_max"); - RNA_def_property_ui_text(prop, "Range Max", "Upper bound of the input range the mapping is applied"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - } + PropertyRNA *prop; + + prop = RNA_def_property(srna, "color_ramp", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "color_ramp"); + RNA_def_property_struct_type(prop, "ColorRamp"); + RNA_def_property_ui_text(prop, "Color Ramp", "Color ramp used to change line color"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + if (range) { + prop = RNA_def_property(srna, "range_min", PROP_FLOAT, PROP_DISTANCE); + RNA_def_property_float_sdna(prop, NULL, "range_min"); + RNA_def_property_ui_text( + prop, "Range Min", "Lower bound of the input range the mapping is applied"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "range_max", PROP_FLOAT, PROP_DISTANCE); + RNA_def_property_float_sdna(prop, NULL, "range_max"); + RNA_def_property_ui_text( + prop, "Range Max", "Upper bound of the input range the mapping is applied"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + } } static void rna_def_modifier_curve_common(StructRNA *srna, bool range, bool value) { - PropertyRNA *prop; - - static const EnumPropertyItem mapping_items[] = { - {0, "LINEAR", 0, "Linear", "Use linear mapping"}, - {LS_MODIFIER_USE_CURVE, "CURVE", 0, "Curve", "Use curve mapping"}, - {0, NULL, 0, NULL, NULL}, - }; - - prop = RNA_def_property(srna, "mapping", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "flags"); - RNA_def_property_enum_items(prop, mapping_items); - RNA_def_property_ui_text(prop, "Mapping", "Select the mapping type"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "invert", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flags", LS_MODIFIER_INVERT); - RNA_def_property_ui_text(prop, "Invert", "Invert the fade-out direction of the linear mapping"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "curve"); - RNA_def_property_struct_type(prop, "CurveMapping"); - RNA_def_property_ui_text(prop, "Curve", "Curve used for the curve mapping"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - if (range) { - prop = RNA_def_property(srna, "range_min", PROP_FLOAT, PROP_DISTANCE); - RNA_def_property_float_sdna(prop, NULL, "range_min"); - RNA_def_property_ui_text(prop, "Range Min", "Lower bound of the input range the mapping is applied"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "range_max", PROP_FLOAT, PROP_DISTANCE); - RNA_def_property_float_sdna(prop, NULL, "range_max"); - RNA_def_property_ui_text(prop, "Range Max", "Upper bound of the input range the mapping is applied"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - } - - if (value) { - prop = RNA_def_property(srna, "value_min", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "value_min"); - RNA_def_property_ui_text(prop, "Value Min", "Minimum output value of the mapping"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "value_max", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "value_max"); - RNA_def_property_ui_text(prop, "Value Max", "Maximum output value of the mapping"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - } + PropertyRNA *prop; + + static const EnumPropertyItem mapping_items[] = { + {0, "LINEAR", 0, "Linear", "Use linear mapping"}, + {LS_MODIFIER_USE_CURVE, "CURVE", 0, "Curve", "Use curve mapping"}, + {0, NULL, 0, NULL, NULL}, + }; + + prop = RNA_def_property(srna, "mapping", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flags"); + RNA_def_property_enum_items(prop, mapping_items); + RNA_def_property_ui_text(prop, "Mapping", "Select the mapping type"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "invert", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", LS_MODIFIER_INVERT); + RNA_def_property_ui_text(prop, "Invert", "Invert the fade-out direction of the linear mapping"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "curve", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "curve"); + RNA_def_property_struct_type(prop, "CurveMapping"); + RNA_def_property_ui_text(prop, "Curve", "Curve used for the curve mapping"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + if (range) { + prop = RNA_def_property(srna, "range_min", PROP_FLOAT, PROP_DISTANCE); + RNA_def_property_float_sdna(prop, NULL, "range_min"); + RNA_def_property_ui_text( + prop, "Range Min", "Lower bound of the input range the mapping is applied"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "range_max", PROP_FLOAT, PROP_DISTANCE); + RNA_def_property_float_sdna(prop, NULL, "range_max"); + RNA_def_property_ui_text( + prop, "Range Max", "Upper bound of the input range the mapping is applied"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + } + + if (value) { + prop = RNA_def_property(srna, "value_min", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "value_min"); + RNA_def_property_ui_text(prop, "Value Min", "Minimum output value of the mapping"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "value_max", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "value_max"); + RNA_def_property_ui_text(prop, "Value Max", "Maximum output value of the mapping"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + } } static void rna_def_modifier_material_common(StructRNA *srna) { - PropertyRNA *prop; - - static const EnumPropertyItem mat_attr_items[] = { - {LS_MODIFIER_MATERIAL_LINE, "LINE", 0, "Line Color", ""}, - {LS_MODIFIER_MATERIAL_LINE_R, "LINE_R", 0, "Line Color Red", ""}, - {LS_MODIFIER_MATERIAL_LINE_G, "LINE_G", 0, "Line Color Green", ""}, - {LS_MODIFIER_MATERIAL_LINE_B, "LINE_B", 0, "Line Color Blue", ""}, - {LS_MODIFIER_MATERIAL_LINE_A, "LINE_A", 0, "Line Color Alpha", ""}, - {LS_MODIFIER_MATERIAL_DIFF, "DIFF", 0, "Diffuse Color", ""}, - {LS_MODIFIER_MATERIAL_DIFF_R, "DIFF_R", 0, "Diffuse Color Red", ""}, - {LS_MODIFIER_MATERIAL_DIFF_G, "DIFF_G", 0, "Diffuse Color Green", ""}, - {LS_MODIFIER_MATERIAL_DIFF_B, "DIFF_B", 0, "Diffuse Color Blue", ""}, - {LS_MODIFIER_MATERIAL_SPEC, "SPEC", 0, "Specular Color", ""}, - {LS_MODIFIER_MATERIAL_SPEC_R, "SPEC_R", 0, "Specular Color Red", ""}, - {LS_MODIFIER_MATERIAL_SPEC_G, "SPEC_G", 0, "Specular Color Green", ""}, - {LS_MODIFIER_MATERIAL_SPEC_B, "SPEC_B", 0, "Specular Color Blue", ""}, - {LS_MODIFIER_MATERIAL_SPEC_HARD, "SPEC_HARD", 0, "Specular Hardness", ""}, - {LS_MODIFIER_MATERIAL_ALPHA, "ALPHA", 0, "Alpha Transparency", ""}, - {0, NULL, 0, NULL, NULL}, - }; - - prop = RNA_def_property(srna, "material_attribute", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "mat_attr"); - RNA_def_property_enum_items(prop, mat_attr_items); - RNA_def_property_ui_text(prop, "Material Attribute", "Specify which material attribute is used"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - + PropertyRNA *prop; + + static const EnumPropertyItem mat_attr_items[] = { + {LS_MODIFIER_MATERIAL_LINE, "LINE", 0, "Line Color", ""}, + {LS_MODIFIER_MATERIAL_LINE_R, "LINE_R", 0, "Line Color Red", ""}, + {LS_MODIFIER_MATERIAL_LINE_G, "LINE_G", 0, "Line Color Green", ""}, + {LS_MODIFIER_MATERIAL_LINE_B, "LINE_B", 0, "Line Color Blue", ""}, + {LS_MODIFIER_MATERIAL_LINE_A, "LINE_A", 0, "Line Color Alpha", ""}, + {LS_MODIFIER_MATERIAL_DIFF, "DIFF", 0, "Diffuse Color", ""}, + {LS_MODIFIER_MATERIAL_DIFF_R, "DIFF_R", 0, "Diffuse Color Red", ""}, + {LS_MODIFIER_MATERIAL_DIFF_G, "DIFF_G", 0, "Diffuse Color Green", ""}, + {LS_MODIFIER_MATERIAL_DIFF_B, "DIFF_B", 0, "Diffuse Color Blue", ""}, + {LS_MODIFIER_MATERIAL_SPEC, "SPEC", 0, "Specular Color", ""}, + {LS_MODIFIER_MATERIAL_SPEC_R, "SPEC_R", 0, "Specular Color Red", ""}, + {LS_MODIFIER_MATERIAL_SPEC_G, "SPEC_G", 0, "Specular Color Green", ""}, + {LS_MODIFIER_MATERIAL_SPEC_B, "SPEC_B", 0, "Specular Color Blue", ""}, + {LS_MODIFIER_MATERIAL_SPEC_HARD, "SPEC_HARD", 0, "Specular Hardness", ""}, + {LS_MODIFIER_MATERIAL_ALPHA, "ALPHA", 0, "Alpha Transparency", ""}, + {0, NULL, 0, NULL, NULL}, + }; + + prop = RNA_def_property(srna, "material_attribute", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "mat_attr"); + RNA_def_property_enum_items(prop, mat_attr_items); + RNA_def_property_ui_text(prop, "Material Attribute", "Specify which material attribute is used"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); } static void rna_def_linestyle_modifiers(BlenderRNA *brna) { - StructRNA *srna; - PropertyRNA *prop; - - static const EnumPropertyItem blueprint_shape_items[] = { - {LS_MODIFIER_BLUEPRINT_CIRCLES, "CIRCLES", 0, "Circles", "Draw a blueprint using circular contour strokes"}, - {LS_MODIFIER_BLUEPRINT_ELLIPSES, "ELLIPSES", 0, "Ellipses", "Draw a blueprint using elliptic contour strokes"}, - {LS_MODIFIER_BLUEPRINT_SQUARES, "SQUARES", 0, "Squares", "Draw a blueprint using square contour strokes"}, - {0, NULL, 0, NULL, NULL}, - }; - - static const EnumPropertyItem transform_pivot_items[] = { - {LS_MODIFIER_2D_TRANSFORM_PIVOT_CENTER, "CENTER", 0, "Stroke Center", ""}, - {LS_MODIFIER_2D_TRANSFORM_PIVOT_START, "START", 0, "Stroke Start", ""}, - {LS_MODIFIER_2D_TRANSFORM_PIVOT_END, "END", 0, "Stroke End", ""}, - {LS_MODIFIER_2D_TRANSFORM_PIVOT_PARAM, "PARAM", 0, "Stroke Point Parameter", ""}, - {LS_MODIFIER_2D_TRANSFORM_PIVOT_ABSOLUTE, "ABSOLUTE", 0, "Absolute 2D Point", ""}, - {0, NULL, 0, NULL, NULL}, - }; - - srna = RNA_def_struct(brna, "LineStyleModifier", NULL); - RNA_def_struct_ui_text(srna, "Line Style Modifier", "Base type to define modifiers"); - - /* line color modifiers */ - - srna = RNA_def_struct(brna, "LineStyleColorModifier", "LineStyleModifier"); - RNA_def_struct_sdna(srna, "LineStyleModifier"); - RNA_def_struct_refine_func(srna, "rna_LineStyle_color_modifier_refine"); - RNA_def_struct_path_func(srna, "rna_LineStyle_color_modifier_path"); - RNA_def_struct_ui_text(srna, "Line Style Color Modifier", "Base type to define line color modifiers"); - - srna = RNA_def_struct(brna, "LineStyleColorModifier_AlongStroke", "LineStyleColorModifier"); - RNA_def_struct_ui_text(srna, "Along Stroke", "Change line color along stroke"); - rna_def_color_modifier(srna); - rna_def_modifier_color_ramp_common(srna, false); - - srna = RNA_def_struct(brna, "LineStyleColorModifier_DistanceFromCamera", "LineStyleColorModifier"); - RNA_def_struct_ui_text(srna, "Distance from Camera", "Change line color based on the distance from the camera"); - rna_def_color_modifier(srna); - rna_def_modifier_color_ramp_common(srna, true); - - srna = RNA_def_struct(brna, "LineStyleColorModifier_DistanceFromObject", "LineStyleColorModifier"); - RNA_def_struct_ui_text(srna, "Distance from Object", "Change line color based on the distance from an object"); - rna_def_color_modifier(srna); - rna_def_modifier_color_ramp_common(srna, true); - - prop = RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "target"); - RNA_def_property_struct_type(prop, "Object"); - RNA_def_property_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Target", "Target object from which the distance is measured"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleColorModifier_Material", "LineStyleColorModifier"); - RNA_def_struct_ui_text(srna, "Material", "Change line color based on a material attribute"); - rna_def_color_modifier(srna); - rna_def_modifier_material_common(srna); - rna_def_modifier_color_ramp_common(srna, false); - - prop = RNA_def_property(srna, "use_ramp", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flags", LS_MODIFIER_USE_RAMP); - RNA_def_property_ui_text(prop, "Ramp", "Use color ramp to map the BW average into an RGB color"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleColorModifier_Tangent", "LineStyleColorModifier"); - RNA_def_struct_ui_text(srna, "Tangent", "Change line color based on the direction of a stroke"); - rna_def_color_modifier(srna); - rna_def_modifier_color_ramp_common(srna, false); - - srna = RNA_def_struct(brna, "LineStyleColorModifier_Noise", "LineStyleColorModifier"); - RNA_def_struct_ui_text(srna, "Noise", "Change line color based on random noise"); - rna_def_color_modifier(srna); - rna_def_modifier_color_ramp_common(srna, false); - - prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "amplitude"); - RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "period", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "period"); - RNA_def_property_ui_text(prop, "Period", "Period of the noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "seed"); - RNA_def_property_ui_text(prop, "Seed", "Seed for the noise generation"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleColorModifier_CreaseAngle", "LineStyleColorModifier"); - RNA_def_struct_ui_text(srna, "Crease Angle", "Change line color based on the underlying crease angle"); - rna_def_color_modifier(srna); - rna_def_modifier_color_ramp_common(srna, false); - - prop = RNA_def_property(srna, "angle_min", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "min_angle"); - RNA_def_property_ui_text(prop, "Min Angle", "Minimum angle to modify thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "angle_max", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "max_angle"); - RNA_def_property_ui_text(prop, "Max Angle", "Maximum angle to modify thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleColorModifier_Curvature_3D", "LineStyleColorModifier"); - RNA_def_struct_ui_text(srna, "Curvature 3D", - "Change line color based on the radial curvature of 3D mesh surfaces"); - rna_def_color_modifier(srna); - rna_def_modifier_color_ramp_common(srna, false); - - prop = RNA_def_property(srna, "curvature_min", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "min_curvature"); - RNA_def_property_ui_text(prop, "Min Curvature", "Minimum Curvature"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "curvature_max", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "max_curvature"); - RNA_def_property_ui_text(prop, "Max Curvature", "Maximum Curvature"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - /* alpha transparency modifiers */ - - srna = RNA_def_struct(brna, "LineStyleAlphaModifier", "LineStyleModifier"); - RNA_def_struct_sdna(srna, "LineStyleModifier"); - RNA_def_struct_refine_func(srna, "rna_LineStyle_alpha_modifier_refine"); - RNA_def_struct_path_func(srna, "rna_LineStyle_alpha_modifier_path"); - RNA_def_struct_ui_text(srna, "Line Style Alpha Modifier", "Base type to define alpha transparency modifiers"); - - srna = RNA_def_struct(brna, "LineStyleAlphaModifier_AlongStroke", "LineStyleAlphaModifier"); - RNA_def_struct_ui_text(srna, "Along Stroke", "Change alpha transparency along stroke"); - rna_def_alpha_modifier(srna); - rna_def_modifier_curve_common(srna, false, false); - - srna = RNA_def_struct(brna, "LineStyleAlphaModifier_DistanceFromCamera", "LineStyleAlphaModifier"); - RNA_def_struct_ui_text(srna, "Distance from Camera", - "Change alpha transparency based on the distance from the camera"); - rna_def_alpha_modifier(srna); - rna_def_modifier_curve_common(srna, true, false); - - srna = RNA_def_struct(brna, "LineStyleAlphaModifier_DistanceFromObject", "LineStyleAlphaModifier"); - RNA_def_struct_ui_text(srna, "Distance from Object", - "Change alpha transparency based on the distance from an object"); - rna_def_alpha_modifier(srna); - rna_def_modifier_curve_common(srna, true, false); - - prop = RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "target"); - RNA_def_property_struct_type(prop, "Object"); - RNA_def_property_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Target", "Target object from which the distance is measured"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleAlphaModifier_Material", "LineStyleAlphaModifier"); - RNA_def_struct_ui_text(srna, "Material", "Change alpha transparency based on a material attribute"); - rna_def_alpha_modifier(srna); - rna_def_modifier_material_common(srna); - rna_def_modifier_curve_common(srna, false, false); - - srna = RNA_def_struct(brna, "LineStyleAlphaModifier_Tangent", "LineStyleAlphaModifier"); - RNA_def_struct_ui_text(srna, "Tangent", "Alpha transparency based on the direction of the stroke"); - rna_def_alpha_modifier(srna); - rna_def_modifier_curve_common(srna, false, false); - - srna = RNA_def_struct(brna, "LineStyleAlphaModifier_Noise", "LineStyleAlphaModifier"); - RNA_def_struct_ui_text(srna, "Noise", "Alpha transparency based on random noise"); - rna_def_alpha_modifier(srna); - rna_def_modifier_curve_common(srna, false, false); - - prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "amplitude"); - RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "period", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "period"); - RNA_def_property_ui_text(prop, "Period", "Period of the noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "seed"); - RNA_def_property_ui_text(prop, "Seed", "Seed for the noise generation"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleAlphaModifier_CreaseAngle", "LineStyleAlphaModifier"); - RNA_def_struct_ui_text(srna, "Crease Angle", - "Alpha transparency based on the angle between two adjacent faces"); - rna_def_alpha_modifier(srna); - rna_def_modifier_curve_common(srna, false, false); - - prop = RNA_def_property(srna, "angle_min", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "min_angle"); - RNA_def_property_ui_text(prop, "Min Angle", "Minimum angle to modify thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "angle_max", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "max_angle"); - RNA_def_property_ui_text(prop, "Max Angle", "Maximum angle to modify thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleAlphaModifier_Curvature_3D", "LineStyleAlphaModifier"); - RNA_def_struct_ui_text(srna, "Curvature 3D", - "Alpha transparency based on the radial curvature of 3D mesh surfaces"); - rna_def_alpha_modifier(srna); - rna_def_modifier_curve_common(srna, false, false); - - prop = RNA_def_property(srna, "curvature_min", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "min_curvature"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Min Curvature", "Minimum Curvature"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "curvature_max", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "max_curvature"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Max Curvature", "Maximum Curvature"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - /* line thickness modifiers */ - srna = RNA_def_struct(brna, "LineStyleThicknessModifier", "LineStyleModifier"); - RNA_def_struct_sdna(srna, "LineStyleModifier"); - RNA_def_struct_refine_func(srna, "rna_LineStyle_thickness_modifier_refine"); - RNA_def_struct_path_func(srna, "rna_LineStyle_thickness_modifier_path"); - RNA_def_struct_ui_text(srna, "Line Style Thickness Modifier", "Base type to define line thickness modifiers"); - - srna = RNA_def_struct(brna, "LineStyleThicknessModifier_Tangent", "LineStyleThicknessModifier"); - RNA_def_struct_ui_text(srna, "Tangent", "Thickness based on the direction of the stroke"); - rna_def_thickness_modifier(srna); - rna_def_modifier_curve_common(srna, false, false); - - prop = RNA_def_property(srna, "thickness_min", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "min_thickness"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Min Thickness", - "Minimum thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "thickness_max", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "max_thickness"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Max Thickness", "Maximum thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleThicknessModifier_AlongStroke", "LineStyleThicknessModifier"); - RNA_def_struct_ui_text(srna, "Along Stroke", "Change line thickness along stroke"); - rna_def_thickness_modifier(srna); - rna_def_modifier_curve_common(srna, false, true); - - srna = RNA_def_struct(brna, "LineStyleThicknessModifier_DistanceFromCamera", "LineStyleThicknessModifier"); - RNA_def_struct_ui_text(srna, "Distance from Camera", "Change line thickness based on the distance from the camera"); - rna_def_thickness_modifier(srna); - rna_def_modifier_curve_common(srna, true, true); - - srna = RNA_def_struct(brna, "LineStyleThicknessModifier_DistanceFromObject", "LineStyleThicknessModifier"); - RNA_def_struct_ui_text(srna, "Distance from Object", "Change line thickness based on the distance from an object"); - rna_def_thickness_modifier(srna); - rna_def_modifier_curve_common(srna, true, true); - - prop = RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "target"); - RNA_def_property_struct_type(prop, "Object"); - RNA_def_property_flag(prop, PROP_EDITABLE); - RNA_def_property_ui_text(prop, "Target", "Target object from which the distance is measured"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleThicknessModifier_Material", "LineStyleThicknessModifier"); - RNA_def_struct_ui_text(srna, "Material", "Change line thickness based on a material attribute"); - rna_def_thickness_modifier(srna); - rna_def_modifier_material_common(srna); - rna_def_modifier_curve_common(srna, false, true); - - srna = RNA_def_struct(brna, "LineStyleThicknessModifier_Calligraphy", "LineStyleThicknessModifier"); - RNA_def_struct_ui_text(srna, "Calligraphy", - "Change line thickness so that stroke looks like made with a calligraphic pen"); - rna_def_thickness_modifier(srna); - - prop = RNA_def_property(srna, "orientation", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "orientation"); - RNA_def_property_ui_text(prop, "Orientation", "Angle of the main direction"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "thickness_min", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "min_thickness"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Min Thickness", - "Minimum thickness in the direction perpendicular to the main direction"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "thickness_max", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "max_thickness"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Max Thickness", "Maximum thickness in the main direction"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleThicknessModifier_Noise", "LineStyleThicknessModifier"); - RNA_def_struct_ui_text(srna, "Noise", "Line thickness based on random noise"); - rna_def_thickness_modifier(srna); - - prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "amplitude"); - RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "period", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "period"); - RNA_def_property_ui_text(prop, "Period", "Period of the noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "seed"); - RNA_def_property_ui_text(prop, "Seed", "Seed for the noise generation"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_asymmetric", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flags", LS_THICKNESS_ASYMMETRIC); - RNA_def_property_ui_text(prop, "Asymmetric", "Allow thickness to be assigned asymmetrically"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleThicknessModifier_Curvature_3D", "LineStyleThicknessModifier"); - RNA_def_struct_ui_text(srna, "Curvature 3D", - "Line thickness based on the radial curvature of 3D mesh surfaces"); - rna_def_thickness_modifier(srna); - rna_def_modifier_curve_common(srna, false, false); - - prop = RNA_def_property(srna, "thickness_min", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "min_thickness"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Min Thickness", "Minimum thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "thickness_max", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "max_thickness"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Max Thickness", "Maximum thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "curvature_min", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "min_curvature"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Min Curvature", "Minimum Curvature"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "curvature_max", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "max_curvature"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Max Curvature", "Maximum Curvature"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleThicknessModifier_CreaseAngle", "LineStyleThicknessModifier"); - RNA_def_struct_ui_text(srna, "Crease Angle", - "Line thickness based on the angle between two adjacent faces"); - rna_def_thickness_modifier(srna); - rna_def_modifier_curve_common(srna, false, false); - - prop = RNA_def_property(srna, "angle_min", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "min_angle"); - RNA_def_property_ui_text(prop, "Min Angle", "Minimum angle to modify thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "angle_max", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "max_angle"); - RNA_def_property_ui_text(prop, "Max Angle", "Maximum angle to modify thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "thickness_min", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "min_thickness"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Min Thickness", "Minimum thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "thickness_max", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "max_thickness"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Max Thickness", "Maximum thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - /* geometry modifiers */ - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier", "LineStyleModifier"); - RNA_def_struct_sdna(srna, "LineStyleModifier"); - RNA_def_struct_refine_func(srna, "rna_LineStyle_geometry_modifier_refine"); - RNA_def_struct_path_func(srna, "rna_LineStyle_geometry_modifier_path"); - RNA_def_struct_ui_text(srna, "Line Style Geometry Modifier", "Base type to define stroke geometry modifiers"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_Sampling", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Sampling", - "Specify a new sampling value that determines the resolution of stroke polylines"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "sampling", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "sampling"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Sampling", "New sampling value to be used for subsequent modifiers"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_BezierCurve", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Bezier Curve", - "Replace stroke backbone geometry by a Bezier curve approximation of the " - "original backbone geometry"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "error", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "error"); - RNA_def_property_ui_text(prop, "Error", - "Maximum distance allowed between the new Bezier curve and the " - "original backbone geometry"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_SinusDisplacement", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Sinus Displacement", "Add sinus displacement to stroke backbone geometry"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "wavelength", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "wavelength"); - RNA_def_property_ui_text(prop, "Wavelength", "Wavelength of the sinus displacement"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "amplitude"); - RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the sinus displacement"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "phase", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "phase"); - RNA_def_property_ui_text(prop, "Phase", "Phase of the sinus displacement"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_SpatialNoise", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Spatial Noise", "Add spatial noise to stroke backbone geometry"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "amplitude"); - RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the spatial noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "scale"); - RNA_def_property_ui_text(prop, "Scale", "Scale of the spatial noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "octaves", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "octaves"); - RNA_def_property_ui_text(prop, "Octaves", "Number of octaves (i.e., the amount of detail of the spatial noise)"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "smooth", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flags", LS_MODIFIER_SPATIAL_NOISE_SMOOTH); - RNA_def_property_ui_text(prop, "Smooth", "If true, the spatial noise is smooth"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_pure_random", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flags", LS_MODIFIER_SPATIAL_NOISE_PURERANDOM); - RNA_def_property_ui_text(prop, "Pure Random", "If true, the spatial noise does not show any coherence"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_PerlinNoise1D", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Perlin Noise 1D", "Add one-dimensional Perlin noise to stroke backbone geometry"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "frequency", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "frequency"); - RNA_def_property_ui_text(prop, "Frequency", "Frequency of the Perlin noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "amplitude"); - RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the Perlin noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "octaves", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "octaves"); - RNA_def_property_ui_text(prop, "Octaves", "Number of octaves (i.e., the amount of detail of the Perlin noise)"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "angle"); - RNA_def_property_ui_text(prop, "Angle", "Displacement direction"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "seed"); - RNA_def_property_ui_text(prop, "Seed", - "Seed for random number generation (if negative, time is used as a seed instead)"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_PerlinNoise2D", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Perlin Noise 2D", "Add two-dimensional Perlin noise to stroke backbone geometry"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "frequency", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "frequency"); - RNA_def_property_ui_text(prop, "Frequency", "Frequency of the Perlin noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "amplitude"); - RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the Perlin noise"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "octaves", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "octaves"); - RNA_def_property_ui_text(prop, "Octaves", "Number of octaves (i.e., the amount of detail of the Perlin noise)"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "angle"); - RNA_def_property_ui_text(prop, "Angle", "Displacement direction"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); - RNA_def_property_int_sdna(prop, NULL, "seed"); - RNA_def_property_ui_text(prop, "Seed", - "Seed for random number generation (if negative, time is used as a seed instead)"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_BackboneStretcher", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Backbone Stretcher", "Stretch the beginning and the end of stroke backbone"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "backbone_length", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "backbone_length"); - RNA_def_property_ui_text(prop, "Backbone Length", "Amount of backbone stretching"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_TipRemover", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Tip Remover", - "Remove a piece of stroke at the beginning and the end of stroke backbone"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "tip_length", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "tip_length"); - RNA_def_property_ui_text(prop, "Tip Length", "Length of tips to be removed"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_Polygonalization", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Polygonalization", "Modify the stroke geometry so that it looks more 'polygonal'"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "error", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "error"); - RNA_def_property_ui_text(prop, "Error", - "Maximum distance between the original stroke and its polygonal approximation"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_GuidingLines", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Guiding Lines", - "Modify the stroke geometry so that it corresponds to its main direction line"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "offset"); - RNA_def_property_ui_text(prop, "Offset", - "Displacement that is applied to the main direction line along its normal"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_Blueprint", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Blueprint", - "Produce a blueprint using circular, elliptic, and square contour strokes"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "shape", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "flags"); - RNA_def_property_enum_items(prop, blueprint_shape_items); - RNA_def_property_ui_text(prop, "Shape", "Select the shape of blueprint contour strokes"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "rounds", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "rounds"); - RNA_def_property_range(prop, 1, 1000); - RNA_def_property_ui_text(prop, "Rounds", "Number of rounds in contour strokes"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "backbone_length", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "backbone_length"); - RNA_def_property_ui_text(prop, "Backbone Length", "Amount of backbone stretching"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "random_radius", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "random_radius"); - RNA_def_property_ui_text(prop, "Random Radius", "Randomness of the radius"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "random_center", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "random_center"); - RNA_def_property_ui_text(prop, "Random Center", "Randomness of the center"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "random_backbone", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "random_backbone"); - RNA_def_property_ui_text(prop, "Random Backbone", "Randomness of the backbone stretching"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_2DOffset", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "2D Offset", "Add two-dimensional offsets to stroke backbone geometry"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "start", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "start"); - RNA_def_property_ui_text(prop, "Start", "Displacement that is applied from the beginning of the stroke"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "end", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "end"); - RNA_def_property_ui_text(prop, "End", "Displacement that is applied from the end of the stroke"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "x", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "x"); - RNA_def_property_ui_text(prop, "X", "Displacement that is applied to the X coordinates of stroke vertices"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "y", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "y"); - RNA_def_property_ui_text(prop, "Y", "Displacement that is applied to the Y coordinates of stroke vertices"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_2DTransform", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "2D Transform", - "Apply two-dimensional scaling and rotation to stroke backbone geometry"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "pivot", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "pivot"); - RNA_def_property_enum_items(prop, transform_pivot_items); - RNA_def_property_ui_text(prop, "Pivot", "Pivot of scaling and rotation operations"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "scale_x", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "scale_x"); - RNA_def_property_flag(prop, PROP_PROPORTIONAL); - RNA_def_property_ui_text(prop, "Scale X", "Scaling factor that is applied along the X axis"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "scale_y", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "scale_y"); - RNA_def_property_flag(prop, PROP_PROPORTIONAL); - RNA_def_property_ui_text(prop, "Scale Y", "Scaling factor that is applied along the Y axis"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "angle"); - RNA_def_property_ui_text(prop, "Rotation Angle", "Rotation angle"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "pivot_u", PROP_FLOAT, PROP_FACTOR); - RNA_def_property_float_sdna(prop, NULL, "pivot_u"); - RNA_def_property_range(prop, 0.f, 1.f); - RNA_def_property_ui_text(prop, "Stroke Point Parameter", - "Pivot in terms of the stroke point parameter u (0 <= u <= 1)"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "pivot_x", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "pivot_x"); - RNA_def_property_ui_text(prop, "Pivot X", "2D X coordinate of the absolute pivot"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "pivot_y", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "pivot_y"); - RNA_def_property_ui_text(prop, "Pivot Y", "2D Y coordinate of the absolute pivot"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - srna = RNA_def_struct(brna, "LineStyleGeometryModifier_Simplification", "LineStyleGeometryModifier"); - RNA_def_struct_ui_text(srna, "Simplification", "Simplify the stroke set"); - rna_def_geometry_modifier(srna); - - prop = RNA_def_property(srna, "tolerance", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "tolerance"); - RNA_def_property_ui_text(prop, "Tolerance", "Distance below which segments will be merged"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + StructRNA *srna; + PropertyRNA *prop; + + static const EnumPropertyItem blueprint_shape_items[] = { + {LS_MODIFIER_BLUEPRINT_CIRCLES, + "CIRCLES", + 0, + "Circles", + "Draw a blueprint using circular contour strokes"}, + {LS_MODIFIER_BLUEPRINT_ELLIPSES, + "ELLIPSES", + 0, + "Ellipses", + "Draw a blueprint using elliptic contour strokes"}, + {LS_MODIFIER_BLUEPRINT_SQUARES, + "SQUARES", + 0, + "Squares", + "Draw a blueprint using square contour strokes"}, + {0, NULL, 0, NULL, NULL}, + }; + + static const EnumPropertyItem transform_pivot_items[] = { + {LS_MODIFIER_2D_TRANSFORM_PIVOT_CENTER, "CENTER", 0, "Stroke Center", ""}, + {LS_MODIFIER_2D_TRANSFORM_PIVOT_START, "START", 0, "Stroke Start", ""}, + {LS_MODIFIER_2D_TRANSFORM_PIVOT_END, "END", 0, "Stroke End", ""}, + {LS_MODIFIER_2D_TRANSFORM_PIVOT_PARAM, "PARAM", 0, "Stroke Point Parameter", ""}, + {LS_MODIFIER_2D_TRANSFORM_PIVOT_ABSOLUTE, "ABSOLUTE", 0, "Absolute 2D Point", ""}, + {0, NULL, 0, NULL, NULL}, + }; + + srna = RNA_def_struct(brna, "LineStyleModifier", NULL); + RNA_def_struct_ui_text(srna, "Line Style Modifier", "Base type to define modifiers"); + + /* line color modifiers */ + + srna = RNA_def_struct(brna, "LineStyleColorModifier", "LineStyleModifier"); + RNA_def_struct_sdna(srna, "LineStyleModifier"); + RNA_def_struct_refine_func(srna, "rna_LineStyle_color_modifier_refine"); + RNA_def_struct_path_func(srna, "rna_LineStyle_color_modifier_path"); + RNA_def_struct_ui_text( + srna, "Line Style Color Modifier", "Base type to define line color modifiers"); + + srna = RNA_def_struct(brna, "LineStyleColorModifier_AlongStroke", "LineStyleColorModifier"); + RNA_def_struct_ui_text(srna, "Along Stroke", "Change line color along stroke"); + rna_def_color_modifier(srna); + rna_def_modifier_color_ramp_common(srna, false); + + srna = RNA_def_struct( + brna, "LineStyleColorModifier_DistanceFromCamera", "LineStyleColorModifier"); + RNA_def_struct_ui_text( + srna, "Distance from Camera", "Change line color based on the distance from the camera"); + rna_def_color_modifier(srna); + rna_def_modifier_color_ramp_common(srna, true); + + srna = RNA_def_struct( + brna, "LineStyleColorModifier_DistanceFromObject", "LineStyleColorModifier"); + RNA_def_struct_ui_text( + srna, "Distance from Object", "Change line color based on the distance from an object"); + rna_def_color_modifier(srna); + rna_def_modifier_color_ramp_common(srna, true); + + prop = RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "target"); + RNA_def_property_struct_type(prop, "Object"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Target", "Target object from which the distance is measured"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleColorModifier_Material", "LineStyleColorModifier"); + RNA_def_struct_ui_text(srna, "Material", "Change line color based on a material attribute"); + rna_def_color_modifier(srna); + rna_def_modifier_material_common(srna); + rna_def_modifier_color_ramp_common(srna, false); + + prop = RNA_def_property(srna, "use_ramp", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", LS_MODIFIER_USE_RAMP); + RNA_def_property_ui_text(prop, "Ramp", "Use color ramp to map the BW average into an RGB color"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleColorModifier_Tangent", "LineStyleColorModifier"); + RNA_def_struct_ui_text(srna, "Tangent", "Change line color based on the direction of a stroke"); + rna_def_color_modifier(srna); + rna_def_modifier_color_ramp_common(srna, false); + + srna = RNA_def_struct(brna, "LineStyleColorModifier_Noise", "LineStyleColorModifier"); + RNA_def_struct_ui_text(srna, "Noise", "Change line color based on random noise"); + rna_def_color_modifier(srna); + rna_def_modifier_color_ramp_common(srna, false); + + prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "amplitude"); + RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "period", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "period"); + RNA_def_property_ui_text(prop, "Period", "Period of the noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "seed"); + RNA_def_property_ui_text(prop, "Seed", "Seed for the noise generation"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleColorModifier_CreaseAngle", "LineStyleColorModifier"); + RNA_def_struct_ui_text( + srna, "Crease Angle", "Change line color based on the underlying crease angle"); + rna_def_color_modifier(srna); + rna_def_modifier_color_ramp_common(srna, false); + + prop = RNA_def_property(srna, "angle_min", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "min_angle"); + RNA_def_property_ui_text(prop, "Min Angle", "Minimum angle to modify thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "angle_max", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "max_angle"); + RNA_def_property_ui_text(prop, "Max Angle", "Maximum angle to modify thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleColorModifier_Curvature_3D", "LineStyleColorModifier"); + RNA_def_struct_ui_text( + srna, "Curvature 3D", "Change line color based on the radial curvature of 3D mesh surfaces"); + rna_def_color_modifier(srna); + rna_def_modifier_color_ramp_common(srna, false); + + prop = RNA_def_property(srna, "curvature_min", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "min_curvature"); + RNA_def_property_ui_text(prop, "Min Curvature", "Minimum Curvature"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "curvature_max", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "max_curvature"); + RNA_def_property_ui_text(prop, "Max Curvature", "Maximum Curvature"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + /* alpha transparency modifiers */ + + srna = RNA_def_struct(brna, "LineStyleAlphaModifier", "LineStyleModifier"); + RNA_def_struct_sdna(srna, "LineStyleModifier"); + RNA_def_struct_refine_func(srna, "rna_LineStyle_alpha_modifier_refine"); + RNA_def_struct_path_func(srna, "rna_LineStyle_alpha_modifier_path"); + RNA_def_struct_ui_text( + srna, "Line Style Alpha Modifier", "Base type to define alpha transparency modifiers"); + + srna = RNA_def_struct(brna, "LineStyleAlphaModifier_AlongStroke", "LineStyleAlphaModifier"); + RNA_def_struct_ui_text(srna, "Along Stroke", "Change alpha transparency along stroke"); + rna_def_alpha_modifier(srna); + rna_def_modifier_curve_common(srna, false, false); + + srna = RNA_def_struct( + brna, "LineStyleAlphaModifier_DistanceFromCamera", "LineStyleAlphaModifier"); + RNA_def_struct_ui_text(srna, + "Distance from Camera", + "Change alpha transparency based on the distance from the camera"); + rna_def_alpha_modifier(srna); + rna_def_modifier_curve_common(srna, true, false); + + srna = RNA_def_struct( + brna, "LineStyleAlphaModifier_DistanceFromObject", "LineStyleAlphaModifier"); + RNA_def_struct_ui_text(srna, + "Distance from Object", + "Change alpha transparency based on the distance from an object"); + rna_def_alpha_modifier(srna); + rna_def_modifier_curve_common(srna, true, false); + + prop = RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "target"); + RNA_def_property_struct_type(prop, "Object"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Target", "Target object from which the distance is measured"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleAlphaModifier_Material", "LineStyleAlphaModifier"); + RNA_def_struct_ui_text( + srna, "Material", "Change alpha transparency based on a material attribute"); + rna_def_alpha_modifier(srna); + rna_def_modifier_material_common(srna); + rna_def_modifier_curve_common(srna, false, false); + + srna = RNA_def_struct(brna, "LineStyleAlphaModifier_Tangent", "LineStyleAlphaModifier"); + RNA_def_struct_ui_text( + srna, "Tangent", "Alpha transparency based on the direction of the stroke"); + rna_def_alpha_modifier(srna); + rna_def_modifier_curve_common(srna, false, false); + + srna = RNA_def_struct(brna, "LineStyleAlphaModifier_Noise", "LineStyleAlphaModifier"); + RNA_def_struct_ui_text(srna, "Noise", "Alpha transparency based on random noise"); + rna_def_alpha_modifier(srna); + rna_def_modifier_curve_common(srna, false, false); + + prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "amplitude"); + RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "period", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "period"); + RNA_def_property_ui_text(prop, "Period", "Period of the noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "seed"); + RNA_def_property_ui_text(prop, "Seed", "Seed for the noise generation"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleAlphaModifier_CreaseAngle", "LineStyleAlphaModifier"); + RNA_def_struct_ui_text( + srna, "Crease Angle", "Alpha transparency based on the angle between two adjacent faces"); + rna_def_alpha_modifier(srna); + rna_def_modifier_curve_common(srna, false, false); + + prop = RNA_def_property(srna, "angle_min", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "min_angle"); + RNA_def_property_ui_text(prop, "Min Angle", "Minimum angle to modify thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "angle_max", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "max_angle"); + RNA_def_property_ui_text(prop, "Max Angle", "Maximum angle to modify thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleAlphaModifier_Curvature_3D", "LineStyleAlphaModifier"); + RNA_def_struct_ui_text(srna, + "Curvature 3D", + "Alpha transparency based on the radial curvature of 3D mesh surfaces"); + rna_def_alpha_modifier(srna); + rna_def_modifier_curve_common(srna, false, false); + + prop = RNA_def_property(srna, "curvature_min", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "min_curvature"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Min Curvature", "Minimum Curvature"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "curvature_max", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "max_curvature"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Max Curvature", "Maximum Curvature"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + /* line thickness modifiers */ + srna = RNA_def_struct(brna, "LineStyleThicknessModifier", "LineStyleModifier"); + RNA_def_struct_sdna(srna, "LineStyleModifier"); + RNA_def_struct_refine_func(srna, "rna_LineStyle_thickness_modifier_refine"); + RNA_def_struct_path_func(srna, "rna_LineStyle_thickness_modifier_path"); + RNA_def_struct_ui_text( + srna, "Line Style Thickness Modifier", "Base type to define line thickness modifiers"); + + srna = RNA_def_struct(brna, "LineStyleThicknessModifier_Tangent", "LineStyleThicknessModifier"); + RNA_def_struct_ui_text(srna, "Tangent", "Thickness based on the direction of the stroke"); + rna_def_thickness_modifier(srna); + rna_def_modifier_curve_common(srna, false, false); + + prop = RNA_def_property(srna, "thickness_min", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "min_thickness"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Min Thickness", "Minimum thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "thickness_max", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "max_thickness"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Max Thickness", "Maximum thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleThicknessModifier_AlongStroke", "LineStyleThicknessModifier"); + RNA_def_struct_ui_text(srna, "Along Stroke", "Change line thickness along stroke"); + rna_def_thickness_modifier(srna); + rna_def_modifier_curve_common(srna, false, true); + + srna = RNA_def_struct( + brna, "LineStyleThicknessModifier_DistanceFromCamera", "LineStyleThicknessModifier"); + RNA_def_struct_ui_text( + srna, "Distance from Camera", "Change line thickness based on the distance from the camera"); + rna_def_thickness_modifier(srna); + rna_def_modifier_curve_common(srna, true, true); + + srna = RNA_def_struct( + brna, "LineStyleThicknessModifier_DistanceFromObject", "LineStyleThicknessModifier"); + RNA_def_struct_ui_text( + srna, "Distance from Object", "Change line thickness based on the distance from an object"); + rna_def_thickness_modifier(srna); + rna_def_modifier_curve_common(srna, true, true); + + prop = RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "target"); + RNA_def_property_struct_type(prop, "Object"); + RNA_def_property_flag(prop, PROP_EDITABLE); + RNA_def_property_ui_text(prop, "Target", "Target object from which the distance is measured"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleThicknessModifier_Material", "LineStyleThicknessModifier"); + RNA_def_struct_ui_text(srna, "Material", "Change line thickness based on a material attribute"); + rna_def_thickness_modifier(srna); + rna_def_modifier_material_common(srna); + rna_def_modifier_curve_common(srna, false, true); + + srna = RNA_def_struct( + brna, "LineStyleThicknessModifier_Calligraphy", "LineStyleThicknessModifier"); + RNA_def_struct_ui_text( + srna, + "Calligraphy", + "Change line thickness so that stroke looks like made with a calligraphic pen"); + rna_def_thickness_modifier(srna); + + prop = RNA_def_property(srna, "orientation", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "orientation"); + RNA_def_property_ui_text(prop, "Orientation", "Angle of the main direction"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "thickness_min", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "min_thickness"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text( + prop, + "Min Thickness", + "Minimum thickness in the direction perpendicular to the main direction"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "thickness_max", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "max_thickness"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Max Thickness", "Maximum thickness in the main direction"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleThicknessModifier_Noise", "LineStyleThicknessModifier"); + RNA_def_struct_ui_text(srna, "Noise", "Line thickness based on random noise"); + rna_def_thickness_modifier(srna); + + prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "amplitude"); + RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "period", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "period"); + RNA_def_property_ui_text(prop, "Period", "Period of the noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "seed"); + RNA_def_property_ui_text(prop, "Seed", "Seed for the noise generation"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_asymmetric", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", LS_THICKNESS_ASYMMETRIC); + RNA_def_property_ui_text(prop, "Asymmetric", "Allow thickness to be assigned asymmetrically"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleThicknessModifier_Curvature_3D", "LineStyleThicknessModifier"); + RNA_def_struct_ui_text( + srna, "Curvature 3D", "Line thickness based on the radial curvature of 3D mesh surfaces"); + rna_def_thickness_modifier(srna); + rna_def_modifier_curve_common(srna, false, false); + + prop = RNA_def_property(srna, "thickness_min", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "min_thickness"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Min Thickness", "Minimum thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "thickness_max", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "max_thickness"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Max Thickness", "Maximum thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "curvature_min", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "min_curvature"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Min Curvature", "Minimum Curvature"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "curvature_max", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "max_curvature"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Max Curvature", "Maximum Curvature"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleThicknessModifier_CreaseAngle", "LineStyleThicknessModifier"); + RNA_def_struct_ui_text( + srna, "Crease Angle", "Line thickness based on the angle between two adjacent faces"); + rna_def_thickness_modifier(srna); + rna_def_modifier_curve_common(srna, false, false); + + prop = RNA_def_property(srna, "angle_min", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "min_angle"); + RNA_def_property_ui_text(prop, "Min Angle", "Minimum angle to modify thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "angle_max", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "max_angle"); + RNA_def_property_ui_text(prop, "Max Angle", "Maximum angle to modify thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "thickness_min", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "min_thickness"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Min Thickness", "Minimum thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "thickness_max", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "max_thickness"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Max Thickness", "Maximum thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + /* geometry modifiers */ + + srna = RNA_def_struct(brna, "LineStyleGeometryModifier", "LineStyleModifier"); + RNA_def_struct_sdna(srna, "LineStyleModifier"); + RNA_def_struct_refine_func(srna, "rna_LineStyle_geometry_modifier_refine"); + RNA_def_struct_path_func(srna, "rna_LineStyle_geometry_modifier_path"); + RNA_def_struct_ui_text( + srna, "Line Style Geometry Modifier", "Base type to define stroke geometry modifiers"); + + srna = RNA_def_struct(brna, "LineStyleGeometryModifier_Sampling", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text( + srna, + "Sampling", + "Specify a new sampling value that determines the resolution of stroke polylines"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "sampling", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "sampling"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text( + prop, "Sampling", "New sampling value to be used for subsequent modifiers"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleGeometryModifier_BezierCurve", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text(srna, + "Bezier Curve", + "Replace stroke backbone geometry by a Bezier curve approximation of the " + "original backbone geometry"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "error", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "error"); + RNA_def_property_ui_text(prop, + "Error", + "Maximum distance allowed between the new Bezier curve and the " + "original backbone geometry"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleGeometryModifier_SinusDisplacement", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text( + srna, "Sinus Displacement", "Add sinus displacement to stroke backbone geometry"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "wavelength", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "wavelength"); + RNA_def_property_ui_text(prop, "Wavelength", "Wavelength of the sinus displacement"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "amplitude"); + RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the sinus displacement"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "phase", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "phase"); + RNA_def_property_ui_text(prop, "Phase", "Phase of the sinus displacement"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleGeometryModifier_SpatialNoise", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text(srna, "Spatial Noise", "Add spatial noise to stroke backbone geometry"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "amplitude"); + RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the spatial noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "scale"); + RNA_def_property_ui_text(prop, "Scale", "Scale of the spatial noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "octaves", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "octaves"); + RNA_def_property_ui_text( + prop, "Octaves", "Number of octaves (i.e., the amount of detail of the spatial noise)"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "smooth", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", LS_MODIFIER_SPATIAL_NOISE_SMOOTH); + RNA_def_property_ui_text(prop, "Smooth", "If true, the spatial noise is smooth"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_pure_random", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flags", LS_MODIFIER_SPATIAL_NOISE_PURERANDOM); + RNA_def_property_ui_text( + prop, "Pure Random", "If true, the spatial noise does not show any coherence"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleGeometryModifier_PerlinNoise1D", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text( + srna, "Perlin Noise 1D", "Add one-dimensional Perlin noise to stroke backbone geometry"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "frequency", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "frequency"); + RNA_def_property_ui_text(prop, "Frequency", "Frequency of the Perlin noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "amplitude"); + RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the Perlin noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "octaves", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "octaves"); + RNA_def_property_ui_text( + prop, "Octaves", "Number of octaves (i.e., the amount of detail of the Perlin noise)"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "angle"); + RNA_def_property_ui_text(prop, "Angle", "Displacement direction"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "seed"); + RNA_def_property_ui_text( + prop, + "Seed", + "Seed for random number generation (if negative, time is used as a seed instead)"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleGeometryModifier_PerlinNoise2D", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text( + srna, "Perlin Noise 2D", "Add two-dimensional Perlin noise to stroke backbone geometry"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "frequency", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "frequency"); + RNA_def_property_ui_text(prop, "Frequency", "Frequency of the Perlin noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "amplitude"); + RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of the Perlin noise"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "octaves", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "octaves"); + RNA_def_property_ui_text( + prop, "Octaves", "Number of octaves (i.e., the amount of detail of the Perlin noise)"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "angle"); + RNA_def_property_ui_text(prop, "Angle", "Displacement direction"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "seed", PROP_INT, PROP_NONE); + RNA_def_property_int_sdna(prop, NULL, "seed"); + RNA_def_property_ui_text( + prop, + "Seed", + "Seed for random number generation (if negative, time is used as a seed instead)"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleGeometryModifier_BackboneStretcher", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text( + srna, "Backbone Stretcher", "Stretch the beginning and the end of stroke backbone"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "backbone_length", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "backbone_length"); + RNA_def_property_ui_text(prop, "Backbone Length", "Amount of backbone stretching"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleGeometryModifier_TipRemover", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text( + srna, + "Tip Remover", + "Remove a piece of stroke at the beginning and the end of stroke backbone"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "tip_length", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "tip_length"); + RNA_def_property_ui_text(prop, "Tip Length", "Length of tips to be removed"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleGeometryModifier_Polygonalization", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text( + srna, "Polygonalization", "Modify the stroke geometry so that it looks more 'polygonal'"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "error", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "error"); + RNA_def_property_ui_text( + prop, + "Error", + "Maximum distance between the original stroke and its polygonal approximation"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleGeometryModifier_GuidingLines", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text( + srna, + "Guiding Lines", + "Modify the stroke geometry so that it corresponds to its main direction line"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "offset"); + RNA_def_property_ui_text( + prop, "Offset", "Displacement that is applied to the main direction line along its normal"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleGeometryModifier_Blueprint", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text( + srna, + "Blueprint", + "Produce a blueprint using circular, elliptic, and square contour strokes"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "shape", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flags"); + RNA_def_property_enum_items(prop, blueprint_shape_items); + RNA_def_property_ui_text(prop, "Shape", "Select the shape of blueprint contour strokes"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "rounds", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "rounds"); + RNA_def_property_range(prop, 1, 1000); + RNA_def_property_ui_text(prop, "Rounds", "Number of rounds in contour strokes"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "backbone_length", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "backbone_length"); + RNA_def_property_ui_text(prop, "Backbone Length", "Amount of backbone stretching"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "random_radius", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "random_radius"); + RNA_def_property_ui_text(prop, "Random Radius", "Randomness of the radius"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "random_center", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "random_center"); + RNA_def_property_ui_text(prop, "Random Center", "Randomness of the center"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "random_backbone", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "random_backbone"); + RNA_def_property_ui_text(prop, "Random Backbone", "Randomness of the backbone stretching"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct(brna, "LineStyleGeometryModifier_2DOffset", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text( + srna, "2D Offset", "Add two-dimensional offsets to stroke backbone geometry"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "start", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "start"); + RNA_def_property_ui_text( + prop, "Start", "Displacement that is applied from the beginning of the stroke"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "end", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "end"); + RNA_def_property_ui_text(prop, "End", "Displacement that is applied from the end of the stroke"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "x", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "x"); + RNA_def_property_ui_text( + prop, "X", "Displacement that is applied to the X coordinates of stroke vertices"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "y", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "y"); + RNA_def_property_ui_text( + prop, "Y", "Displacement that is applied to the Y coordinates of stroke vertices"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleGeometryModifier_2DTransform", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text(srna, + "2D Transform", + "Apply two-dimensional scaling and rotation to stroke backbone geometry"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "pivot", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "pivot"); + RNA_def_property_enum_items(prop, transform_pivot_items); + RNA_def_property_ui_text(prop, "Pivot", "Pivot of scaling and rotation operations"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "scale_x", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "scale_x"); + RNA_def_property_flag(prop, PROP_PROPORTIONAL); + RNA_def_property_ui_text(prop, "Scale X", "Scaling factor that is applied along the X axis"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "scale_y", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "scale_y"); + RNA_def_property_flag(prop, PROP_PROPORTIONAL); + RNA_def_property_ui_text(prop, "Scale Y", "Scaling factor that is applied along the Y axis"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "angle"); + RNA_def_property_ui_text(prop, "Rotation Angle", "Rotation angle"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "pivot_u", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "pivot_u"); + RNA_def_property_range(prop, 0.f, 1.f); + RNA_def_property_ui_text(prop, + "Stroke Point Parameter", + "Pivot in terms of the stroke point parameter u (0 <= u <= 1)"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "pivot_x", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "pivot_x"); + RNA_def_property_ui_text(prop, "Pivot X", "2D X coordinate of the absolute pivot"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "pivot_y", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "pivot_y"); + RNA_def_property_ui_text(prop, "Pivot Y", "2D Y coordinate of the absolute pivot"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + srna = RNA_def_struct( + brna, "LineStyleGeometryModifier_Simplification", "LineStyleGeometryModifier"); + RNA_def_struct_ui_text(srna, "Simplification", "Simplify the stroke set"); + rna_def_geometry_modifier(srna); + + prop = RNA_def_property(srna, "tolerance", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "tolerance"); + RNA_def_property_ui_text(prop, "Tolerance", "Distance below which segments will be merged"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); } static void rna_def_freestyle_color_modifiers(BlenderRNA *brna, PropertyRNA *cprop) { - StructRNA *srna; - FunctionRNA *func; - PropertyRNA *parm; - - RNA_def_property_srna(cprop, "LineStyleColorModifiers"); - srna = RNA_def_struct(brna, "LineStyleColorModifiers", NULL); - RNA_def_struct_sdna(srna, "FreestyleLineStyle"); - RNA_def_struct_ui_text(srna, "Color Modifiers", "Color modifiers for changing line colors"); - - func = RNA_def_function(srna, "new", "rna_LineStyle_color_modifier_add"); - RNA_def_function_ui_description(func, "Add a color modifier to line style"); - RNA_def_function_flag(func, FUNC_USE_REPORTS); - parm = RNA_def_string(func, "name", "ColorModifier", 0, "", "New name for the color modifier (not unique)"); - RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); - parm = RNA_def_enum(func, "type", rna_enum_linestyle_color_modifier_type_items, 0, "", "Color modifier type to add"); - RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); - parm = RNA_def_pointer(func, "modifier", "LineStyleColorModifier", "", "Newly added color modifier"); - RNA_def_function_return(func, parm); - - func = RNA_def_function(srna, "remove", "rna_LineStyle_color_modifier_remove"); - RNA_def_function_ui_description(func, "Remove a color modifier from line style"); - RNA_def_function_flag(func, FUNC_USE_REPORTS); - parm = RNA_def_pointer(func, "modifier", "LineStyleColorModifier", "", "Color modifier to remove"); - RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); - RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "LineStyleColorModifiers"); + srna = RNA_def_struct(brna, "LineStyleColorModifiers", NULL); + RNA_def_struct_sdna(srna, "FreestyleLineStyle"); + RNA_def_struct_ui_text(srna, "Color Modifiers", "Color modifiers for changing line colors"); + + func = RNA_def_function(srna, "new", "rna_LineStyle_color_modifier_add"); + RNA_def_function_ui_description(func, "Add a color modifier to line style"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + parm = RNA_def_string( + func, "name", "ColorModifier", 0, "", "New name for the color modifier (not unique)"); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + parm = RNA_def_enum(func, + "type", + rna_enum_linestyle_color_modifier_type_items, + 0, + "", + "Color modifier type to add"); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + parm = RNA_def_pointer( + func, "modifier", "LineStyleColorModifier", "", "Newly added color modifier"); + RNA_def_function_return(func, parm); + + func = RNA_def_function(srna, "remove", "rna_LineStyle_color_modifier_remove"); + RNA_def_function_ui_description(func, "Remove a color modifier from line style"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + parm = RNA_def_pointer( + func, "modifier", "LineStyleColorModifier", "", "Color modifier to remove"); + RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); + RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); } static void rna_def_freestyle_alpha_modifiers(BlenderRNA *brna, PropertyRNA *cprop) { - StructRNA *srna; - FunctionRNA *func; - PropertyRNA *parm; - - RNA_def_property_srna(cprop, "LineStyleAlphaModifiers"); - srna = RNA_def_struct(brna, "LineStyleAlphaModifiers", NULL); - RNA_def_struct_sdna(srna, "FreestyleLineStyle"); - RNA_def_struct_ui_text(srna, "Alpha Modifiers", "Alpha modifiers for changing line alphas"); - - func = RNA_def_function(srna, "new", "rna_LineStyle_alpha_modifier_add"); - RNA_def_function_ui_description(func, "Add a alpha modifier to line style"); - RNA_def_function_flag(func, FUNC_USE_REPORTS); - parm = RNA_def_string(func, "name", "AlphaModifier", 0, "", "New name for the alpha modifier (not unique)"); - RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); - parm = RNA_def_enum(func, "type", rna_enum_linestyle_alpha_modifier_type_items, 0, "", "Alpha modifier type to add"); - RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); - parm = RNA_def_pointer(func, "modifier", "LineStyleAlphaModifier", "", "Newly added alpha modifier"); - RNA_def_function_return(func, parm); - - func = RNA_def_function(srna, "remove", "rna_LineStyle_alpha_modifier_remove"); - RNA_def_function_ui_description(func, "Remove a alpha modifier from line style"); - RNA_def_function_flag(func, FUNC_USE_REPORTS); - parm = RNA_def_pointer(func, "modifier", "LineStyleAlphaModifier", "", "Alpha modifier to remove"); - RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); - RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "LineStyleAlphaModifiers"); + srna = RNA_def_struct(brna, "LineStyleAlphaModifiers", NULL); + RNA_def_struct_sdna(srna, "FreestyleLineStyle"); + RNA_def_struct_ui_text(srna, "Alpha Modifiers", "Alpha modifiers for changing line alphas"); + + func = RNA_def_function(srna, "new", "rna_LineStyle_alpha_modifier_add"); + RNA_def_function_ui_description(func, "Add a alpha modifier to line style"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + parm = RNA_def_string( + func, "name", "AlphaModifier", 0, "", "New name for the alpha modifier (not unique)"); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + parm = RNA_def_enum(func, + "type", + rna_enum_linestyle_alpha_modifier_type_items, + 0, + "", + "Alpha modifier type to add"); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + parm = RNA_def_pointer( + func, "modifier", "LineStyleAlphaModifier", "", "Newly added alpha modifier"); + RNA_def_function_return(func, parm); + + func = RNA_def_function(srna, "remove", "rna_LineStyle_alpha_modifier_remove"); + RNA_def_function_ui_description(func, "Remove a alpha modifier from line style"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + parm = RNA_def_pointer( + func, "modifier", "LineStyleAlphaModifier", "", "Alpha modifier to remove"); + RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); + RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); } static void rna_def_freestyle_thickness_modifiers(BlenderRNA *brna, PropertyRNA *cprop) { - StructRNA *srna; - FunctionRNA *func; - PropertyRNA *parm; - - RNA_def_property_srna(cprop, "LineStyleThicknessModifiers"); - srna = RNA_def_struct(brna, "LineStyleThicknessModifiers", NULL); - RNA_def_struct_sdna(srna, "FreestyleLineStyle"); - RNA_def_struct_ui_text(srna, "Thickness Modifiers", "Thickness modifiers for changing line thickness"); - - func = RNA_def_function(srna, "new", "rna_LineStyle_thickness_modifier_add"); - RNA_def_function_ui_description(func, "Add a thickness modifier to line style"); - RNA_def_function_flag(func, FUNC_USE_REPORTS); - parm = RNA_def_string(func, "name", "ThicknessModifier", 0, "", "New name for the thickness modifier (not unique)"); - RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); - parm = RNA_def_enum(func, "type", rna_enum_linestyle_thickness_modifier_type_items, 0, - "", "Thickness modifier type to add"); - RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); - parm = RNA_def_pointer(func, "modifier", "LineStyleThicknessModifier", "", "Newly added thickness modifier"); - RNA_def_function_return(func, parm); - - func = RNA_def_function(srna, "remove", "rna_LineStyle_thickness_modifier_remove"); - RNA_def_function_ui_description(func, "Remove a thickness modifier from line style"); - RNA_def_function_flag(func, FUNC_USE_REPORTS); - parm = RNA_def_pointer(func, "modifier", "LineStyleThicknessModifier", "", "Thickness modifier to remove"); - RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); - RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "LineStyleThicknessModifiers"); + srna = RNA_def_struct(brna, "LineStyleThicknessModifiers", NULL); + RNA_def_struct_sdna(srna, "FreestyleLineStyle"); + RNA_def_struct_ui_text( + srna, "Thickness Modifiers", "Thickness modifiers for changing line thickness"); + + func = RNA_def_function(srna, "new", "rna_LineStyle_thickness_modifier_add"); + RNA_def_function_ui_description(func, "Add a thickness modifier to line style"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + parm = RNA_def_string(func, + "name", + "ThicknessModifier", + 0, + "", + "New name for the thickness modifier (not unique)"); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + parm = RNA_def_enum(func, + "type", + rna_enum_linestyle_thickness_modifier_type_items, + 0, + "", + "Thickness modifier type to add"); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + parm = RNA_def_pointer( + func, "modifier", "LineStyleThicknessModifier", "", "Newly added thickness modifier"); + RNA_def_function_return(func, parm); + + func = RNA_def_function(srna, "remove", "rna_LineStyle_thickness_modifier_remove"); + RNA_def_function_ui_description(func, "Remove a thickness modifier from line style"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + parm = RNA_def_pointer( + func, "modifier", "LineStyleThicknessModifier", "", "Thickness modifier to remove"); + RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); + RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); } static void rna_def_freestyle_geometry_modifiers(BlenderRNA *brna, PropertyRNA *cprop) { - StructRNA *srna; - FunctionRNA *func; - PropertyRNA *parm; - - RNA_def_property_srna(cprop, "LineStyleGeometryModifiers"); - srna = RNA_def_struct(brna, "LineStyleGeometryModifiers", NULL); - RNA_def_struct_sdna(srna, "FreestyleLineStyle"); - RNA_def_struct_ui_text(srna, "Geometry Modifiers", "Geometry modifiers for changing line geometries"); - - func = RNA_def_function(srna, "new", "rna_LineStyle_geometry_modifier_add"); - RNA_def_function_ui_description(func, "Add a geometry modifier to line style"); - RNA_def_function_flag(func, FUNC_USE_REPORTS); - parm = RNA_def_string(func, "name", "GeometryModifier", 0, "", "New name for the geometry modifier (not unique)"); - RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); - parm = RNA_def_enum(func, "type", rna_enum_linestyle_geometry_modifier_type_items, 0, - "", "Geometry modifier type to add"); - RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); - parm = RNA_def_pointer(func, "modifier", "LineStyleGeometryModifier", "", "Newly added geometry modifier"); - RNA_def_function_return(func, parm); - - func = RNA_def_function(srna, "remove", "rna_LineStyle_geometry_modifier_remove"); - RNA_def_function_ui_description(func, "Remove a geometry modifier from line style"); - RNA_def_function_flag(func, FUNC_USE_REPORTS); - parm = RNA_def_pointer(func, "modifier", "LineStyleGeometryModifier", "", "Geometry modifier to remove"); - RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); - RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); + StructRNA *srna; + FunctionRNA *func; + PropertyRNA *parm; + + RNA_def_property_srna(cprop, "LineStyleGeometryModifiers"); + srna = RNA_def_struct(brna, "LineStyleGeometryModifiers", NULL); + RNA_def_struct_sdna(srna, "FreestyleLineStyle"); + RNA_def_struct_ui_text( + srna, "Geometry Modifiers", "Geometry modifiers for changing line geometries"); + + func = RNA_def_function(srna, "new", "rna_LineStyle_geometry_modifier_add"); + RNA_def_function_ui_description(func, "Add a geometry modifier to line style"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + parm = RNA_def_string( + func, "name", "GeometryModifier", 0, "", "New name for the geometry modifier (not unique)"); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + parm = RNA_def_enum(func, + "type", + rna_enum_linestyle_geometry_modifier_type_items, + 0, + "", + "Geometry modifier type to add"); + RNA_def_parameter_flags(parm, 0, PARM_REQUIRED); + parm = RNA_def_pointer( + func, "modifier", "LineStyleGeometryModifier", "", "Newly added geometry modifier"); + RNA_def_function_return(func, parm); + + func = RNA_def_function(srna, "remove", "rna_LineStyle_geometry_modifier_remove"); + RNA_def_function_ui_description(func, "Remove a geometry modifier from line style"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + parm = RNA_def_pointer( + func, "modifier", "LineStyleGeometryModifier", "", "Geometry modifier to remove"); + RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR); + RNA_def_parameter_clear_flags(parm, PROP_THICK_WRAP, 0); } static void rna_def_linestyle(BlenderRNA *brna) { - StructRNA *srna; - PropertyRNA *prop; - - static const EnumPropertyItem panel_items[] = { - {LS_PANEL_STROKES, "STROKES", 0, "Strokes", "Show the panel for stroke construction"}, - {LS_PANEL_COLOR, "COLOR", 0, "Color", "Show the panel for line color options"}, - {LS_PANEL_ALPHA, "ALPHA", 0, "Alpha", "Show the panel for alpha transparency options"}, - {LS_PANEL_THICKNESS, "THICKNESS", 0, "Thickness", "Show the panel for line thickness options"}, - {LS_PANEL_GEOMETRY, "GEOMETRY", 0, "Geometry", "Show the panel for stroke geometry options"}, - {LS_PANEL_TEXTURE, "TEXTURE", 0, "Texture", "Show the panel for stroke texture options"}, -#if 0 /* hidden for now */ - {LS_PANEL_MISC, "MISC", 0, "Misc", "Show the panel for miscellaneous options"}, -#endif - {0, NULL, 0, NULL, NULL}, - }; - static const EnumPropertyItem chaining_items[] = { - {LS_CHAINING_PLAIN, "PLAIN", 0, "Plain", "Plain chaining"}, - {LS_CHAINING_SKETCHY, "SKETCHY", 0, "Sketchy", "Sketchy chaining with a multiple touch"}, - {0, NULL, 0, NULL, NULL}, - }; - static const EnumPropertyItem cap_items[] = { - {LS_CAPS_BUTT, "BUTT", 0, "Butt", "Butt cap (flat)"}, - {LS_CAPS_ROUND, "ROUND", 0, "Round", "Round cap (half-circle)"}, - {LS_CAPS_SQUARE, "SQUARE", 0, "Square", "Square cap (flat and extended)"}, - {0, NULL, 0, NULL, NULL}, - }; - static const EnumPropertyItem thickness_position_items[] = { - {LS_THICKNESS_CENTER, "CENTER", 0, "Center", "Silhouettes and border edges are centered along stroke geometry"}, - {LS_THICKNESS_INSIDE, "INSIDE", 0, "Inside", "Silhouettes and border edges are drawn inside of stroke geometry"}, - {LS_THICKNESS_OUTSIDE, "OUTSIDE", 0, "Outside", "Silhouettes and border edges are drawn outside of stroke geometry"}, - {LS_THICKNESS_RELATIVE, "RELATIVE", 0, "Relative", "Silhouettes and border edges are shifted by a user-defined ratio"}, - {0, NULL, 0, NULL, NULL}, - }; - static const EnumPropertyItem sort_key_items[] = { - {LS_SORT_KEY_DISTANCE_FROM_CAMERA, "DISTANCE_FROM_CAMERA", 0, "Distance from Camera", "Sort by distance from camera (closer lines lie on top of further lines)"}, - {LS_SORT_KEY_2D_LENGTH, "2D_LENGTH", 0, "2D Length", "Sort by curvilinear 2D length (longer lines lie on top of shorter lines)"}, - {LS_SORT_KEY_PROJECTED_X, "PROJECTED_X", 0, "Projected X", "Sort by the projected X value in the image coordinate system"}, - {LS_SORT_KEY_PROJECTED_Y, "PROJECTED_Y", 0, "Projected Y", "Sort by the projected Y value in the image coordinate system"}, - {0, NULL, 0, NULL, NULL}, - }; - static const EnumPropertyItem sort_order_items[] = { - {0, "DEFAULT", 0, "Default", "Default order of the sort key"}, - {LS_REVERSE_ORDER, "REVERSE", 0, "Reverse", "Reverse order"}, - {0, NULL, 0, NULL, NULL}, - }; - static const EnumPropertyItem integration_type_items[] = { - {LS_INTEGRATION_MEAN, "MEAN", 0, "Mean", "The value computed for the chain is the mean of the values obtained for chain vertices"}, - {LS_INTEGRATION_MIN, "MIN", 0, "Min", "The value computed for the chain is the minimum of the values obtained for chain vertices"}, - {LS_INTEGRATION_MAX, "MAX", 0, "Max", "The value computed for the chain is the maximum of the values obtained for chain vertices"}, - {LS_INTEGRATION_FIRST, "FIRST", 0, "First", "The value computed for the chain is the value obtained for the first chain vertex"}, - {LS_INTEGRATION_LAST, "LAST", 0, "Last", "The value computed for the chain is the value obtained for the last chain vertex"}, - {0, NULL, 0, NULL, NULL}, - }; - - srna = RNA_def_struct(brna, "FreestyleLineStyle", "ID"); - RNA_def_struct_ui_text(srna, "Freestyle Line Style", "Freestyle line style, reusable by multiple line sets"); - RNA_def_struct_ui_icon(srna, ICON_LINE_DATA); - - rna_def_mtex_common(brna, srna, "rna_LineStyle_mtex_begin", "rna_LineStyle_active_texture_get", - "rna_LineStyle_active_texture_set", NULL, "LineStyleTextureSlot", "LineStyleTextureSlots", - "rna_LineStyle_update", "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "panel", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "panel"); - RNA_def_property_enum_items(prop, panel_items); - RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); - RNA_def_property_ui_text(prop, "Panel", "Select the property panel to be shown"); - - prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); - RNA_def_property_float_sdna(prop, NULL, "r"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Color", "Base line color, possibly modified by line color modifiers"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "alpha", PROP_FLOAT, PROP_FACTOR); - RNA_def_property_float_sdna(prop, NULL, "alpha"); - RNA_def_property_range(prop, 0.0f, 1.0f); - RNA_def_property_ui_text(prop, "Alpha Transparency", - "Base alpha transparency, possibly modified by alpha transparency modifiers"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "thickness", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "thickness"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Thickness", "Base line thickness, possibly modified by line thickness modifiers"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "thickness_position", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "thickness_position"); - RNA_def_property_enum_items(prop, thickness_position_items); - RNA_def_property_ui_text(prop, "Thickness Position", - "Thickness position of silhouettes and border edges (applicable when plain chaining is used with the Same Object option)"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "thickness_ratio", PROP_FLOAT, PROP_FACTOR); - RNA_def_property_float_sdna(prop, NULL, "thickness_ratio"); - RNA_def_property_range(prop, 0.f, 1.f); - RNA_def_property_ui_text(prop, "Thickness Ratio", - "A number between 0 (inside) and 1 (outside) specifying the relative position of " - "stroke thickness"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "color_modifiers", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_sdna(prop, NULL, "color_modifiers", NULL); - RNA_def_property_struct_type(prop, "LineStyleColorModifier"); - RNA_def_property_ui_text(prop, "Color Modifiers", "List of line color modifiers"); - rna_def_freestyle_color_modifiers(brna, prop); - - prop = RNA_def_property(srna, "alpha_modifiers", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_sdna(prop, NULL, "alpha_modifiers", NULL); - RNA_def_property_struct_type(prop, "LineStyleAlphaModifier"); - RNA_def_property_ui_text(prop, "Alpha Modifiers", "List of alpha transparency modifiers"); - rna_def_freestyle_alpha_modifiers(brna, prop); - - prop = RNA_def_property(srna, "thickness_modifiers", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_sdna(prop, NULL, "thickness_modifiers", NULL); - RNA_def_property_struct_type(prop, "LineStyleThicknessModifier"); - RNA_def_property_ui_text(prop, "Thickness Modifiers", "List of line thickness modifiers"); - rna_def_freestyle_thickness_modifiers(brna, prop); - - prop = RNA_def_property(srna, "geometry_modifiers", PROP_COLLECTION, PROP_NONE); - RNA_def_property_collection_sdna(prop, NULL, "geometry_modifiers", NULL); - RNA_def_property_struct_type(prop, "LineStyleGeometryModifier"); - RNA_def_property_ui_text(prop, "Geometry Modifiers", "List of stroke geometry modifiers"); - rna_def_freestyle_geometry_modifiers(brna, prop); - - prop = RNA_def_property(srna, "use_chaining", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", LS_NO_CHAINING); - RNA_def_property_ui_text(prop, "Chaining", "Enable chaining of feature edges"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "chaining", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "chaining"); - RNA_def_property_enum_items(prop, chaining_items); - RNA_def_property_ui_text(prop, "Chaining Method", "Select the way how feature edges are jointed to form chains"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "rounds", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "rounds"); - RNA_def_property_range(prop, 1, 1000); - RNA_def_property_ui_text(prop, "Rounds", "Number of rounds in a sketchy multiple touch"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_same_object", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_SAME_OBJECT); - RNA_def_property_ui_text(prop, "Same Object", "If true, only feature edges of the same object are joined"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_split_length", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_SPLIT_LENGTH); - RNA_def_property_ui_text(prop, "Use Split Length", "Enable chain splitting by curvilinear 2D length"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "split_length", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "split_length"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Split Length", "Curvilinear 2D length for chain splitting"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_angle_min", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_MIN_2D_ANGLE); - RNA_def_property_ui_text(prop, "Use Min 2D Angle", - "Split chains at points with angles smaller than the minimum 2D angle"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "angle_min", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "min_angle"); - RNA_def_property_range(prop, 0.0f, DEG2RADF(180.0f)); - RNA_def_property_ui_text(prop, "Min 2D Angle", "Minimum 2D angle for splitting chains"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_angle_max", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_MAX_2D_ANGLE); - RNA_def_property_ui_text(prop, "Use Max 2D Angle", - "Split chains at points with angles larger than the maximum 2D angle"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "angle_max", PROP_FLOAT, PROP_ANGLE); - RNA_def_property_float_sdna(prop, NULL, "max_angle"); - RNA_def_property_range(prop, 0.0f, DEG2RADF(180.0f)); - RNA_def_property_ui_text(prop, "Max 2D Angle", "Maximum 2D angle for splitting chains"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_length_min", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_MIN_2D_LENGTH); - RNA_def_property_ui_text(prop, "Use Min 2D Length", "Enable the selection of chains by a minimum 2D length"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "length_min", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "min_length"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Min 2D Length", "Minimum curvilinear 2D length for the selection of chains"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_length_max", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_MAX_2D_LENGTH); - RNA_def_property_ui_text(prop, "Use Max 2D Length", "Enable the selection of chains by a maximum 2D length"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "length_max", PROP_FLOAT, PROP_NONE); - RNA_def_property_float_sdna(prop, NULL, "max_length"); - RNA_def_property_range(prop, 0.0f, 10000.0f); - RNA_def_property_ui_text(prop, "Max 2D Length", "Maximum curvilinear 2D length for the selection of chains"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_chain_count", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_CHAIN_COUNT); - RNA_def_property_ui_text(prop, "Use Chain Count", "Enable the selection of first N chains"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "chain_count", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "chain_count"); - RNA_def_property_ui_text(prop, "Chain Count", "Chain count for the selection of first N chains"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_split_pattern", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_SPLIT_PATTERN); - RNA_def_property_ui_text(prop, "Use Split Pattern", "Enable chain splitting by dashed line patterns"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "split_dash1", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "split_dash1"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Split Dash 1", "Length of the 1st dash for splitting"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "split_gap1", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "split_gap1"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Split Gap 1", "Length of the 1st gap for splitting"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "split_dash2", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "split_dash2"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Split Dash 2", "Length of the 2nd dash for splitting"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "split_gap2", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "split_gap2"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Split Gap 2", "Length of the 2nd gap for splitting"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "split_dash3", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "split_dash3"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Split Dash 3", "Length of the 3rd dash for splitting"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "split_gap3", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "split_gap3"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Split Gap 3", "Length of the 3rd gap for splitting"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "material_boundary", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_MATERIAL_BOUNDARY); - RNA_def_property_ui_text(prop, "Material Boundary", "If true, chains of feature edges are split at material boundaries"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_sorting", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", LS_NO_SORTING); - RNA_def_property_ui_text(prop, "Sorting", "Arrange the stacking order of strokes"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "sort_key", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "sort_key"); - RNA_def_property_enum_items(prop, sort_key_items); - RNA_def_property_ui_text(prop, "Sort Key", "Select the sort key to determine the stacking order of chains"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "sort_order", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); - RNA_def_property_enum_items(prop, sort_order_items); - RNA_def_property_ui_text(prop, "Sort Order", "Select the sort order"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "integration_type", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_sdna(prop, NULL, "integration_type"); - RNA_def_property_enum_items(prop, integration_type_items); - RNA_def_property_ui_text(prop, "Integration Type", "Select the way how the sort key is computed for each chain"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_dashed_line", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_DASHED_LINE); - RNA_def_property_ui_text(prop, "Dashed Line", "Enable or disable dashed line"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "caps", PROP_ENUM, PROP_NONE); - RNA_def_property_enum_bitflag_sdna(prop, NULL, "caps"); - RNA_def_property_enum_items(prop, cap_items); - RNA_def_property_ui_text(prop, "Caps", "Select the shape of both ends of strokes"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "dash1", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "dash1"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Dash 1", "Length of the 1st dash for dashed lines"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "gap1", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "gap1"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Gap 1", "Length of the 1st gap for dashed lines"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "dash2", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "dash2"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Dash 2", "Length of the 2nd dash for dashed lines"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "gap2", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "gap2"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Gap 2", "Length of the 2nd gap for dashed lines"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "dash3", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "dash3"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Dash 3", "Length of the 3rd dash for dashed lines"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "gap3", PROP_INT, PROP_UNSIGNED); - RNA_def_property_int_sdna(prop, NULL, "gap3"); - RNA_def_property_range(prop, 0, USHRT_MAX); - RNA_def_property_ui_text(prop, "Gap 3", "Length of the 3rd gap for dashed lines"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "use_texture", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_TEXTURE); - RNA_def_property_ui_text(prop, "Use Textures", "Enable or disable textured strokes"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - prop = RNA_def_property(srna, "texture_spacing", PROP_FLOAT, PROP_FACTOR); - RNA_def_property_float_sdna(prop, NULL, "texstep"); - RNA_def_property_range(prop, 0.01f, 100.0f); - RNA_def_property_ui_text(prop, "Texture spacing", "Spacing for textures along stroke length"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); - - /* anim */ - rna_def_animdata_common(srna); - - /* nodes */ - prop = RNA_def_property(srna, "node_tree", PROP_POINTER, PROP_NONE); - RNA_def_property_pointer_sdna(prop, NULL, "nodetree"); - RNA_def_property_ui_text(prop, "Node Tree", "Node tree for node-based shaders"); - - prop = RNA_def_property(srna, "use_nodes", PROP_BOOLEAN, PROP_NONE); - RNA_def_property_boolean_sdna(prop, NULL, "use_nodes", 1); - RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); - RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); - RNA_def_property_ui_text(prop, "Use Nodes", "Use shader nodes for the line style"); - RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_use_nodes_update"); + StructRNA *srna; + PropertyRNA *prop; + + static const EnumPropertyItem panel_items[] = { + {LS_PANEL_STROKES, "STROKES", 0, "Strokes", "Show the panel for stroke construction"}, + {LS_PANEL_COLOR, "COLOR", 0, "Color", "Show the panel for line color options"}, + {LS_PANEL_ALPHA, "ALPHA", 0, "Alpha", "Show the panel for alpha transparency options"}, + {LS_PANEL_THICKNESS, "THICKNESS", 0, "Thickness", "Show the panel for line thickness options"}, + {LS_PANEL_GEOMETRY, "GEOMETRY", 0, "Geometry", "Show the panel for stroke geometry options"}, + {LS_PANEL_TEXTURE, "TEXTURE", 0, "Texture", "Show the panel for stroke texture options"}, +# if 0 /* hidden for now */ + {LS_PANEL_MISC, "MISC", 0, "Misc", "Show the panel for miscellaneous options"}, +# endif + {0, NULL, 0, NULL, NULL}, + }; + static const EnumPropertyItem chaining_items[] = { + {LS_CHAINING_PLAIN, "PLAIN", 0, "Plain", "Plain chaining"}, + {LS_CHAINING_SKETCHY, "SKETCHY", 0, "Sketchy", "Sketchy chaining with a multiple touch"}, + {0, NULL, 0, NULL, NULL}, + }; + static const EnumPropertyItem cap_items[] = { + {LS_CAPS_BUTT, "BUTT", 0, "Butt", "Butt cap (flat)"}, + {LS_CAPS_ROUND, "ROUND", 0, "Round", "Round cap (half-circle)"}, + {LS_CAPS_SQUARE, "SQUARE", 0, "Square", "Square cap (flat and extended)"}, + {0, NULL, 0, NULL, NULL}, + }; + static const EnumPropertyItem thickness_position_items[] = { + {LS_THICKNESS_CENTER, + "CENTER", + 0, + "Center", + "Silhouettes and border edges are centered along stroke geometry"}, + {LS_THICKNESS_INSIDE, + "INSIDE", + 0, + "Inside", + "Silhouettes and border edges are drawn inside of stroke geometry"}, + {LS_THICKNESS_OUTSIDE, + "OUTSIDE", + 0, + "Outside", + "Silhouettes and border edges are drawn outside of stroke geometry"}, + {LS_THICKNESS_RELATIVE, + "RELATIVE", + 0, + "Relative", + "Silhouettes and border edges are shifted by a user-defined ratio"}, + {0, NULL, 0, NULL, NULL}, + }; + static const EnumPropertyItem sort_key_items[] = { + {LS_SORT_KEY_DISTANCE_FROM_CAMERA, + "DISTANCE_FROM_CAMERA", + 0, + "Distance from Camera", + "Sort by distance from camera (closer lines lie on top of further lines)"}, + {LS_SORT_KEY_2D_LENGTH, + "2D_LENGTH", + 0, + "2D Length", + "Sort by curvilinear 2D length (longer lines lie on top of shorter lines)"}, + {LS_SORT_KEY_PROJECTED_X, + "PROJECTED_X", + 0, + "Projected X", + "Sort by the projected X value in the image coordinate system"}, + {LS_SORT_KEY_PROJECTED_Y, + "PROJECTED_Y", + 0, + "Projected Y", + "Sort by the projected Y value in the image coordinate system"}, + {0, NULL, 0, NULL, NULL}, + }; + static const EnumPropertyItem sort_order_items[] = { + {0, "DEFAULT", 0, "Default", "Default order of the sort key"}, + {LS_REVERSE_ORDER, "REVERSE", 0, "Reverse", "Reverse order"}, + {0, NULL, 0, NULL, NULL}, + }; + static const EnumPropertyItem integration_type_items[] = { + {LS_INTEGRATION_MEAN, + "MEAN", + 0, + "Mean", + "The value computed for the chain is the mean of the values obtained for chain vertices"}, + {LS_INTEGRATION_MIN, + "MIN", + 0, + "Min", + "The value computed for the chain is the minimum of the values obtained for chain " + "vertices"}, + {LS_INTEGRATION_MAX, + "MAX", + 0, + "Max", + "The value computed for the chain is the maximum of the values obtained for chain " + "vertices"}, + {LS_INTEGRATION_FIRST, + "FIRST", + 0, + "First", + "The value computed for the chain is the value obtained for the first chain vertex"}, + {LS_INTEGRATION_LAST, + "LAST", + 0, + "Last", + "The value computed for the chain is the value obtained for the last chain vertex"}, + {0, NULL, 0, NULL, NULL}, + }; + + srna = RNA_def_struct(brna, "FreestyleLineStyle", "ID"); + RNA_def_struct_ui_text( + srna, "Freestyle Line Style", "Freestyle line style, reusable by multiple line sets"); + RNA_def_struct_ui_icon(srna, ICON_LINE_DATA); + + rna_def_mtex_common(brna, + srna, + "rna_LineStyle_mtex_begin", + "rna_LineStyle_active_texture_get", + "rna_LineStyle_active_texture_set", + NULL, + "LineStyleTextureSlot", + "LineStyleTextureSlots", + "rna_LineStyle_update", + "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "panel", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "panel"); + RNA_def_property_enum_items(prop, panel_items); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_ui_text(prop, "Panel", "Select the property panel to be shown"); + + prop = RNA_def_property(srna, "color", PROP_FLOAT, PROP_COLOR); + RNA_def_property_float_sdna(prop, NULL, "r"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text( + prop, "Color", "Base line color, possibly modified by line color modifiers"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "alpha", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "alpha"); + RNA_def_property_range(prop, 0.0f, 1.0f); + RNA_def_property_ui_text( + prop, + "Alpha Transparency", + "Base alpha transparency, possibly modified by alpha transparency modifiers"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "thickness", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "thickness"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text( + prop, "Thickness", "Base line thickness, possibly modified by line thickness modifiers"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "thickness_position", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "thickness_position"); + RNA_def_property_enum_items(prop, thickness_position_items); + RNA_def_property_ui_text(prop, + "Thickness Position", + "Thickness position of silhouettes and border edges (applicable when " + "plain chaining is used with the Same Object option)"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "thickness_ratio", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "thickness_ratio"); + RNA_def_property_range(prop, 0.f, 1.f); + RNA_def_property_ui_text( + prop, + "Thickness Ratio", + "A number between 0 (inside) and 1 (outside) specifying the relative position of " + "stroke thickness"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "color_modifiers", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "color_modifiers", NULL); + RNA_def_property_struct_type(prop, "LineStyleColorModifier"); + RNA_def_property_ui_text(prop, "Color Modifiers", "List of line color modifiers"); + rna_def_freestyle_color_modifiers(brna, prop); + + prop = RNA_def_property(srna, "alpha_modifiers", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "alpha_modifiers", NULL); + RNA_def_property_struct_type(prop, "LineStyleAlphaModifier"); + RNA_def_property_ui_text(prop, "Alpha Modifiers", "List of alpha transparency modifiers"); + rna_def_freestyle_alpha_modifiers(brna, prop); + + prop = RNA_def_property(srna, "thickness_modifiers", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "thickness_modifiers", NULL); + RNA_def_property_struct_type(prop, "LineStyleThicknessModifier"); + RNA_def_property_ui_text(prop, "Thickness Modifiers", "List of line thickness modifiers"); + rna_def_freestyle_thickness_modifiers(brna, prop); + + prop = RNA_def_property(srna, "geometry_modifiers", PROP_COLLECTION, PROP_NONE); + RNA_def_property_collection_sdna(prop, NULL, "geometry_modifiers", NULL); + RNA_def_property_struct_type(prop, "LineStyleGeometryModifier"); + RNA_def_property_ui_text(prop, "Geometry Modifiers", "List of stroke geometry modifiers"); + rna_def_freestyle_geometry_modifiers(brna, prop); + + prop = RNA_def_property(srna, "use_chaining", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", LS_NO_CHAINING); + RNA_def_property_ui_text(prop, "Chaining", "Enable chaining of feature edges"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "chaining", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "chaining"); + RNA_def_property_enum_items(prop, chaining_items); + RNA_def_property_ui_text( + prop, "Chaining Method", "Select the way how feature edges are jointed to form chains"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "rounds", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "rounds"); + RNA_def_property_range(prop, 1, 1000); + RNA_def_property_ui_text(prop, "Rounds", "Number of rounds in a sketchy multiple touch"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_same_object", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_SAME_OBJECT); + RNA_def_property_ui_text( + prop, "Same Object", "If true, only feature edges of the same object are joined"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_split_length", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_SPLIT_LENGTH); + RNA_def_property_ui_text( + prop, "Use Split Length", "Enable chain splitting by curvilinear 2D length"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "split_length", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "split_length"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text(prop, "Split Length", "Curvilinear 2D length for chain splitting"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_angle_min", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_MIN_2D_ANGLE); + RNA_def_property_ui_text(prop, + "Use Min 2D Angle", + "Split chains at points with angles smaller than the minimum 2D angle"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "angle_min", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "min_angle"); + RNA_def_property_range(prop, 0.0f, DEG2RADF(180.0f)); + RNA_def_property_ui_text(prop, "Min 2D Angle", "Minimum 2D angle for splitting chains"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_angle_max", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_MAX_2D_ANGLE); + RNA_def_property_ui_text(prop, + "Use Max 2D Angle", + "Split chains at points with angles larger than the maximum 2D angle"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "angle_max", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_float_sdna(prop, NULL, "max_angle"); + RNA_def_property_range(prop, 0.0f, DEG2RADF(180.0f)); + RNA_def_property_ui_text(prop, "Max 2D Angle", "Maximum 2D angle for splitting chains"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_length_min", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_MIN_2D_LENGTH); + RNA_def_property_ui_text( + prop, "Use Min 2D Length", "Enable the selection of chains by a minimum 2D length"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "length_min", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "min_length"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text( + prop, "Min 2D Length", "Minimum curvilinear 2D length for the selection of chains"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_length_max", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_MAX_2D_LENGTH); + RNA_def_property_ui_text( + prop, "Use Max 2D Length", "Enable the selection of chains by a maximum 2D length"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "length_max", PROP_FLOAT, PROP_NONE); + RNA_def_property_float_sdna(prop, NULL, "max_length"); + RNA_def_property_range(prop, 0.0f, 10000.0f); + RNA_def_property_ui_text( + prop, "Max 2D Length", "Maximum curvilinear 2D length for the selection of chains"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_chain_count", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_CHAIN_COUNT); + RNA_def_property_ui_text(prop, "Use Chain Count", "Enable the selection of first N chains"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "chain_count", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "chain_count"); + RNA_def_property_ui_text(prop, "Chain Count", "Chain count for the selection of first N chains"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_split_pattern", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_SPLIT_PATTERN); + RNA_def_property_ui_text( + prop, "Use Split Pattern", "Enable chain splitting by dashed line patterns"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "split_dash1", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "split_dash1"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Split Dash 1", "Length of the 1st dash for splitting"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "split_gap1", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "split_gap1"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Split Gap 1", "Length of the 1st gap for splitting"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "split_dash2", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "split_dash2"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Split Dash 2", "Length of the 2nd dash for splitting"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "split_gap2", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "split_gap2"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Split Gap 2", "Length of the 2nd gap for splitting"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "split_dash3", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "split_dash3"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Split Dash 3", "Length of the 3rd dash for splitting"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "split_gap3", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "split_gap3"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Split Gap 3", "Length of the 3rd gap for splitting"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "material_boundary", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_MATERIAL_BOUNDARY); + RNA_def_property_ui_text(prop, + "Material Boundary", + "If true, chains of feature edges are split at material boundaries"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_sorting", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", LS_NO_SORTING); + RNA_def_property_ui_text(prop, "Sorting", "Arrange the stacking order of strokes"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "sort_key", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "sort_key"); + RNA_def_property_enum_items(prop, sort_key_items); + RNA_def_property_ui_text( + prop, "Sort Key", "Select the sort key to determine the stacking order of chains"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "sort_order", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag"); + RNA_def_property_enum_items(prop, sort_order_items); + RNA_def_property_ui_text(prop, "Sort Order", "Select the sort order"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "integration_type", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, NULL, "integration_type"); + RNA_def_property_enum_items(prop, integration_type_items); + RNA_def_property_ui_text( + prop, "Integration Type", "Select the way how the sort key is computed for each chain"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_dashed_line", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_DASHED_LINE); + RNA_def_property_ui_text(prop, "Dashed Line", "Enable or disable dashed line"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "caps", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_bitflag_sdna(prop, NULL, "caps"); + RNA_def_property_enum_items(prop, cap_items); + RNA_def_property_ui_text(prop, "Caps", "Select the shape of both ends of strokes"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "dash1", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "dash1"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Dash 1", "Length of the 1st dash for dashed lines"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "gap1", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "gap1"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Gap 1", "Length of the 1st gap for dashed lines"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "dash2", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "dash2"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Dash 2", "Length of the 2nd dash for dashed lines"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "gap2", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "gap2"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Gap 2", "Length of the 2nd gap for dashed lines"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "dash3", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "dash3"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Dash 3", "Length of the 3rd dash for dashed lines"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "gap3", PROP_INT, PROP_UNSIGNED); + RNA_def_property_int_sdna(prop, NULL, "gap3"); + RNA_def_property_range(prop, 0, USHRT_MAX); + RNA_def_property_ui_text(prop, "Gap 3", "Length of the 3rd gap for dashed lines"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "use_texture", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", LS_TEXTURE); + RNA_def_property_ui_text(prop, "Use Textures", "Enable or disable textured strokes"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + prop = RNA_def_property(srna, "texture_spacing", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_float_sdna(prop, NULL, "texstep"); + RNA_def_property_range(prop, 0.01f, 100.0f); + RNA_def_property_ui_text(prop, "Texture spacing", "Spacing for textures along stroke length"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_update"); + + /* anim */ + rna_def_animdata_common(srna); + + /* nodes */ + prop = RNA_def_property(srna, "node_tree", PROP_POINTER, PROP_NONE); + RNA_def_property_pointer_sdna(prop, NULL, "nodetree"); + RNA_def_property_ui_text(prop, "Node Tree", "Node tree for node-based shaders"); + + prop = RNA_def_property(srna, "use_nodes", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "use_nodes", 1); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_flag(prop, PROP_CONTEXT_UPDATE); + RNA_def_property_ui_text(prop, "Use Nodes", "Use shader nodes for the line style"); + RNA_def_property_update(prop, NC_LINESTYLE, "rna_LineStyle_use_nodes_update"); } void RNA_def_linestyle(BlenderRNA *brna) { - rna_def_linestyle_modifiers(brna); - rna_def_linestyle(brna); - rna_def_linestyle_mtex(brna); + rna_def_linestyle_modifiers(brna); + rna_def_linestyle(brna); + rna_def_linestyle_mtex(brna); } #endif |