| @@ -33,7 +33,7 @@ std::string Quantity::getDisplayValueString() { | |||||
| void Quantity::setDisplayValueString(std::string s) { | void Quantity::setDisplayValueString(std::string s) { | ||||
| static const double inf = INFINITY; | static const double inf = INFINITY; | ||||
| static te_variable vars[] = { | static te_variable vars[] = { | ||||
| {"inf", &inf}, | |||||
| {"inf", &inf, TE_VARIABLE, NULL}, | |||||
| }; | }; | ||||
| te_expr* expr = te_compile(s.c_str(), vars, LENGTHOF(vars), NULL); | te_expr* expr = te_compile(s.c_str(), vars, LENGTHOF(vars), NULL); | ||||
| if (!expr) | if (!expr) | ||||
| @@ -41,6 +41,9 @@ void Quantity::setDisplayValueString(std::string s) { | |||||
| double result = te_eval(expr); | double result = te_eval(expr); | ||||
| te_free(expr); | te_free(expr); | ||||
| if (std::isnan(result)) | |||||
| return; | |||||
| setDisplayValue(result); | setDisplayValue(result); | ||||
| } | } | ||||
| @@ -80,11 +80,17 @@ float ParamQuantity::getDisplayValue() { | |||||
| void ParamQuantity::setDisplayValue(float displayValue) { | void ParamQuantity::setDisplayValue(float displayValue) { | ||||
| if (!module) | if (!module) | ||||
| return; | return; | ||||
| // Handle displayOffset | |||||
| float v = displayValue - displayOffset; | float v = displayValue - displayOffset; | ||||
| // Handle displayMultiplier | |||||
| if (displayMultiplier == 0.f) | if (displayMultiplier == 0.f) | ||||
| v = 0.f; | v = 0.f; | ||||
| else | else | ||||
| v /= displayMultiplier; | v /= displayMultiplier; | ||||
| // Handle displayBase | |||||
| if (displayBase == 0.f) { | if (displayBase == 0.f) { | ||||
| // Linear | // Linear | ||||
| // v is unchanged | // v is unchanged | ||||
| @@ -97,6 +103,10 @@ void ParamQuantity::setDisplayValue(float displayValue) { | |||||
| // Exponential | // Exponential | ||||
| v = std::log(v) / std::log(displayBase); | v = std::log(v) / std::log(displayBase); | ||||
| } | } | ||||
| if (std::isnan(v)) | |||||
| return; | |||||
| setValue(v); | setValue(v); | ||||
| } | } | ||||