@@ -146,9 +146,6 @@ open class FDWaveformView: UIView {
146146 /// If this number is not available then a re-render will be performed
147147 private var verticalOverdrawAllowed = 1.0 ... 3.0
148148
149- /// The "zero" level (in dB)
150- fileprivate let noiseFloor : CGFloat = - 50.0
151-
152149 /// Minimum number of samples that can be displayed (limits maximum zoom)
153150 private let minimumZoomSamples = 10
154151
@@ -203,15 +200,6 @@ open class FDWaveformView: UIView {
203200 return window? . screen. scale ?? UIScreen . main. scale
204201 }
205202
206- /// Waveform type for rendering waveforms
207- //TODO: make this public after reconciling FDWaveformView.WaveformType and FDWaveformType
208- var waveformRenderType : FDWaveformType {
209- switch waveformType {
210- case . linear: return . linear
211- case . logarithmic: return . logarithmic( noiseFloor: noiseFloor)
212- }
213- }
214-
215203 /// Represents the status of the waveform renderings
216204 fileprivate enum CacheStatus {
217205 case dirty
@@ -341,7 +329,7 @@ open class FDWaveformView: UIView {
341329 func isWaveformRenderOperationDirty( _ renderOperation: FDWaveformRenderOperation ? ) -> Bool ? {
342330 guard let renderOperation = renderOperation else { return nil }
343331
344- if renderOperation. format. type != waveformRenderType {
332+ if renderOperation. format. type != waveformType {
345333 return true
346334 }
347335 if renderOperation. format. scale != desiredImageScale {
@@ -460,7 +448,7 @@ open class FDWaveformView: UIView {
460448 let heightInPixels = frame. height * CGFloat( horizontalOverdrawTarget)
461449 let imageSize = CGSize ( width: widthInPixels, height: heightInPixels)
462450 let renderFormat = FDWaveformRenderFormat (
463- type: waveformRenderType , wavesColor: . black, scale: desiredImageScale)
451+ type: waveformType , wavesColor: . black, scale: desiredImageScale)
464452
465453 let waveformRenderOperation = FDWaveformRenderOperation (
466454 dataSource: dataSource, totalSamples: totalSamples, imageSize: imageSize,
@@ -488,61 +476,6 @@ open class FDWaveformView: UIView {
488476 }
489477}
490478
491- //TODO: make this public after reconciling FDWaveformView.WaveformType and FDWaveformType
492- enum FDWaveformType : Equatable {
493- /// Waveform is rendered using a linear scale
494- case linear
495-
496- /// Waveform is rendered using a logarithmic scale
497- /// noiseFloor: The "zero" level (in dB)
498- case logarithmic( noiseFloor: CGFloat )
499-
500- // See http://stackoverflow.com/questions/24339807/how-to-test-equality-of-swift-enums-with-associated-values
501- public static func == ( lhs: FDWaveformType , rhs: FDWaveformType ) -> Bool {
502- switch lhs {
503- case . linear:
504- if case . linear = rhs {
505- return true
506- }
507- case . logarithmic( let lhsNoiseFloor) :
508- if case . logarithmic( let rhsNoiseFloor) = rhs {
509- return lhsNoiseFloor == rhsNoiseFloor
510- }
511- }
512- return false
513- }
514-
515- public var floorValue : CGFloat {
516- switch self {
517- case . linear: return 0
518- case . logarithmic( let noiseFloor) : return noiseFloor
519- }
520- }
521-
522- func process( normalizedSamples: inout [ Float ] ) {
523- switch self {
524- case . linear:
525- return
526-
527- case . logarithmic( let noiseFloor) :
528- // Convert normalized [0, 1] samples to dB scale
529- // Formula: dB = 20 * log10(amplitude)
530- // For amplitude in [0, 1]: dB ranges from -infinity to 0
531- // We use a small epsilon to avoid log(0) = -infinity
532- let epsilon : Float = 1e-10
533- for i in 0 ..< normalizedSamples. count {
534- let amplitude = max ( normalizedSamples [ i] , epsilon)
535- var dB = 20.0 * log10( amplitude)
536- // Clip to [noiseFloor, 0]
537- dB = max ( dB, Float ( noiseFloor) )
538- dB = min ( dB, 0 )
539- // Normalize to [0, 1] where 0 = noiseFloor and 1 = 0 dB
540- normalizedSamples [ i] = ( dB - Float( noiseFloor) ) / ( 0 - Float( noiseFloor) )
541- }
542- }
543- }
544- }
545-
546479extension FDWaveformView : UIGestureRecognizerDelegate {
547480 public func gestureRecognizer(
548481 _ gestureRecognizer: UIGestureRecognizer ,
@@ -666,9 +599,9 @@ extension FDWaveformView: UIGestureRecognizerDelegate {
666599 let clampedDelta = max ( maxBackwardDelta, min ( maxForwardDelta, wholeSampleDelta) )
667600
668601 if clampedDelta != 0 {
669- zoomSamples =
670- ( clampedZoomSamples. startIndex + clampedDelta)
671- ..< ( clampedZoomSamples . endIndex + clampedDelta )
602+ let newStart = clampedZoomSamples . startIndex + clampedDelta
603+ let newEnd = clampedZoomSamples. endIndex + clampedDelta
604+ zoomSamples = newStart ..< newEnd
672605 }
673606
674607 accumulatedPanDelta -= CGFloat ( wholeSampleDelta)
0 commit comments