diff --git a/src/ifcconvert/ColladaSerializer.cpp b/src/ifcconvert/ColladaSerializer.cpp index 78531a2a52..e0c3eb169c 100644 --- a/src/ifcconvert/ColladaSerializer.cpp +++ b/src/ifcconvert/ColladaSerializer.cpp @@ -60,7 +60,12 @@ void ColladaSerializer::ColladaExporter::ColladaGeometries::addFloatSource(const source.finish(); } -void ColladaSerializer::ColladaExporter::ColladaGeometries::write(std::string mesh_id, std::string, std::vector positions, std::vector normals, std::vector faces, std::vector edges, std::vector material_ids, std::vector materials, std::vector uvs, std::vector material_references) +void ColladaSerializer::ColladaExporter::ColladaGeometries::write( + const std::string &mesh_id, const std::string &/**<@todo 'default_material_name' unused, remove? */, + const std::vector& positions, const std::vector& normals, + const std::vector& faces, const std::vector& edges, + const std::vector& material_ids, const std::vector& /**<@todo 'materials' unused, remove? */, + const std::vector& uvs, const std::vector& material_references) { openMesh(mesh_id); @@ -217,7 +222,7 @@ void ColladaSerializer::ColladaExporter::ColladaScene::add( node.addMatrix(matrix_array); COLLADASW::InstanceGeometry instanceGeometry(mSW); instanceGeometry.setUrl("#" + geom_name); - BOOST_FOREACH(std::string material_name, material_ids) { + BOOST_FOREACH(const std::string &material_name, material_ids) { // Unescape to avoid double escaping beucase OpenCollada's material URI parameter escapes XML internally std::string unescaped = material_name; IfcUtil::unescape_xml(unescaped); @@ -303,7 +308,8 @@ void ColladaSerializer::ColladaExporter::ColladaScene::write() { } } -void ColladaSerializer::ColladaExporter::ColladaMaterials::ColladaEffects::write(const IfcGeom::Material &material, const std::string &material_uri) +void ColladaSerializer::ColladaExporter::ColladaMaterials::ColladaEffects::write( + const IfcGeom::Material &material, const std::string &material_uri) { openEffect(material_uri + "-fx"); COLLADASW::EffectProfile effect(mSW); @@ -354,10 +360,8 @@ void ColladaSerializer::ColladaExporter::ColladaMaterials::add(const IfcGeom::Ma std::string ColladaSerializer::ColladaExporter::ColladaMaterials::getMaterialUri(const IfcGeom::Material& material) { std::vector::iterator it = std::find(materials.begin(), materials.end(), material); - long index = std::distance(materials.begin(), it); - - std::string material_uri = material_uris.at(static_cast(index)); - return material_uri; + ptrdiff_t index = std::distance(materials.begin(), it); + return material_uris.at(index); } bool ColladaSerializer::ColladaExporter::ColladaMaterials::contains(const IfcGeom::Material& material) { @@ -463,7 +467,8 @@ void ColladaSerializer::ColladaExporter::endDocument() { continue; } geometries_written.insert(it->representation_id); - geometries.write(it->representation_id, it->type, it->vertices, it->normals, it->faces, it->edges, it->material_ids, it->materials, it->uvs, it->material_references); + geometries.write(it->representation_id, it->type, it->vertices, it->normals, it->faces, it->edges, + it->material_ids, it->materials, it->uvs, it->material_references); } geometries.close(); diff --git a/src/ifcconvert/ColladaSerializer.h b/src/ifcconvert/ColladaSerializer.h index dbee52260e..8c435f81a0 100644 --- a/src/ifcconvert/ColladaSerializer.h +++ b/src/ifcconvert/ColladaSerializer.h @@ -69,7 +69,13 @@ private: {} void addFloatSource(const std::string& mesh_id, const std::string& suffix, const std::vector& floats, const char* coords = "XYZ"); - void write(std::string mesh_id, std::string default_material_name, std::vector positions, std::vector normals, std::vector faces, std::vector edges, std::vector material_ids, std::vector materials, std::vector uvs, std::vector material_references); + /// @todo pass simply DeferredObject? + void write( + const std::string &mesh_id, const std::string &default_material_name, + const std::vector& positions, const std::vector& normals, + const std::vector& faces, const std::vector& edges, + const std::vector& material_ids, const std::vector& materials, + const std::vector& uvs, const std::vector& material_references); void close(); ColladaSerializer *serializer; };