[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [21906] branches/blender2.5/blender: 2.5: Painting

Brecht Van Lommel brecht at blender.org
Sun Jul 26 00:31:02 CEST 2009


Revision: 21906
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21906
Author:   blendix
Date:     2009-07-26 00:31:02 +0200 (Sun, 26 Jul 2009)

Log Message:
-----------
2.5: Painting

Various fixes for painting, sculpting and particle edit, still
much to be done...

* Move RNA paint and sculpt structs into rna_sculpt_paint.c,
* Added Particle Edit RNA.
* Some tweaks to existing Paint RNA.

* Put texture paint and particle edit object in context.

* Fix some errors in the brush layout, properly doing None
  checks, fixing some wrong property identifiers.
* Added tool enum for texture paint and particle edit in panels.

* Allow editing brush textures in the texture buttons, still with
  a stupid toggle, ideas for how to make the connection better are
  welcome.

Modified Paths:
--------------
    branches/blender2.5/blender/release/ui/buttons_texture.py
    branches/blender2.5/blender/release/ui/space_view3d_toolbar.py
    branches/blender2.5/blender/source/blender/blenkernel/intern/image.c
    branches/blender2.5/blender/source/blender/blenlib/BLI_arithb.h
    branches/blender2.5/blender/source/blender/blenlib/intern/arithb.c
    branches/blender2.5/blender/source/blender/editors/physics/editparticle.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_context.c
    branches/blender2.5/blender/source/blender/editors/space_buttons/buttons_context.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/view3d_toolbar.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_brush_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_scene_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_space_types.h
    branches/blender2.5/blender/source/blender/makesrna/RNA_access.h
    branches/blender2.5/blender/source/blender/makesrna/intern/makesrna.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_brush.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_define.c
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_internal.h
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_scene.c

Added Paths:
-----------
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_sculpt_paint.c

Removed Paths:
-------------
    branches/blender2.5/blender/source/blender/makesrna/intern/rna_vpaint.c

Modified: branches/blender2.5/blender/release/ui/buttons_texture.py
===================================================================
--- branches/blender2.5/blender/release/ui/buttons_texture.py	2009-07-25 22:22:47 UTC (rev 21905)
+++ branches/blender2.5/blender/release/ui/buttons_texture.py	2009-07-25 22:31:02 UTC (rev 21906)
@@ -19,6 +19,7 @@
 		ma = context.material
 		la = context.lamp
 		wo = context.world
+		br = context.brush
 		
 		if ma:
 			layout.template_preview(tex, parent=ma)
@@ -26,6 +27,8 @@
 			layout.template_preview(tex, parent=la)
 		elif wo:
 			layout.template_preview(tex, parent=wo)
+		elif br:
+			layout.template_preview(tex, parent=br)
 		else:
 			layout.template_preview(tex)
 
@@ -34,7 +37,7 @@
 	__no_header__ = True
 
 	def poll(self, context):
-		return (context.material or context.world or context.lamp or context.texture)
+		return (context.material or context.world or context.lamp or context.brush or context.texture)
 
 	def draw(self, context):
 		layout = self.layout
@@ -43,10 +46,11 @@
 		ma = context.material
 		la = context.lamp
 		wo = context.world
+		br = context.brush
 		space = context.space_data
 		slot = context.texture_slot
 
-		if ma or la or wo:
+		if ma or la or wo or br:
 			row = layout.row()
 			if ma:
 				row.template_list(ma, "textures", ma, "active_texture_index", type="ICONS")
@@ -54,21 +58,28 @@
 				row.template_list(la, "textures", la, "active_texture_index", type="ICONS")
 			elif wo:
 				row.template_list(wo, "textures", wo, "active_texture_index", type="ICONS")
+			elif br:
+				row.template_list(br, "textures", br, "active_texture_index", type="ICONS")
 
 		split = layout.split(percentage=0.65)
 
-		if ma or la or wo:
+		if ma or la or wo or br:
 			if slot:
 				split.template_ID(slot, "texture", new="texture.new")
 			else:
 				split.itemS()
-
 		elif tex:
 			split.template_ID(space, "pin_id")
+
+		if not space.pin_id and \
+		   (context.sculpt_object or context.vertex_paint_object or \
+		   context.weight_paint_object or context.texture_paint_object):
+			split.itemR(space, "brush_texture", text="Brush", toggle=True)
+		else:
 			split.itemS()
-			
-			layout.itemS()
 		
+		layout.itemS()
+
 		if tex:
 			split = layout.split(percentage=0.2)
 		
@@ -89,32 +100,34 @@
 		ma = context.material
 		la = context.lamp
 		wo = context.world
+		br = context.brush
 		tex = context.texture_slot
 		textype = context.texture
 
-		split = layout.split(percentage=0.3)
-		col = split.column()
-		col.itemL(text="Coordinates:")
-		col = split.column()
-		col.itemR(tex, "texture_coordinates", text="")
+		if not br:
+			split = layout.split(percentage=0.3)
+			col = split.column()
+			col.itemL(text="Coordinates:")
+			col = split.column()
+			col.itemR(tex, "texture_coordinates", text="")
 
-		if tex.texture_coordinates == 'ORCO':
-			"""
-			ob = context.object
-			if ob and ob.type == 'MESH':
+			if tex.texture_coordinates == 'ORCO':
+				"""
+				ob = context.object
+				if ob and ob.type == 'MESH':
+					split = layout.split(percentage=0.3)
+					split.itemL(text="Mesh:")
+					split.itemR(ob.data, "texco_mesh", text="")
+				"""
+			elif tex.texture_coordinates == 'UV':
 				split = layout.split(percentage=0.3)
-				split.itemL(text="Mesh:")
-				split.itemR(ob.data, "texco_mesh", text="")
-			"""
-		elif tex.texture_coordinates == 'UV':
-			split = layout.split(percentage=0.3)
-			split.itemL(text="Layer:")
-			split.itemR(tex, "uv_layer", text="")
-		elif tex.texture_coordinates == 'OBJECT':
-			split = layout.split(percentage=0.3)
-			split.itemL(text="Object:")
-			split.itemR(tex, "object", text="")
-		
+				split.itemL(text="Layer:")
+				split.itemR(tex, "uv_layer", text="")
+			elif tex.texture_coordinates == 'OBJECT':
+				split = layout.split(percentage=0.3)
+				split.itemL(text="Object:")
+				split.itemR(tex, "object", text="")
+			
 		if ma:
 			split = layout.split(percentage=0.3)
 			col = split.column()
@@ -147,7 +160,7 @@
 	__label__ = "Influence"
 	
 	def poll(self, context):
-		return (context.texture_slot and context.texture and context.texture.type != 'NONE')
+		return (context.texture_slot and context.texture and context.texture.type != 'NONE' and (not context.brush))
 
 	def draw(self, context):
 		layout = self.layout
@@ -155,6 +168,7 @@
 		ma = context.material
 		la = context.lamp
 		wo = context.world
+		br = context.brush
 		textype = context.texture
 		tex = context.texture_slot
 

Modified: branches/blender2.5/blender/release/ui/space_view3d_toolbar.py
===================================================================
--- branches/blender2.5/blender/release/ui/space_view3d_toolbar.py	2009-07-25 22:22:47 UTC (rev 21905)
+++ branches/blender2.5/blender/release/ui/space_view3d_toolbar.py	2009-07-25 22:31:02 UTC (rev 21906)
@@ -9,7 +9,6 @@
 	__context__ = "objectmode"
 
 class VIEW3D_PT_tools_objectmode(View3DPanel):
-	__idname__ = "VIEW3D_PT_tools_objectmode"
 	__label__ = "Object Tools"
 
 	def draw(self, context):
@@ -49,7 +48,6 @@
 	__context__ = "editmode_mesh"
 
 class VIEW3D_PT_tools_editmode_mesh(View3DPanel):
-	__idname__ = "VIEW3D_PT_tools_editmode_mesh"
 	__label__ = "Mesh Tools"
 
 	def draw(self, context):
@@ -97,7 +95,6 @@
 	__context__ = "editmode_curve"
 
 class VIEW3D_PT_tools_editmode_curve(View3DPanel):
-	__idname__ = "VIEW3D_PT_tools_editmode_curve"
 	__label__ = "Curve Tools"
 
 	def draw(self, context):
@@ -132,7 +129,6 @@
 	__context__ = "editmode_surface"
 
 class VIEW3D_PT_tools_editmode_surface(View3DPanel):
-	__idname__ = "VIEW3D_PT_tools_editmode_surface"
 	__label__ = "Surface Tools"
 
 	def draw(self, context):
@@ -167,7 +163,6 @@
 	__context__ = "editmode_text"
 
 class VIEW3D_PT_tools_editmode_text(View3DPanel):
-	__idname__ = "VIEW3D_PT_tools_editmode_text"
 	__label__ = "Text Tools"
 
 	def draw(self, context):
@@ -189,7 +184,6 @@
 	__context__ = "editmode_armature"
 
 class VIEW3D_PT_tools_editmode_armature(View3DPanel):
-	__idname__ = "VIEW3D_PT_tools_editmode_armature"
 	__label__ = "Armature Tools"
 
 	def draw(self, context):
@@ -220,7 +214,6 @@
 	__context__ = "editmode_mball"
 
 class VIEW3D_PT_tools_editmode_mball(View3DPanel):
-	__idname__ = "VIEW3D_PT_tools_editmode_mball"
 	__label__ = "Meta Tools"
 
 	def draw(self, context):
@@ -241,7 +234,6 @@
 	__context__ = "editmode_lattice"
 
 class VIEW3D_PT_tools_editmode_lattice(View3DPanel):
-	__idname__ = "VIEW3D_PT_tools_editmode_lattice"
 	__label__ = "Lattice Tools"
 
 	def draw(self, context):
@@ -262,7 +254,6 @@
 	__context__ = "posemode"
 
 class VIEW3D_PT_tools_posemode(View3DPanel):
-	__idname__ = "VIEW3D_PT_tools_posemode"
 	__label__ = "Pose Tools"
 
 	def draw(self, context):
@@ -301,102 +292,104 @@
 
 # ********** default tools for paint modes ****************
 
-class VIEW3D_PT_tools_brush(bpy.types.Panel):
+class PaintPanel(bpy.types.Panel):
 	__space_type__ = "VIEW_3D"
 	__region_type__ = "TOOLS"
-	__label__ = "Brush"
 
-	def brush_src(self, context):
+	def paint_settings(self, context):
 		ts = context.tool_settings
+
 		if context.sculpt_object:
 			return ts.sculpt
-		elif context.vpaint_object:
-			return ts.vpaint
-		elif context.wpaint_object:
-			return ts.wpaint
-		elif context.tpaint_object:
-			return ts.tpaint
+		elif context.vertex_paint_object:
+			return ts.vertex_paint
+		elif context.weight_paint_object:
+			return ts.weight_paint
+		elif context.texture_paint_object:
+			return ts.image_paint
+		elif context.particle_edit_object:
+			return ts.particle_edit
+
 		return False
 
+class VIEW3D_PT_tools_brush(PaintPanel):
+	__label__ = "Brush"
+
 	def poll(self, context):
-		return self.brush_src(context)
+		return self.paint_settings(context)
 
 	def draw(self, context):
-		src = self.brush_src(context)
-		brush = src.brush
+		settings = self.paint_settings(context)
+		brush = settings.brush
 		layout = self.layout
 
-		layout.split().row().template_ID(src, "brush")
+		if context.particle_edit_object:
+			layout.column().itemR(settings, "tool", expand=True)
+		else:
+			layout.split().row().template_ID(settings, "brush")
 
-		if context.sculpt_object:
-			layout.column().itemR(brush, "sculpt_tool", expand=True)
+		if brush and not context.particle_edit_object:
+			if context.sculpt_object:
+				layout.column().itemR(brush, "sculpt_tool", expand=True)
 
-		split = layout.split()
-		
-		col = split.column()
-		row = col.row(align=True)
-		row.itemR(brush, "size", slider=True)
-		row.itemR(brush, "size_pressure", toggle=True, icon='ICON_BRUSH_DATA', text="")
-		
-		if context.wpaint_object:
-			col.itemR(context.tool_settings, "vertex_group_weight", text="Weight", slider=True)
+			elif context.texture_paint_object:
+				col = layout.column(align=True)
+				col.item_enumR(settings, "tool", "DRAW")
+				col.item_enumR(settings, "tool", "SOFTEN")
+				if settings.use_projection:
+					col.item_enumR(settings, "tool", "CLONE")
+				else:
+					col.item_enumR(settings, "tool", "SMEAR")
+
+			split = layout.split()
 			
-		col.itemR(brush, "strength", slider=True)
-		row = col.row(align=True)
-		row.itemR(brush, "falloff", slider=True)
-		row.itemR(brush, "falloff_pressure", toggle=True, icon='ICON_BRUSH_DATA', text="")
-		
-		if context.vpaint_object:
-			col.itemR(brush, "color", text="")
-		if context.tpaint_object:
+			col = split.column()
 			row = col.row(align=True)
-			row.itemR(brush, "clone_opacity", slider=True, text=Opacity)
-			row.itemR(brush, "opacity_pressure", toggle=True, icon='ICON_BRUSH_DATA', text="")
-		
-		row = col.row(align=True)
-		row.itemR(brush, "space", text="")
-		rowsub = row.row(align=True)
-		rowsub.active = brush.space
-		rowsub.itemR(brush, "spacing", text="Spacing", slider=True)
-		rowsub.itemR(brush, "spacing_pressure", toggle=True, icon='ICON_BRUSH_DATA', text="")
+			row.itemR(brush, "size", slider=True)
+			row.itemR(brush, "size_pressure", toggle=True, icon='ICON_BRUSH_DATA', text="")
+			if context.weight_paint_object:
+				col.itemR(context.tool_settings, "vertex_group_weight", text="Weight", slider=True)
+				
+			col.itemR(brush, "strength", slider=True)
+			row = col.row(align=True)
+			row.itemR(brush, "falloff", slider=True)
+			row.itemR(brush, "falloff_pressure", toggle=True, icon='ICON_BRUSH_DATA', text="")
+			if context.vertex_paint_object:
+				col.itemR(brush, "color", text="")
+			if context.texture_paint_object:
+				row = col.row(align=True)
+				row.itemR(brush, "clone_opacity", slider=True, text="Opacity")
+				row.itemR(brush, "opacity_pressure", toggle=True, icon='ICON_BRUSH_DATA', text="")
+			

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list