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

Ton Roosendaal ton at blender.org
Thu Dec 11 20:35:27 CET 2008


Revision: 17790
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17790
Author:   ton
Date:     2008-12-11 20:35:27 +0100 (Thu, 11 Dec 2008)

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

Today's progress; half working, but i better commit to prevent
conflicts tomorrow :)

- added storage for regions in spacedata
- added space switching (unfinished, gives mem-free errors)
- bugfix: icon of timewindow gave error on split-area
- cleaned interface_icons.c a bit, no warnings
- first work on space new() callbacks, they have to make regions too


NOTE: probably files saved with 2.5 crash now. Have to look at
patching this.

NOTE2: the Makefiles required libeditor screen twice... scons too?

Modified Paths:
--------------
    branches/blender2.5/blender/source/Makefile
    branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
    branches/blender2.5/blender/source/blender/editors/interface/interface_icons.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c
    branches/blender2.5/blender/source/blender/editors/screen/space.c
    branches/blender2.5/blender/source/blender/editors/space_time/space_time.c
    branches/blender2.5/blender/source/blender/editors/space_time/time_header.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/space_view3d.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_action_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_sound_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_space_types.h
    branches/blender2.5/blender/source/blender/makesdna/DNA_view3d_types.h

Modified: branches/blender2.5/blender/source/Makefile
===================================================================
--- branches/blender2.5/blender/source/Makefile	2008-12-11 15:38:16 UTC (rev 17789)
+++ branches/blender2.5/blender/source/Makefile	2008-12-11 19:35:27 UTC (rev 17790)
@@ -230,6 +230,7 @@
     COMLIB += $(NAN_OPENEXR_LIBS)
 endif
 
+# silly: libed_screen.a twice :(
 PULIB = $(NAN_MOTO)/lib/libmoto.a
 PULIB += $(NAN_ELBEEM)/lib/$(DEBUG_DIR)libelbeem.a
 PULIB += $(OCGDIR)/blender/readblenfile/$(DEBUG_DIR)libreadblenfile.a
@@ -241,6 +242,7 @@
 PULIB += $(OCGDIR)/blender/ed_util/libed_util.a
 PULIB += $(OCGDIR)/blender/ed_datafiles/libed_datafiles.a
 PULIB += $(OCGDIR)/blender/windowmanager/libwindowmanager.a
+PULIB += $(OCGDIR)/blender/ed_screen/libed_screen.a
 PULIB += $(OCGDIR)/blender/python/$(DEBUG_DIR)libpython.a
 PULIB += $(OCGDIR)/blender/makesrna/$(DEBUG_DIR)librna.a
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c	2008-12-11 15:38:16 UTC (rev 17789)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/screen.c	2008-12-11 19:35:27 UTC (rev 17790)
@@ -101,12 +101,17 @@
 void BKE_spacedata_freelist(ListBase *lb)
 {
 	SpaceLink *sl;
+	ARegion *ar;
 	
 	for (sl= lb->first; sl; sl= sl->next) {
 		SpaceType *st= BKE_spacetype_from_id(sl->spacetype);
 		
 		if(st && st->free) 
 			st->free(sl);
+		/* regions for pushed spaces */
+		for(ar=sl->regionbase.first; ar; ar=ar->next)
+			BKE_area_region_free(ar);
+		BLI_freelistN(&sl->regionbase);
 	}
 	
 	BLI_freelistN(lb);

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2008-12-11 15:38:16 UTC (rev 17789)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2008-12-11 19:35:27 UTC (rev 17790)
@@ -5038,64 +5038,64 @@
 	}
 }
 
