commit eff1c6f578045e790f61d65afa97c5b18c6f77cf
parent 7190f4da7661d00b23f48317f9e99f83fea0ea4f
Author: falkTX <falktx@falktx.com>
Date: Wed, 31 Aug 2022 13:49:51 +0100
Add overloaded double precision functions to parameter ranges
Diffstat:
1 file changed, 52 insertions(+), 2 deletions(-)
diff --git a/distrho/DistrhoPlugin.hpp b/distrho/DistrhoPlugin.hpp
@@ -362,7 +362,7 @@ struct ParameterRanges {
*/
float getNormalizedValue(const float& value) const noexcept
{
- const float normValue((value - min) / (max - min));
+ const float normValue = (value - min) / (max - min);
if (normValue <= 0.0f)
return 0.0f;
@@ -372,6 +372,21 @@ struct ParameterRanges {
}
/**
+ Get a value normalized to 0.0<->1.0.
+ Overloaded function using double precision values.
+ */
+ double getNormalizedValue(const double& value) const noexcept
+ {
+ const double normValue = (value - min) / (max - min);
+
+ if (normValue <= 0.0)
+ return 0.0;
+ if (normValue >= 1.0)
+ return 1.0;
+ return normValue;
+ }
+
+ /**
Get a value normalized to 0.0<->1.0, fixed within range.
*/
float getFixedAndNormalizedValue(const float& value) const noexcept
@@ -381,7 +396,7 @@ struct ParameterRanges {
if (value >= max)
return 1.0f;
- const float normValue((value - min) / (max - min));
+ const float normValue = (value - min) / (max - min);
if (normValue <= 0.0f)
return 0.0f;
@@ -392,6 +407,27 @@ struct ParameterRanges {
}
/**
+ Get a value normalized to 0.0<->1.0, fixed within range.
+ Overloaded function using double precision values.
+ */
+ double getFixedAndNormalizedValue(const double& value) const noexcept
+ {
+ if (value <= min)
+ return 0.0;
+ if (value >= max)
+ return 1.0;
+
+ const double normValue = (value - min) / (max - min);
+
+ if (normValue <= 0.0)
+ return 0.0;
+ if (normValue >= 1.0)
+ return 1.0;
+
+ return normValue;
+ }
+
+ /**
Get a proper value previously normalized to 0.0<->1.0.
*/
float getUnnormalizedValue(const float& value) const noexcept
@@ -403,6 +439,20 @@ struct ParameterRanges {
return value * (max - min) + min;
}
+
+ /**
+ Get a proper value previously normalized to 0.0<->1.0.
+ Overloaded function using double precision values.
+ */
+ double getUnnormalizedValue(const double& value) const noexcept
+ {
+ if (value <= 0.0)
+ return min;
+ if (value >= 1.0)
+ return max;
+
+ return value * (max - min) + min;
+ }
};
/**