diff options
author | Matt Ebb <matt@mke3.net> | 2010-01-06 03:09:07 +0300 |
---|---|---|
committer | Matt Ebb <matt@mke3.net> | 2010-01-06 03:09:07 +0300 |
commit | 06e6011ae97f58b718f7d2ca45fd03814a345078 (patch) | |
tree | 6cf1a19fed113d235a5518272f5123a3b4918526 /source/blender/editors/space_node | |
parent | 4b202b562a056351f3d585145d739f738b2a073a (diff) |
Restored Compositor 're-render single layer' functionality (buttons on renderlayer comp nodes).
This works with operator properties - if you pass the name of a scene and renderlayer to
the screen.render operator, it will render that layer as a single layer re-render.
Diffstat (limited to 'source/blender/editors/space_node')
-rw-r--r-- | source/blender/editors/space_node/drawnode.c | 25 | ||||
-rw-r--r-- | source/blender/editors/space_node/node_edit.c | 43 |
2 files changed, 21 insertions, 47 deletions
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 4c634c20440..4f6b43337db 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -545,16 +545,33 @@ static void node_composit_buts_image(uiLayout *layout, bContext *C, PointerRNA * static void node_composit_buts_renderlayers(uiLayout *layout, bContext *C, PointerRNA *ptr) { bNode *node= ptr->data; - uiLayout *col; - + uiLayout *col, *row; + PointerRNA op_ptr; + PointerRNA scn_ptr; + PropertyRNA *prop; + const char *layer_name; + char scene_name[19]; + uiTemplateID(layout, C, ptr, "scene", NULL, NULL, NULL); if(!node->id) return; col= uiLayoutColumn(layout, 0); - uiItemR(col, "", 0, ptr, "layer", 0); + row = uiLayoutRow(col, 0); + uiItemR(row, "", 0, ptr, "layer", 0); - /* XXX Missing 're-render this layer' button - needs completely new implementation */ + prop = RNA_struct_find_property(ptr, "layer"); + if (!(RNA_property_enum_identifier(C, ptr, prop, RNA_property_enum_get(ptr, prop), &layer_name))) + return; + + scn_ptr = RNA_pointer_get(ptr, "scene"); + RNA_string_get(&scn_ptr, "name", scene_name); + + WM_operator_properties_create(&op_ptr, "SCREEN_OT_render"); + RNA_string_set(&op_ptr, "layer", layer_name); + RNA_string_set(&op_ptr, "scene", scene_name); + uiItemFullO(row, "", ICON_RENDER_STILL, "SCREEN_OT_render", op_ptr.data, WM_OP_INVOKE_DEFAULT, 0); + } diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 05926782a0d..7f291539fcb 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -345,49 +345,6 @@ bNode *node_tree_get_editgroup(bNodeTree *nodetree) #if 0 -/* node has to be of type 'render layers' */ -/* is a bit clumsy copying renderdata here... scene nodes use render size of current render */ -static void composite_node_render(SpaceNode *snode, bNode *node) -{ - RenderData rd; - Scene *scene= NULL; - int scemode, actlay; - - /* the button press won't show up otherwise, button hilites disabled */ - force_draw(0); - - if(node->id && node->id!=(ID *)G.scene) { - scene= G.scene; - set_scene_bg((Scene *)node->id); - rd= G.scene->r; - G.scene->r.xsch= scene->r.xsch; - G.scene->r.ysch= scene->r.ysch; - G.scene->r.size= scene->r.size; - G.scene->r.mode &= ~(R_BORDER|R_DOCOMP); - G.scene->r.mode |= scene->r.mode & R_BORDER; - G.scene->r.border= scene->r.border; - G.scene->r.cfra= scene->r.cfra; - } - - scemode= G.scene->r.scemode; - actlay= G.scene->r.actlay; - - G.scene->r.scemode |= R_SINGLE_LAYER|R_COMP_RERENDER; - G.scene->r.actlay= node->custom1; - - BIF_do_render(0); - - G.scene->r.scemode= scemode; - G.scene->r.actlay= actlay; - - node->custom2= 0; - - if(scene) { - G.scene->r= rd; - set_scene_bg(scene); - } -} - static void composit_node_event(SpaceNode *snode, short event) { |