mirror of
https://github.com/cookiengineer/audacity
synced 2025-04-29 15:19:44 +02:00
Add "offset" to SliderTextCtrl widget
This parameter adds an offset to the value before calculating the logarithm to tweak the scaling of the slider. Signed-off-by: Max Maisel <max.maisel@posteo.de>
This commit is contained in:
parent
fd4276e3f2
commit
dec7e72abc
@ -618,7 +618,7 @@ wxSlider * ShuttleGuiBase::AddSlider(
|
||||
|
||||
SliderTextCtrl* ShuttleGuiBase::AddSliderTextCtrl(
|
||||
const TranslatableString &Prompt, double pos, double Max, double Min,
|
||||
int precision, double* value, double scale)
|
||||
int precision, double* value, double scale, double offset)
|
||||
{
|
||||
HandleOptionality( Prompt );
|
||||
AddPrompt( Prompt );
|
||||
@ -627,7 +627,7 @@ SliderTextCtrl* ShuttleGuiBase::AddSliderTextCtrl(
|
||||
return wxDynamicCast(wxWindow::FindWindowById( miId, mpDlg), SliderTextCtrl);
|
||||
SliderTextCtrl * pSlider;
|
||||
mpWind = pSlider = safenew SliderTextCtrl(GetParent(), miId,
|
||||
pos, Min, Max, precision, scale, wxDefaultPosition, wxDefaultSize,
|
||||
pos, Min, Max, precision, scale, offset, wxDefaultPosition, wxDefaultSize,
|
||||
GetStyle( SliderTextCtrl::HORIZONTAL ),
|
||||
value
|
||||
);
|
||||
|
@ -267,7 +267,7 @@ public:
|
||||
|
||||
SliderTextCtrl* AddSliderTextCtrl(
|
||||
const TranslatableString &Prompt, double pos, double Max, double Min = 0,
|
||||
int precision = 2, double* value = NULL, double scale = 0);
|
||||
int precision = 2, double* value = NULL, double scale = 0, double offset = 0);
|
||||
|
||||
// Pass the same initValue to the sequence of calls to AddRadioButton and
|
||||
// AddRadioButtonToGroup.
|
||||
|
@ -29,7 +29,8 @@ wxDEFINE_EVENT(cEVT_SLIDERTEXT, wxCommandEvent);
|
||||
|
||||
SliderTextCtrl::SliderTextCtrl(wxWindow *parent, wxWindowID winid,
|
||||
double value, double min, double max, int precision, double scale,
|
||||
const wxPoint& pos, const wxSize& size, long style, double* varValue)
|
||||
double offset, const wxPoint& pos, const wxSize& size, long style,
|
||||
double* varValue)
|
||||
: wxPanelWrapper(parent, winid, pos, size, wxWS_EX_VALIDATE_RECURSIVELY)
|
||||
{
|
||||
m_log = style & LOG;
|
||||
@ -38,6 +39,7 @@ SliderTextCtrl::SliderTextCtrl(wxWindow *parent, wxWindowID winid,
|
||||
m_min = min;
|
||||
m_max = max;
|
||||
m_zero = -std::numeric_limits<double>::infinity();
|
||||
m_offset = offset;
|
||||
|
||||
if(m_int)
|
||||
{
|
||||
@ -62,13 +64,13 @@ SliderTextCtrl::SliderTextCtrl(wxWindow *parent, wxWindowID winid,
|
||||
min = m_zero;
|
||||
}
|
||||
else
|
||||
min = log10(min);
|
||||
min = log10(min + m_offset);
|
||||
|
||||
if(value <= 0.0)
|
||||
value = m_zero;
|
||||
else
|
||||
value = log10(value);
|
||||
max = log10(max);
|
||||
value = log10(value + m_offset);
|
||||
max = log10(max + m_offset);
|
||||
}
|
||||
|
||||
m_sizer = safenew wxBoxSizer(
|
||||
@ -118,7 +120,7 @@ void SliderTextCtrl::OnTextChange(wxCommandEvent& event)
|
||||
if(m_value == 0.0)
|
||||
value = m_zero;
|
||||
else
|
||||
value = log10(m_value);
|
||||
value = log10(m_value + m_offset);
|
||||
}
|
||||
m_slider->SetValue(round(value * m_scale));
|
||||
event.SetEventType(cEVT_SLIDERTEXT);
|
||||
@ -134,7 +136,7 @@ void SliderTextCtrl::OnSlider(wxCommandEvent& event)
|
||||
m_value = 0.0;
|
||||
else
|
||||
{
|
||||
m_value = pow(10.0, m_value);
|
||||
m_value = pow(10.0, m_value) - m_offset;
|
||||
m_value = std::max(m_min, m_value);
|
||||
m_value = std::min(m_max, m_value);
|
||||
}
|
||||
|
@ -37,7 +37,8 @@ class SliderTextCtrl : public wxPanelWrapper
|
||||
|
||||
SliderTextCtrl(wxWindow *parent, wxWindowID winid,
|
||||
double value, double min, double max, int precision = 2,
|
||||
double scale = 0, const wxPoint& pos = wxDefaultPosition,
|
||||
double scale = 0, double offset = 0,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize, long style = HORIZONTAL,
|
||||
double* varValue = NULL);
|
||||
|
||||
@ -69,6 +70,7 @@ class SliderTextCtrl : public wxPanelWrapper
|
||||
double m_min;
|
||||
double m_max;
|
||||
double m_zero;
|
||||
double m_offset;
|
||||
wxString m_format;
|
||||
|
||||
DECLARE_EVENT_TABLE()
|
||||
|
Loading…
x
Reference in New Issue
Block a user