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>2012-10-28 20:09:51 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2012-10-28 20:09:51 +0400
commit5acd5d14970c829c2873623716a67beeb6da5278 (patch)
treef805a8fd6d5ae5ad4a6d9903f5c26b511a21c32b /release/scripts/startup/bl_ui/properties_render.py
parentf252230216ce0b6e73ed69edb1c05a07ac1e373a (diff)
Improvements of Freestyle GUI controls - Part 1.
This commit makes a set of fixes and improvements based on the results of Freestyle branch review by Brecht. The discussion thread is: http://lists.blender.org/pipermail/bf-committers/2012-October/037927.html * The Layers panel and Freestyle-related panels in the Render tab of the Properties window were moved to the newly created Render Layers tab. The idea is to separate per render layer rendering options into a distinct Properties window tab, and use the existing Render tab to accommodate per scene rendering options. * The new Freestyle panel was added in the Render tab. The panel header contains a toggle button for globally enabling Freestyle, with the aim of making Freestyle easier to find. Those Freestyle options in the Post Processing panel were also moved to the new panel. * GUI code was updated so that UI controls will be greyed out (instead of being hidden) when Freestyle is disabled. Additional UI changes were also made to reduce space consumption. * The list of line sets was moved from the Freestyle panel to the Freestyle: Line Sets panel. * Old ray-casting algorithms were removed from the UI. Now only two algorithms (culled and non-culled cumulative visibility detection algorithms) are available, and the selection is done by the new "Culling" toggle button within the edge detection options.
Diffstat (limited to 'release/scripts/startup/bl_ui/properties_render.py')
-rw-r--r--release/scripts/startup/bl_ui/properties_render.py686
1 files changed, 21 insertions, 665 deletions
diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py
index bae0a390ff7..33ce0e07f17 100644
--- a/release/scripts/startup/bl_ui/properties_render.py
+++ b/release/scripts/startup/bl_ui/properties_render.py
@@ -71,660 +71,6 @@ class RENDER_PT_render(RenderButtonsPanel, Panel):
layout.prop(rd, "display_mode", text="Display")
-class RENDER_PT_layers(RenderButtonsPanel, Panel):
- bl_label = "Layers"
- bl_options = {'DEFAULT_CLOSED'}
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw(self, context):
- layout = self.layout
-
- scene = context.scene
- rd = scene.render
-
- row = layout.row()
- row.template_list(rd, "layers", rd.layers, "active_index", rows=2)
-
- col = row.column(align=True)
- col.operator("scene.render_layer_add", icon='ZOOMIN', text="")
- col.operator("scene.render_layer_remove", icon='ZOOMOUT', text="")
-
- row = layout.row()
- rl = rd.layers.active
- if rl:
- row.prop(rl, "name")
- row.prop(rd, "use_single_layer", text="", icon_only=True)
-
- split = layout.split()
-
- col = split.column()
- col.prop(scene, "layers", text="Scene")
- col.label(text="")
- col.prop(rl, "light_override", text="Light")
- col.prop(rl, "material_override", text="Material")
-
- col = split.column()
- col.prop(rl, "layers", text="Layer")
- col.label(text="Mask Layers:")
- col.prop(rl, "layers_zmask", text="")
-
- layout.separator()
- layout.label(text="Include:")
-
- split = layout.split()
-
- col = split.column()
- col.prop(rl, "use_zmask")
- row = col.row()
- row.prop(rl, "invert_zmask", text="Negate")
- row.active = rl.use_zmask
- col.prop(rl, "use_all_z")
-
- col = split.column()
- col.prop(rl, "use_solid")
- col.prop(rl, "use_halo")
- col.prop(rl, "use_ztransp")
- col.prop(rl, "use_sky")
-
- col = split.column()
- col.prop(rl, "use_edge_enhance")
- col.prop(rl, "use_strand")
- col.prop(rl, "use_freestyle")
-
- layout.separator()
-
- split = layout.split()
-
- col = split.column()
- col.label(text="Passes:")
- col.prop(rl, "use_pass_combined")
- col.prop(rl, "use_pass_z")
- col.prop(rl, "use_pass_vector")
- col.prop(rl, "use_pass_normal")
- col.prop(rl, "use_pass_uv")
- col.prop(rl, "use_pass_mist")
- col.prop(rl, "use_pass_object_index")
- col.prop(rl, "use_pass_material_index")
- col.prop(rl, "use_pass_color")
-
- col = split.column()
- col.label()
- col.prop(rl, "use_pass_diffuse")
- row = col.row()
- row.prop(rl, "use_pass_specular")
- row.prop(rl, "exclude_specular", text="")
- row = col.row()
- row.prop(rl, "use_pass_shadow")
- row.prop(rl, "exclude_shadow", text="")
- row = col.row()
- row.prop(rl, "use_pass_emit")
- row.prop(rl, "exclude_emit", text="")
- row = col.row()
- row.prop(rl, "use_pass_ambient_occlusion")
- row.prop(rl, "exclude_ambient_occlusion", text="")
- row = col.row()
- row.prop(rl, "use_pass_environment")
- row.prop(rl, "exclude_environment", text="")
- row = col.row()
- row.prop(rl, "use_pass_indirect")
- row.prop(rl, "exclude_indirect", text="")
- row = col.row()
- row.prop(rl, "use_pass_reflection")
- row.prop(rl, "exclude_reflection", text="")
- row = col.row()
- row.prop(rl, "use_pass_refraction")
- 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='COPYDOWN')
- layout.operator("scene.freestyle_lineset_paste", icon='PASTEDOWN')
-
-
-class RENDER_PT_freestyle(RenderButtonsPanel, Panel):
- bl_label = "Freestyle"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- rd = context.scene.render
- if rd.engine not in cls.COMPAT_ENGINES:
- return False
- rl = rd.layers.active
- return rl and rl.use_freestyle
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render
- rl = rd.layers.active
- freestyle = rl.freestyle_settings
-
- split = layout.split()
-
- col = split.column()
- col.prop(freestyle, "raycasting_algorithm", text="Raycasting Algorithm")
- col.prop(freestyle, "mode", text="Control Mode")
-
- col.label(text="Edge Detection Options:")
- col.prop(freestyle, "use_smoothness")
- col.prop(freestyle, "crease_angle")
- if freestyle.mode == "SCRIPT":
- col.prop(freestyle, "use_material_boundaries")
- col.prop(freestyle, "use_ridges_and_valleys")
- col.prop(freestyle, "use_suggestive_contours")
- col.prop(freestyle, "use_advanced_options")
- if freestyle.use_advanced_options:
- col.prop(freestyle, "sphere_radius")
- col.prop(freestyle, "kr_derivative_epsilon")
-
- if freestyle.mode == "EDITOR":
-
- lineset = freestyle.linesets.active
-
- col.label(text="Line Sets:")
- row = col.row()
- rows = 2
- if lineset:
- rows = 5
- row.template_list(freestyle, "linesets", freestyle.linesets, "active_index", rows=rows)
-
- sub = row.column()
- 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)
- subsub.operator("scene.freestyle_lineset_move", icon='TRIA_UP', text="").direction = 'UP'
- subsub.operator("scene.freestyle_lineset_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
-
- else: # freestyle.mode == "SCRIPT"
-
- col.separator()
- col.operator("scene.freestyle_module_add")
-
- for i, module in enumerate(freestyle.modules):
- box = layout.box()
- box.context_pointer_set("freestyle_module", module)
- row = box.row(align=True)
- row.prop(module, "use", text="")
- row.prop(module, "module_path", text="")
- row.operator("scene.freestyle_module_remove", icon='X', text="")
- row.operator("scene.freestyle_module_move", icon='TRIA_UP', text="").direction = 'UP'
- row.operator("scene.freestyle_module_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
-
-
-class RENDER_PT_freestyle_lineset(RenderButtonsPanel, Panel):
- bl_label = "Freestyle: Line Set"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- rd = context.scene.render
- if rd.engine not in cls.COMPAT_ENGINES:
- return False
- rl = rd.layers.active
- if rl and rl.use_freestyle:
- freestyle = rl.freestyle_settings
- return freestyle.mode == "EDITOR" and freestyle.linesets.active
- return False
-
- def draw_edge_type_buttons(self, box, lineset, edge_type):
- # property names
- select_edge_type = "select_" + edge_type
- exclude_edge_type = "exclude_" + edge_type
- # draw edge type buttons
- row = box.row(align=True)
- row.prop(lineset, select_edge_type)
- sub = row.column()
- sub.prop(lineset, exclude_edge_type, text="")
- sub.enabled = getattr(lineset, select_edge_type)
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render
- rl = rd.layers.active
- freestyle = rl.freestyle_settings
- lineset = freestyle.linesets.active
-
- split = layout.split()
-
- col = split.column()
- col.prop(lineset, "name")
-
- col.prop(lineset, "select_by_visibility")
- if lineset.select_by_visibility:
- sub = col.row(align=True)
- sub.prop(lineset, "visibility", expand=True)
- if lineset.visibility == "RANGE":
- sub = col.row(align=True)
- sub.prop(lineset, "qi_start")
- sub.prop(lineset, "qi_end")
- col.separator() # XXX
-
- col.prop(lineset, "select_by_edge_types")
- if lineset.select_by_edge_types:
- row = col.row()
- row.prop(lineset, "edge_type_negation", expand=True)
- row = col.row()
- row.prop(lineset, "edge_type_combination", expand=True)
-
- row = col.row()
- sub = row.column()
- self.draw_edge_type_buttons(sub, lineset, "silhouette")
- self.draw_edge_type_buttons(sub, lineset, "border")
- self.draw_edge_type_buttons(sub, lineset, "contour")
- self.draw_edge_type_buttons(sub, lineset, "suggestive_contour")
- self.draw_edge_type_buttons(sub, lineset, "ridge_valley")
- sub = row.column()
- self.draw_edge_type_buttons(sub, lineset, "crease")
- self.draw_edge_type_buttons(sub, lineset, "edge_mark")
- self.draw_edge_type_buttons(sub, lineset, "external_contour")
- self.draw_edge_type_buttons(sub, lineset, "material_boundary")
- col.separator() # XXX
-
- col.prop(lineset, "select_by_face_marks")
- if lineset.select_by_face_marks:
- row = col.row()
- row.prop(lineset, "face_mark_negation", expand=True)
- row = col.row()
- row.prop(lineset, "face_mark_condition", expand=True)
- col.separator() # XXX
-
- col.prop(lineset, "select_by_group")
- if lineset.select_by_group:
- col.prop(lineset, "group")
- row = col.row()
- row.prop(lineset, "group_negation", expand=True)
- col.separator() # XXX
-
- col.prop(lineset, "select_by_image_border")
-
-
-class RENDER_PT_freestyle_linestyle(RenderButtonsPanel, Panel):
- bl_label = "Freestyle: Line Style"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- rd = context.scene.render
- if rd.engine not in cls.COMPAT_ENGINES:
- return False
- rl = rd.layers.active
- if rl and rl.use_freestyle:
- freestyle = rl.freestyle_settings
- return freestyle.mode == "EDITOR" and freestyle.linesets.active
- return False
-
- def draw_modifier_box_header(self, box, modifier):
- row = box.row()
- row.context_pointer_set("modifier", modifier)
- if modifier.expanded:
- icon = "TRIA_DOWN"
- else:
- icon = "TRIA_RIGHT"
- row.prop(modifier, "expanded", text="", icon=icon, emboss=False)
- row.label(text=modifier.rna_type.name)
- row.prop(modifier, "name", text="")
- row.prop(modifier, "use", text="")
- row.operator("scene.freestyle_modifier_copy", icon='NONE', text="Copy")
- sub = row.row(align=True)
- sub.operator("scene.freestyle_modifier_move", icon='TRIA_UP', text="").direction = 'UP'
- sub.operator("scene.freestyle_modifier_move", icon='TRIA_DOWN', text="").direction = 'DOWN'
- row.operator("scene.freestyle_modifier_remove", icon='X', text="")
-
- def draw_modifier_common(self, box, modifier):
- row = box.row()
- row.prop(modifier, "blend", text="")
- row.prop(modifier, "influence")
-
- def draw_modifier_color_ramp_common(self, box, modifier, has_range):
- box.template_color_ramp(modifier, "color_ramp", expand=True)
- if has_range:
- row = box.row(align=True)
- row.prop(modifier, "range_min")
- row.prop(modifier, "range_max")
-
- def draw_modifier_curve_common(self, box, modifier, has_range, has_value):
- row = box.row()
- row.prop(modifier, "mapping", text="")
- sub = row.column()
- sub.prop(modifier, "invert")
- if modifier.mapping == "CURVE":
- sub.enabled = False
- box.template_curve_mapping(modifier, "curve")
- if has_range:
- row = box.row(align=True)
- row.prop(modifier, "range_min")
- row.prop(modifier, "range_max")
- if has_value:
- row = box.row(align=True)
- row.prop(modifier, "value_min")
- row.prop(modifier, "value_max")
-
- def draw_color_modifier(self, context, modifier):
- layout = self.layout
-
- col = layout.column(align=True)
- self.draw_modifier_box_header(col.box(), modifier)
- if modifier.expanded:
- box = col.box()
- self.draw_modifier_common(box, modifier)
-
- if modifier.type == "ALONG_STROKE":
- self.draw_modifier_color_ramp_common(box, modifier, False)
-
- elif modifier.type == "DISTANCE_FROM_OBJECT":
- box.prop(modifier, "target")
- self.draw_modifier_color_ramp_common(box, modifier, True)
- prop = box.operator("scene.freestyle_fill_range_by_selection")
- prop.type = 'COLOR'
- prop.name = modifier.name
-
- elif modifier.type == "DISTANCE_FROM_CAMERA":
- self.draw_modifier_color_ramp_common(box, modifier, True)
- prop = box.operator("scene.freestyle_fill_range_by_selection")
- prop.type = 'COLOR'
- prop.name = modifier.name
-
- elif modifier.type == "MATERIAL":
- row = box.row()
- row.prop(modifier, "material_attr", text="")
- sub = row.column()
- sub.prop(modifier, "use_ramp")
- if modifier.material_attr in ["DIFF", "SPEC"]:
- sub.enabled = True
- show_ramp = modifier.use_ramp
- else:
- sub.enabled = False
- show_ramp = True
- if show_ramp:
- self.draw_modifier_color_ramp_common(box, modifier, False)
-
- def draw_alpha_modifier(self, context, modifier):
- layout = self.layout
-
- col = layout.column(align=True)
- self.draw_modifier_box_header(col.box(), modifier)
- if modifier.expanded:
- box = col.box()
- self.draw_modifier_common(box, modifier)
-
- if modifier.type == "ALONG_STROKE":
- self.draw_modifier_curve_common(box, modifier, False, False)
-
- elif modifier.type == "DISTANCE_FROM_OBJECT":
- box.prop(modifier, "target")
- self.draw_modifier_curve_common(box, modifier, True, False)
- prop = box.operator("scene.freestyle_fill_range_by_selection")
- prop.type = 'ALPHA'
- prop.name = modifier.name
-
- elif modifier.type == "DISTANCE_FROM_CAMERA":
- self.draw_modifier_curve_common(box, modifier, True, False)
- prop = box.operator("scene.freestyle_fill_range_by_selection")
- prop.type = 'ALPHA'
- prop.name = modifier.name
-
- elif modifier.type == "MATERIAL":
- box.prop(modifier, "material_attr", text="")
- self.draw_modifier_curve_common(box, modifier, False, False)
-
- def draw_thickness_modifier(self, context, modifier):
- layout = self.layout
-
- col = layout.column(align=True)
- self.draw_modifier_box_header(col.box(), modifier)
- if modifier.expanded:
- box = col.box()
- self.draw_modifier_common(box, modifier)
-
- if modifier.type == "ALONG_STROKE":
- self.draw_modifier_curve_common(box, modifier, False, True)
-
- elif modifier.type == "DISTANCE_FROM_OBJECT":
- box.prop(modifier, "target")
- self.draw_modifier_curve_common(box, modifier, True, True)
- prop = box.operator("scene.freestyle_fill_range_by_selection")
- prop.type = 'THICKNESS'
- prop.name = modifier.name
-
- elif modifier.type == "DISTANCE_FROM_CAMERA":
- self.draw_modifier_curve_common(box, modifier, True, True)
- prop = box.operator("scene.freestyle_fill_range_by_selection")
- prop.type = 'THICKNESS'
- prop.name = modifier.name
-
- elif modifier.type == "MATERIAL":
- box.prop(modifier, "material_attr", text="")
- self.draw_modifier_curve_common(box, modifier, False, True)
-
- elif modifier.type == "CALLIGRAPHY":
- col = box.column()
- col.prop(modifier, "orientation")
- col.prop(modifier, "min_thickness")
- col.prop(modifier, "max_thickness")
-
- def draw_geometry_modifier(self, context, modifier):
- layout = self.layout
-
- col = layout.column(align=True)
- self.draw_modifier_box_header(col.box(), modifier)
- if modifier.expanded:
- box = col.box()
-
- if modifier.type == "SAMPLING":
- box.prop(modifier, "sampling")
-
- elif modifier.type == "BEZIER_CURVE":
- box.prop(modifier, "error")
-
- elif modifier.type == "SINUS_DISPLACEMENT":
- box.prop(modifier, "wavelength")
- box.prop(modifier, "amplitude")
- box.prop(modifier, "phase")
-
- elif modifier.type == "SPATIAL_NOISE":
- box.prop(modifier, "amplitude")
- box.prop(modifier, "scale")
- box.prop(modifier, "octaves")
- sub = box.row()
- sub.prop(modifier, "smooth")
- sub.prop(modifier, "pure_random")
-
- elif modifier.type == "PERLIN_NOISE_1D":
- box.prop(modifier, "frequency")
- box.prop(modifier, "amplitude")
- box.prop(modifier, "octaves")
- box.prop(modifier, "angle")
- box.prop(modifier, "seed")
-
- elif modifier.type == "PERLIN_NOISE_2D":
- box.prop(modifier, "frequency")
- box.prop(modifier, "amplitude")
- box.prop(modifier, "octaves")
- box.prop(modifier, "angle")
- box.prop(modifier, "seed")
-
- elif modifier.type == "BACKBONE_STRETCHER":
- box.prop(modifier, "backbone_length")
-
- elif modifier.type == "TIP_REMOVER":
- box.prop(modifier, "tip_length")
-
- elif modifier.type == "POLYGONIZATION":
- box.prop(modifier, "error")
-
- elif modifier.type == "GUIDING_LINES":
- box.prop(modifier, "offset")
-
- elif modifier.type == "BLUEPRINT":
- row = box.row()
- row.prop(modifier, "shape", expand=True)
- box.prop(modifier, "rounds")
- if modifier.shape in ["CIRCLES", "ELLIPSES"]:
- box.prop(modifier, "random_radius")
- box.prop(modifier, "random_center")
- elif modifier.shape == "SQUARES":
- box.prop(modifier, "backbone_length")
- box.prop(modifier, "random_backbone")
-
- elif modifier.type == "2D_OFFSET":
- row = box.row(align=True)
- row.prop(modifier, "start")
- row.prop(modifier, "end")
- row = box.row(align=True)
- row.prop(modifier, "x")
- row.prop(modifier, "y")
-
- elif modifier.type == "2D_TRANSFORM":
- box.prop(modifier, "pivot")
- if modifier.pivot == "PARAM":
- box.prop(modifier, "pivot_u")
- elif modifier.pivot == "ABSOLUTE":
- row = box.row(align=True)
- row.prop(modifier, "pivot_x")
- row.prop(modifier, "pivot_y")
- row = box.row(align=True)
- row.prop(modifier, "scale_x")
- row.prop(modifier, "scale_y")
- box.prop(modifier, "angle")
-
- def draw(self, context):
- layout = self.layout
-
- rd = context.scene.render
- rl = rd.layers.active
- lineset = rl.freestyle_settings.linesets.active
- linestyle = lineset.linestyle
-
- layout.template_ID(lineset, "linestyle", new="scene.freestyle_linestyle_new")
- row = layout.row(align=True)
- row.prop(linestyle, "panel", expand=True)
- if linestyle.panel == "STROKES":
- # Chaining
- col = layout.column()
- col.prop(linestyle, "use_chaining", text="Chaining:")
- sub = col.column()
- sub.enabled = linestyle.use_chaining
- sub.prop(linestyle, "chaining", text="")
- if linestyle.chaining == "PLAIN":
- sub.prop(linestyle, "same_object")
- elif linestyle.chaining == "SKETCHY":
- subsub = sub.row()
- subsub.prop(linestyle, "same_object")
- subsub.prop(linestyle, "rounds")
- # Splitting
- col = layout.column()
- col.label(text="Splitting:")
- row = col.row()
- row.prop(linestyle, "material_boundary")
- row = col.row()
- sub = row.column()
- sub.prop(linestyle, "use_min_angle", text="Min 2D Angle")
- subsub = sub.split()
- subsub.prop(linestyle, "min_angle", text="")
- subsub.enabled = linestyle.use_min_angle
- sub = row.column()
- sub.prop(linestyle, "use_max_angle", text="Max 2D Angle")
- subsub = sub.split()
- subsub.prop(linestyle, "max_angle", text="")
- subsub.enabled = linestyle.use_max_angle
- col.prop(linestyle, "use_split_length", text="2D Length")
- row = col.row()
- row.prop(linestyle, "split_length", text="")
- row.enabled = linestyle.use_split_length
- # Selection
- col = layout.column()
- col.label(text="Selection:")
- sub = col.row()
- subcol = sub.column()
- subcol.prop(linestyle, "use_min_length", text="Min 2D Length")
- subsub = subcol.split()
- subsub.prop(linestyle, "min_length", text="")
- subsub.enabled = linestyle.use_min_length
- subcol = sub.column()
- subcol.prop(linestyle, "use_max_length", text="Max 2D Length")
- subsub = subcol.split()
- subsub.prop(linestyle, "max_length", text="")
- subsub.enabled = linestyle.use_max_length
- # Caps
- col = layout.column()
- col.label(text="Caps:")
- row = col.row(align=True)
- row.prop(linestyle, "caps", expand=True)
- col = layout.column()
- col.prop(linestyle, "use_dashed_line")
- split = col.split()
- split.enabled = linestyle.use_dashed_line
- sub = split.column()
- sub.label(text="Dash")
- sub.prop(linestyle, "dash1", text="")
- sub = split.column()
- sub.label(text="Gap")
- sub.prop(linestyle, "gap1", text="")
- sub = split.column()
- sub.label(text="Dash")
- sub.prop(linestyle, "dash2", text="")
- sub = split.column()
- sub.label(text="Gap")
- sub.prop(linestyle, "gap2", text="")
- sub = split.column()
- sub.label(text="Dash")
- sub.prop(linestyle, "dash3", text="")
- sub = split.column()
- sub.label(text="Gap")
- sub.prop(linestyle, "gap3", text="")
- elif linestyle.panel == "COLOR":
- col = layout.column()
- col.label(text="Base Color:")
- col.prop(linestyle, "color", text="")
- col = layout.column()
- col.label(text="Modifiers:")
- col.operator_menu_enum("scene.freestyle_color_modifier_add", "type", text="Add Modifier")
- for modifier in linestyle.color_modifiers:
- self.draw_color_modifier(context, modifier)
- elif linestyle.panel == "ALPHA":
- col = layout.column()
- col.label(text="Base Transparency:")
- col.prop(linestyle, "alpha")
- col = layout.column()
- col.label(text="Modifiers:")
- col.operator_menu_enum("scene.freestyle_alpha_modifier_add", "type", text="Add Modifier")
- for modifier in linestyle.alpha_modifiers:
- self.draw_alpha_modifier(context, modifier)
- elif linestyle.panel == "THICKNESS":
- col = layout.column()
- col.label(text="Base Thickness:")
- col.prop(linestyle, "thickness")
- col = layout.column()
- row = col.row()
- row.prop(linestyle, "thickness_position", expand=True)
- row = col.row()
- row.prop(linestyle, "thickness_ratio")
- row.enabled = linestyle.thickness_position == "RELATIVE"
- col = layout.column()
- col.label(text="Modifiers:")
- col.operator_menu_enum("scene.freestyle_thickness_modifier_add", "type", text="Add Modifier")
- for modifier in linestyle.thickness_modifiers:
- self.draw_thickness_modifier(context, modifier)
- elif linestyle.panel == "GEOMETRY":
- col = layout.column()
- col.label(text="Modifiers:")
- col.operator_menu_enum("scene.freestyle_geometry_modifier_add", "type", text="Add Modifier")
- for modifier in linestyle.geometry_modifiers:
- self.draw_geometry_modifier(context, modifier)
- elif linestyle.panel == "MISC":
- pass
-
-
class RENDER_PT_dimensions(RenderButtonsPanel, Panel):
bl_label = "Dimensions"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -948,19 +294,29 @@ class RENDER_PT_post_processing(RenderButtonsPanel, Panel):
sub.prop(rd, "edge_threshold", text="Threshold", slider=True)
sub.prop(rd, "edge_color", text="")
- layout.separator()
- split = layout.split()
+class RENDER_PT_freestyle(RenderButtonsPanel, Panel):
+ bl_label = "Freestyle"
+ bl_options = {'DEFAULT_CLOSED'}
+ COMPAT_ENGINES = {'BLENDER_RENDER'}
- col = split.column()
- col.prop(rd, "use_freestyle", text="Freestyle")
- sub = col.column()
- sub.label(text="Line Thickness:")
- sub.active = rd.use_freestyle
- sub.row().prop(rd, "line_thickness_mode", expand=True)
- subrow = sub.row()
- subrow.active = (rd.line_thickness_mode == "ABSOLUTE")
- subrow.prop(rd, "unit_line_thickness")
+ def draw_header(self, context):
+ rd = context.scene.render
+
+ self.layout.prop(rd, "use_freestyle", text="")
+
+ def draw(self, context):
+ rd = context.scene.render
+
+ layout = self.layout
+ layout.enabled = rd.use_freestyle
+
+ row = layout.row()
+ row.label(text="Line Thickness:")
+ row.prop(rd, "line_thickness_mode", expand=True)
+ row = layout.row()
+ row.enabled = (rd.line_thickness_mode == "ABSOLUTE")
+ row.prop(rd, "unit_line_thickness")
class RENDER_PT_stamp(RenderButtonsPanel, Panel):