[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55848] trunk/blender: Missing files in revision 55847.

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Sat Apr 6 18:42:33 CEST 2013


Revision: 55848
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55848
Author:   kjym3
Date:     2013-04-06 16:42:33 +0000 (Sat, 06 Apr 2013)
Log Message:
-----------
Missing files in revision 55847.

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55847

Added Paths:
-----------
    trunk/blender/release/scripts/startup/bl_operators/freestyle.py
    trunk/blender/release/scripts/startup/bl_ui/properties_freestyle.py
    trunk/blender/release/scripts/startup/bl_ui/properties_render_layer.py
    trunk/blender/source/blender/blenkernel/BKE_freestyle.h
    trunk/blender/source/blender/blenkernel/BKE_linestyle.h
    trunk/blender/source/blender/blenkernel/intern/freestyle.c
    trunk/blender/source/blender/blenkernel/intern/linestyle.c
    trunk/blender/source/blender/makesdna/DNA_freestyle_types.h
    trunk/blender/source/blender/makesdna/DNA_linestyle_types.h
    trunk/blender/source/blender/makesrna/intern/rna_linestyle.c

Added: trunk/blender/release/scripts/startup/bl_operators/freestyle.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_operators/freestyle.py	                        (rev 0)
+++ trunk/blender/release/scripts/startup/bl_operators/freestyle.py	2013-04-06 16:42:33 UTC (rev 55848)
@@ -0,0 +1,135 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+import sys
+import bpy
+
+from bpy.props import (EnumProperty, StringProperty)
+
+
+class SCENE_OT_freestyle_fill_range_by_selection(bpy.types.Operator):
+    '''Fill the Range Min/Max entries by the min/max distance between selected mesh objects and the source object
+       (either a user-specified object or the active camera)'''
+    bl_idname = "scene.freestyle_fill_range_by_selection"
+    bl_label = "Fill Range by Selection"
+
+    type = EnumProperty(name="Type", description="Type of the modifier to work on",
+                        items=(("COLOR", "Color", "Color modifier type"),
+                               ("ALPHA", "Alpha", "Alpha modifier type"),
+                               ("THICKNESS", "Thickness", "Thickness modifier type")))
+    name = StringProperty(name="Name", description="Name of the modifier to work on")
+
+    def execute(self, context):
+        rl = context.scene.render.layers.active
+        lineset = rl.freestyle_settings.linesets.active
+        linestyle = lineset.linestyle
+        # Find the modifier to work on
+        if self.type == 'COLOR':
+            m = linestyle.color_modifiers[self.name]
+        elif self.type == 'ALPHA':
+            m = linestyle.alpha_modifiers[self.name]
+        else:
+            m = linestyle.thickness_modifiers[self.name]
+        # Find the source object
+        if m.type == 'DISTANCE_FROM_CAMERA':
+            source = context.scene.camera
+        elif m.type == 'DISTANCE_FROM_OBJECT':
+            if m.target is None:
+                self.report({'ERROR'}, "Target object not specified")
+                return {'CANCELLED'}
+            source = m.target
+        else:
+            self.report({'ERROR'}, "Unexpected modifier type: " + m.type)
+            return {'CANCELLED'}
+        # Find selected mesh objects
+        selection = [ob for ob in context.scene.objects if ob.select and ob.type == 'MESH' and ob.name != source.name]
+        if len(selection) > 0:
+            # Compute the min/max distance between selected mesh objects and the source
+            min_dist = sys.float_info.max
+            max_dist = -min_dist
+            for ob in selection:
+                for vert in ob.data.vertices:
+                    dist = (ob.matrix_world * vert.co - source.location).length
+                    min_dist = min(dist, min_dist)
+                    max_dist = max(dist, max_dist)
+            # Fill the Range Min/Max entries with the computed distances
+            m.range_min = min_dist
+            m.range_max = max_dist
+        return {'FINISHED'}
+
+
+class SCENE_OT_freestyle_add_edge_marks_to_keying_set(bpy.types.Operator):
+    '''Add the data paths to the Freestyle Edge Mark property of selected edges to the active keying set'''
+    bl_idname = "scene.freestyle_add_edge_marks_to_keying_set"
+    bl_label = "Add Edge Marks to Keying Set"
+    bl_options = {'UNDO'}
+
+    @classmethod
+    def poll(cls, context):
+        ob = context.active_object
+        return (ob and ob.type == 'MESH')
+
+    def execute(self, context):
+        # active keying set
+        scene = context.scene
+        ks = scene.keying_sets.active
+        if ks is None:
+            ks = scene.keying_sets.new(idname="FreestyleEdgeMarkKeyingSet", name="Freestyle Edge Mark Keying Set")
+            ks.bl_description = ""
+        # add data paths to the keying set
+        ob = context.active_object
+        ob_mode = ob.mode
+        mesh = ob.data
+        bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
+        for i, edge in enumerate(mesh.edges):
+            if not edge.hide and edge.select:
+                path = 'edges[%d].use_freestyle_edge_mark' % i
+                ks.paths.add(mesh, path, index=0)
+        bpy.ops.object.mode_set(mode=ob_mode, toggle=False)
+        return {'FINISHED'}
+
+
+class SCENE_OT_freestyle_add_face_marks_to_keying_set(bpy.types.Operator):
+    '''Add the data paths to the Freestyle Face Mark property of selected polygons to the active keying set'''
+    bl_idname = "scene.freestyle_add_face_marks_to_keying_set"
+    bl_label = "Add Face Marks to Keying Set"
+    bl_options = {'UNDO'}
+
+    @classmethod
+    def poll(cls, context):
+        ob = context.active_object
+        return (ob and ob.type == 'MESH')
+
+    def execute(self, context):
+        # active keying set
+        scene = context.scene
+        ks = scene.keying_sets.active
+        if ks is None:
+            ks = scene.keying_sets.new(idname="FreestyleFaceMarkKeyingSet", name="Freestyle Face Mark Keying Set")
+            ks.bl_description = ""
+        # add data paths to the keying set
+        ob = context.active_object
+        ob_mode = ob.mode
+        mesh = ob.data
+        bpy.ops.object.mode_set(mode='OBJECT', toggle=False)
+        for i, polygon in enumerate(mesh.polygons):
+            if not polygon.hide and polygon.select:
+                path = 'polygons[%d].use_freestyle_face_mark' % i
+                ks.paths.add(mesh, path, index=0)
+        bpy.ops.object.mode_set(mode=ob_mode, toggle=False)
+        return {'FINISHED'}

