Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2011-11-14 01:55:13 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2011-11-14 01:55:13 +0400
commitcaeeb376013a43da76d7927f415e78ca2ac6586b (patch)
tree14252b40080890280847473d19760ced4e56edab
parent99f7f3ac81c3854e131562c660183bdf5279dc38 (diff)
Added a new operator in the Parameter Editor mode to make a copy
of the active line set.
-rw-r--r--release/scripts/startup/bl_ui/properties_render.py9
-rw-r--r--source/blender/editors/render/render_intern.h1
-rw-r--r--source/blender/editors/render/render_ops.c1
-rw-r--r--source/blender/editors/render/render_shading.c26
-rw-r--r--source/blender/freestyle/FRS_freestyle.h3
-rw-r--r--source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp26
6 files changed, 64 insertions, 2 deletions
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index 868287b5fa0..2f1e5b9a529 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -175,6 +175,14 @@ class RENDER_PT_layers(RenderButtonsPanel, Panel):
row.prop(rl, "exclude_refraction", text="")
+class RENDER_MT_lineset_specials(Menu):
+ bl_label = "Lineset Specials"
+
+ def draw(self, context):
+ layout = self.layout
+ layout.operator("scene.freestyle_lineset_copy", icon='ZOOMIN')
+
+
class RENDER_PT_freestyle(RenderButtonsPanel, Panel):
bl_label = "Freestyle"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -218,6 +226,7 @@ class RENDER_PT_freestyle(RenderButtonsPanel, Panel):
subsub = sub.column(align=True)
subsub.operator("scene.freestyle_lineset_add", icon='ZOOMIN', text="")
subsub.operator("scene.freestyle_lineset_remove", icon='ZOOMOUT', text="")
+ subsub.menu("RENDER_MT_lineset_specials", icon='DOWNARROW_HLT', text="")
if lineset:
sub.separator()
subsub = sub.column(align=True)
diff --git a/source/blender/editors/render/render_intern.h b/source/blender/editors/render/render_intern.h
index c01f695ccea..dfb30238d0c 100644
--- a/source/blender/editors/render/render_intern.h
+++ b/source/blender/editors/render/render_intern.h
@@ -57,6 +57,7 @@ void SCENE_OT_freestyle_module_add(struct wmOperatorType *ot);
void SCENE_OT_freestyle_module_remove(struct wmOperatorType *ot);
void SCENE_OT_freestyle_module_move(struct wmOperatorType *ot);
void SCENE_OT_freestyle_lineset_add(struct wmOperatorType *ot);
+void SCENE_OT_freestyle_lineset_copy(struct wmOperatorType *ot);
void SCENE_OT_freestyle_lineset_remove(struct wmOperatorType *ot);
void SCENE_OT_freestyle_lineset_move(struct wmOperatorType *ot);
void SCENE_OT_freestyle_linestyle_new(struct wmOperatorType *ot);
diff --git a/source/blender/editors/render/render_ops.c b/source/blender/editors/render/render_ops.c
index f2aa5a1488e..8acb92b1193 100644
--- a/source/blender/editors/render/render_ops.c
+++ b/source/blender/editors/render/render_ops.c
@@ -66,6 +66,7 @@ void ED_operatortypes_render(void)
WM_operatortype_append(SCENE_OT_freestyle_module_remove);
WM_operatortype_append(SCENE_OT_freestyle_module_move);
WM_operatortype_append(SCENE_OT_freestyle_lineset_add);
+ WM_operatortype_append(SCENE_OT_freestyle_lineset_copy);
WM_operatortype_append(SCENE_OT_freestyle_lineset_remove);
WM_operatortype_append(SCENE_OT_freestyle_lineset_move);
WM_operatortype_append(SCENE_OT_freestyle_linestyle_new);
diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c
index 08a5eddb521..32ad198c1d7 100644
--- a/source/blender/editors/render/render_shading.c
+++ b/source/blender/editors/render/render_shading.c
@@ -722,6 +722,32 @@ static int freestyle_active_lineset_poll(bContext *C)
return FRS_get_active_lineset(&srl->freestyleConfig) != NULL;
}
+static int freestyle_lineset_copy_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ SceneRenderLayer *srl = (SceneRenderLayer*) BLI_findlink(&scene->r.layers, scene->r.actlay);
+
+ FRS_copy_active_lineset(&srl->freestyleConfig);
+
+ WM_event_add_notifier(C, NC_SCENE|ND_RENDER_OPTIONS, scene);
+
+ return OPERATOR_FINISHED;
+}
+
+void SCENE_OT_freestyle_lineset_copy(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Copy Line Set";
+ ot->idname= "SCENE_OT_freestyle_lineset_copy";
+ ot->description="Create a copy of the active line set";
+
+ /* api callbacks */
+ ot->exec= freestyle_lineset_copy_exec;
+ ot->poll= freestyle_active_lineset_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
static int freestyle_lineset_remove_exec(bContext *C, wmOperator *UNUSED(op))
{
Scene *scene= CTX_data_scene(C);
diff --git a/source/blender/freestyle/FRS_freestyle.h b/source/blender/freestyle/FRS_freestyle.h
index 9a40fc3e019..376663e0a21 100644
--- a/source/blender/freestyle/FRS_freestyle.h
+++ b/source/blender/freestyle/FRS_freestyle.h
@@ -65,7 +65,8 @@ extern "C" {
void FRS_move_module_up(FreestyleConfig *config, FreestyleModuleConfig *module_conf);
void FRS_move_module_down(FreestyleConfig *config, FreestyleModuleConfig *module_conf);
- void FRS_add_lineset(FreestyleConfig *config);
+ FreestyleLineSet *FRS_add_lineset(FreestyleConfig *config);
+ void FRS_copy_active_lineset(FreestyleConfig *config);
void FRS_delete_active_lineset(FreestyleConfig *config);
void FRS_move_active_lineset_up(FreestyleConfig *config);
void FRS_move_active_lineset_down(FreestyleConfig *config);
diff --git a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
index d88331b7a04..d85ab0b6e82 100644
--- a/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
+++ b/source/blender/freestyle/intern/blender_interface/FRS_freestyle.cpp
@@ -542,7 +542,7 @@ extern "C" {
BLI_insertlinkafter(&config->modules, module_conf->next, module_conf);
}
- void FRS_add_lineset(FreestyleConfig *config)
+ FreestyleLineSet *FRS_add_lineset(FreestyleConfig *config)
{
int lineset_index = BLI_countlist(&config->linesets);
@@ -563,6 +563,30 @@ extern "C" {
else
strcpy(lineset->name, "LineSet");
BLI_uniquename(&config->linesets, lineset, "FreestyleLineSet", '.', offsetof(FreestyleLineSet, name), sizeof(lineset->name));
+
+ return lineset;
+ }
+
+ void FRS_copy_active_lineset(FreestyleConfig *config)
+ {
+ FreestyleLineSet *lineset = FRS_get_active_lineset(config);
+
+ if (lineset) {
+ FreestyleLineSet *new_lineset = FRS_add_lineset(config);
+ new_lineset->linestyle = lineset->linestyle;
+ new_lineset->linestyle->id.us++;
+ new_lineset->flags = lineset->flags;
+ new_lineset->selection = lineset->selection;
+ new_lineset->qi = lineset->qi;
+ new_lineset->qi_start = lineset->qi_start;
+ new_lineset->qi_end = lineset->qi_end;
+ new_lineset->edge_types = lineset->edge_types;
+ if (lineset->group) {
+ new_lineset->group = lineset->group;
+ new_lineset->group->id.us++;
+ }
+ new_lineset->flags |= FREESTYLE_LINESET_CURRENT;
+ }
}
void FRS_delete_active_lineset(FreestyleConfig *config)