From 0c82988b44a930600bbfc8af031d0a7d2fef8dd6 Mon Sep 17 00:00:00 2001 From: Juho Hiltunen Date: Tue, 25 Oct 2022 19:04:09 +0300 Subject: [PATCH] cleanup: refactor and remove duplication from SetSpeed() implementations. --- src/libespeak-ng/setlengths.c | 46 +++++++++++++++++------------------ 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/src/libespeak-ng/setlengths.c b/src/libespeak-ng/setlengths.c index 6cd18497..eaf933f5 100644 --- a/src/libespeak-ng/setlengths.c +++ b/src/libespeak-ng/setlengths.c @@ -40,6 +40,7 @@ static void SetSpeedFactors(voice_t *voice, int x, int *speed1, int *speed2, int *speed3); static void SetSpeedMods(SPEED_FACTORS *speed, int voiceSpeedF1, int wpm, int x); +static void SetSpeedMultiplier(int *x, int *wpm); extern int saved_parameters[]; @@ -193,18 +194,7 @@ void SetSpeed(int control) return; } - if (wpm > espeakRATE_MAXIMUM) - wpm = espeakRATE_MAXIMUM; - - wpm2 = wpm; - if (wpm > 359) wpm2 = 359; - if (wpm < espeakRATE_MINIMUM) wpm2 = espeakRATE_MINIMUM; - x = speed_lookup[wpm2-espeakRATE_MINIMUM]; - - if (wpm >= 380) - x = 7; - if (wpm >= 400) - x = 6; + SetSpeedMultiplier(&x, &wpm); if (control & 1) { SetSpeedFactors(voice, x, &speed1, &speed2, &speed3); @@ -234,18 +224,8 @@ void SetSpeed(int control) if (voice->speed_percent > 0) wpm = (wpm * voice->speed_percent)/100; - if (wpm > espeakRATE_MAXIMUM) - wpm = espeakRATE_MAXIMUM; - wpm2 = wpm; - if (wpm > 359) wpm2 = 359; - if (wpm < espeakRATE_MINIMUM) wpm2 = espeakRATE_MINIMUM; - x = speed_lookup[wpm2-espeakRATE_MINIMUM]; - - if (wpm >= 380) - x = 7; - if (wpm >= 400) - x = 6; + SetSpeedMultiplier(&x, &wpm); if (control & 1) { SetSpeedFactors(voice, x, &speed1, &speed2, &speed3); @@ -259,6 +239,26 @@ void SetSpeed(int control) #endif +static void SetSpeedMultiplier(int *x, int *wpm) { + int wpm2; + + if (*wpm > espeakRATE_MAXIMUM) + *wpm = espeakRATE_MAXIMUM; + + wpm2 = *wpm; + if (*wpm > 359) wpm2 = 359; + if (*wpm < espeakRATE_MINIMUM) { + wpm2 = espeakRATE_MINIMUM; + } + + *x = speed_lookup[wpm2-espeakRATE_MINIMUM]; + + if (*wpm >= 380) + *x = 7; + if (*wpm >= 400) + *x = 6; +} + static void SetSpeedFactors(voice_t *voice, int x, int *speed1, int *speed2, int *speed3) { // set speed factors for different syllable positions within a word // these are used in CalcLengths()