[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13850] trunk/blender/source/blender:

Brecht Van Lommel brechtvanlommel at pandora.be
Sun Feb 24 20:23:58 CET 2008


Revision: 13850
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13850
Author:   blendix
Date:     2008-02-24 20:23:58 +0100 (Sun, 24 Feb 2008)

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

Fix for bug #8324: J-key render buffer switching had various issues.
One problem was that the previous render buffer was stored in the
render window or image window itself, which means that when closing
it, or switching from one to the other, things didn't work as expected.
Also in the image editor, color sampling the previous render buffer or
saving it didn't work correct.

Modified Paths:
--------------
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/include/BIF_drawimage.h
    trunk/blender/source/blender/include/BIF_renderwin.h
    trunk/blender/source/blender/makesdna/DNA_space_types.h
    trunk/blender/source/blender/src/drawimage.c
    trunk/blender/source/blender/src/editsima.c
    trunk/blender/source/blender/src/renderwin.c
    trunk/blender/source/blender/src/space.c
    trunk/blender/source/blender/src/usiblender.c

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2008-02-24 17:13:52 UTC (rev 13849)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2008-02-24 19:23:58 UTC (rev 13850)
@@ -4020,8 +4020,6 @@
 				sima->cumap= newdataadr(fd, sima->cumap);
 				if(sima->cumap)
 					direct_link_curvemapping(fd, sima->cumap);
