[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26123] trunk/blender: patch from Bj?\195? \184rnar Hansen (anachron)

Campbell Barton ideasman42 at gmail.com
Tue Jan 19 23:44:43 CET 2010


Revision: 26123
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26123
Author:   campbellbarton
Date:     2010-01-19 23:44:43 +0100 (Tue, 19 Jan 2010)

Log Message:
-----------
patch from Bj?\195?\184rnar Hansen (anachron)
Multiple background images displaying each on a different axis.

Changes made from the original patch.
- Use an enum rather then multiple booleans.
- Reduced the space taken up by the user interface.
- Made the image template compact display not show fields & premul options.
- Added readfile.c lines so old blendfile images are loaded.
- Option to hide BGpic UI (like modifiers & constraints)
- Use the index rather then a bgpic from the context for the remove operator.

note: could be good to use 1 image for both left+right, for eg, but for this to work as intended we would need to add image flipping depending on the axis so left this commented out for now.

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_view3d.py
    trunk/blender/source/blender/blenkernel/BKE_sequencer.h
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/editors/space_image/image_buttons.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
    trunk/blender/source/blender/editors/space_view3d/view3d_intern.h
    trunk/blender/source/blender/editors/space_view3d/view3d_ops.c
    trunk/blender/source/blender/makesdna/DNA_view3d_types.h
    trunk/blender/source/blender/makesrna/intern/rna_space.c

Modified: trunk/blender/release/scripts/ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/ui/space_view3d.py	2010-01-19 21:44:22 UTC (rev 26122)
+++ trunk/blender/release/scripts/ui/space_view3d.py	2010-01-19 22:44:43 UTC (rev 26123)
@@ -1783,7 +1783,7 @@
 class VIEW3D_PT_background_image(bpy.types.Panel):
     bl_space_type = 'VIEW_3D'
     bl_region_type = 'UI'
-    bl_label = "Background Image"
+    bl_label = "Background Images"
     bl_default_closed = True
 
     def poll(self, context):
@@ -1795,34 +1795,38 @@
         layout = self.layout
         view = context.space_data
 
-        layout.prop(view, "display_background_image", text="")
+        layout.prop(view, "display_background_images", text="")
 
     def draw(self, context):
         layout = self.layout
 
         view = context.space_data
-        bg = view.background_image
+        
+        col = layout.column()
+        col.operator("view3d.add_background_image", text="Add Image")
 
-        if bg:
-            layout.active = view.display_background_image
+        for i, bg in enumerate(view.background_images):
+            layout.active = view.display_background_images
             box = layout.box()
-            if (bg.image):
-                box.template_ID(bg, "image", open="image.open")
-                box.template_image(bg, "image", bg.image_user, compact=True)
-            else:
-                box.template_ID(bg, "image", open="image.open")
+            row = box.row(align=True)
+            row.prop(bg, "show_expanded", text="", no_bg=True)
+            row.label(text=getattr(bg.image, "name", "Not Set"))
+            row.operator("view3d.remove_background_image", text="", icon='X').index = i
             
-            col = layout.column()
-            col.label(text="Display Settings")
+            box.prop(bg, "view_axis", text="Axis")
             
-            col = layout.column()
-            col.prop(bg, "size")
-            col.prop(bg, "transparency", slider=True)
+            if bg.show_expanded:
+                row = box.row()
+                row.template_ID(bg, "image", open="image.open")
+                if (bg.image):
+                    box.template_image(bg, "image", bg.image_user, compact=True)
 
-            col = layout.column()
-            col.label(text="Offset")
-            col.prop(bg, "offset_x", text="X")
-            col.prop(bg, "offset_y", text="Y")
+                    box.prop(bg, "transparency", slider=True)
+                    box.prop(bg, "size")
+                    row = box.row(align=True)
+                    row.prop(bg, "offset_x", text="X")
+                    row.prop(bg, "offset_y", text="Y")
+ 
 
 class VIEW3D_PT_transform_orientations(bpy.types.Panel):
     bl_space_type = 'VIEW_3D'

Modified: trunk/blender/source/blender/blenkernel/BKE_sequencer.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2010-01-19 21:44:22 UTC (rev 26122)
+++ trunk/blender/source/blender/blenkernel/BKE_sequencer.h	2010-01-19 22:44:43 UTC (rev 26123)
@@ -28,8 +28,8 @@
  * ***** END GPL LICENSE BLOCK *****
  */
 
-#ifndef BKE_SEQUENCE_H
-#define BKE_SEQUENCE_H
+#ifndef BKE_SEQUENCER_H
+#define BKE_SEQUENCER_H
 
 struct Editing;
 struct Sequence;
