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
This commit is contained in:
Jérôme Duval
2007-03-18 23:32:27 +00:00
parent 8cf2f7dedd
commit 18108ef7de
2 changed files with 28 additions and 4 deletions
+26 -2
View File
@@ -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<channelCount; i++) {
if (minimum[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<channelCount; i++) {
minimum[i] = fChannelMin[fromChannel + i];
maximum[i] = fChannelMax[fromChannel + i];
}
return B_OK;
}
+2 -2
View File
@@ -573,7 +573,7 @@ BChannelSlider::ThumbDeltaFor(int32 channel)
if (channel >= 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