void SimpleVolumeMeter::_updateValueDisplays( Size sz ) { int length = sz.h; int width = sz.w; if (m_direction == Direction::Left || m_direction == Direction::Right) std::swap(length, width); m_iGap = (int)(width * m_fGap); if( m_iGap == 0 && m_fGap > 0.f ) m_iGap = 1; m_iSidePadding = (int) (width * m_fSidePadding); if( m_iSidePadding == 0 && m_fSidePadding > 0.f ) m_iSidePadding = 1; m_iHoldHeight = (int) m_fHoldHeight * length; if( m_iHoldHeight == 0 && m_fHoldHeight > 0.f ) m_iHoldHeight = 1; m_iSectionHeight[0] = (int) (m_fSectionHeight[0] * length + 0.5f); m_iSectionHeight[1] = ((int)((m_fSectionHeight[0] + m_fSectionHeight[1]) * length + 0.5f)) - m_iSectionHeight[0]; m_iSectionHeight[2] = length - m_iSectionHeight[1] - m_iSectionHeight[0]; m_iPeak[0] = (int) m_fPeak[0] * length; m_iPeak[1] = (int) m_fPeak[1] * length; m_iHold[0] = _calcIHold(m_fHold[0], sz); m_iHold[1] = _calcIHold(m_fHold[1], sz); }
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; }
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::_updateIValues( Size sz ) { m_iGap = (int) (sz.w * m_fGap); if( m_iGap == 0 && m_fGap > 0.f ) m_iGap = 1; m_iSidePadding = (int) (sz.w * m_fSidePadding); if( m_iSidePadding == 0 && m_fSidePadding > 0.f ) m_iSidePadding = 1; m_iHoldHeight = (int) m_fHoldHeight * sz.h; if( m_iHoldHeight == 0 && m_fHoldHeight > 0.f ) m_iHoldHeight = 1; m_iSectionHeight[0] = (int) (m_fSectionHeight[0] * sz.h + 0.5f); m_iSectionHeight[1] = ((int)((m_fSectionHeight[0] + m_fSectionHeight[1]) * sz.h + 0.5f)) - m_iSectionHeight[0]; m_iSectionHeight[2] = sz.h - m_iSectionHeight[1] - m_iSectionHeight[0]; m_iPeak[0] = (int) m_fPeak[0] * sz.h; m_iPeak[1] = (int) m_fPeak[1] * sz.h; m_iHold[0] = _calcIHold( m_fHold[0], sz.h ); m_iHold[1] = _calcIHold( m_fHold[1], sz.h ); }