[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30430] branches/render25: Render Branch: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r30407 :r30429

Campbell Barton ideasman42 at gmail.com
Sat Jul 17 14:04:51 CEST 2010


Revision: 30430
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30430
Author:   campbellbarton
Date:     2010-07-17 14:04:51 +0200 (Sat, 17 Jul 2010)

Log Message:
-----------
Render Branch: svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r30407:r30429

Modified Paths:
--------------
    branches/render25/release/freedesktop/blender-thumbnailer.py
    branches/render25/source/blender/blenkernel/intern/sequencer.c
    branches/render25/source/blender/blenlib/BLI_path_util.h
    branches/render25/source/blender/blenlib/intern/path_util.c
    branches/render25/source/blender/editors/interface/interface_templates.c
    branches/render25/source/blender/editors/space_file/file_ops.c
    branches/render25/source/blender/editors/space_file/fsmenu.c
    branches/render25/source/blender/editors/space_sequencer/sequencer_draw.c
    branches/render25/source/blender/editors/space_sequencer/sequencer_edit.c
    branches/render25/source/blender/imbuf/intern/thumbs_blend.c
    branches/render25/source/blender/makesrna/intern/makesrna.c
    branches/render25/source/blender/makesrna/intern/rna_actuator.c
    branches/render25/source/blender/makesrna/intern/rna_controller.c
    branches/render25/source/blender/windowmanager/intern/wm_files.c
    branches/render25/source/blender/windowmanager/intern/wm_init_exit.c
    branches/render25/source/blender/windowmanager/intern/wm_operators.c

