Пример #1
0
	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;
	}
Пример #2
0
	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;

	}