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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user