From 18108ef7ded281e17e76bc6e411062f6355685aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Sun, 18 Mar 2007 23:32:27 +0000 Subject: [PATCH] applied minimums to values computations implemented SetLimitsFor() and GetLimitsFor() git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20391 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/ChannelControl.cpp | 28 +++++++++++++++++++++++++-- src/kits/interface/ChannelSlider.cpp | 4 ++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/kits/interface/ChannelControl.cpp b/src/kits/interface/ChannelControl.cpp index bd4439d2a0..a6907eebe1 100644 --- a/src/kits/interface/ChannelControl.cpp +++ b/src/kits/interface/ChannelControl.cpp @@ -439,7 +439,19 @@ status_t BChannelControl::SetLimitsFor(int32 fromChannel, int32 channelCount, const int32 *minimum, const int32 *maximum) { - return B_ERROR; + if (fromChannel + channelCount > CountChannels()) + channelCount = CountChannels() - fromChannel; + for (int i=0; i maximum[i]) + return B_BAD_VALUE; + fChannelMin[fromChannel + i] = minimum[i]; + fChannelMax[fromChannel + i] = maximum[i]; + if (fChannelValues[fromChannel + i] < minimum[i]) + fChannelValues[fromChannel + i] = minimum[i]; + else if (fChannelValues[fromChannel + i] > maximum[i]) + fChannelValues[fromChannel + i] = maximum[i]; + } + return B_OK; } @@ -447,7 +459,19 @@ status_t BChannelControl::GetLimitsFor(int32 fromChannel, int32 channelCount, int32 *minimum, int32 *maximum) const { - return B_ERROR; + if (minimum == NULL || maximum == NULL) + return B_BAD_VALUE; + + if (fChannelMin == NULL || fChannelMax == NULL) + return B_ERROR; + if (fromChannel + channelCount > CountChannels()) + channelCount = CountChannels() - fromChannel; + for (int i=0; i= 0 && channel < MaxChannelCount()) { float range = ThumbRangeFor(channel); int32 limitRange = MaxLimitList()[channel] - MinLimitList()[channel]; - delta = ValueList()[channel] * range / limitRange; + delta = (ValueList()[channel] - MinLimitList()[channel]) * range / limitRange; if (Vertical()) delta = range - delta; @@ -814,7 +814,7 @@ BChannelSlider::MouseMovedCommon(BPoint point, BPoint point2) else floatValue = range + (point.x - fMinpoint); - int32 value = (int32)(floatValue / range * limitRange); + int32 value = (int32)(floatValue / range * limitRange) + MinLimitList()[fCurrentChannel]; if (fAllChannels) SetAllValue(value); else