! @excsafety{No-fail} */
| 830 | |
| 831 | /*! @excsafety{No-fail} */ |
| 832 | void Envelope::SetTrackLen( double trackLen, double sampleDur ) |
| 833 | { |
| 834 | // Preserve the left-side limit at trackLen. |
| 835 | auto range = EqualRange( trackLen, sampleDur ); |
| 836 | bool needPoint = ( range.first == range.second && trackLen < mTrackLen ); |
| 837 | double value=0.0; |
| 838 | if ( needPoint ) |
| 839 | value = GetValueRelative( trackLen ); |
| 840 | |
| 841 | mTrackLen = trackLen; |
| 842 | |
| 843 | // Shrink the array. |
| 844 | // If more than one point already at the end, keep only the first of them. |
| 845 | int newLen = std::min( 1 + range.first, range.second ); |
| 846 | mEnv.resize( newLen ); |
| 847 | |
| 848 | ++mVersion; |
| 849 | |
| 850 | if ( needPoint ) |
| 851 | AddPointAtEnd( mTrackLen, value ); |
| 852 | } |
| 853 | |
| 854 | /*! @excsafety{No-fail} */ |
| 855 | void Envelope::RescaleTimes( double newLength ) |
no test coverage detected