[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