AnalogTapeModel

Physical modelling signal processing for analog tape recording
Log | Files | Refs | Submodules | README | LICENSE

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 }