void SimpleVolumeMeter::setValue( float peak, float hold ) { limit( peak, 0.f, 1.f ); limit( hold, 0.f, 1.f ); m_fPeak[0] = peak; m_fHold[0] = hold; Rect canvas = m_pSkin ? m_pSkin->contentRect( size(), m_state ) : Rect(size()); int length = (m_direction == Direction::Left || m_direction == Direction::Right) ? canvas.w : canvas.h; int iPeak = (int) (peak * length); int iHold = _calcIHold(hold, canvas.size()); if( m_bStereo ) { m_bStereo = false; _requestRender(); } else if( m_iPeak[0] != iPeak || m_iHold[0] != iHold ) { _requestRenderPartial( canvas, iPeak, iHold, 0, 0 ); } m_iPeak[0] = iPeak; m_iHold[0] = iHold; }
void SimpleVolumeMeter::setValue( float leftPeak, float leftHold, float rightPeak, float rightHold ) { limit( leftPeak, 0.f, 1.f ); limit( leftHold, 0.f, 1.f ); limit( rightPeak, 0.f, 1.f ); limit( rightHold, 0.f, 1.f ); m_fPeak[0] = leftPeak; m_fPeak[1] = rightPeak; m_fHold[0] = leftHold; m_fHold[1] = rightHold; Rect canvas = m_pSkin ? m_pSkin->contentRect( size(), m_state ) : Rect(size()); int iPeakL = (int) leftPeak * canvas.h; int iPeakR = rightPeak * canvas.h; int iHoldL = _calcIHold(leftHold, canvas.h); int iHoldR = _calcIHold(rightHold, canvas.h); if( !m_bStereo ) { m_bStereo = true; _requestRender(); } else if( m_iPeak[0] != iPeakL || m_iHold[0] != iHoldL || m_iPeak[1] != iPeakR || m_iHold[1] != iHoldR ) { _requestRenderPartial( canvas, iPeakL, iHoldL, iPeakR, iHoldR ); } m_iPeak[0] = iPeakL; m_iPeak[1] = iPeakR; m_iHold[0] = iHoldL; m_iHold[1] = iHoldR; }