From 6dcabda7db47371e9867d7313ed902727a74caba Mon Sep 17 00:00:00 2001 From: Filip Sykala - NTB T15p Date: Wed, 12 Jul 2023 14:10:00 +0200 Subject: [PATCH] Try to Fix linux build --- src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp | 4 ++++ src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp | 2 +- src/slic3r/GUI/Jobs/EmbossJob.cpp | 13 +++++++------ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp index e6b78fb85d..32c1c7ae8c 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSVG.cpp @@ -202,6 +202,10 @@ bool GLGizmoSVG::create_volume(std::string_view svg_file, ModelVolumeType volume CreateVolumeParams input = create_input(m_parent, m_raycast_manager, volume_type); DataBasePtr base = create_emboss_data_base(m_job_cancel, svg_file); base->is_outside = volume_type == ModelVolumeType::MODEL_PART; + // is not a number || is infinity + if (mouse_pos.x() != mouse_pos.x() || + mouse_pos.y() != mouse_pos.y()) + return start_create_volume_without_position(input, std::move(base)); return start_create_volume(input, std::move(base), mouse_pos); } diff --git a/src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp b/src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp index fb084e8da2..4e5aa121df 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoSVG.hpp @@ -63,7 +63,7 @@ public: /// Object part / Negative volume / Modifier /// Position on screen where to create volume /// True on succesfull start creation otherwise False - bool create_volume(std::string_view svg_file, ModelVolumeType volume_type = ModelVolumeType::MODEL_PART, const Vec2d &mouse_pos = Vec2d(nan, nan)); + bool create_volume(std::string_view svg_file, ModelVolumeType volume_type = ModelVolumeType::MODEL_PART, const Vec2d &mouse_pos = Vec2d(std::nan, std::nan)); /// /// Check whether volume is object containing only emboss volume diff --git a/src/slic3r/GUI/Jobs/EmbossJob.cpp b/src/slic3r/GUI/Jobs/EmbossJob.cpp index 64640b991e..bc2b3942a5 100644 --- a/src/slic3r/GUI/Jobs/EmbossJob.cpp +++ b/src/slic3r/GUI/Jobs/EmbossJob.cpp @@ -719,8 +719,7 @@ bool check(const DataCreateVolume &input, bool is_main_thread) assert(input.base != nullptr); bool res = input.base != nullptr; res &= check(*input.base, check_fontfile); - assert(input.volume_type != ModelVolumeType::INVALID); - res &= input.volume_type != ModelVolumeType::INVALID; + res &= is_valid(input.volume_type); res &= check(input.gizmo); assert(!input.base->shape.projection.use_surface); res &= !input.base->shape.projection.use_surface; @@ -1401,7 +1400,12 @@ bool finalize(bool canceled, std::exception_ptr &eptr, const DataBase &input) bool is_valid(ModelVolumeType volume_type) { - if (volume_type == ModelVolumeType::MODEL_PART || volume_type == ModelVolumeType::NEGATIVE_VOLUME || + assert(volume_type != ModelVolumeType::INVALID); + assert(volume_type == ModelVolumeType::MODEL_PART || + volume_type == ModelVolumeType::NEGATIVE_VOLUME || + volume_type == ModelVolumeType::PARAMETER_MODIFIER); + if (volume_type == ModelVolumeType::MODEL_PART || + volume_type == ModelVolumeType::NEGATIVE_VOLUME || volume_type == ModelVolumeType::PARAMETER_MODIFIER) return true; @@ -1424,9 +1428,6 @@ bool start_create_volume_job(Worker &worker, if (sources.empty() || !volume_tr.has_value()) { use_surface = false; } else { - bool is_outside = volume_type == ModelVolumeType::MODEL_PART; - // check that there is not unexpected volume type - assert(is_outside || volume_type == ModelVolumeType::NEGATIVE_VOLUME || volume_type == ModelVolumeType::PARAMETER_MODIFIER); SurfaceVolumeData sfvd{*volume_tr, std::move(sources)}; CreateSurfaceVolumeData surface_data{std::move(sfvd), std::move(data), volume_type, object.id(), gizmo}; job = std::make_unique(std::move(surface_data));