[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [54399] trunk/blender/source/blender/ collada: fixed: [#34080] import of COLLADA breaks on '#' in filepath
Gaia Clary
gaia.clary at machinimatrix.org
Sat Feb 9 01:24:00 CET 2013
Revision: 54399
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=54399
Author: gaiaclary
Date: 2013-02-09 00:23:59 +0000 (Sat, 09 Feb 2013)
Log Message:
-----------
fixed: [#34080] import of COLLADA breaks on '#' in filepath
Modified Paths:
--------------
trunk/blender/source/blender/collada/DocumentImporter.cpp
trunk/blender/source/blender/collada/collada_utils.cpp
trunk/blender/source/blender/collada/collada_utils.h
Modified: trunk/blender/source/blender/collada/DocumentImporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentImporter.cpp 2013-02-08 19:52:02 UTC (rev 54398)
+++ trunk/blender/source/blender/collada/DocumentImporter.cpp 2013-02-09 00:23:59 UTC (rev 54399)
@@ -131,7 +131,8 @@
// deselect all to select new objects
BKE_scene_base_deselect_all(CTX_data_scene(mContext));
- if (!root.loadDocument(mFilename)) {
+ const std::string encodedFilename = bc_url_encode(mFilename);
+ if (!root.loadDocument(encodedFilename)) {
fprintf(stderr, "COLLADAFW::Root::loadDocument() returned false on 1st pass\n");
return false;
}
@@ -146,7 +147,7 @@
COLLADASaxFWL::Loader loader2;
COLLADAFW::Root root2(&loader2, this);
- if (!root2.loadDocument(mFilename)) {
+ if (!root2.loadDocument(encodedFilename)) {
fprintf(stderr, "COLLADAFW::Root::loadDocument() returned false on 2nd pass\n");
return false;
}
@@ -1235,3 +1236,4 @@
return false;
}
+
Modified: trunk/blender/source/blender/collada/collada_utils.cpp
===================================================================
--- trunk/blender/source/blender/collada/collada_utils.cpp 2013-02-08 19:52:02 UTC (rev 54398)
+++ trunk/blender/source/blender/collada/collada_utils.cpp 2013-02-09 00:23:59 UTC (rev 54399)
@@ -286,3 +286,20 @@
Mesh *me = (Mesh *)ob->data;
return CustomData_get_active_layer_index(&me->fdata, CD_MTFACE);
}
+
+std::string bc_url_encode(std::string data) {
+ /* XXX We probably do not need to do a full encoding.
+ But in case that is necessary,then it can be added here.
+ */
+ return bc_replace_string(data,"#", "%23");
+}
+
+std::string bc_replace_string(std::string data, const std::string& pattern,
+ const std::string& replacement) {
+ size_t pos = 0;
+ while((pos = data.find(pattern, pos)) != std::string::npos) {
+ data.replace(pos, pattern.length(), replacement);
+ pos += replacement.length();
+ }
+ return data;
+}
\ No newline at end of file
Modified: trunk/blender/source/blender/collada/collada_utils.h
===================================================================
--- trunk/blender/source/blender/collada/collada_utils.h 2013-02-08 19:52:02 UTC (rev 54398)
+++ trunk/blender/source/blender/collada/collada_utils.h 2013-02-09 00:23:59 UTC (rev 54399)
@@ -77,4 +77,7 @@
extern bool bc_is_root_bone(Bone *aBone, bool deform_bones_only);
extern int bc_get_active_UVLayer(Object *ob);
+extern std::string bc_replace_string(std::string data, const std::string& pattern, const std::string& replacement);
+extern std::string bc_url_encode(std::string data);
+
#endif
More information about the Bf-blender-cvs
mailing list