commit 3446ecd6ae8a3c240196cb57b23d3d27f2c657a3
parent a49d349c69870493d63500f4404712f82ff2cb88
Author: Christopher A. Oliver <caowasteland@gmail.com>
Date: Fri, 13 Nov 2015 05:43:04 -0500
Fix formant filter center freq and range outputs.
Fix bug with slow drag where widget has a step of 1.
Use step_ for variable since step() has meaning in fltk.
Diffstat:
2 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/src/UI/FilterUI.fl b/src/UI/FilterUI.fl
@@ -361,40 +361,40 @@ formantfiltergraph->redraw();}
label {Num.Formants}
callback {update_formant_window();
formantfiltergraph->redraw();}
- xywh {485 15 65 20} type Simple labelfont 1 labelsize 10 align 5 minimum 0 maximum 127 step 1
+ xywh {485 15 65 20} type Simple labelfont 0 labelsize 10 align 5 minimum 0 maximum 127 step 1
code0 {o->bounds(1,FF_MAX_FORMANTS);}
code1 {o->init("Pnumformants");}
class Fl_Osc_Counter
}
Fl_Dial frsldial {
label {Fr.Sl.}
- tooltip {Formant's Slowness (Morphing)} xywh {565 15 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 align 1 maximum 127 step 1
+ tooltip {Formant's Slowness (Morphing)} xywh {565 15 25 25} box ROUND_UP_BOX labelfont 0 labelsize 10 align 1 maximum 127 step 1
code0 {o->init("Pformantslowness");}
class Fl_Osc_Dial
}
Fl_Value_Output centerfreqvo {
label {C.f.}
callback {o->value(o->newvalue()/1000.0);}
- tooltip {Center Frequency (kHz)} xywh {515 164 33 18} when 3 minimum 1 maximum 10 step 0.01 value 1 textfont 1
+ tooltip {Center Frequency (kHz)} xywh {511 164 40 18} when 3 minimum 1 maximum 10 step 0.01 value 1 textfont 1 textsize 11 labelsize 13
code0 {o->init("centerfreq");}
class Fl_Osc_Output
}
Fl_Value_Output octavesfreqvo {
label {Oct.}
callback {o->value(o->newvalue());}
- tooltip {No. of octaves} xywh {515 182 33 18} when 3 minimum 1 maximum 127 step 1 value 5 textfont 1
+ tooltip {No. of octaves} xywh {511 182 40 18} when 3 minimum 1 maximum 127 step 0.01 value 5 textfont 1 textsize 11 labelsize 13
code0 {o->init("octavesfreq");}
class Fl_Osc_Output
}
Fl_Slider cfknob {
- callback {/*formantfiltergraph->redraw();*/}
- xywh {551 167 84 15} type {Horz Knob} box FLAT_BOX maximum 127
+ callback {centerfreqvo->update();}
+ xywh {555 167 84 15} type {Horz Knob} box FLAT_BOX maximum 127
code0 {o->init("Pcenterfreq", 'i');}
class Fl_Osc_Slider
}
Fl_Slider octknob {
- callback {/*formantfiltergraph->redraw();*/}
- xywh {551 185 84 15} type {Horz Knob} box FLAT_BOX maximum 127
+ callback {octavesfreqvo->update();}
+ xywh {555 185 84 15} type {Horz Knob} box FLAT_BOX maximum 127
code0 {o->init("Poctavesfreq", 'i');}
class Fl_Osc_Slider
}
@@ -405,7 +405,7 @@ formantfiltergraph->redraw();}
}
Fl_Dial wvknob {
label {Vw.Cl.}
- tooltip {Vowel "clearness" (how the mixed vowels are avoided)} xywh {600 15 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 align 1 maximum 127 step 1
+ tooltip {Vowel "clearness" (how the mixed vowels are avoided)} xywh {600 15 25 25} box ROUND_UP_BOX labelfont 0 labelsize 10 align 1 maximum 127 step 1
code0 {o->init("Pvowelclearness");}
class Fl_Osc_Dial
}
@@ -421,7 +421,7 @@ formantfiltergraph->redraw();}
}
Fl_Box {} {
label Vowel
- xywh {635 10 55 15}
+ xywh {635 6 55 15} labelfont 1
}
}
}
diff --git a/src/UI/Fl_Osc_Slider.cpp b/src/UI/Fl_Osc_Slider.cpp
@@ -102,8 +102,10 @@ int Fl_Osc_Slider::handle(int ev, int X, int Y, int W, int H)
{
float range = maximum() - minimum();
float absrng = range > 0 ? range : -range;
+ float step_ = step();
+ if (step_ == 0) step_ = 1;
- if (absrng / W / step() > 32 && Fl::event_button1())
+ if (absrng / W / step_ > 32 && Fl::event_button1())
denominator = 0.25;
if (range < 0)
denominator *= -1;
@@ -111,23 +113,23 @@ int Fl_Osc_Slider::handle(int ev, int X, int Y, int W, int H)
break;
case FL_MOUSEWHEEL:
if (this == Fl::belowmouse() && Fl::e_dy != 0) {
- int step = 1, divisor = 16;
+ int step_ = 1, divisor = 16;
switch (Fl::event_state() & ( FL_CTRL | FL_SHIFT)) {
case FL_SHIFT:
- step = 8;
+ step_ = 8;
case FL_SHIFT | FL_CTRL:
break;
case FL_CTRL:
divisor = 128;
default:
- step = (fabs(maximum() - minimum()) + 1) / divisor;
- if (step < 1)
- step = 1;
+ step_ = (fabs(maximum() - minimum()) + 1) / divisor;
+ if (step_ < 1)
+ step_ = 1;
}
int dy = minimum() <= maximum() ? -Fl::e_dy : Fl::e_dy;
// Flip sense for vertical sliders.
dy = this->horizontal() ? dy : -dy;
- handle_drag(clamp(value() + step * dy));
+ handle_drag(clamp(value() + step_ * dy));
}
return 1;
case FL_RELEASE: