svn merge ^/trunk/blender -r48147:48153
authorCampbell Barton <ideasman42@gmail.com>
Thu, 21 Jun 2012 08:07:49 +0000 (08:07 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 21 Jun 2012 08:07:49 +0000 (08:07 +0000)
1  2 
source/blender/editors/space_node/drawnode.c
source/blender/makesdna/DNA_node_types.h
source/blender/makesrna/intern/rna_nodetree.c

index bce63b889509dd0b47c822ad91c42ec997f7f3cb,90cbdcd09a9134f67b11a22c60e2378ea9e36413..56b763d0773cb376c5addfb96cba1a976d7395fd
@@@ -52,7 -52,6 +52,7 @@@
  #include "BKE_library.h"
  #include "BKE_main.h"
  #include "BKE_node.h"
 +#include "BKE_tracking.h"
  
  #include "BLF_api.h"
  #include "BLF_translation.h"
@@@ -1769,8 -1768,13 +1769,13 @@@ static void node_composit_buts_dilateer
  {
        uiItemR(layout, ptr, "type", 0, NULL, ICON_NONE);
        uiItemR(layout, ptr, "distance", 0, NULL, ICON_NONE);
-       if (RNA_enum_get(ptr, "type") == CMP_NODE_DILATEERODE_DISTANCE_THRESH) {
-               uiItemR(layout, ptr, "edge", 0, NULL, ICON_NONE);
+       switch (RNA_enum_get(ptr, "type")) {
+               case CMP_NODE_DILATEERODE_DISTANCE_THRESH:
+                       uiItemR(layout, ptr, "edge", 0, NULL, ICON_NONE);
+                       break;
+               case CMP_NODE_DILATEERODE_DISTANCE_FEATHER:
+                       uiItemR(layout, ptr, "falloff", 0, NULL, ICON_NONE);
+                       break;
        }
  }
  
@@@ -2464,41 -2468,6 +2469,41 @@@ static void node_composit_buts_keying(u
        uiItemR(layout, ptr, "blur_post", 0, NULL, ICON_NONE);
  }
  
 +static void node_composit_buts_trackpos(uiLayout *layout, bContext *C, PointerRNA *ptr)
 +{
 +      bNode *node= ptr->data;
 +
 +      uiTemplateID(layout, C, ptr, "clip", NULL, "CLIP_OT_open", NULL);
 +
 +      if (node->id) {
 +              MovieClip *clip = (MovieClip *) node->id;
 +              MovieTracking *tracking = &clip->tracking;
 +              MovieTrackingObject *object;
 +              uiLayout *col;
 +              PointerRNA tracking_ptr;
 +              NodeTrackPosData *data = node->storage;
 +
 +              RNA_pointer_create(&clip->id, &RNA_MovieTracking, tracking, &tracking_ptr);
 +
 +              col = uiLayoutColumn(layout, 0);
 +              uiItemPointerR(col, ptr, "tracking_object", &tracking_ptr, "objects", "", ICON_OBJECT_DATA);
 +
 +              object = BKE_tracking_object_get_named(tracking, data->tracking_object);
 +              if (object) {
 +                      PointerRNA object_ptr;
 +
 +                      RNA_pointer_create(&clip->id, &RNA_MovieTrackingObject, object, &object_ptr);
 +
 +                      uiItemPointerR(col, ptr, "track_name", &object_ptr, "tracks", "", ICON_ANIM_DATA);
 +              }
 +              else {
 +                      uiItemR(layout, ptr, "track_name", 0, "", ICON_ANIM_DATA);
 +              }
 +
 +              uiItemR(layout, ptr, "use_relative", 0, NULL, ICON_NONE);
 +      }
 +}
 +
  /* only once called */
  static void node_composit_set_butfunc(bNodeType *ntype)
  {
                case CMP_NODE_KEYING:
                        ntype->uifunc = node_composit_buts_keying;
                        break;
 +              case CMP_NODE_TRACKPOS:
 +                      ntype->uifunc = node_composit_buts_trackpos;
 +                      break;
                default:
                        ntype->uifunc = NULL;
        }
index 460038f60046c7b42fbdd13cc570d060d30fd744,8de9a29ed84d8643cde7418e0f1139724daf64af..b1045bf3c636ac915f675ae94c2ee9f9a98d51c1
@@@ -559,6 -559,11 +559,11 @@@ typedef struct NodeColorspill 
        float uspillr, uspillg, uspillb;
  } NodeColorspill;
  
+ typedef struct NodeDilateErode {
+       char falloff;
+       char pad[7];
+ } NodeDilateErode;
  typedef struct NodeTexBase {
        TexMapping tex_mapping;
        ColorMapping color_mapping;
@@@ -643,11 -648,6 +648,11 @@@ typedef struct NodeKeyingData 
        int blur_pre, blur_post;
  } NodeKeyingData;
  
 +typedef struct NodeTrackPosData {
 +      char tracking_object[64];
 +      char track_name[64];
 +} NodeTrackPosData;
 +
  /* frame node flags */
  #define NODE_FRAME_SHRINK             1       /* keep the bounding box minimal */
  #define NODE_FRAME_RESIZEABLE 2       /* test flag, if frame can be resized by user */
index 44ee8698c5d33ae9c6b50fbaeadac25c171f142d,51bd778d54313556e6c5b77f10b6dd4617deb97a..31854413fa877359bd9d88c1ef33527063e0d6a0
@@@ -2068,11 -2068,21 +2068,21 @@@ static void def_cmp_dilate_erode(Struct
        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)
@@@ -3607,35 -3617,6 +3617,35 @@@ static void def_cmp_keying(StructRNA *s
        RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
  }
  
 +static void def_cmp_trackpos(StructRNA *srna)
 +{
 +      PropertyRNA *prop;
 +
 +      prop = RNA_def_property(srna, "clip", PROP_POINTER, PROP_NONE);
 +      RNA_def_property_pointer_sdna(prop, NULL, "id");
 +      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");
 +
 +      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);
 +      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");
 +
 +      prop = RNA_def_property(srna, "track_name", PROP_STRING, PROP_NONE);
 +      RNA_def_property_string_sdna(prop, NULL, "track_name");
 +      RNA_def_property_ui_text(prop, "Track", "");
 +      RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
 +}
 +
  /* -- Texture Nodes --------------------------------------------------------- */
  
  static void def_tex_output(StructRNA *srna)