-static void do_versions_windowmanager_2_50(bScreen *screen)
+/* 2.50 patch */
+static void area_add_header_region(ScrArea *sa, ListBase *lb)
 {
-	struct ScrArea *sa;
-	struct ARegion *ar;
+	ARegion *ar= MEM_callocN(sizeof(ARegion), "area region from do_versions");
 	
-	/* add regions */
-	for(sa= screen->areabase.first; sa; sa= sa->next) {
-		/* we keep headertype variable to convert old files only */
-		if(sa->headertype) {
-			ar= MEM_callocN(sizeof(ARegion), "area region from do_versions");
-			BLI_addtail(&sa->regionbase, ar);
-			ar->regiontype= RGN_TYPE_HEADER;
-			if(sa->headertype==1)
-				ar->alignment= RGN_ALIGN_BOTTOM;
-			else
-				ar->alignment= RGN_ALIGN_TOP;
-			
-			/* initialise view2d data for header region, to allow panning */
-			ar->v2d.keepaspect= 1;
-			ar->v2d.keepzoom = (V2D_LOCKZOOM_X|V2D_LOCKZOOM_Y|V2D_KEEPZOOM);
-			ar->v2d.keepofs = V2D_LOCKOFS_Y;
-			ar->v2d.keeptot = 2; // this keeps the view in place when region size changes...
-			ar->v2d.align = V2D_ALIGN_NO_NEG_X;
-			
-			ar->v2d.minzoom= ar->v2d.maxzoom= 1.0f;
-			
-			ar->v2d.mask.xmin= ar->v2d.mask.ymin= 0;
-			ar->v2d.mask.xmax= sa->winx;
-			ar->v2d.mask.ymax= HEADERY;
-			
-			ar->v2d.cur.xmin= sa->headbutofs;
-			ar->v2d.cur.xmax= sa->winx + sa->headbutofs;
-			ar->v2d.tot.xmin= 0.0f;
-			ar->v2d.tot.xmax= sa->headbutlen;
-			
-			if (ar->alignment == RGN_ALIGN_BOTTOM) {
-				ar->v2d.align = V2D_ALIGN_NO_NEG_Y;
-				ar->v2d.tot.ymin= ar->v2d.cur.ymin= 0.0f; // what was area->headrct.ymin?
-				ar->v2d.tot.ymax= ar->v2d.cur.ymax= HEADERY;
-			}
-			else {
-				// XXX what were the extents of the old headers?
-				ar->v2d.align = V2D_ALIGN_NO_NEG_Y;
-				ar->v2d.tot.ymin= ar->v2d.cur.ymin= 0.0f; // what was area->headrct.ymin?
-				ar->v2d.tot.ymax= ar->v2d.cur.ymax= HEADERY;
-			}
-		}
-		
-		ar= MEM_callocN(sizeof(ARegion), "area region from do_versions");
-		BLI_addtail(&sa->regionbase, ar);
-		ar->winrct= sa->totrct;
-		ar->regiontype= RGN_TYPE_WINDOW;
-		
+	BLI_addtail(lb, ar);
+	ar->regiontype= RGN_TYPE_HEADER;
+	if(sa->headertype==1)
+		ar->alignment= RGN_ALIGN_BOTTOM;
+	else
+		ar->alignment= RGN_ALIGN_TOP;
+	
+	/* initialise view2d data for header region, to allow panning */
+	ar->v2d.keepaspect= 1;
+	ar->v2d.keepzoom = (V2D_LOCKZOOM_X|V2D_LOCKZOOM_Y|V2D_KEEPZOOM);
+	ar->v2d.keepofs = V2D_LOCKOFS_Y;
+	ar->v2d.keeptot = 2; // this keeps the view in place when region size changes...
+	ar->v2d.align = V2D_ALIGN_NO_NEG_X;
+	
+	ar->v2d.minzoom= ar->v2d.maxzoom= 1.0f;
+	
+	ar->v2d.mask.xmin= ar->v2d.mask.ymin= 0;
+	ar->v2d.mask.xmax= sa->winx;
+	ar->v2d.mask.ymax= HEADERY;
+	
+	ar->v2d.cur.xmin= sa->headbutofs;
+	ar->v2d.cur.xmax= sa->winx + sa->headbutofs;
+	ar->v2d.tot.xmin= 0.0f;
+	ar->v2d.tot.xmax= sa->headbutlen;
+	
+	if (ar->alignment == RGN_ALIGN_BOTTOM) {
+		ar->v2d.align = V2D_ALIGN_NO_NEG_Y;
+		ar->v2d.tot.ymin= ar->v2d.cur.ymin= 0.0f; // what was area->headrct.ymin?
+		ar->v2d.tot.ymax= ar->v2d.cur.ymax= HEADERY;
+	}
+	else {
+		// XXX what were the extents of the old headers?
+		ar->v2d.align = V2D_ALIGN_NO_NEG_Y;
+		ar->v2d.tot.ymin= ar->v2d.cur.ymin= 0.0f; // what was area->headrct.ymin?
+		ar->v2d.tot.ymax= ar->v2d.cur.ymax= HEADERY;
+	}
+}
+
+/* 2.50 patch */
+static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb)
+{
+	ARegion *ar= MEM_callocN(sizeof(ARegion), "area region from do_versions");
+	
+	BLI_addtail(lb, ar);
+	ar->winrct= sa->totrct;
+	ar->regiontype= RGN_TYPE_WINDOW;
+	
+	if(sl) {
 		/* if active spacetype has view2d data, copy that over to main region */
-		switch(sa->spacetype) {
+		switch(sl->spacetype) {
 			case SPACE_OOPS:
 			{
-				SpaceOops *soops= sa->spacedata.first;
+				SpaceOops *soops= (SpaceOops *)sl;
 				
 				memcpy(&ar->v2d, &soops->v2d, sizeof(View2D));
 				
@@ -5107,7 +5107,7 @@
 				break;
 			case SPACE_TIME:
 			{
-				SpaceTime *stime= sa->spacedata.first;
+				SpaceTime *stime= (SpaceTime *)sl;
 				memcpy(&ar->v2d, &stime->v2d, sizeof(View2D));
 				
 				ar->v2d.scroll |= (V2D_SCROLL_BOTTOM|V2D_SCROLL_SCALE_BOTTOM);
@@ -5115,13 +5115,49 @@
 				ar->v2d.keepofs |= V2D_LOCKOFS_Y;
 			}
 				break;
-			//case SPACE_XXX: // FIXME... add other ones
-			//	memcpy(&ar->v2d, &((SpaceXxx *)sa->spacedata.first)->v2d, sizeof(View2D));
-			//	break;
+				//case SPACE_XXX: // FIXME... add other ones
+				//	memcpy(&ar->v2d, &((SpaceXxx *)sl)->v2d, sizeof(View2D));
+				//	break;
 		}
+		/* further subdivision case, channels for ipo action nla... */
+		switch(sl->spacetype) {
+			case SPACE_IPO:
+				break;
+			case SPACE_ACTION:
+				break;
+			case SPACE_NLA:
+				break;
+		}
 	}
 }
 
+static void do_versions_windowmanager_2_50(bScreen *screen)
+{
+	ScrArea *sa;
+	ARegion *ar;
+	SpaceLink *sl;
+	
+	/* add regions */
+	for(sa= screen->areabase.first; sa; sa= sa->next) {
+		
+		/* we keep headertype variable to convert old files only */
+		if(sa->headertype)
+			area_add_header_region(sa, &sa->regionbase);
+		
+		area_add_window_regions(sa, sa->spacedata.first, &sa->regionbase);
+		
+		/* pushed back spaces also need regions! */
+		if(sa->spacedata.first) {
+			sl= sa->spacedata.first;
+			for(sl= sl->next; sl; sl= sl->next) {
+				if(sa->headertype)
+					area_add_header_region(sa, &sl->regionbase);
+				area_add_window_regions(sa, sl, &sl->regionbase);
+			}
+		}
+	}
+}
+
 static void do_versions(FileData *fd, Library *lib, Main *main)
 {
 	/* WATCH IT!!!: pointers from libdata have not been converted */
@@ -8157,6 +8193,7 @@
 			do_versions_windowmanager_2_50(screen);
 	}
 	
+	
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
 	/* WATCH IT 2!: Userdef struct init has to be in src/usiblender.c! */
 

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_screen.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_screen.h	2008-12-11 15:38:16 UTC (rev 17789)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_screen.h	2008-12-11 19:35:27 UTC (rev 17790)
@@ -51,6 +51,7 @@
 void	ED_spacetypes_init(void);
 void	ED_spacetypes_keymap(struct wmWindowManager *wm);
 struct ARegionType *ED_regiontype_from_id(struct SpaceType *st, int regionid);
+void	ED_newspace(struct ScrArea *sa, int type);
 
 /* areas */
 void	ED_area_initialize(struct wmWindowManager *wm, struct wmWindow *win, struct ScrArea *sa);

Modified: branches/blender2.5/blender/source/blender/editors/interface/interface_icons.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/interface_icons.c	2008-12-11 15:38:16 UTC (rev 17789)
+++ branches/blender2.5/blender/source/blender/editors/interface/interface_icons.c	2008-12-11 19:35:27 UTC (rev 17790)
@@ -98,8 +98,6 @@
 static struct ListBase iconfilelist = {0, 0};
 
 
-static int preview_render_size(int miplevel);
-
 /* **************************************************** */
 
 static void def_internal_icon(ImBuf *bbuf, int icon_id, int xofs, int yofs)
@@ -684,6 +682,7 @@
 	init_internal_icons();
 }
 
+#if 0
 static void icon_copy_rect(ImBuf *ibuf, unsigned int w, unsigned int h, unsigned int *rect)
 {
 	struct ImBuf *ima;
@@ -734,6 +733,16 @@
 	IMB_freeImBuf(ima);
 }
 
+/* Render size for preview images at level miplevel */
+static int preview_render_size(int miplevel)
+{
+	switch (miplevel) {
+		case 0: return 32;
+		case 1: return PREVIEW_DEFAULT_HEIGHT;
+	}
+	return 0;
+}
+
 static void icon_create_mipmap(struct PreviewImage* prv_img, int miplevel) 
 {
 	unsigned int size = preview_render_size(miplevel);
@@ -794,6 +803,7 @@
 		}
 	}
 }
+#endif
 
 /* only called when icon has changed */
 /* only call with valid pointer from UI_icon_draw */
@@ -881,16 +891,6 @@
 		glDrawPixels(w, h, GL_RGBA, GL_UNSIGNED_BYTE, rect);
 }
 
-/* Render size for preview images at level miplevel */
-static int preview_render_size(int miplevel)
-{
-	switch (miplevel) {
-		case 0: return 32;
-		case 1: return PREVIEW_DEFAULT_HEIGHT;
-	}
-	return 0;
-}
-
 /* Drawing size for preview images at level miplevel */
 static int preview_size(int miplevel)
 {
@@ -977,7 +977,6 @@
 
 void UI_icon_draw_aspect_blended(float x, float y, int icon_id, float aspect, int shade)
 {
-	
 	if(shade < 0) {
 		float r= (128+shade)/128.0f;
 		glPixelTransferf(GL_ALPHA_SCALE, r);

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_edit.c

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list