VLCEqualizerView.m 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /*****************************************************************************
  2. * VLCEqualizerView.m
  3. * VLC for iOS
  4. *****************************************************************************
  5. * Copyright (c) 2015 VideoLAN. All rights reserved.
  6. * $Id$
  7. *
  8. * Authors: Felix Paul Kühne <fkuehne # videolan dot org>
  9. *
  10. * Refer to the COPYING file of the official project for license.
  11. *****************************************************************************/
  12. #import "VLCEqualizerView.h"
  13. @interface VLCEqualizerView ()
  14. {
  15. UISlider *_preAmp_slider;
  16. UISlider *_60_slider;
  17. UISlider *_170_slider;
  18. UISlider *_310_slider;
  19. UISlider *_600_slider;
  20. UISlider *_1K_slider;
  21. UISlider *_3K_slider;
  22. UISlider *_6K_slider;
  23. UISlider *_12K_slider;
  24. UISlider *_14K_slider;
  25. UISlider *_16K_slider;
  26. }
  27. @end
  28. @implementation VLCEqualizerView
  29. - (instancetype)initWithFrame:(CGRect)frame
  30. {
  31. self = [super initWithFrame:frame];
  32. if (!self)
  33. return self;
  34. #define horizontal_padding 6.
  35. #define vertical_padding 8.
  36. #define spacer 8.
  37. CGFloat sliderHeight = frame.size.height - (vertical_padding * 2.);
  38. CGFloat sliderWidth = (frame.size.width - (spacer * 10.)) / 11.;
  39. CGFloat sliderY = (sliderHeight / 2.) - horizontal_padding;
  40. _preAmp_slider = [[UISlider alloc] initWithFrame:CGRectMake(-sliderWidth + horizontal_padding, sliderY, sliderHeight, sliderWidth)];
  41. _preAmp_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  42. _preAmp_slider.minimumValue = -20.;
  43. _preAmp_slider.maximumValue = 20.;
  44. [_preAmp_slider addTarget:self action:@selector(preampSliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  45. [self addSubview:_preAmp_slider];
  46. _60_slider = [[UISlider alloc] initWithFrame:CGRectMake(horizontal_padding * 2., sliderY, sliderHeight, sliderWidth)];
  47. _60_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  48. _60_slider.tag = 0;
  49. _60_slider.minimumValue = -20.;
  50. _60_slider.maximumValue = 20.;
  51. [_60_slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  52. [self addSubview:_60_slider];
  53. _170_slider = [[UISlider alloc] initWithFrame:CGRectMake(horizontal_padding * 3. + sliderWidth, sliderY, sliderHeight, sliderWidth)];
  54. _170_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  55. _170_slider.tag = 1;
  56. _170_slider.minimumValue = -20.;
  57. _170_slider.maximumValue = 20.;
  58. [_170_slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  59. [self addSubview:_170_slider];
  60. _310_slider = [[UISlider alloc] initWithFrame:CGRectMake(horizontal_padding * 4. + sliderWidth * 2., sliderY, sliderHeight, sliderWidth)];
  61. _310_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  62. _310_slider.tag = 2;
  63. _310_slider.minimumValue = -20.;
  64. _310_slider.maximumValue = 20.;
  65. [_310_slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  66. [self addSubview:_310_slider];
  67. _600_slider = [[UISlider alloc] initWithFrame:CGRectMake(horizontal_padding * 5. + sliderWidth * 3., sliderY, sliderHeight, sliderWidth)];
  68. _600_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  69. _600_slider.tag = 3;
  70. _600_slider.minimumValue = -20.;
  71. _600_slider.maximumValue = 20.;
  72. [_600_slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  73. [self addSubview:_600_slider];
  74. _1K_slider = [[UISlider alloc] initWithFrame:CGRectMake(horizontal_padding * 6. + sliderWidth * 4., sliderY, sliderHeight, sliderWidth)];
  75. _1K_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  76. _1K_slider.tag = 4;
  77. _1K_slider.minimumValue = -20.;
  78. _1K_slider.maximumValue = 20.;
  79. [_1K_slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  80. [self addSubview:_1K_slider];
  81. _3K_slider = [[UISlider alloc] initWithFrame:CGRectMake(horizontal_padding * 7. + sliderWidth * 5., sliderY, sliderHeight, sliderWidth)];
  82. _3K_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  83. _3K_slider.tag = 5;
  84. _3K_slider.minimumValue = -20.;
  85. _3K_slider.maximumValue = 20.;
  86. [_3K_slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  87. [self addSubview:_3K_slider];
  88. _6K_slider = [[UISlider alloc] initWithFrame:CGRectMake(horizontal_padding * 8. + sliderWidth * 6., sliderY, sliderHeight, sliderWidth)];
  89. _6K_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  90. _6K_slider.tag = 6;
  91. _6K_slider.minimumValue = -20.;
  92. _6K_slider.maximumValue = 20.;
  93. [_6K_slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  94. [self addSubview:_6K_slider];
  95. _12K_slider = [[UISlider alloc] initWithFrame:CGRectMake(horizontal_padding * 9. + sliderWidth * 7., sliderY, sliderHeight, sliderWidth)];
  96. _12K_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  97. _12K_slider.tag = 7;
  98. _12K_slider.minimumValue = -20.;
  99. _12K_slider.maximumValue = 20.;
  100. [_12K_slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  101. [self addSubview:_12K_slider],
  102. _14K_slider = [[UISlider alloc] initWithFrame:CGRectMake(horizontal_padding * 10. + sliderWidth * 8., sliderY, sliderHeight, sliderWidth)];
  103. _14K_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  104. _14K_slider.tag = 8;
  105. _14K_slider.minimumValue = -20.;
  106. _14K_slider.maximumValue = 20.;
  107. [_14K_slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  108. [self addSubview:_14K_slider];
  109. _16K_slider = [[UISlider alloc] initWithFrame:CGRectMake(horizontal_padding * 11. + sliderWidth * 9., sliderY, sliderHeight, sliderWidth)];
  110. _16K_slider.transform = CGAffineTransformMakeRotation(-M_PI_2);
  111. _16K_slider.tag = 9;
  112. _16K_slider.minimumValue = -20.;
  113. _16K_slider.maximumValue = 20.;
  114. [_16K_slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged];
  115. [self addSubview:_16K_slider];
  116. return self;
  117. }
  118. - (IBAction)sliderChangedValue:(UISlider *)sender
  119. {
  120. if (self.delegate)
  121. [self.delegate setAmplification:[sender value] forBand:[sender tag]];
  122. }
  123. - (IBAction)preampSliderChangedValue:(UISlider *)sender
  124. {
  125. if (self.delegate)
  126. [self.delegate setPreAmplification:sender.value];
  127. }
  128. - (void)reloadData
  129. {
  130. if (self.delegate) {
  131. _preAmp_slider.value = [self.delegate preAmplification];
  132. _60_slider.value = [self.delegate amplificationOfBand:0];
  133. _170_slider.value = [self.delegate amplificationOfBand:1];
  134. _310_slider.value = [self.delegate amplificationOfBand:2];
  135. _600_slider.value = [self.delegate amplificationOfBand:3];
  136. _1K_slider.value = [self.delegate amplificationOfBand:4];
  137. _3K_slider.value = [self.delegate amplificationOfBand:5];
  138. _6K_slider.value = [self.delegate amplificationOfBand:6];
  139. _12K_slider.value = [self.delegate amplificationOfBand:7];
  140. _14K_slider.value = [self.delegate amplificationOfBand:8];
  141. _16K_slider.value = [self.delegate amplificationOfBand:9];
  142. }
  143. }
  144. @end