-				sima->info_str= sima->info_spare= NULL;
-				sima->spare= NULL;
 				sima->iuser.ok= 1;
 			}
 			else if(sl->spacetype==SPACE_NODE) {

Modified: trunk/blender/source/blender/include/BIF_drawimage.h
===================================================================
--- trunk/blender/source/blender/include/BIF_drawimage.h	2008-02-24 17:13:52 UTC (rev 13849)
+++ trunk/blender/source/blender/include/BIF_drawimage.h	2008-02-24 19:23:58 UTC (rev 13850)
@@ -63,8 +63,6 @@
 
 void imagewindow_render_callbacks(struct Render *re);
 void imagewindow_toggle_render(void);
-void imagewindow_swap_render_rects(void);
-void imagewin_store_spare(void);
 struct ImBuf *imagewindow_get_ibuf(struct SpaceImage *sima);
 
 void image_editvertex_buts(struct uiBlock *block);

Modified: trunk/blender/source/blender/include/BIF_renderwin.h
===================================================================
--- trunk/blender/source/blender/include/BIF_renderwin.h	2008-02-24 17:13:52 UTC (rev 13849)
+++ trunk/blender/source/blender/include/BIF_renderwin.h	2008-02-24 19:23:58 UTC (rev 13850)
@@ -33,6 +33,7 @@
 struct Render;
 struct ScrArea;
 struct RenderStats;
+struct ImBuf;
 
 void calc_renderwin_rectangle(int rectx, int recty, int posmask, int renderpos_r[2], int rendersize_r[2]);
 
@@ -40,6 +41,15 @@
 
 void BIF_do_render(int anim);
 
+/* render text */
+void BIF_make_render_text(struct RenderStats *rs);
+char *BIF_render_text(void);
+
+/* render spare buffer */
+int BIF_show_render_spare(void);
+struct ImBuf *BIF_render_spare_imbuf(void);
+void BIF_free_render_spare(void);
+
 /**
  * @param v3d The View3D space to render.
  */

Modified: trunk/blender/source/blender/makesdna/DNA_space_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_space_types.h	2008-02-24 17:13:52 UTC (rev 13849)
+++ trunk/blender/source/blender/makesdna/DNA_space_types.h	2008-02-24 19:23:58 UTC (rev 13850)
@@ -236,7 +236,7 @@
 	short curtile; /* the currently active tile of the image when tile is enabled, is kept in sync with the active faces tile */
 	int flag;
 	short imtypenr, lock;
-	short showspare, pin;
+	short pin, pad2;
 	float zoom;
 	char dt_uv; /* UV draw type */
 	char sticky; /* sticky selection type */ 
@@ -245,9 +245,6 @@
 	float xof, yof;					/* user defined offset, image is centered */
 	float centx, centy;				/* storage for offset while render drawing */
 	
-	char *info_str, *info_spare;	/* info string for render */
-	struct ImBuf *spare;
-	
 } SpaceImage;
 
 typedef struct SpaceNla {

Modified: trunk/blender/source/blender/src/drawimage.c
===================================================================
--- trunk/blender/source/blender/src/drawimage.c	2008-02-24 17:13:52 UTC (rev 13849)
+++ trunk/blender/source/blender/src/drawimage.c	2008-02-24 19:23:58 UTC (rev 13850)
@@ -191,7 +191,7 @@
 	
 	if(image_preview_active(curarea, &xim, &yim));
 	else if(sima->image) {
-		ImBuf *ibuf= BKE_image_get_ibuf(sima->image, &sima->iuser);
+		ImBuf *ibuf= imagewindow_get_ibuf(sima);
 		float xuser_asp, yuser_asp;
 		
 		aspect_sima(sima, &xuser_asp, &yuser_asp);
@@ -278,11 +278,10 @@
 /* after a what_image(), this call will give ibufs, includes the spare image */
 ImBuf *imagewindow_get_ibuf(SpaceImage *sima)
 {
-	
 	if(G.sima->image) {
 		/* check for spare */
-		if(sima->image->type==IMA_TYPE_R_RESULT && sima->showspare)
-			return sima->spare;
+		if(sima->image->type==IMA_TYPE_R_RESULT && BIF_show_render_spare())
+			return BIF_render_spare_imbuf();
 		else
 			return BKE_image_get_ibuf(sima->image, &sima->iuser);
 	}
@@ -1834,10 +1833,10 @@
 
 static void imagewindow_draw_renderinfo(ScrArea *sa)
 {
-	SpaceImage *sima= sa->spacedata.first;
 	rcti rect;
 	float colf[3];
-	char *str= sima->showspare?sima->info_spare:sima->info_str;
+	int showspare= BIF_show_render_spare();
+	char *str= BIF_render_text();
 	
 	if(str==NULL)
 		return;
@@ -1854,7 +1853,7 @@
 	
 	BIF_ThemeColor(TH_TEXT_HI);
 	glRasterPos2i(12, 5);
-	if(sima->showspare) {
+	if(showspare) {
 		BMF_DrawString(G.fonts, "(Previous)");
 		glRasterPos2i(72, 5);
 	}		
@@ -2342,7 +2341,7 @@
 
 void image_viewcenter(void)
 {
-	ImBuf *ibuf= BKE_image_get_ibuf(G.sima->image, &G.sima->iuser);
+	ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
 	float size, min[2], max[2], d[2], xim=256.0f, yim=256.0f;
 
 	if( is_uv_tface_editing_allowed()==0 ) return;
@@ -2596,9 +2595,6 @@
 		
 		areawinset(image_area->win);
 		
-		if(sima->info_str==NULL)
-			sima->info_str= MEM_callocN(RW_MAXTEXT, "info str imagewin");
-		
 		/* calc location using original size (tiles don't tell) */
 		sima->centx= (image_area->winx - sima->zoom*(float)rr->rectx)/2.0f;
 		sima->centy= (image_area->winy - sima->zoom*(float)rr->recty)/2.0f;
@@ -2646,10 +2642,7 @@
 {
 	
 	if(image_area) {
-		SpaceImage *sima= image_area->spacedata.first;
-		
-		if(rs)
-			make_renderinfo_string(rs, sima->info_str);
+		BIF_make_render_text(rs);
 
 		imagewindow_draw_renderinfo(image_area);
 		
@@ -2666,54 +2659,3 @@
 	RE_stats_draw_cb(re, imagewindow_renderinfo_cb);	
 }
 
-void imagewin_store_spare(void)
-{
-	ScrArea *sa= find_area_showing_r_result();
-
-	if(sa) {
-		ImBuf *ibuf;
-		SpaceImage *sima= sa->spacedata.first;
-		
-		if(sima->spare==NULL)
-			return;
-		
-		/* only store when it does not show spare */
-		if(sima->showspare==0)
-			return;
-		sima->showspare= 0;
-		
-		/* free spare */
-		IMB_freeImBuf(sima->spare);
-		
-		/* make a copy of render result */
-		ibuf= BKE_image_get_ibuf(sima->image, &sima->iuser);
-		sima->spare= IMB_dupImBuf(ibuf);
-		
-		if(sima->info_str)
-			BLI_strncpy(sima->info_spare, sima->info_str, RW_MAXTEXT);
-
-	}
-}
-
-/* context: in current image window? */
-void imagewindow_swap_render_rects(void)
-{
-	ScrArea *sa= find_area_showing_r_result();
-					
-	if(sa) {
-		SpaceImage *sima= sa->spacedata.first;
-		ImBuf *ibuf= BKE_image_get_ibuf(sima->image, &sima->iuser);
-		if(ibuf) {
-			
-			sima->showspare ^= 1;
-			
-			if(sima->spare==NULL)
-				sima->spare= IMB_allocImBuf(ibuf->x, ibuf->y, 32, 0, 0);
-			if(sima->info_spare==NULL)
-				sima->info_spare= MEM_callocN(RW_MAXTEXT, "info str imagewin");
-			
-			allqueue(REDRAWIMAGE, 0);
-		}
-	}
-}
-

Modified: trunk/blender/source/blender/src/editsima.c
===================================================================
--- trunk/blender/source/blender/src/editsima.c	2008-02-24 17:13:52 UTC (rev 13849)
+++ trunk/blender/source/blender/src/editsima.c	2008-02-24 19:23:58 UTC (rev 13850)
@@ -148,7 +148,7 @@
 
 void get_connected_limit_tface_uv(float *limit)
 {
-	ImBuf *ibuf= BKE_image_get_ibuf(G.sima->image, &G.sima->iuser);
+	ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
 	if(ibuf && ibuf->x > 0 && ibuf->y > 0) {
 		limit[0]= 0.05/(float)ibuf->x;
 		limit[1]= 0.05/(float)ibuf->y;
@@ -228,7 +228,7 @@
 
 void transform_width_height_tface_uv(int *width, int *height)
 {
-	ImBuf *ibuf= BKE_image_get_ibuf(G.sima->image, &G.sima->iuser);
+	ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
 
 	if(ibuf) {
 		*width= ibuf->x;
@@ -1197,7 +1197,7 @@
 /** gets image dimensions of the 2D view 'v' */
 static void getSpaceImageDimension(SpaceImage *sima, float *xy)
 {
-	ImBuf *ibuf= BKE_image_get_ibuf(sima->image, &sima->iuser);
+	ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
 
 	if (ibuf) {
 		xy[0] = ibuf->x * sima->zoom;
@@ -1337,7 +1337,7 @@
 
 	limit[0]= limit[1]= limit[0]/256.0;
 	if(G.sima->image) {
-		ImBuf *ibuf= BKE_image_get_ibuf(G.sima->image, &G.sima->iuser);
+		ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
 
 		if(ibuf && ibuf->x > 0 && ibuf->y > 0) {
 			limit[1]= limit[0]/(float)ibuf->y;
@@ -1874,7 +1874,7 @@
 
 void sima_sample_color(void)
 {
-	ImBuf *ibuf= BKE_image_get_ibuf(G.sima->image, &G.sima->iuser);
+	ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
 	float fx, fy;
 	short mval[2], mvalo[2], firsttime=1;
 	
@@ -1996,7 +1996,7 @@
 static void save_image_doit(char *name)
 {
 	Image *ima= G.sima->image;
-	ImBuf *ibuf= BKE_image_get_ibuf(ima, &G.sima->iuser);
+	ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
 	int len;
 	char str[FILE_MAXDIR+FILE_MAXFILE];
 
@@ -2126,7 +2126,7 @@
 void save_as_image_sima(void)
 {
 	Image *ima = G.sima->image;
-	ImBuf *ibuf= BKE_image_get_ibuf(ima, &G.sima->iuser);
+	ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
 	char name[FILE_MAXDIR+FILE_MAXFILE];
 
 	if (ima) {
@@ -2153,7 +2153,7 @@
 void save_image_sima(void)
 {
 	Image *ima = G.sima->image;
-	ImBuf *ibuf= BKE_image_get_ibuf(ima, &G.sima->iuser);
+	ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
 	char name[FILE_MAXDIR+FILE_MAXFILE];
 
 	if (ima) {
@@ -2286,7 +2286,7 @@
 				}
 			}
 			else {
-				ImBuf *ibuf= BKE_image_get_ibuf(ima, &G.sima->iuser);
+				ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
 				if (ibuf && (ibuf->userflags & IB_BITMAPDIRTY)) {
 					if(okee("Can't pack painted image. Use Repack as PNG?"))
 						BKE_image_memorypack(ima);

Modified: trunk/blender/source/blender/src/renderwin.c
===================================================================
--- trunk/blender/source/blender/src/renderwin.c	2008-02-24 17:13:52 UTC (rev 13849)
+++ trunk/blender/source/blender/src/renderwin.c	2008-02-24 19:23:58 UTC (rev 13850)
@@ -137,13 +137,8 @@
 
 	int rectx, recty;	/* size of image */
 	
-	int sparex, sparey;	/* spare rect size */
-	unsigned int *rectspare;
-	float *rectsparef;
-	
 	float zoom, zoomofs[2];
 	int active;
-	short storespare, showspare;
 	
 	int mbut[5];
 	int lmouse[2];
@@ -153,15 +148,30 @@
 	float pan_mouse_start[2], pan_ofs_start[2];
 
 	char *info_text;
-	char *render_text, *render_text_spare;
 	
 } RenderWin;
 
+typedef struct RenderSpare {
+	ImBuf *ibuf;
+	
+	short storespare, showspare;
+	char *render_text_spare;
+} RenderSpare;
+
 static RenderWin *render_win= NULL;
+static RenderSpare *render_spare= NULL;
+static char *render_text= NULL;
 
 /* --------------- help functions for RenderWin struct ---------------------------- */
 
+static RenderSpare *renderspare_alloc()
+{
+	RenderSpare *rspare= MEM_callocN(sizeof(*rspare), "RenderSpare");
+	rspare->render_text_spare= MEM_callocN(RW_MAXTEXT, "rendertext spare");
 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list