8 :
QScrollBar(parent), mTransform(trans), mVleft(0), mVmaxScroll(0), mVieportWidth(0), mHandleSliderChange(true)
13 int WaveScrollbar::toUInt(
double v)
16 return (
int) floor(v+0.5);
22 mVieportWidth = visibleWidth;
23 quint64 vmax = mTransform->
vMax();
24 if (vmax <= visibleWidth)
30 mVmaxScroll = vmax - visibleWidth;
31 if (mVmaxScroll < 4096)
37 void WaveScrollbar::setVleftIntern(
double v)
46 double oldVleft = mVleft;
48 if (!mVmaxScroll)
return;
49 double prod = deltaScale * (tEvent - mTransform->
tMin());
50 double newVleft = prod + oldVleft;
64 mHandleSliderChange =
false;
68 setValue(toUInt(mVleft * 4096. / mVmaxScroll));
69 mHandleSliderChange =
true;
80 if (change == SliderChange::SliderValueChange &&
81 (!mHandleSliderChange ||
value() == mLastValue))
return;
85 setVleftIntern(
value());
88 int dx = mLastValue -
value();
91 double v = mVleft - dx * mVieportWidth / 2;
94 setValue(toUInt(mVleft * 4096. / mVmaxScroll));
97 setVleftIntern(toUInt(
value() * mVmaxScroll / 4096.));
104 return mTransform->
vPos(t) - mVleft;
109 double v = mTransform->
vPos(t);
110 if (v < mVleft)
return -1;
111 return toUInt(v - mVleft);
121 return floor(
tPosF(
x)+0.5);
131 return floor(
tLeftF()+0.5);