diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp index 0fbad537c..7f2c94f03 100644 --- a/src/libslic3r/Utils.hpp +++ b/src/libslic3r/Utils.hpp @@ -68,6 +68,8 @@ namespace PerlUtils { extern std::string path_to_parent_path(const char *src); }; +std::string string_printf(const char *format, ...); + // Timestamp formatted for header_slic3r_generated(). extern std::string timestamp_str(); // Standard "generated by Slic3r version xxx timestamp xxx" header string, diff --git a/src/libslic3r/utils.cpp b/src/libslic3r/utils.cpp index 466df8a35..7a51a6104 100644 --- a/src/libslic3r/utils.cpp +++ b/src/libslic3r/utils.cpp @@ -3,6 +3,8 @@ #include #include +#include +#include #ifdef WIN32 #include @@ -297,6 +299,25 @@ namespace PerlUtils { std::string path_to_parent_path(const char *src) { return boost::filesystem::path(src).parent_path().string(); } }; + +std::string string_printf(const char *format, ...) +{ + va_list args1; + va_start(args1, format); + va_list args2; + va_copy(args2, args1); + + size_t needed_size = ::vsnprintf(nullptr, 0, format, args1) + 1; + va_end(args1); + + std::string res(needed_size, '\0'); + ::vsnprintf(&res.front(), res.size(), format, args2); + va_end(args2); + + return res; +} + + std::string timestamp_str() { const auto now = boost::posix_time::second_clock::local_time(); diff --git a/src/slic3r/GUI/GLGizmo.cpp b/src/slic3r/GUI/GLGizmo.cpp index b8988077e..54dd1427d 100644 --- a/src/slic3r/GUI/GLGizmo.cpp +++ b/src/slic3r/GUI/GLGizmo.cpp @@ -275,10 +275,7 @@ void GLGizmoBase::set_tooltip(const std::string& tooltip) const std::string GLGizmoBase::format(float value, unsigned int decimals) const { - size_t needed_size = std::snprintf(nullptr, 0, "%.*f", decimals, value); - std::string res(needed_size, '\0'); - std::snprintf(&res.front(), res.size(), "%.*f", decimals, value); - return res; + return Slic3r::string_printf("%.*f", decimals, value); } const float GLGizmoRotate::Offset = 5.0f; diff --git a/xs/xsp/Model.xsp b/xs/xsp/Model.xsp index ffcb81def..6091d00ad 100644 --- a/xs/xsp/Model.xsp +++ b/xs/xsp/Model.xsp @@ -231,12 +231,6 @@ ModelMaterial::attributes() void rotate(float angle, Vec3d* axis) %code{% THIS->rotate(angle, *axis); %}; void mirror(Axis axis); - - Model* cut(double z) - %code%{ - RETVAL = new Model(); - THIS->cut(z, RETVAL); - %}; ModelObjectPtrs* split_object() %code%{