Mango request: added an input node to use track's position in compositor
[blender-staging.git] / source / blender / makesrna / intern / rna_nodetree.c
index b72d2e22d6889e09c88c8be7acac91a8fa2b63bc..67e0b9fd7c83783401e1ae8af9f9dd025fb2a730 100644 (file)
@@ -1191,6 +1191,11 @@ static void def_math(StructRNA *srna)
        RNA_def_property_enum_items(prop, node_math_items);
        RNA_def_property_ui_text(prop, "Operation", "");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
+       prop = RNA_def_property(srna, "use_clamp", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "custom2", 1);
+       RNA_def_property_ui_text(prop, "Clamp", "Clamp result of the node to 0..1 range");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 }
 
 static void def_vector_math(StructRNA *srna)
@@ -1272,6 +1277,11 @@ static void def_mix_rgb(StructRNA *srna)
        RNA_def_property_boolean_sdna(prop, NULL, "custom2", 1);
        RNA_def_property_ui_text(prop, "Alpha", "Include alpha of second input in this operation");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
+       prop = RNA_def_property(srna, "use_clamp", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "custom2", 2);
+       RNA_def_property_ui_text(prop, "Clamp", "Clamp result of the node to 0..1 range");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 }
 
 static void def_texture(StructRNA *srna)
@@ -1944,6 +1954,10 @@ static void def_cmp_image(StructRNA *srna)
        RNA_def_property_ui_text(prop, "Image", "");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
        
+       /* NB: image user properties used in the UI are redefined in def_node_image_user,
+        * to trigger correct updates of the node editor. RNA design problem that prevents
+        * updates from nested structs ...
+        */
        RNA_def_struct_sdna_from(srna, "ImageUser", "storage");
        def_node_image_user(srna);
 }
@@ -2049,10 +2063,10 @@ static void def_cmp_dilate_erode(StructRNA *srna)
        PropertyRNA *prop;
 
        static EnumPropertyItem type_items[] = {
-           {CMP_NODE_DILATEERODE_STEP,            "STEP",      0, "Step",      ""},
-           {CMP_NODE_DILATEERODE_DISTANCE_THRESH, "THRESHOLD", 0, "Threshold", ""},
-           {CMP_NODE_DILATEERODE_DISTANCE,        "DISTANCE",  0, "Distance",  ""},
-           {CMP_NODE_DILATEERODE_DISTANCE_FEATHER,"FEATHER",  0,  "Feather",  ""},
+           {CMP_NODE_DILATEERODE_STEP,             "STEP",      0, "Step",      ""},
+           {CMP_NODE_DILATEERODE_DISTANCE_THRESH,  "THRESHOLD", 0, "Threshold", ""},
+           {CMP_NODE_DILATEERODE_DISTANCE,         "DISTANCE",  0, "Distance",  ""},
+           {CMP_NODE_DILATEERODE_DISTANCE_FEATHER, "FEATHER",   0, "Feather",  ""},
            {0, NULL, 0, NULL, NULL}
        };
        
@@ -2068,11 +2082,21 @@ static void def_cmp_dilate_erode(StructRNA *srna)
        RNA_def_property_ui_text(prop, "Distance", "Distance to grow/shrink (number of iterations)");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
+       /* CMP_NODE_DILATEERODE_DISTANCE_THRESH only */
        prop = RNA_def_property(srna, "edge", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "custom3");
        RNA_def_property_range(prop, -100, 100);
        RNA_def_property_ui_text(prop, "Edge", "Edge to inset");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
+       RNA_def_struct_sdna_from(srna, "NodeDilateErode", "storage");
+
+       /* CMP_NODE_DILATEERODE_DISTANCE_FEATHER only */
+       prop = RNA_def_property(srna, "falloff", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_sdna(prop, NULL, "falloff");
+       RNA_def_property_enum_items(prop, proportional_falloff_curve_only_items);
+       RNA_def_property_ui_text(prop, "Falloff", "Falloff type the feather");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 }
 
 static void def_cmp_scale(StructRNA *srna)
@@ -2456,9 +2480,9 @@ static void def_cmp_id_mask(StructRNA *srna)
        RNA_def_property_ui_text(prop, "Index", "Pass index number to convert to alpha");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
-       prop = RNA_def_property(srna, "use_smooth_mask", PROP_BOOLEAN, PROP_NONE);
+       prop = RNA_def_property(srna, "use_antialiasing", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "custom2", 0);
-       RNA_def_property_ui_text(prop, "Smooth Mask", "Apply an anti-aliasing filter to the mask");
+       RNA_def_property_ui_text(prop, "Anti-Aliasing", "Apply an anti-aliasing filter to the mask");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 }
 
