[Bf-blender-cvs] [cf43f4ed2f6] collada2.8: new: collada: support proper setup of collada attribute names (wip)

Gaia Clary noreply at git.blender.org
Wed Nov 14 19:48:06 CET 2018


Commit: cf43f4ed2f6776d759c74665a88dbdd744054667
Author: Gaia Clary
Date:   Wed Nov 14 19:43:29 2018 +0100
Branches: collada2.8
https://developer.blender.org/rBcf43f4ed2f6776d759c74665a88dbdd744054667

new: collada: support proper setup of collada attribute names (wip)

===================================================================

M	source/blender/collada/collada_internal.cpp
M	source/blender/collada/collada_internal.h

===================================================================

diff --git a/source/blender/collada/collada_internal.cpp b/source/blender/collada/collada_internal.cpp
index 273af508b6d..64de0596ac5 100644
--- a/source/blender/collada/collada_internal.cpp
+++ b/source/blender/collada/collada_internal.cpp
@@ -311,6 +311,33 @@ std::string id_name(void *id)
 	return ((ID *)id)->name + 2;
 }
 
+std::string encode_xml(std::string xml)
+{
+	const std::map<char, std::string> escape {
+		{'<' , "<"  },
+		{'>' , ">"  },
+		{'"' , """},
+		{'\'', "'"},
+		{'&' , "&" }
+	};
+
+	std::map<char, std::string>::const_iterator it;
+	std::string encoded_xml = "";
+
+	for (unsigned int i = 0; i < xml.size(); i++) {
+		char c = xml.at(i);
+		it = escape.find(c);
+
+		if (it == escape.end()) {
+			encoded_xml += c;
+		}
+		else {
+			encoded_xml += it->second;
+		}
+	}
+	return encoded_xml;
+}
+
 std::string get_geometry_id(Object *ob)
 {
 	return translate_id(id_name(ob->data)) + "-mesh";
@@ -342,6 +369,11 @@ std::string get_camera_id(Object *ob)
 	return translate_id(id_name(ob)) + "-camera";
 }
 
+std::string get_effect_id(Material *mat)
+{
+	return translate_id(id_name(mat)) + "-effect";
+}
+
 std::string get_material_id(Material *mat)
 {
 	return translate_id(id_name(mat)) + "-material";
diff --git a/source/blender/collada/collada_internal.h b/source/blender/collada/collada_internal.h
index 3237a802073..a84457f75e7 100644
--- a/source/blender/collada/collada_internal.h
+++ b/source/blender/collada/collada_internal.h
@@ -91,6 +91,7 @@ extern std::string translate_id(const std::string &id);
 extern std::string translate_id(const char *idString);
 
 extern std::string id_name(void *id);
+extern std::string encode_xml(std::string xml);
 
 extern std::string get_geometry_id(Object *ob);
 extern std::string get_geometry_id(Object *ob, bool use_instantiation);
@@ -100,9 +101,9 @@ extern std::string get_light_id(Object *ob);
 extern std::string get_joint_sid(Bone *bone);
 
 extern std::string get_camera_id(Object *ob);
+extern std::string get_morph_id(Object *ob);
 
+extern std::string get_effect_id(Material *mat);
 extern std::string get_material_id(Material *mat);
 
-extern std::string get_morph_id(Object *ob);
-
 #endif /* __COLLADA_INTERNAL_H__ */



More information about the Bf-blender-cvs mailing list