Modified: branches/render25/release/freedesktop/blender-thumbnailer.py
===================================================================
--- branches/render25/release/freedesktop/blender-thumbnailer.py	2010-07-17 11:50:01 UTC (rev 30429)
+++ branches/render25/release/freedesktop/blender-thumbnailer.py	2010-07-17 12:04:51 UTC (rev 30430)
@@ -25,57 +25,54 @@
    gconftool --type string --set /desktop/gnome/thumbnailers/application at x-blender/command "blender-thumbnailer.py %i %o"
 """
 
-import os
 import struct
-import sys
 
 def blend_extract_thumb(path):
+    import os
+
     # def MAKE_ID(tag): ord(tag[0])<<24 | ord(tag[1])<<16 | ord(tag[2])<<8 | ord(tag[3])
     REND = 1145980242 # MAKE_ID(b'REND')
     TEST = 1414743380 # MAKE_ID(b'TEST')
 
     blendfile = open(path, 'rb')
 
-    head = blendfile.read(7)
+    head = blendfile.read(12)
 
     if head[0:2] == b'\x1f\x8b': # gzip magic
         import gzip
         blendfile.close()
         blendfile = gzip.open(path, 'rb')
-        head = blendfile.read(7)
+        head = blendfile.read(12)
 
-    if head != b'BLENDER':
+    if not head.startswith(b'BLENDER'):
         blendfile.close()
         return None, 0, 0
 
-    is_64_bit = (blendfile.read(1) == b'-')
+    is_64_bit = (head[7] == b'-')
 
     # true for PPC, false for X86
-    is_big_endian = (blendfile.read(1) == b'V')
+    is_big_endian = (head[8] == b'V')
 
-    # Now read the bhead chunk!!!
-    blendfile.read(3) # skip the version
+    # blender pre 2.5 had no thumbs
+    if head[9:11] <= b'24':
+        return None, 0, 0
 
-    sizeof_pointer = 8 if is_64_bit else 4
-
     sizeof_bhead = 24 if is_64_bit else 20
-    
-    int_endian = '>i' if is_big_endian else '<i'
     int_endian_pair = '>ii' if is_big_endian else '<ii'
-    
+
     while True:
-        try:
-            code, length = struct.unpack(int_endian_pair, blendfile.read(8)) # 8 == sizeof(int) * 2
-        except IOError:
+        bhead = blendfile.read(sizeof_bhead)
+
+        if len(bhead) < sizeof_bhead:
             return None, 0, 0
-        
-        # finally read the rest of the bhead struct, pointer and 2 ints
-        blendfile.seek(sizeof_bhead - 8, os.SEEK_CUR)
 
+        code, length = struct.unpack(int_endian_pair, bhead[0:8]) # 8 == sizeof(int) * 2
+
         if code == REND:
             blendfile.seek(length, os.SEEK_CUR)
         else:
             break
+            
     
     if code != TEST:
         return None, 0, 0
@@ -86,12 +83,12 @@
         return None, 0, 0
 
     length -= 8 # sizeof(int) * 2
-    
+
     if length != x * y * 4:
         return None, 0, 0
-    
+
     image_buffer = blendfile.read(length)
-    
+
     if len(image_buffer) != length:
         return None, 0, 0
 
@@ -104,7 +101,7 @@
     # reverse the vertical line order and add null bytes at the start
     width_byte_4 = width * 4
     raw_data = b"".join([b'\x00' + buf[span:span + width_byte_4] for span in range((height - 1) * width * 4, -1, - width_byte_4)])
-    
+
     def png_pack(png_tag, data):
         chunk_head = png_tag + data
         return struct.pack("!I", len(data)) + chunk_head + struct.pack("!I", 0xFFFFFFFF & zlib.crc32(chunk_head))
@@ -117,6 +114,8 @@
 
 
 if __name__ == '__main__':
+    import sys
+
     if len(sys.argv) < 2:
         print("Expected 2 arguments <input.blend> <output.png>")
     else:

Modified: branches/render25/source/blender/blenkernel/intern/sequencer.c
===================================================================
--- branches/render25/source/blender/blenkernel/intern/sequencer.c	2010-07-17 11:50:01 UTC (rev 30429)
+++ branches/render25/source/blender/blenkernel/intern/sequencer.c	2010-07-17 12:04:51 UTC (rev 30430)
@@ -1800,6 +1800,10 @@
 	if(seq->flag & SEQ_FLIPX) {
 		IMB_flipx(se->ibuf);
 	}
+	
+	if(seq->flag & SEQ_FLIPY) {
+		IMB_flipy(se->ibuf);
+	}
 
 	if(seq->sat != 1.0f) {
 		/* inline for now, could become an imbuf function */
@@ -2279,6 +2283,13 @@
 						addzbuffloatImBuf(se->ibuf);
 						memcpy(se->ibuf->zbuf_float, rres.rectz, sizeof(float)*rres.rectx*rres.recty);
 					}
+
+					/* {
+						ImBuf *imb= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rectfloat, 0);
+						IMB_saveiff(imb, "/tmp/foo.image", IB_rect | IB_metadata);
+						IMB_freeImBuf(imb);
+					} */
+
 				} else if (rres.rect32) {
 					se->ibuf= IMB_allocImBuf(rres.rectx, rres.recty, 32, IB_rect, 0);
 					memcpy(se->ibuf->rect, rres.rect32, 4*rres.rectx*rres.recty);

Modified: branches/render25/source/blender/blenlib/BLI_path_util.h
===================================================================
--- branches/render25/source/blender/blenlib/BLI_path_util.h	2010-07-17 11:50:01 UTC (rev 30429)
+++ branches/render25/source/blender/blenlib/BLI_path_util.h	2010-07-17 12:04:51 UTC (rev 30430)
@@ -40,14 +40,14 @@
 struct ListBase;
 struct direntry;
 
-char *BLI_gethome(void);
+char *BLI_getDefaultDocumentFolder(void);
 
 char *BLI_get_folder(int folder_id, char *subfolder);
 char *BLI_get_folder_create(int folder_id, char *subfolder);
 
 /* folder_id */
 
-/* general, will find baserd on user/local/system priority */
+/* general, will find based on user/local/system priority */
 #define BLENDER_CONFIG				1
 #define BLENDER_DATAFILES			2
 #define BLENDER_SCRIPTS				3

Modified: branches/render25/source/blender/blenlib/intern/path_util.c
===================================================================
--- branches/render25/source/blender/blenlib/intern/path_util.c	2010-07-17 11:50:01 UTC (rev 30429)
+++ branches/render25/source/blender/blenlib/intern/path_util.c	2010-07-17 12:04:51 UTC (rev 30430)
@@ -732,10 +732,10 @@
 	}
 }
 
-/* This is now only used to really get the user's home folder */
+/* This is now only used to really get the user's default document folder */
 /* On Windows I chose the 'Users/<MyUserName>/Documents' since it's used
    as default location to save documents */
-char *BLI_gethome(void) {
+char *BLI_getDefaultDocumentFolder(void) {
 	#if !defined(WIN32)
 		return getenv("HOME");
 

Modified: branches/render25/source/blender/editors/interface/interface_templates.c
===================================================================
--- branches/render25/source/blender/editors/interface/interface_templates.c	2010-07-17 11:50:01 UTC (rev 30429)
+++ branches/render25/source/blender/editors/interface/interface_templates.c	2010-07-17 12:04:51 UTC (rev 30430)
@@ -195,7 +195,7 @@
 
 					RNA_parameter_set_lookup(&parms, "context", &C);
 
-					if (RNA_function_call(C, &reports, &ptr, func, &parms) == 0) {
+					if (RNA_function_call((bContext *)C, &reports, &ptr, func, &parms) == 0) {
 						int* ret;
 						RNA_parameter_get_lookup(&parms, "ret", (void **)&ret);
 

Modified: branches/render25/source/blender/editors/space_file/file_ops.c
===================================================================
--- branches/render25/source/blender/editors/space_file/file_ops.c	2010-07-17 11:50:01 UTC (rev 30429)
+++ branches/render25/source/blender/editors/space_file/file_ops.c	2010-07-17 12:04:51 UTC (rev 30430)
@@ -945,7 +945,7 @@
 		if ( sfile->params->dir[0] == '~' ) {
 			char tmpstr[sizeof(sfile->params->dir)-1];
 			strncpy(tmpstr, sfile->params->dir+1, sizeof(tmpstr));
-			BLI_join_dirfile(sfile->params->dir, BLI_gethome(), tmpstr);
+			BLI_join_dirfile(sfile->params->dir, BLI_getDefaultDocumentFolder(), tmpstr);
 		}
 
 #ifdef WIN32

Modified: branches/render25/source/blender/editors/space_file/fsmenu.c
===================================================================
--- branches/render25/source/blender/editors/space_file/fsmenu.c	2010-07-17 11:50:01 UTC (rev 30429)
+++ branches/render25/source/blender/editors/space_file/fsmenu.c	2010-07-17 12:04:51 UTC (rev 30430)
@@ -338,7 +338,7 @@
 		/* As 10.4 doesn't provide proper API to retrieve the favorite places,
 		 assume they are the standard ones 
 		 TODO : replace hardcoded paths with proper BLI_get_folder calls */
-		home = BLI_gethome();
+		home = getenv("HOME");
 		if(home) {
 			BLI_snprintf(line, 256, "%s/", home);
 			fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0);
@@ -458,7 +458,7 @@
 #else
 	/* unix */
 	{
-		char *home= BLI_gethome();
+		char *home= getenv("HOME");
 
 		if(home) {
 			BLI_snprintf(line, FILE_MAXDIR, "%s/", home);

Modified: branches/render25/source/blender/editors/space_sequencer/sequencer_draw.c
===================================================================
--- branches/render25/source/blender/editors/space_sequencer/sequencer_draw.c	2010-07-17 11:50:01 UTC (rev 30429)
+++ branches/render25/source/blender/editors/space_sequencer/sequencer_draw.c	2010-07-17 12:04:51 UTC (rev 30430)
@@ -381,6 +381,8 @@
 
 	pixely = (v2d->cur.ymax - v2d->cur.ymin)/(v2d->mask.ymax - v2d->mask.ymin);
 	
+	if(pixely <= 0) return; /* can happen when the view is split/resized */
+	
 	blendcol[0] = blendcol[1] = blendcol[2] = 120;
 
 	if(seq->startofs) {
@@ -838,32 +840,46 @@
 	glDisable(GL_TEXTURE_2D);
 	glDeleteTextures(1, &texid);
 
-	/* safety border */
-	if (sseq->mainb == SEQ_DRAW_IMG_IMBUF && 
-		(sseq->flag & SEQ_DRAW_SAFE_MARGINS) != 0) {
-		float fac= 0.1;
+	if(sseq->mainb == SEQ_DRAW_IMG_IMBUF) {
+
 		float x1 = v2d->tot.xmin;
 		float y1 = v2d->tot.ymin;
 		float x2 = v2d->tot.xmax;
 		float y2 = v2d->tot.ymax;
-		
-		float a= fac*(x2-x1);
-		x1+= a; 
-		x2-= a;
-	
-		a= fac*(y2-y1);
-		y1+= a;
-		y2-= a;
-	
-		glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 
+
+		/* border */
 		setlinestyle(3);
 
+		glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
+
 		UI_ThemeColorBlendShade(TH_WIRE, TH_BACK, 1.0, 0);
-		
-		uiSetRoundBox(15);
-		gl_round_box(GL_LINE_LOOP, x1, y1, x2, y2, 12.0);
 
+		glBegin(GL_LINE_LOOP);
+		glVertex2f(x1-0.5, y1-0.5);
+		glVertex2f(x1-0.5, y2+0.5);
+		glVertex2f(x2+0.5, y2+0.5);
+		glVertex2f(x2+0.5, y1-0.5);
+		glEnd();
+
+		/* safety border */
+		if ((sseq->flag & SEQ_DRAW_SAFE_MARGINS) != 0) {
+			float fac= 0.1;
+
+			float a= fac*(x2-x1);
+			x1+= a;
+			x2-= a;
+
+			a= fac*(y2-y1);
+			y1+= a;
+			y2-= a;
+
+			uiSetRoundBox(15);
+			gl_round_box(GL_LINE_LOOP, x1, y1, x2, y2, 12.0);
+
+		}
+
 		setlinestyle(0);
+
 		glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
 	}
 	

Modified: branches/render25/source/blender/editors/space_sequencer/sequencer_edit.c
===================================================================
--- branches/render25/source/blender/editors/space_sequencer/sequencer_edit.c	2010-07-17 11:50:01 UTC (rev 30429)

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list