diff options
author | Arystanbek Dyussenov <arystan.d@gmail.com> | 2009-08-05 11:59:49 +0400 |
---|---|---|
committer | Arystanbek Dyussenov <arystan.d@gmail.com> | 2009-08-05 11:59:49 +0400 |
commit | 7586990ace3a988e720397f47bf95b7bc9d7124b (patch) | |
tree | e4d9d76f6638ad489b18785cec1db49c0ff3ba85 | |
parent | 2065c5cf605ea6147cb4097cf4aca7ac003a1ba1 (diff) |
- 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
-rw-r--r-- | release/io/export_fbx.py | 22 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/image.c | 12 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_image_api.c | 5 | ||||
-rw-r--r-- | source/creator/tests/alltest.c | 12 |
4 files changed, 32 insertions, 19 deletions
diff --git a/release/io/export_fbx.py b/release/io/export_fbx.py index a81dea4d909..c50b60fd97e 100644 --- a/release/io/export_fbx.py +++ b/release/io/export_fbx.py @@ -39,6 +39,7 @@ http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_fbx import os import time import math # math.pi +import shutil # for file copying # try: # import time @@ -1324,8 +1325,6 @@ def write(filename, batch_objects = None, \ # 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 @@ def write(filename, batch_objects = None, \ 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 @@ def write(filename, batch_objects = None, \ 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: diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index b66213ffbc2..4a355640d8b 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -2206,12 +2206,6 @@ int BKE_get_image_export_path(struct Image *im, const char *dest_dir, char *abs, 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 @@ int BKE_get_image_export_path(struct Image *im, const char *dest_dir, char *abs, 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; } diff --git a/source/blender/makesrna/intern/rna_image_api.c b/source/blender/makesrna/intern/rna_image_api.c index 20770ef2957..af059b435b3 100644 --- a/source/blender/makesrna/intern/rna_image_api.c +++ b/source/blender/makesrna/intern/rna_image_api.c @@ -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; diff --git a/source/creator/tests/alltest.c b/source/creator/tests/alltest.c index 99e0d2f5b26..89a58a08dfd 100644 --- a/source/creator/tests/alltest.c +++ b/source/creator/tests/alltest.c @@ -60,19 +60,19 @@ START_TEST(test_copy_images) {"//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 @@ START_TEST(test_copy_images) {"/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}, |