Cleanup: indentation
[blender.git] / source / blender / makesrna / intern / rna_shader_fx.c
index 4b77e504a38d3380dd743cd11080cd60bc3e4a0e..a03435e7bb5ccbb2c40b5ba024dbe6d22cb724e2 100644 (file)
@@ -52,9 +52,11 @@ const EnumPropertyItem rna_enum_object_shaderfx_type_items[] = {
        {eShaderFxType_Blur, "FX_BLUR", ICON_SHADERFX, "Blur", "Apply Gaussian Blur to object" },
        {eShaderFxType_Colorize, "FX_COLORIZE", ICON_SHADERFX, "Colorize", "Apply different tint effects" },
        {eShaderFxType_Flip, "FX_FLIP", ICON_SHADERFX, "Flip", "Flip image" },
+       {eShaderFxType_Glow, "FX_GLOW", ICON_SHADERFX, "Glow", "Create a glow effect" },
        {eShaderFxType_Light, "FX_LIGHT", ICON_SHADERFX, "Light", "Simulate ilumination" },
        {eShaderFxType_Pixel, "FX_PIXEL", ICON_SHADERFX, "Pixelate", "Pixelate image"},
        {eShaderFxType_Rim, "FX_RIM", ICON_SHADERFX, "Rim", "Add a rim to the image" },
+       {eShaderFxType_Shadow, "FX_SHADOW", ICON_SHADERFX, "Shadow", "Create a shadow effect"},
        {eShaderFxType_Swirl, "FX_SWIRL", ICON_SHADERFX, "Swirl", "Create a rotation distortion"},
        {eShaderFxType_Wave, "FX_WAVE", ICON_SHADERFX, "Wave Distortion", "Apply sinusoidal deformation"},
        {0, NULL, 0, NULL, NULL}
@@ -70,6 +72,12 @@ static const EnumPropertyItem rna_enum_shaderfx_rim_modes_items[] = {
        {0, NULL, 0, NULL, NULL }
 };
 
+static const EnumPropertyItem rna_enum_shaderfx_glow_modes_items[] = {
+       {eShaderFxGlowMode_Luminance, "LUMINANCE", 0, "Luminance", "" },
+       {eShaderFxGlowMode_Color, "COLOR", 0, "Color", "" },
+       {0, NULL, 0, NULL, NULL }
+};
+
 static const EnumPropertyItem rna_enum_shaderfx_colorize_modes_items[] = {
        {eShaderFxColorizeMode_GrayScale, "GRAYSCALE", 0, "Gray Scale", "" },
        {eShaderFxColorizeMode_Sepia, "SEPIA", 0, "Sepia", "" },
@@ -101,10 +109,14 @@ static StructRNA *rna_ShaderFx_refine(struct PointerRNA *ptr)
                        return &RNA_ShaderFxPixel;
                case eShaderFxType_Rim:
                        return &RNA_ShaderFxRim;
+               case eShaderFxType_Shadow:
+                       return &RNA_ShaderFxShadow;
                case eShaderFxType_Swirl:
                        return &RNA_ShaderFxSwirl;
                case eShaderFxType_Flip:
                        return &RNA_ShaderFxFlip;
+               case eShaderFxType_Glow:
+                       return &RNA_ShaderFxGlow;
                case eShaderFxType_Light:
                        return &RNA_ShaderFxLight;
                        /* Default */
@@ -149,7 +161,7 @@ static char *rna_ShaderFx_path(PointerRNA *ptr)
 static void rna_ShaderFx_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
 {
        DEG_id_tag_update(ptr->id.data, OB_RECALC_DATA);
-       WM_main_add_notifier(NC_OBJECT | ND_MODIFIER | NC_GPENCIL, ptr->id.data);
+       WM_main_add_notifier(NC_OBJECT | ND_MODIFIER, ptr->id.data);
 }
 
 static void rna_ShaderFx_dependency_update(Main *bmain, Scene *scene, PointerRNA *ptr)
@@ -180,6 +192,7 @@ static void rna_##_type##ShaderFx_##_prop##_set(PointerRNA *ptr, PointerRNA valu
 }
 
 RNA_FX_OBJECT_SET(Light, object, OB_EMPTY);
+RNA_FX_OBJECT_SET(Shadow, object, OB_EMPTY);
 RNA_FX_OBJECT_SET(Swirl, object, OB_EMPTY);
 
 #undef RNA_FX_OBJECT_SET
@@ -250,7 +263,7 @@ static void rna_def_shader_fx_colorize(BlenderRNA *brna)
        RNA_def_property_range(prop, 0.0, 1.0);
        RNA_def_property_float_sdna(prop, NULL, "high_color");
        RNA_def_property_array(prop, 4);
-       RNA_def_property_ui_text(prop, "Hight color", "Second color used for effect");
+       RNA_def_property_ui_text(prop, "Height color", "Second color used for effect");
        RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
 
        prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
@@ -382,6 +395,161 @@ static void rna_def_shader_fx_rim(BlenderRNA *brna)
        RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
 }
 
