diff options
Diffstat (limited to 'src/zoomslider.cc')
-rw-r--r-- | src/zoomslider.cc | 117 |
1 files changed, 67 insertions, 50 deletions
diff --git a/src/zoomslider.cc b/src/zoomslider.cc index 0a2abb1..3b03ff0 100644 --- a/src/zoomslider.cc +++ b/src/zoomslider.cc @@ -29,80 +29,97 @@ #include <QPainter> ZoomSlider::ZoomSlider(Qt::Orientation orientation) - : QSlider(orientation) + : QSlider(orientation) { - inverted = false; - from = 0; - to = 1; - tick_width = 0.1; + inverted = false; + from = 0; + to = 1; + tick_width = 0.1; - connect(this, SIGNAL(valueChanged(int)), this, SLOT(sliderValueChanged(int))); + connect(this, SIGNAL(valueChanged(int)), this, SLOT(sliderValueChanged(int))); } void ZoomSlider::paintEvent(QPaintEvent *ev) { - /* - QPainter p(this); - p.drawLine(0, 0, width(), height()); - */ - QSlider::paintEvent(ev); + /* + QPainter p(this); + p.drawLine(0, 0, width(), height()); + */ + QSlider::paintEvent(ev); } void ZoomSlider::setRange(float from, float to) { - this->inverted = false; - this->from = from; - this->to = to; - - int i_from = from / tick_width; - int i_to = to / tick_width; - - if(i_from > i_to) { - this->inverted = true; - int tmp; - tmp = i_from; - i_from = i_to; - i_to = tmp; - } - - QSlider::setRange(i_from, i_to); + this->inverted = false; + this->from = from; + this->to = to; + + int i_from = from / tick_width; + int i_to = to / tick_width; + + if(i_from > i_to) + { + this->inverted = true; + int tmp; + tmp = i_from; + i_from = i_to; + i_to = tmp; + } + + QSlider::setRange(i_from, i_to); } float ZoomSlider::fromSlider(int value) { - float val = (float)value * tick_width; - - if(inverted) { - val *= -1; - val = val - to + from; - - if(value == QSlider::minimum()) val = from; - if(value == QSlider::maximum()) val = to; - } else { - if(value == QSlider::minimum()) val = from; - if(value == QSlider::maximum()) val = to; - } - - return val; + float val = (float)value * tick_width; + + if(inverted) + { + val *= -1; + val = val - to + from; + + if(value == QSlider::minimum()) + { + val = from; + } + if(value == QSlider::maximum()) + { + val = to; + } + } + else + { + if(value == QSlider::minimum()) + { + val = from; + } + if(value == QSlider::maximum()) + { + val = to; + } + } + + return val; } void ZoomSlider::sliderValueChanged(int value) { - emit valueChanged(fromSlider(value)); + emit valueChanged(fromSlider(value)); } void ZoomSlider::setTickWidth(float tick_width) { - this->tick_width = tick_width; - setRange(from, to); // Update slider value span. + this->tick_width = tick_width; + setRange(from, to); // Update slider value span. } void ZoomSlider::setValue(float value) { - int i_value = value * tick_width; - if(inverted) { - i_value *= -1; - i_value += from; - } - QSlider::setValue(i_value); + int i_value = value * tick_width; + if(inverted) + { + i_value *= -1; + i_value += from; + } + QSlider::setValue(i_value); } |