Revert "Fix float number not working properly for option min/max" (#11794)

Revert "Fix float number not working properly for option min/max (#11211)"

This reverts commit 69861b57f9.
This commit is contained in:
Ioannis Giannakas
2025-12-31 22:37:58 +00:00
committed by GitHub
parent 69861b57f9
commit 263b592885
5 changed files with 20 additions and 38 deletions

View File

@@ -318,19 +318,6 @@ ConfigOption* ConfigOptionDef::create_default_option() const
return this->create_empty_option();
}
bool ConfigOptionDef::is_value_valid(const double value, const int max_precision /*= 4*/) const
{
if (this->min == 0.f && value < 0) { // Special handling of 0
return false;
}
const double ep = std::pow(0.1, max_precision);
if (is_approx(value, (double) this->min, ep) || is_approx(value, (double) this->max, ep))
return true;
return this->min <= value && value <= this->max;
}
// Assignment of the serialization IDs is not thread safe. The Defs shall be initialized from the main thread!
ConfigOptionDef* ConfigDef::add(const t_config_option_key &opt_key, ConfigOptionType type)
{

View File

@@ -4,7 +4,6 @@
#include <assert.h>
#include <map>
#include <climits>
#include <cfloat>
#include <cstdio>
#include <cstdlib>
#include <functional>
@@ -2456,11 +2455,10 @@ public:
// Optional width of an input field.
int width = -1;
// <min, max> limit of a numeric input.
// If not set, the <min, max> is set to <-FLT_MAX, FLT_MAX>
// If not set, the <min, max> is set to <INT_MIN, INT_MAX>
// By setting min=0, only nonnegative input is allowed.
float min = -FLT_MAX;
float max = FLT_MAX;
bool is_value_valid(double value, int max_precision = 4) const;
int min = INT_MIN;
int max = INT_MAX;
// To check if it's not a typo and a % is missing
double max_literal = 1;
ConfigOptionMode mode = comSimple;

View File

@@ -2150,7 +2150,7 @@ void PrintConfigDef::init_fff_params()
"\n\nThe final object flow ratio is this value multiplied by the filament flow ratio.");
def->mode = comAdvanced;
def->max = 2;
def->min = 0.01f;
def->min = 0.01;
def->set_default_value(new ConfigOptionFloat(1));
def = this->add("enable_pressure_advance", coBools);
@@ -3245,7 +3245,7 @@ void PrintConfigDef::init_fff_params()
def->category = L("Others");
def->tooltip = L("The average distance between the random points introduced on each line segment.");
def->sidetext = L("mm"); // milimeters, CIS languages need translation
def->min = 0.01f; // point distance cannot be 0! Otherwise we get infinite loop + OOM due to infinite line division.
def->min = 0;
def->max = 5;
def->mode = comSimple;
def->set_default_value(new ConfigOptionFloat(0.3));
@@ -3308,7 +3308,7 @@ void PrintConfigDef::init_fff_params()
def->category = L("Others");
def->tooltip = L("The base size of the coherent noise features, in mm. Higher values will result in larger features.");
def->sidetext = L("mm"); // milimeters, CIS languages need translation
def->min = 0.1f;
def->min = 0.1;
def->max = 500;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(1.0));
@@ -3326,7 +3326,7 @@ void PrintConfigDef::init_fff_params()
def->label = L("Fuzzy skin noise persistence");
def->category = L("Others");
def->tooltip = L("The decay rate for higher octaves of the coherent noise. Lower values will result in smoother noise.");
def->min = 0.01f;
def->min = 0.01;
def->max = 1;
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionFloat(0.5));
@@ -9555,13 +9555,13 @@ std::map<std::string, std::string> validate(const FullPrintConfig &cfg, bool und
case coFloatOrPercent:
{
auto *fopt = static_cast<const ConfigOptionFloat*>(opt);
out_of_range = !optdef->is_value_valid(fopt->value);
out_of_range = fopt->value < optdef->min || fopt->value > optdef->max;
break;
}
case coFloats:
case coPercents:
for (double v : static_cast<const ConfigOptionVector<double>*>(opt)->values)
if (!optdef->is_value_valid(v)) {
if (v < optdef->min || v > optdef->max) {
out_of_range = true;
break;
}
@@ -9569,12 +9569,12 @@ std::map<std::string, std::string> validate(const FullPrintConfig &cfg, bool und
case coInt:
{
auto *iopt = static_cast<const ConfigOptionInt*>(opt);
out_of_range = !optdef->is_value_valid(iopt->value);
out_of_range = iopt->value < optdef->min || iopt->value > optdef->max;
break;
}
case coInts:
for (int v : static_cast<const ConfigOptionVector<int>*>(opt)->values)
if (!optdef->is_value_valid(v)) {
if (v < optdef->min || v > optdef->max) {
out_of_range = true;
break;
}