@ -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 ) ;
}