+static void rna_def_shader_fx_shadow(BlenderRNA *brna)
+{
+       static EnumPropertyItem prop_shaderfx_shadow_type_items[] = {
+               { 0, "HORIZONTAL", 0, "Horizontal", "" },
+               { 1, "VERTICAL", 0, "Vertical", "" },
+               { 0, NULL, 0, NULL, NULL }
+       };
+
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       srna = RNA_def_struct(brna, "ShaderFxShadow", "ShaderFx");
+       RNA_def_struct_ui_text(srna, "Shadow Effect", "Shadow effect");
+       RNA_def_struct_sdna(srna, "ShadowShaderFxData");
+       RNA_def_struct_ui_icon(srna, ICON_SHADERFX);
+
+       prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
+       RNA_def_property_ui_text(prop, "Object", "Object to determine center of rotation");
+       RNA_def_property_pointer_funcs(prop, NULL, "rna_ShadowShaderFx_object_set", NULL, NULL);
+       RNA_def_property_flag(prop, PROP_EDITABLE | PROP_ID_SELF_CHECK);
+       RNA_def_property_update(prop, 0, "rna_ShaderFx_dependency_update");
+
+       prop = RNA_def_property(srna, "offset", PROP_INT, PROP_PIXEL);
+       RNA_def_property_int_sdna(prop, NULL, "offset");
+       RNA_def_property_range(prop, -INT_MAX, INT_MAX);
+       RNA_def_property_ui_text(prop, "Offset", "Offset of the shadow");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "scale", PROP_FLOAT, PROP_NONE);
+       RNA_def_property_float_sdna(prop, NULL, "scale");
+       RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
+       RNA_def_property_ui_text(prop, "Scale", "Offset of the shadow");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "shadow_color", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_range(prop, 0.0, 1.0);
+       RNA_def_property_float_sdna(prop, NULL, "shadow_rgba");
+       RNA_def_property_array(prop, 4);
+       RNA_def_property_ui_text(prop, "Shadow Color", "Color used for Shadow");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "orientation", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_sdna(prop, NULL, "orientation");
+       RNA_def_property_enum_items(prop, prop_shaderfx_shadow_type_items);
+       RNA_def_property_ui_text(prop, "Orientation", "Direction of the wave");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "amplitude", PROP_FLOAT, PROP_NONE);
+       RNA_def_property_float_sdna(prop, NULL, "amplitude");
+       RNA_def_property_range(prop, 0, FLT_MAX);
+       RNA_def_property_ui_text(prop, "Amplitude", "Amplitude of Wave");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "period", PROP_FLOAT, PROP_NONE);
+       RNA_def_property_float_sdna(prop, NULL, "period");
+       RNA_def_property_range(prop, 0, FLT_MAX);
+       RNA_def_property_ui_text(prop, "Period", "Period of Wave");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "phase", PROP_FLOAT, PROP_NONE);
+       RNA_def_property_float_sdna(prop, NULL, "phase");
+       RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
+       RNA_def_property_ui_text(prop, "Phase", "Phase Shift of Wave");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_ANGLE);
+       RNA_def_property_float_sdna(prop, NULL, "rotation");
+       RNA_def_property_range(prop, DEG2RAD(-360), DEG2RAD(360));
+       RNA_def_property_ui_range(prop, DEG2RAD(-360), DEG2RAD(360), 5, 2);
+       RNA_def_property_ui_text(prop, "Rotation", "Rotation around center or object");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "blur", PROP_INT, PROP_PIXEL);
+       RNA_def_property_int_sdna(prop, NULL, "blur");
+       RNA_def_property_range(prop, 0, INT_MAX);
+       RNA_def_property_ui_text(prop, "Blur", "Number of pixels for bluring shadow (set to 0 to disable)");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "samples", PROP_INT, PROP_NONE);
+       RNA_def_property_int_sdna(prop, NULL, "samples");
+       RNA_def_property_range(prop, 0, 32);
+       RNA_def_property_ui_range(prop, 0, 32, 2, -1);
+       RNA_def_property_int_default(prop, 4);
+       RNA_def_property_ui_text(prop, "Samples", "Number of Blur Samples (zero, disable blur)");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "use_object", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", FX_SHADOW_USE_OBJECT);
+       RNA_def_property_ui_text(prop, "Use Object", "Use object as center of rotation");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "use_wave", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", FX_SHADOW_USE_WAVE);
+       RNA_def_property_ui_text(prop, "Wave", "Use wave effect");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+}
+
+static void rna_def_shader_fx_glow(BlenderRNA *brna)
+{
+       StructRNA *srna;
+       PropertyRNA *prop;
+
+       srna = RNA_def_struct(brna, "ShaderFxGlow", "ShaderFx");
+       RNA_def_struct_ui_text(srna, "Glow Effect", "Glow effect");
+       RNA_def_struct_sdna(srna, "GlowShaderFxData");
+       RNA_def_struct_ui_icon(srna, ICON_SHADERFX);
+
+       prop = RNA_def_property(srna, "glow_color", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_range(prop, 0.0, 1.0);
+       RNA_def_property_float_sdna(prop, NULL, "glow_color");
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Glow Color", "Color used for generated glow");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "select_color", PROP_FLOAT, PROP_COLOR_GAMMA);
+       RNA_def_property_range(prop, 0.0, 1.0);
+       RNA_def_property_float_sdna(prop, NULL, "select_color");
+       RNA_def_property_array(prop, 3);
+       RNA_def_property_ui_text(prop, "Select Color", "Color selected to apply glow");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_sdna(prop, NULL, "mode");
+       RNA_def_property_enum_items(prop, rna_enum_shaderfx_glow_modes_items);
+       RNA_def_property_ui_text(prop, "Mode", "Glow mode");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "threshold", PROP_FLOAT, PROP_NONE);
+       RNA_def_property_float_sdna(prop, NULL, "threshold");
+       RNA_def_property_range(prop, 0.0f, 1.0f);
+       RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.1f, 3);
+       RNA_def_property_ui_text(prop, "Threshold", "Limit to select color for glow effect");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       /* use blur fields to make compatible with blur filter, but only makes public first array element */
+       prop = RNA_def_property(srna, "radius", PROP_INT, PROP_PIXEL);
+       RNA_def_property_int_sdna(prop, NULL, "blur[0]");
+       RNA_def_property_range(prop, 0, INT_MAX);
+       RNA_def_property_ui_text(prop, "Radius", "Number of pixels for bluring glow (set to 0 to disable)");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "samples", PROP_INT, PROP_NONE);
+       RNA_def_property_int_sdna(prop, NULL, "samples");
+       RNA_def_property_range(prop, 1, 32);
+       RNA_def_property_ui_range(prop, 1, 32, 2, -1);
+       RNA_def_property_int_default(prop, 4);
+       RNA_def_property_ui_text(prop, "Samples", "Number of Blur Samples");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+
+       prop = RNA_def_property(srna, "use_alpha_mode", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", FX_GLOW_USE_ALPHA);
+       RNA_def_property_ui_text(prop, "Use Alpha", "Glow only areas with alpha");
+       RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_ShaderFx_update");
+}
+
 static void rna_def_shader_fx_swirl(BlenderRNA *brna)
 {
        StructRNA *srna;
@@ -529,6 +697,8 @@ void RNA_def_shader_fx(BlenderRNA *brna)
        rna_def_shader_fx_wave(brna);
        rna_def_shader_fx_pixel(brna);
        rna_def_shader_fx_rim(brna);
+       rna_def_shader_fx_shadow(brna);
+       rna_def_shader_fx_glow(brna);
        rna_def_shader_fx_swirl(brna);
        rna_def_shader_fx_flip(brna);
        rna_def_shader_fx_light(brna);