@@ -77,9 +77,7 @@
 		seq_end(&iter); \
 	}
 
-#endif
 
-
 /* Wipe effect */
 enum {DO_SINGLE_WIPE, DO_DOUBLE_WIPE, DO_BOX_WIPE, DO_CROSS_WIPE,
 	DO_IRIS_WIPE,DO_CLOCK_WIPE};
@@ -238,3 +236,5 @@
 /* copy/paste */
 extern ListBase seqbase_clipboard;
 extern int seqbase_clipboard_frame;
+
+#endif // BKE_SEQUENCER_H

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2010-01-19 21:44:22 UTC (rev 26122)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2010-01-19 22:44:43 UTC (rev 26123)
@@ -4630,13 +4630,21 @@
 				for (sl= sa->spacedata.first; sl; sl= sl->next) {
 					if(sl->spacetype==SPACE_VIEW3D) {
 						View3D *v3d= (View3D*) sl;
+						BGpic *bgpic;
 						
 						v3d->camera= newlibadr(fd, sc->id.lib, v3d->camera);
 						v3d->ob_centre= newlibadr(fd, sc->id.lib, v3d->ob_centre);
 						
+						/* should be do_versions but not easy adding into the listbase */
 						if(v3d->bgpic) {
-							v3d->bgpic->ima= newlibadr_us(fd, sc->id.lib, v3d->bgpic->ima);
+							v3d->bgpic= newlibadr(fd, sc->id.lib, v3d->bgpic);
+							BLI_addtail(&v3d->bgpicbase, bgpic);
+							v3d->bgpic= NULL;
 						}
+
+						for(bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next) {
+							bgpic->ima= newlibadr_us(fd, sc->id.lib, bgpic->ima);
+						}
 						if(v3d->localvd) {
 							v3d->localvd->camera= newlibadr(fd, sc->id.lib, v3d->localvd->camera);
 						}
@@ -4809,14 +4817,15 @@
 			for (sl= sa->spacedata.first; sl; sl= sl->next) {
 				if(sl->spacetype==SPACE_VIEW3D) {
 					View3D *v3d= (View3D*) sl;
+					BGpic *bgpic;
 					
 					v3d->camera= restore_pointer_by_name(newmain, (ID *)v3d->camera, 1);
 					if(v3d->camera==NULL)
 						v3d->camera= sc->scene->camera;
 					v3d->ob_centre= restore_pointer_by_name(newmain, (ID *)v3d->ob_centre, 1);
 					
-					if(v3d->bgpic) {
-						v3d->bgpic->ima= restore_pointer_by_name(newmain, (ID *)v3d->bgpic->ima, 1);
+					for(bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next) {
+						bgpic->ima= restore_pointer_by_name(newmain, (ID *)bgpic->ima, 1);
 					}
 					if(v3d->localvd) {
 						/*Base *base;*/
@@ -5089,10 +5098,22 @@
 
 			if (sl->spacetype==SPACE_VIEW3D) {
 				View3D *v3d= (View3D*) sl;
-				v3d->bgpic= newdataadr(fd, v3d->bgpic);
+				BGpic *bgpic;
+
 				v3d->flag |= V3D_INVALID_BACKBUF;
-				if(v3d->bgpic)
-					v3d->bgpic->iuser.ok= 1;
+
+				link_list(fd, &(v3d->bgpicbase));
+
+				/* should be do_versions except this doesnt fit well there */
+				if(v3d->bgpic) {
+					bgpic= newdataadr(fd, v3d->bgpic);
+					BLI_addtail(&v3d->bgpicbase, bgpic);
+					v3d->bgpic= NULL;
+				}
+
+				for(bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next)
+					bgpic->iuser.ok= 1;
+
 				if(v3d->gpd) {
 					v3d->gpd= newdataadr(fd, v3d->gpd);
 					direct_link_gpencil(fd, v3d->gpd);
@@ -8350,8 +8371,9 @@
 							((SpaceImage *)sl)->iuser.fie_ima= 2;
 						else if(sl->spacetype==SPACE_VIEW3D) {
 							View3D *v3d= (View3D *)sl;
-							if(v3d->bgpic)
-								v3d->bgpic->iuser.fie_ima= 2;
+							BGpic *bgpic;
+							for(bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next)
+								bgpic->iuser.fie_ima= 2;
 						}
 					}
 				}

Modified: trunk/blender/source/blender/blenloader/intern/writefile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/writefile.c	2010-01-19 21:44:22 UTC (rev 26122)
+++ trunk/blender/source/blender/blenloader/intern/writefile.c	2010-01-19 22:44:43 UTC (rev 26123)
@@ -2035,8 +2035,10 @@
 				
 				if(sl->spacetype==SPACE_VIEW3D) {
 					View3D *v3d= (View3D *) sl;
+					BGpic *bgpic;
 					writestruct(wd, DATA, "View3D", 1, v3d);
-					if(v3d->bgpic) writestruct(wd, DATA, "BGpic", 1, v3d->bgpic);
+					for (bgpic= v3d->bgpicbase.first; bgpic; bgpic= bgpic->next)
+					writestruct(wd, DATA, "BGpic", 1, bgpic);
 					if(v3d->localvd) writestruct(wd, DATA, "View3D", 1, v3d->localvd);
 				}
 				else if(sl->spacetype==SPACE_IPO) {

Modified: trunk/blender/source/blender/editors/space_image/image_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_buttons.c	2010-01-19 21:44:22 UTC (rev 26122)
+++ trunk/blender/source/blender/editors/space_image/image_buttons.c	2010-01-19 22:44:43 UTC (rev 26123)
@@ -888,26 +888,30 @@
 				uiblock_layer_pass_arrow_buttons(layout, ima->rr, iuser);
 			}
 			else if(ima->source != IMA_SRC_GENERATED) {
-				ibuf= BKE_image_acquire_ibuf(ima, iuser, &lock);
-				image_info(ima, ibuf, str);
-				BKE_image_release_ibuf(ima, lock);
-				uiItemL(layout, str, 0);
+				if(compact == 0) {
+					ibuf= BKE_image_acquire_ibuf(ima, iuser, &lock);
+					image_info(ima, ibuf, str);
+					BKE_image_release_ibuf(ima, lock);
+					uiItemL(layout, str, 0);
+				}
 			}
 			
 			if(ima->source != IMA_SRC_GENERATED) {
-				uiItemS(layout);
+				if(compact == 0) { /* background image view doesnt need these */
+					uiItemS(layout);
 
-				split= uiLayoutSplit(layout, 0, 0);
+					split= uiLayoutSplit(layout, 0, 0);
 
-				col= uiLayoutColumn(split, 0);
-				uiItemR(col, NULL, 0, &imaptr, "fields", 0);
-				row= uiLayoutRow(col, 0);
-				uiItemR(row, NULL, 0, &imaptr, "field_order", UI_ITEM_R_EXPAND);
-				uiLayoutSetActive(row, RNA_boolean_get(&imaptr, "fields"));
+					col= uiLayoutColumn(split, 0);
+					uiItemR(col, NULL, 0, &imaptr, "fields", 0);
+					row= uiLayoutRow(col, 0);
+					uiItemR(row, NULL, 0, &imaptr, "field_order", UI_ITEM_R_EXPAND);
+					uiLayoutSetActive(row, RNA_boolean_get(&imaptr, "fields"));
 
-				col= uiLayoutColumn(split, 0);
-				uiItemR(col, NULL, 0, &imaptr, "antialias", 0);
-				uiItemR(col, NULL, 0, &imaptr, "premultiply", 0);
+					col= uiLayoutColumn(split, 0);
+					uiItemR(col, NULL, 0, &imaptr, "antialias", 0);
+					uiItemR(col, NULL, 0, &imaptr, "premultiply", 0);
+				}
 			}
 
 			if(ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) {

Modified: trunk/blender/source/blender/editors/space_view3d/space_view3d.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2010-01-19 21:44:22 UTC (rev 26122)
+++ trunk/blender/source/blender/editors/space_view3d/space_view3d.c	2010-01-19 22:44:43 UTC (rev 26123)
@@ -266,12 +266,13 @@
 static void view3d_free(SpaceLink *sl)
 {
 	View3D *vd= (View3D *) sl;
-	
-	if(vd->bgpic) {
-		if(vd->bgpic->ima) vd->bgpic->ima->id.us--;
-		MEM_freeN(vd->bgpic);
+
+	BGpic *bgpic;
+	for(bgpic= vd->bgpicbase.first; bgpic; bgpic= bgpic->next) {
+		if(bgpic->ima) bgpic->ima->id.us--;
 	}
-	
+	BLI_freelistN(&vd->bgpicbase);
+
 	if(vd->localvd) MEM_freeN(vd->localvd);
 	
 	if(vd->properties_storage) MEM_freeN(vd->properties_storage);
@@ -303,9 +304,12 @@
 	
 	/* copy or clear inside new stuff */
 
-	if(v3dn->bgpic) {
-		v3dn->bgpic= MEM_dupallocN(v3dn->bgpic);
-		if(v3dn->bgpic->ima) v3dn->bgpic->ima->id.us++;
+	if(v3dn->bgpicbase.first) {
+		BGpic *bgpic;

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list