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

Campbell Barton cbarton at metavr.com
Tue May 22 21:40:11 CEST 2007


Revision: 10759
          https://svn.blender.org//revision/?rev=10759&view=rev
Author:   campbellbarton
Date:     2007-05-22 21:40:11 +0200 (Tue, 22 May 2007)

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

Bugfix for python Image.save()
[ #6702 ] Image doesn't get saved after painting & packing
IMB_saveiff - (general saving function), does not write a file when the image is packed.
so write a file with writePackedFile for packed files.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/packedFile.c
    trunk/blender/source/blender/python/api2_2x/Image.c
    trunk/blender/source/blender/python/api2_2x/doc/Image.py

Modified: trunk/blender/source/blender/blenkernel/intern/packedFile.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/packedFile.c	2007-05-22 17:41:32 UTC (rev 10758)
+++ trunk/blender/source/blender/blenkernel/intern/packedFile.c	2007-05-22 19:40:11 UTC (rev 10759)
@@ -286,7 +286,7 @@
 	char tempname[FILE_MAXDIR + FILE_MAXFILE];
 /*  	void * data; */
 	
-	waitcursor(1);
+	if (guimode) waitcursor(1);
 	
 	strcpy(name, filename);
 	BLI_convertstringcode(name, G.sce, G.scene->r.cfra);

Modified: trunk/blender/source/blender/python/api2_2x/Image.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Image.c	2007-05-22 17:41:32 UTC (rev 10758)
+++ trunk/blender/source/blender/python/api2_2x/Image.c	2007-05-22 19:40:11 UTC (rev 10759)
@@ -657,7 +657,7 @@
 	/*get the absolute path */
 	if( !PyArg_ParseTuple( args, "i", &mode ) )
 		return EXPP_ReturnPyObjError( PyExc_TypeError,
-					      "expected 1 integer" );
+					      "expected 1 integer from Blender.UnpackModes" );
 	
 	if (image->packedfile==NULL)
 		return EXPP_ReturnPyObjError( PyExc_RuntimeError,
@@ -716,10 +716,21 @@
 static PyObject *Image_save( BPy_Image * self )
 {
 	ImBuf *ibuf= BKE_image_get_ibuf(self->image, NULL);
+
+	if(!ibuf)
+		return EXPP_ReturnPyObjError( PyExc_RuntimeError,
+					      "could not save image (no image buffer)" );
 	
-	if(!ibuf || !IMB_saveiff( ibuf, self->image->name, ibuf->flags ) )
+	/* If this is a packed file, write using writePackedFile
+	 * because IMB_saveiff wont save to a file */
+	if (self->image->packedfile) {
+		if (writePackedFile(self->image->name, self->image->packedfile, 0) != RET_OK) {
+			return EXPP_ReturnPyObjError( PyExc_RuntimeError,
+		      "could not save image (writing image from packedfile failed)" );
+		}
+	} else if (!IMB_saveiff( ibuf, self->image->name, ibuf->flags))
 		return EXPP_ReturnPyObjError( PyExc_RuntimeError,
-					      "could not save image" );
+					      "could not save image (writing the image buffer failed)" );
 
 	Py_RETURN_NONE;		/*  normal return, image saved */
 }

Modified: trunk/blender/source/blender/python/api2_2x/doc/Image.py
===================================================================
--- trunk/blender/source/blender/python/api2_2x/doc/Image.py	2007-05-22 17:41:32 UTC (rev 10758)
+++ trunk/blender/source/blender/python/api2_2x/doc/Image.py	2007-05-22 19:40:11 UTC (rev 10759)
@@ -6,7 +6,7 @@
 Image
 =====
 
-B{New}: L{Image.setFilename}.
+B{New}: L{Image.clampX}, L{Image.clampY}.
 
 This module provides access to B{Image} objects in Blender.
 
@@ -335,9 +335,10 @@
 		
 	def save():
 		"""
-		Saves the current image.
-		@returns: nothing
-		@rtype: none
+		Saves the current image to L{filename}
+		@note: Saving to a directory that doent exist will raise an error.
+		@note: Saving a packed image will make a unique (numbered) name if the file alredy exists. Remove the file first to be sure it will not be renamed.
+		@returns: None
 		"""
 	
 	def pack():
@@ -355,7 +356,7 @@
 	def unpack(mode):
 		"""
 		Unpacks the image to the images filename.
-		@param mode: One of the values in Blender.Unpackmodes dict.
+		@param mode: One of the values in L{Blender.UnpackModes}.
 		@note: An error will be raised if the image is not packed or the filename path does not exist.
 		@returns: nothing
 		@rtype: none
@@ -365,6 +366,7 @@
 		"""
 		Set the currently displayed Image from Blenders UV/Image window.
 		When multiple images are displayed, the last active UV/Image windows image is used.
+		@warn: Deprecated, set bpy.data.images.active = image instead.
 		@rtype: bool
 		@return: True if the current image could be set, if no window was available, return False.
 		"""





More information about the Bf-blender-cvs mailing list