svn merge ^/trunk/blender -r47805:47873
authorCampbell Barton <ideasman42@gmail.com>
Thu, 14 Jun 2012 09:39:54 +0000 (09:39 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 14 Jun 2012 09:39:54 +0000 (09:39 +0000)
1  2 
source/blender/blenkernel/BKE_node.h
source/blender/blenkernel/intern/node.c
source/blender/compositor/CMakeLists.txt
source/blender/editors/space_node/drawnode.c
source/blender/makesrna/intern/rna_nodetree.c

index dd61a7e4c0fecefdec1da7068b9b2fbb92aa6b64,e8f863fbbfd11fd7aa7c785732f8cb7f472e168d..f97996bfc29e6ee68d9f72cab89713fd1be2f46c
@@@ -339,7 -339,7 +339,7 @@@ struct bNodeSocket *nodeInsertSocket(st
  void nodeRemoveSocket(struct bNodeTree *ntree, struct bNode *node, struct bNodeSocket *sock);
  void nodeRemoveAllSockets(struct bNodeTree *ntree, struct bNode *node);
  
- void                  nodeAddToPreview(struct bNode *, float *, int, int, int);
+ void                  nodeAddToPreview(struct bNode *node, float col[4], int x, int y, int do_manage);
  
  struct bNode  *nodeAddNode(struct bNodeTree *ntree, struct bNodeTemplate *ntemp);
  void                  nodeUnlinkNode(struct bNodeTree *ntree, struct bNode *node);
@@@ -658,8 -658,6 +658,8 @@@ void                       ntreeGPUMaterialNodes(struct bNo
  #define CMP_NODE_DOUBLEEDGEMASK    266
  #define CMP_NODE_OUTPUT_MULTI_FILE__DEPRECATED        267     /* DEPRECATED multi file node has been merged into regular CMP_NODE_OUTPUT_FILE */
  #define CMP_NODE_MASK         268
 +#define CMP_NODE_KEYINGSCREEN         269
 +#define CMP_NODE_KEYING               270
  
  #define CMP_NODE_GLARE                301
  #define CMP_NODE_TONEMAP      302
index 7fe4016f68000ff4818e208d43b245e073967781,c48c0231aa08cd83b6ae185b50f9e0f50e4756d2..bd3690e21743919ec699df57e79e25c91c380e7d
@@@ -802,7 -802,7 +802,7 @@@ void ntreeClearPreview(bNodeTree *ntree
  /* hack warning! this function is only used for shader previews, and 
   * since it gets called multiple times per pixel for Ztransp we only
   * add the color once. Preview gets cleared before it starts render though */
- void nodeAddToPreview(bNode *node, float *col, int x, int y, int do_manage)
+ void nodeAddToPreview(bNode *node, float col[4], int x, int y, int do_manage)
  {
        bNodePreview *preview= node->preview;
        if (preview) {
@@@ -1900,8 -1900,6 +1900,8 @@@ static void registerCompositNodes(bNode
        register_node_type_cmp_color_spill(ttype);
        register_node_type_cmp_luma_matte(ttype);
        register_node_type_cmp_doubleedgemask(ttype);
 +      register_node_type_cmp_keyingscreen(ttype);
 +      register_node_type_cmp_keying(ttype);
  
        register_node_type_cmp_translate(ttype);
        register_node_type_cmp_rotate(ttype);
index c0a23fd9651d9c55159b9f8b7f904e2469790bc3,aa428c2b8d0863ea780446b3d198c79158d65b72..bbb3e8e4cb850c0d05c7af7e735064fb7a927923
@@@ -97,6 -97,9 +97,9 @@@ set(SR
        intern/COM_CompositorContext.h
        intern/COM_ChannelInfo.cpp
        intern/COM_ChannelInfo.h
+       intern/COM_SingleThreadedNodeOperation.cpp
+       intern/COM_SingleThreadedNodeOperation.h
        operations/COM_QualityStepHelper.h
        operations/COM_QualityStepHelper.cpp
  
  
        operations/COM_DoubleEdgeMaskOperation.cpp
        operations/COM_DoubleEdgeMaskOperation.h
 +
 +
 +      nodes/COM_KeyingNode.cpp
 +      nodes/COM_KeyingNode.h
 +      nodes/COM_KeyingScreenNode.cpp
 +      nodes/COM_KeyingScreenNode.h
 +      operations/COM_KeyingOperation.cpp
 +      operations/COM_KeyingOperation.h
 +      operations/COM_KeyingBlurOperation.cpp
 +      operations/COM_KeyingBlurOperation.h
 +      operations/COM_KeyingScreenOperation.cpp
 +      operations/COM_KeyingScreenOperation.h
 +      operations/COM_KeyingDespillOperation.cpp
 +      operations/COM_KeyingDespillOperation.h
 +      operations/COM_KeyingClipOperation.cpp
 +      operations/COM_KeyingClipOperation.h
 +
        operations/COM_ColorSpillOperation.cpp
        operations/COM_ColorSpillOperation.h
        operations/COM_RenderLayersBaseProg.cpp
        operations/COM_MixBaseOperation.cpp
        operations/COM_MixBlendOperation.cpp
        operations/COM_MixBlendOperation.h
+       operations/COM_MixGlareOperation.cpp
+       operations/COM_MixGlareOperation.h
        operations/COM_MixAddOperation.h
        operations/COM_MixAddOperation.cpp
        operations/COM_MixMultiplyOperation.h
        operations/COM_ConvolutionEdgeFilterOperation.cpp
        operations/COM_DilateErodeOperation.cpp
        operations/COM_DilateErodeOperation.h
-       operations/COM_FogGlowImageOperation.cpp
-       operations/COM_FogGlowImageOperation.h
        operations/COM_GlareThresholdOperation.cpp
        operations/COM_GlareThresholdOperation.h
        operations/COM_GlareBaseOperation.cpp
        operations/COM_GlareStreaksOperation.h
        operations/COM_GlareGhostOperation.cpp
        operations/COM_GlareGhostOperation.h
+       operations/COM_GlareFogGlowOperation.cpp
+       operations/COM_GlareFogGlowOperation.h
        operations/COM_SetSamplerOperation.cpp
        operations/COM_SetSamplerOperation.h
  
index 8f44af4a24591e35f0f3dbe6fcbe8a1922bc2340,e6549034a855d5f688c9cc5d9d65a906ae7740ef..033bfd165c23c332e326f6feed8d0c23d6ddce55
@@@ -2421,41 -2421,10 +2421,43 @@@ static void node_composit_buts_viewer_b
  static void node_composit_buts_mask(uiLayout *layout, bContext *C, PointerRNA *ptr)
  {
        uiTemplateID(layout, C, ptr, "mask", NULL, NULL, NULL);
+     uiItemR(layout, ptr, "smooth_mask", 0, NULL, ICON_NONE);
  }
  
 +static void node_composit_buts_keyingscreen(uiLayout *layout, bContext *C, PointerRNA *ptr)
 +{
 +      bNode *node= ptr->data;
 +
 +      uiTemplateID(layout, C, ptr, "clip", NULL, NULL, NULL);
 +
 +      if (node->id) {
 +              MovieClip *clip = (MovieClip *) node->id;
 +              uiLayout *col;
 +              PointerRNA tracking_ptr;
 +
 +              RNA_pointer_create(&clip->id, &RNA_MovieTracking, &clip->tracking, &tracking_ptr);
 +
 +              col = uiLayoutColumn(layout, 1);
 +              uiItemPointerR(col, ptr, "tracking_object", &tracking_ptr, "objects", "", ICON_OBJECT_DATA);
 +      }
 +}
 +
 +static void node_composit_buts_keying(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr)
 +{
 +      /* bNode *node= ptr->data; */ /* UNUSED */
 +
 +      uiItemR(layout, ptr, "blur_pre", 0, NULL, ICON_NONE);
 +      uiItemR(layout, ptr, "screen_balance", 0, NULL, ICON_NONE);
 +      uiItemR(layout, ptr, "despill_factor", 0, NULL, ICON_NONE);
 +      uiItemR(layout, ptr, "edge_kernel_radius", 0, NULL, ICON_NONE);
 +      uiItemR(layout, ptr, "edge_kernel_tolerance", 0, NULL, ICON_NONE);
 +      uiItemR(layout, ptr, "clip_black", 0, NULL, ICON_NONE);
 +      uiItemR(layout, ptr, "clip_white", 0, NULL, ICON_NONE);
 +      uiItemR(layout, ptr, "dilate_distance", 0, NULL, ICON_NONE);
 +      uiItemR(layout, ptr, "blur_post", 0, NULL, ICON_NONE);
 +}
 +
  /* only once called */
  static void node_composit_set_butfunc(bNodeType *ntype)
  {
                case CMP_NODE_MASK:
                        ntype->uifunc= node_composit_buts_mask;
                        break;
 +              case CMP_NODE_KEYINGSCREEN:
 +                      ntype->uifunc = node_composit_buts_keyingscreen;
 +                      break;
 +              case CMP_NODE_KEYING:
 +                      ntype->uifunc = node_composit_buts_keying;
 +                      break;
                default:
                        ntype->uifunc = NULL;
        }
index af4b3a7e16923ee08c7e0125294227103a1afc2e,73e2b5da4f056f38ab0ea89bacdcbd850fd7c5fe..44d0cd38a55489ac75c6b92899943675ca8ab1ac
@@@ -3089,6 -3089,11 +3089,11 @@@ static void def_cmp_mask(StructRNA *srn
  {
        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_ui_text(prop, "Mask", "");
  }
  
 +static void def_cmp_keyingscreen(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");
 +
 +      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");
 +}
 +
 +static void def_cmp_keying(StructRNA *srna)
 +{
 +      PropertyRNA *prop;
 +
 +      RNA_def_struct_sdna_from(srna, "NodeKeyingData", "storage");
 +
 +      prop = RNA_def_property(srna, "screen_balance", PROP_FLOAT, PROP_FACTOR);
 +      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");
 +
 +      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");
 +
 +      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");
 +
 +      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_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");
 +
 +      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");
 +
 +      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");
 +
 +      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_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");
 +
 +      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");
 +}
  
  static void dev_cmd_transform(StructRNA *srna)
  {