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,
|
BChannelControl::SetLimitsFor(int32 fromChannel, int32 channelCount,
|
||||||
const int32 *minimum, const int32 *maximum)
|
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,
|
BChannelControl::GetLimitsFor(int32 fromChannel, int32 channelCount,
|
||||||
int32 *minimum, int32 *maximum) const
|
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()) {
|
if (channel >= 0 && channel < MaxChannelCount()) {
|
||||||
float range = ThumbRangeFor(channel);
|
float range = ThumbRangeFor(channel);
|
||||||
int32 limitRange = MaxLimitList()[channel] - MinLimitList()[channel];
|
int32 limitRange = MaxLimitList()[channel] - MinLimitList()[channel];
|
||||||
delta = ValueList()[channel] * range / limitRange;
|
delta = (ValueList()[channel] - MinLimitList()[channel]) * range / limitRange;
|
||||||
|
|
||||||
if (Vertical())
|
if (Vertical())
|
||||||
delta = range - delta;
|
delta = range - delta;
|
||||||
@@ -814,7 +814,7 @@ BChannelSlider::MouseMovedCommon(BPoint point, BPoint point2)
|
|||||||
else
|
else
|
||||||
floatValue = range + (point.x - fMinpoint);
|
floatValue = range + (point.x - fMinpoint);
|
||||||
|
|
||||||
int32 value = (int32)(floatValue / range * limitRange);
|
int32 value = (int32)(floatValue / range * limitRange) + MinLimitList()[fCurrentChannel];
|
||||||
if (fAllChannels)
|
if (fAllChannels)
|
||||||
SetAllValue(value);
|
SetAllValue(value);
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user