From c9a10c9b2eae8e25673fd3f4fa0ca4c8401d9fd8 Mon Sep 17 00:00:00 2001 From: Christian Colglazier Date: Mon, 8 Nov 2021 19:46:06 -0500 Subject: [PATCH] Float to string --- src/droplets/ad_droplet.cpp | 20 ++++++++++---------- src/util.cpp | 18 ++++++++++++++++++ src/util.h | 19 ++++++++++++++----- 3 files changed, 42 insertions(+), 15 deletions(-) diff --git a/src/droplets/ad_droplet.cpp b/src/droplets/ad_droplet.cpp index 4d7cd16..43422ff 100644 --- a/src/droplets/ad_droplet.cpp +++ b/src/droplets/ad_droplet.cpp @@ -110,21 +110,21 @@ void ADDroplet::Draw() { 10, Font_6x8, "A: " + - std::to_string(static_cast(1000*ad[0].GetAttack())) + - "ms"); + FloatToString(ad[0].GetAttack(), 2) + + "s"); WriteString(Patch(), GetScreenMin(), 20, Font_6x8, "D: " + - std::to_string(static_cast(1000*ad[0].GetDecay())) + - "ms"); + FloatToString(ad[0].GetDecay(), 2) + + "s"); WriteString(Patch(), GetScreenMin(), 30, Font_6x8, "C: " + - std::to_string(static_cast(1000*ad[0].GetCurve()))); + FloatToString(ad[0].GetCurve(), 2)); if(GetState() == DropletState::kFull) { int mid = (GetScreenMax() - GetScreenMin())/2; WriteString(Patch(), @@ -132,21 +132,21 @@ void ADDroplet::Draw() { 10, Font_6x8, "A: " + - std::to_string(static_cast(1000*ad[1].GetAttack())) + - "ms"); + FloatToString(ad[1].GetAttack(), 2) + + "s"); WriteString(Patch(), mid, 20, Font_6x8, "D: " + - std::to_string(static_cast(1000*ad[1].GetDecay())) + - "ms"); + FloatToString(ad[1].GetDecay(), 2) + + "s"); WriteString(Patch(), mid, 30, Font_6x8, "C: " + - std::to_string(static_cast(1000*ad[1].GetCurve()))); + FloatToString(ad[1].GetCurve(), 2)); } DrawName("AD"); } diff --git a/src/util.cpp b/src/util.cpp index e4f0c8f..47a99b7 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -115,3 +115,21 @@ std::string WaveToString(uint8_t wf) { } return ""; } + +std::string FloatToString(float num, int places) { + std::string sign = ""; + int integral = static_cast(num); + int fractional = static_cast((abs(num) - abs(integral)) + * pow(10, places)); + if (num < 0.0f && num > -1.0f) { + sign = "-"; + } + return sign + std::to_string(integral) + "." + std::to_string(fractional); +} + + + + + + + diff --git a/src/util.h b/src/util.h index dafdfd3..0252dd9 100644 --- a/src/util.h +++ b/src/util.h @@ -7,6 +7,7 @@ #include "daisy_patch.h" #include +#include using namespace daisy; using namespace daisysp; @@ -131,11 +132,19 @@ void WriteDoubleCentered(DaisyPatch* patch, std::string text); /* - * Converts oscilator to name of wave shape. - * - * @param wf wave shape - * @return name of wave shap - */ + * Converts oscilator to name of wave shape. + * + * @param wf wave shape + * @return name of wave shap + */ std::string WaveToString(uint8_t wf); +/* + * Converts float to formatted string. + * + * @param input number + * @param number of decimal places + */ +std::string FloatToString(float num, int places); + #endif // CASCADE_UTIL_H_