MixGroupViz.cpp (1775B)
1 #include "MixGroupViz.h" 2 3 MixGroupViz::MixGroupViz (AudioProcessorParameter* mixGroupParam) : mixGroupParam (mixGroupParam) 4 { 5 mixGroupParam->addListener (this); 6 setMixGroupColour (int (mixGroupParam->getValue() * MixGroupsConstants::numMixGroups)); 7 } 8 9 MixGroupViz::~MixGroupViz() 10 { 11 mixGroupParam->removeListener (this); 12 } 13 14 void MixGroupViz::parameterValueChanged (int, float newValue) 15 { 16 newMixGroupIndex = int (newValue * MixGroupsConstants::numMixGroups); 17 18 if (MessageManager::existsAndIsCurrentThread()) 19 mixGroupChanged(); 20 else 21 triggerAsyncUpdate(); 22 } 23 24 void MixGroupViz::handleAsyncUpdate() 25 { 26 mixGroupChanged(); 27 } 28 29 void MixGroupViz::mixGroupChanged() 30 { 31 setMixGroupColour (newMixGroupIndex); 32 } 33 34 void MixGroupViz::setMixGroupColour (int mixGroupIdx) 35 { 36 switch (mixGroupIdx) 37 { 38 case 0: 39 circleColour = Colour (0x00000000); // no circle 40 break; 41 42 case 1: 43 circleColour = Colour (0xFF8B3232); // red 44 break; 45 46 case 2: 47 circleColour = Colour (0xFFEAA92C); // orange 48 break; 49 50 case 3: 51 circleColour = Colour (0xFF9CBCBD); // grey/blue 52 break; 53 54 case 4: 55 circleColour = Colour (0xFFBDB09C); // beige 56 break; 57 58 default: 59 circleColour = Colour (0x00000000); 60 }; 61 62 MessageManagerLock mml; 63 repaint(); 64 } 65 66 void MixGroupViz::paint (Graphics& g) 67 { 68 const auto height = float (getHeight() - getPosition().getY()); 69 const auto centre = juce::Point<int> (getWidth() / 2, getHeight() / 2).toFloat(); 70 auto bounds = Rectangle<float> (height, height) 71 .withCentre (centre); 72 73 g.setColour (circleColour); 74 g.fillEllipse (bounds); 75 }