[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [22221] branches/soc-2009-kazanbas: - modified BKE_get_image_export_path so that it writes relative path if src file = dest file returning 2 in this case

Arystanbek Dyussenov arystan.d at gmail.com
Wed Aug 5 09:59:49 CEST 2009


Revision: 22221
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=22221
Author:   kazanbas
Date:     2009-08-05 09:59:49 +0200 (Wed, 05 Aug 2009)

Log Message:
-----------
- modified BKE_get_image_export_path so that it writes relative path if src file = dest file returning 2 in this case
- modified unit tests for ^ firstly
- incorporated Image.get_export_path into FBX exporter script

Modified Paths:
--------------
    branches/soc-2009-kazanbas/release/io/export_fbx.py
    branches/soc-2009-kazanbas/source/blender/blenkernel/intern/image.c
    branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_image_api.c
    branches/soc-2009-kazanbas/source/creator/tests/alltest.c

Modified: branches/soc-2009-kazanbas/release/io/export_fbx.py
===================================================================
--- branches/soc-2009-kazanbas/release/io/export_fbx.py	2009-08-05 07:15:17 UTC (rev 22220)
+++ branches/soc-2009-kazanbas/release/io/export_fbx.py	2009-08-05 07:59:49 UTC (rev 22221)
@@ -39,6 +39,7 @@
 import os
 import time
 import math # math.pi
+import shutil # for file copying
 
 # try:
 # 	import time
@@ -1324,8 +1325,6 @@
 
 	# tex is an Image (Arystan)
 	def write_video(texname, tex):
-		if not EXP_IMAGE_COPY: return
-
 		# Same as texture really!
 		file.write('\n\tVideo: "Video::%s", "Clip" {' % texname)
 		
@@ -1337,9 +1336,15 @@
 			Property: "Width", "int", "",0
 			Property: "Height", "int", "",0''')
 		if tex:
-			abspath = tex.export(basepath)
-			fname_rel = os.path.relpath(abspath, basepath)
-			fname_strip = os.path.basename(abspath)
+			src = bpy.sys.expandpath(tex.filename)
+			fname_rel = tex.get_export_path(basepath, True)
+			fname_abs = tex.get_export_path(basepath, False)
+			fname_strip = os.path.basename(fname_rel)
+
+			if EXP_IMAGE_COPY:
+				if !os.path.exists(fname_abs):
+					shutil.copy(src, fname_abs)
+
 # 			fname, fname_strip, fname_rel = derived_paths(tex.filename, basepath, EXP_IMAGE_COPY)
 		else:
 			fname = fname_strip = fname_rel = ''
@@ -1404,11 +1409,14 @@
 		file.write('\n\t\tMedia: "Video::%s"' % texname)
 		
 		if tex:
-			fname_rel = tex.get_export_path(relpath, True)
+			src = bpy.sys.expandpath(tex.filename)
+			fname_rel = tex.get_export_path(basepath, True)
+			fname_abs = tex.get_export_path(basepath, False)
 			fname_strip = os.path.basename(fname_rel)
 
 			if EXP_IMAGE_COPY:
-				
+				if !os.path.exists(fname_abs):
+					shutil.copy(src, fname_abs)
 
 # 			fname, fname_strip, fname_rel = derived_paths(tex.filename, basepath, EXP_IMAGE_COPY)
 		else:

Modified: branches/soc-2009-kazanbas/source/blender/blenkernel/intern/image.c
===================================================================
--- branches/soc-2009-kazanbas/source/blender/blenkernel/intern/image.c	2009-08-05 07:15:17 UTC (rev 22220)
+++ branches/soc-2009-kazanbas/source/blender/blenkernel/intern/image.c	2009-08-05 07:59:49 UTC (rev 22221)
@@ -2206,12 +2206,6 @@
 		BLI_join_dirfile(dest_path, dest_dir, base);
 	}
 
-	/* only return 1 if paths differ */
-	if (!strcmp(path, dest_path)) {
-		if (G.f & G_DEBUG) printf("%s and %s are the same file\n", path, dest_path);
-		return 0;
-	}
-
 	if (abs)
 		BLI_strncpy(abs, dest_path, abs_size);
 
@@ -2220,5 +2214,11 @@
 		strncat(rel, base, rel_size);
 	}
 
+	/* return 2 if src=dest */
+	if (!strcmp(path, dest_path)) {
+		if (G.f & G_DEBUG) printf("%s and %s are the same file\n", path, dest_path);
+		return 2;
+	}
+
 	return 1;
 }

Modified: branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_image_api.c
===================================================================
--- branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_image_api.c	2009-08-05 07:15:17 UTC (rev 22220)
+++ branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_image_api.c	2009-08-05 07:59:49 UTC (rev 22221)
@@ -41,6 +41,11 @@
 #include "BKE_utildefines.h"
 #include "BKE_image.h"
 
+/*
+  User should check if returned path exists before copying a file there.
+
+  TODO: it would be better to return a (abs, rel) tuple.
+*/
 static char *rna_Image_get_export_path(Image *image, char *dest_dir, int rel)
 {
 	int length = FILE_MAX;

Modified: branches/soc-2009-kazanbas/source/creator/tests/alltest.c
===================================================================
--- branches/soc-2009-kazanbas/source/creator/tests/alltest.c	2009-08-05 07:15:17 UTC (rev 22220)
+++ branches/soc-2009-kazanbas/source/creator/tests/alltest.c	2009-08-05 07:59:49 UTC (rev 22221)
@@ -60,19 +60,19 @@
 		{"//image.png", {{"/home/user/image.png", "image.png", 1},
 						 {"/home/user/image.png", "image.png", 1},
 						 {"/home/user/export/image.png", "image.png", 1},
-						 {"", "", 0},}},
+						 {"/home/user/foo/image.png", "image.png", 2},}},
 
 		/* relative, 1 level deep */
 		{"//bar/image.png", {{"/home/user/bar/image.png", "bar/image.png", 1},
 							 {"/home/user/bar/image.png", "bar/image.png", 1},
 							 {"/home/user/export/bar/image.png", "bar/image.png", 1},
-							 {"", "", 0},}},
+							 {"/home/user/foo/bar/image.png", "bar/image.png", 2},}},
 
 		/* relative, 2 level deep */
 		{"//bar/foo/image.png", {{"/home/user/bar/foo/image.png", "bar/foo/image.png", 1},
 								 {"/home/user/bar/foo/image.png", "bar/foo/image.png", 1},
 								 {"/home/user/export/bar/foo/image.png", "bar/foo/image.png", 1},
-								 {"", "", 0},}},
+								 {"/home/user/foo/bar/foo/image.png", "bar/foo/image.png", 2},}},
 
 		/* absolute, not under .blend dir */
 		{"/home/user/bar/image.png", {{"/home/user/image.png", "image.png", 1},
@@ -84,19 +84,19 @@
 		{"/home/user/foo/image.png", {{"/home/user/image.png", "image.png", 1},
 									  {"/home/user/image.png", "image.png", 1},
 									  {"/home/user/export/image.png", "image.png", 1},
-									  {"", "", 0},}},
+									  {"/home/user/foo/image.png", "image.png", 2},}},
 
 		/* absolute, under .blend dir, 1 level deep */
 		{"/home/user/foo/bar/image.png", {{"/home/user/bar/image.png", "bar/image.png", 1},
 										  {"/home/user/bar/image.png", "bar/image.png", 1},
 										  {"/home/user/export/bar/image.png", "bar/image.png", 1},
-										  {"", "", 0},}},
+										  {"/home/user/foo/bar/image.png", "bar/image.png", 2},}},
 
 		/* absolute, under .blend dir, 2 level deep */
 		{"/home/user/foo/bar/foo/image.png", {{"/home/user/bar/foo/image.png", "bar/foo/image.png", 1},
 											  {"/home/user/bar/foo/image.png", "bar/foo/image.png", 1},
 											  {"/home/user/export/bar/foo/image.png", "bar/foo/image.png", 1},
-											  {"", "", 0},}},
+											  {"/home/user/foo/bar/foo/image.png", "bar/foo/image.png", 2},}},
 
 		/* empty image path, don't let these pass! */
 		{"", {{"", 0},





More information about the Bf-blender-cvs mailing list