@@ -2562,15 +2586,9 @@ static void def_cmp_defocus(StructRNA *srna)
        
        prop = RNA_def_property(srna, "use_preview", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "preview", 1);
-       RNA_def_property_ui_text(prop, "Preview", "Enable sampling mode, useful for preview when using low samplecounts");
+       RNA_def_property_ui_text(prop, "Preview", "Enable low quality mode, useful for preview");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
-       
-       prop = RNA_def_property(srna, "samples", PROP_INT, PROP_NONE);
-       RNA_def_property_int_sdna(prop, NULL, "samples");
-       RNA_def_property_range(prop, 16, 256);
-       RNA_def_property_ui_text(prop, "Samples", "Number of samples (16=grainy, higher=less noise)");
-       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
-       
+
        prop = RNA_def_property(srna, "use_zbuffer", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_negative_sdna(prop, NULL, "no_zbuf", 1);
        RNA_def_property_ui_text(prop, "Use Z-Buffer",
@@ -3115,16 +3133,21 @@ static void def_cmp_mask(StructRNA *srna)
 {
        PropertyRNA *prop;
 
-       prop = RNA_def_property(srna, "smooth_mask", PROP_BOOLEAN, PROP_NONE);
-       RNA_def_property_boolean_sdna(prop, NULL, "custom1", 0);
-       RNA_def_property_ui_text(prop, "Anti-Alias", "Apply an anti-aliasing filter to the mask");
-       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
-
        prop = RNA_def_property(srna, "mask", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "id");
        RNA_def_property_struct_type(prop, "Mask");
        RNA_def_property_flag(prop, PROP_EDITABLE);
        RNA_def_property_ui_text(prop, "Mask", "");
+
+       prop = RNA_def_property(srna, "use_antialiasing", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "custom1", CMP_NODEFLAG_MASK_AA);
+       RNA_def_property_ui_text(prop, "Anti-Alias", "Apply an anti-aliasing filter to the mask");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
+       prop = RNA_def_property(srna, "use_feather", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_negative_sdna(prop, NULL, "custom1", CMP_NODEFLAG_MASK_NO_FEATHER);
+       RNA_def_property_ui_text(prop, "Feather", "Use feather information from the mask");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 }
 
 static void dev_cmd_transform(StructRNA *srna)
@@ -3246,7 +3269,7 @@ static void def_cmp_ellipsemask(StructRNA *srna)
        RNA_def_property_float_sdna(prop, NULL, "rotation");
        RNA_def_property_float_default(prop, 0.0f);
        RNA_def_property_range(prop, -1000.0f, 1000.0f);
-       RNA_def_property_ui_text(prop, "Rotation", "Rotationangle of the box");
+       RNA_def_property_ui_text(prop, "Rotation", "Rotation angle of the box");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 }
 
@@ -3542,14 +3565,14 @@ static void def_cmp_keyingscreen(StructRNA *srna)
        RNA_def_property_struct_type(prop, "MovieClip");
        RNA_def_property_flag(prop, PROP_EDITABLE);
        RNA_def_property_ui_text(prop, "Movie Clip", "");
-       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
        RNA_def_struct_sdna_from(srna, "NodeKeyingScreenData", "storage");
 
        prop = RNA_def_property(srna, "tracking_object", PROP_STRING, PROP_NONE);
        RNA_def_property_string_sdna(prop, NULL, "tracking_object");
        RNA_def_property_ui_text(prop, "Tracking Object", "");
-       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 }
 
 static void def_cmp_keying(StructRNA *srna)
@@ -3562,55 +3585,67 @@ static void def_cmp_keying(StructRNA *srna)
        RNA_def_property_float_sdna(prop, NULL, "screen_balance");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Screen Balance", "Balance between two non-primary channels primary channel is comparing against");
-       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
        prop = RNA_def_property(srna, "despill_factor", PROP_FLOAT, PROP_FACTOR);
        RNA_def_property_float_sdna(prop, NULL, "despill_factor");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Despill", "Factor of despilling screen color from image");
-       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
        prop = RNA_def_property(srna, "clip_black", PROP_FLOAT, PROP_FACTOR);
        RNA_def_property_float_sdna(prop, NULL, "clip_black");
        RNA_def_property_range(prop, 0.0f, 1.0f);
-       RNA_def_property_ui_text(prop, "Clip Black", "Value of on-scaled matte pixel which considers as fully background pixel");
-       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+       RNA_def_property_ui_text(prop, "Clip Black", "Value of non-scaled matte pixel which considers as fully background pixel");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
        prop = RNA_def_property(srna, "clip_white", PROP_FLOAT, PROP_FACTOR);
        RNA_def_property_float_sdna(prop, NULL, "clip_white");
        RNA_def_property_range(prop, 0.0f, 1.0f);
-       RNA_def_property_ui_text(prop, "Clip White", "Value of on-scaled matte pixel which considers as fully foreground pixel");
+       RNA_def_property_ui_text(prop, "Clip White", "Value of non-scaled matte pixel which considers as fully foreground pixel");
        RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
 
        prop = RNA_def_property(srna, "blur_pre", PROP_INT, PROP_NONE);
        RNA_def_property_int_sdna(prop, NULL, "blur_pre");
        RNA_def_property_range(prop, 0, 2048);
        RNA_def_property_ui_text(prop, "Pre Blur", "Chroma pre-blur size which applies before running keyer");
-       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
        prop = RNA_def_property(srna, "blur_post", PROP_INT, PROP_NONE);
        RNA_def_property_int_sdna(prop, NULL, "blur_post");
        RNA_def_property_range(prop, 0, 2048);
        RNA_def_property_ui_text(prop, "Post Blur", "Matte blur size which applies after clipping and dilate/eroding");
-       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
        prop = RNA_def_property(srna, "dilate_distance", PROP_INT, PROP_NONE);
        RNA_def_property_int_sdna(prop, NULL, "dilate_distance");
        RNA_def_property_range(prop, -100, 100);
        RNA_def_property_ui_text(prop, "Dilate/Erode", "Matte dilate/erode side");
-       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
        prop = RNA_def_property(srna, "edge_kernel_radius", PROP_INT, PROP_NONE);
        RNA_def_property_int_sdna(prop, NULL, "edge_kernel_radius");
-       RNA_def_property_range(prop, -100, 100);
+       RNA_def_property_range(prop, 0, 100);
        RNA_def_property_ui_text(prop, "Edge Kernel Radius", "Radius of kernel used to detect whether pixel belongs to edge");
-       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
        prop = RNA_def_property(srna, "edge_kernel_tolerance", PROP_FLOAT, PROP_FACTOR);
        RNA_def_property_float_sdna(prop, NULL, "edge_kernel_tolerance");
        RNA_def_property_range(prop, 0.0f, 1.0f);
        RNA_def_property_ui_text(prop, "Edge Kernel Tolerance", "Tolerance to pixels inside kernel which are treating as belonging to the same plane");
-       RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
+       prop = RNA_def_property(srna, "feather_falloff", PROP_ENUM, PROP_NONE);
+       RNA_def_property_enum_sdna(prop, NULL, "feather_falloff");
+       RNA_def_property_enum_items(prop, proportional_falloff_curve_only_items);
+       RNA_def_property_ui_text(prop, "Feather Falloff", "Falloff type the feather");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
+       prop = RNA_def_property(srna, "feather_distance", PROP_INT, PROP_NONE);
+       RNA_def_property_int_sdna(prop, NULL, "feather_distance");
+       RNA_def_property_range(prop, -100, 100);
+       RNA_def_property_ui_text(prop, "Feather Distance", "Distance to grow/shrink the feather");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 }
 
 static void def_cmp_trackpos(StructRNA *srna)
@@ -3624,6 +3659,11 @@ static void def_cmp_trackpos(StructRNA *srna)
        RNA_def_property_ui_text(prop, "Movie Clip", "");
        RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
 
+       prop = RNA_def_property(srna, "use_relative", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "custom1", 1);
+       RNA_def_property_ui_text(prop, "Relative", "Return relative position to first track's marker");
+       RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_Node_update");
+
        RNA_def_struct_sdna_from(srna, "NodeTrackPosData", "storage");
 
        prop = RNA_def_property(srna, "tracking_object", PROP_STRING, PROP_NONE);
@@ -4266,6 +4306,11 @@ static void rna_def_composite_nodetree(BlenderRNA *brna)
        prop = RNA_def_property(srna, "use_opencl", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", NTREE_COM_OPENCL);
        RNA_def_property_ui_text(prop, "OpenCL", "Enable GPU calculations");
+
+       prop = RNA_def_property(srna, "two_pass", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "flag", NTREE_TWO_PASS);
+       RNA_def_property_ui_text(prop, "Two Pass", "Use two pass execution during editing: first calculate fast nodes, "
+                                                  "second pass calculate all nodes");
 }
 
 static void rna_def_shader_nodetree(BlenderRNA *brna)