Added: trunk/blender/release/scripts/startup/bl_ui/properties_freestyle.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/properties_freestyle.py	                        (rev 0)
+++ trunk/blender/release/scripts/startup/bl_ui/properties_freestyle.py	2013-04-06 16:42:33 UTC (rev 55848)
@@ -0,0 +1,668 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+#  This program is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+import bpy
+from bpy.types import Menu, Panel, UIList
+from bl_ui.properties_render import RenderButtonsPanel
+from bl_ui.properties_render_layer import RenderLayerButtonsPanel
+
+
+# Render properties
+
+class RenderFreestyleButtonsPanel(RenderButtonsPanel):
+    # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
+
+    @classmethod
+    def poll(cls, context):
+        if not super().poll(context):
+            return False
+        return bpy.app.build_options.freestyle
+
+
+class RENDER_PT_freestyle(RenderFreestyleButtonsPanel, Panel):
+    bl_label = "Freestyle"
+    bl_options = {'DEFAULT_CLOSED'}
+    COMPAT_ENGINES = {'BLENDER_RENDER'}
+
+    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.active = rd.use_freestyle
+
+        row = layout.row()
+        row.label(text="Line Thickness:")
+        row.prop(rd, "line_thickness_mode", expand=True)
+        row = layout.row()
+        row.active = (rd.line_thickness_mode == 'ABSOLUTE')
+        row.prop(rd, "unit_line_thickness")
+
+
+# Render layer properties
+
+class RenderLayerFreestyleButtonsPanel(RenderLayerButtonsPanel):
+    # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
+
+    @classmethod
+    def poll(cls, context):
+        if not super().poll(context):
+            return False
+        rd = context.scene.render
+        return bpy.app.build_options.freestyle and rd.use_freestyle and rd.layers.active
+
+
+class RenderLayerFreestyleEditorButtonsPanel(RenderLayerFreestyleButtonsPanel):
+    # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here
+
+    @classmethod
+    def poll(cls, context):
+        if not super().poll(context):
+            return False
+        rl = context.scene.render.layers.active
+        return rl and rl.freestyle_settings.mode == 'EDITOR'
+
+
+class RENDERLAYER_UL_linesets(UIList):
+    def draw_item(self, context, layout, data, item, icon, active_data, active_propname, index):
+        lineset = item
+        if self.layout_type in {'DEFAULT', 'COMPACT'}:
+            layout.label(lineset.name, icon_value=icon)
+            layout.prop(lineset, "show_render", text="", index=index)
+        elif self.layout_type in {'GRID'}:
+            layout.alignment = 'CENTER'
+            layout.label("", icon_value=icon)
+
+##ifdef WITH_FREESTYLE
+#	else if (RNA_struct_is_a(itemptr->type, &RNA_SceneRenderLayer) || 
+#	         RNA_struct_is_a(itemptr->type, &RNA_FreestyleLineSet)) {
+##else
+#	else if (RNA_struct_is_a(itemptr->type, &RNA_SceneRenderLayer)) {
+##endif
+#		uiItemL(sub, name, icon);
+#		uiBlockSetEmboss(block, UI_EMBOSS);
+#		uiDefButR(block, OPTION, 0, "", 0, 0, UI_UNIT_X, UI_UNIT_Y, itemptr, "use", 0, 0, 0, 0, 0,  NULL);
+#	}
+
+

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list