[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