14ScrollBar::ScrollBar(Orientation orientation, 
float rangeMin, 
float rangeMax)
 
   15    : m_Orientation(orientation), m_RangeMin(rangeMin), m_RangeMax(rangeMax)
 
   18    setSkin(m_DefaultSkin);
 
   21Orientation ScrollBar::getOrientation()
 const { 
return m_Orientation; }
 
   23float ScrollBar::getRangeMin()
 const { 
return m_RangeMin; }
 
   25void ScrollBar::setRangeMin(
float min)
 
   27    assert(min < m_RangeMax);
 
   30    if (m_Value < m_RangeMin)
 
   36float ScrollBar::getRangeMax()
 const { 
return m_RangeMax; }
 
   38void ScrollBar::setRangeMax(
float max)
 
   40    assert(m_RangeMin < max);
 
   43    if (m_Value > m_RangeMax)
 
   49float ScrollBar::getValue()
 const { 
return m_Value; }
 
   51void ScrollBar::setValue(
float value)
 
   53    float oldValue = m_Value;
 
   56    m_Value = std::max(m_Value, m_RangeMin);
 
   57    m_Value = std::min(m_Value, m_RangeMax);
 
   59    if (getOnPropertyChange() != 
nullptr && m_Value != oldValue)
 
   61        getOnPropertyChange()->onPropertyChange(
new Sml::PropertyChangeEvent<float>(oldValue, m_Value));
 
   65float ScrollBar::getIncrement()
 const { 
return m_Increment; }
 
   66void ScrollBar::setIncrement(
float increment) { m_Increment = increment; }
 
   68float ScrollBar::getVisibleRange()
 const { 
return m_VisibleRange; }
 
   69void ScrollBar::setVisibleRange(
float visibleRange) { m_VisibleRange = visibleRange; }
 
   71void ScrollBar::setOnPropertyChange(Sml::PropertyChangeListener<float>* listener)
 
   73    m_PropertyChangeListener = listener;
 
   76Sml::PropertyChangeListener<float>* ScrollBar::getOnPropertyChange() { 
return m_PropertyChangeListener; }