@@ -1258,7 +1258,7 @@ void LfpDisplayOptions::resized()
12581258 lfpDisplay->getColourSchemePtr ()->setBounds (colourSchemeOptionLabel->getX (),
12591259 colourSchemeOptionLabel->getBottom (),
12601260 200 ,
1261- 60 );
1261+ 100 );
12621262 }
12631263}
12641264
@@ -1482,7 +1482,7 @@ void LfpDisplayOptions::comboBoxChanged(ComboBox* cb)
14821482 lfpDisplay->getColourSchemePtr ()->setBounds (colourSchemeOptionLabel->getX (),
14831483 colourSchemeOptionLabel->getBottom (),
14841484 200 ,
1485- 60 );
1485+ 100 );
14861486 addAndMakeVisible (lfpDisplay->getColourSchemePtr ());
14871487 }
14881488
@@ -3980,8 +3980,9 @@ const Colour LfpDefaultColourScheme::getColourForIndex(int index) const
39803980#pragma mark - LfpMonochromaticColorScheme
39813981
39823982LfpMonochromaticColourScheme::LfpMonochromaticColourScheme (LfpDisplay* display, LfpDisplayCanvas* canvas)
3983- : LfpChannelColourScheme(8 , display, canvas)
3984- , isBlackAndWhite(false )
3983+ : LfpChannelColourScheme (8 , display, canvas)
3984+ , isBlackAndWhite (false )
3985+ , colourPattern (DOWN_UP)
39853986{
39863987 setName (" Monochromatic" );
39873988
@@ -4013,6 +4014,20 @@ LfpMonochromaticColourScheme::LfpMonochromaticColourScheme(LfpDisplay* display,
40134014
40144015 baseHueSlider->addMouseListener (this , true );
40154016
4017+
4018+ colourPatternLabel = new Label (" colourPatternLabel" , " Pattern" );
4019+ colourPatternLabel->setFont (Font (" Default" , 13 .0f , Font::plain));
4020+ colourPatternLabel->setColour (Label::textColourId, Colour (100 , 100 , 100 ));
4021+ addAndMakeVisible (colourPatternLabel);
4022+
4023+ StringArray colourPatternSelectionOptions = {" Down" , " Up" , " Down-Up" , " Up-Down" };
4024+ colourPatternSelection = new ComboBox (" colourPatternSelection" );
4025+ colourPatternSelection->addItemList (colourPatternSelectionOptions, 1 );
4026+ colourPatternSelection->setEditableText (false );
4027+ colourPatternSelection->addListener (this );
4028+ colourPatternSelection->setSelectedId (colourPattern + 1 , dontSendNotification);
4029+ addAndMakeVisible (colourPatternSelection);
4030+
40164031 baseHue = Colour::fromHSV (0 , 1 , 1 , 1 );
40174032 swatchHue = baseHue;
40184033
@@ -4033,41 +4048,52 @@ void LfpMonochromaticColourScheme::resized()
40334048 60 ,
40344049 25 );
40354050
4036- baseHueLabel->setBounds (0 , numChannelsLabel->getBottom () + 10 , 35 , 25 );
4051+ baseHueLabel->setBounds (0 , numChannelsLabel->getBottom (), 35 , 25 );
40374052 baseHueSlider->setBounds (baseHueLabel->getRight (),
40384053 baseHueLabel->getY (),
40394054 numChannelsSelection->getRight () - baseHueLabel->getRight () - 20 ,
40404055 25 );
40414056
40424057 colourSwatchRect.setBounds (baseHueSlider->getRight () + 5 , baseHueSlider->getY () + 5 , 15 , baseHueSlider->getHeight () - 10 );
40434058
4059+ colourPatternLabel->setBounds (0 , baseHueLabel->getBottom (), 80 , 25 );
4060+ colourPatternSelection->setBounds (colourPatternLabel->getRight (),
4061+ colourPatternLabel->getY (),
4062+ numChannelsSelection->getRight () - colourPatternLabel->getRight (),
4063+ 25 );
4064+
40444065}
40454066
40464067void LfpMonochromaticColourScheme::sliderValueChanged (Slider *sl)
40474068{
40484069 swatchHue = Colour::fromHSV (sl->getValue (), 1 , 1 , 1 );
4049- // calculateColourSeriesFromBaseHue();
4050- // lfpDisplay->setColors();
40514070 repaint (colourSwatchRect);
40524071}
40534072
40544073void LfpMonochromaticColourScheme::comboBoxChanged (ComboBox *cb)
40554074{
4056- int numChannelsColourSpread = 0 ;
4057- if (cb->getSelectedId ())
4075+ if (cb == numChannelsSelection)
40584076 {
4059- numChannelsColourSpread = cb->getText ().getIntValue ();
4077+ int numChannelsColourSpread = 0 ;
4078+ if (cb->getSelectedId ())
4079+ {
4080+ numChannelsColourSpread = cb->getText ().getIntValue ();
4081+ }
4082+ else
4083+ {
4084+ numChannelsColourSpread = cb->getText ().getIntValue ();
4085+ if (numChannelsColourSpread < 1 ) numChannelsColourSpread = 1 ;
4086+ else if (numChannelsColourSpread > 16 ) numChannelsColourSpread = 16 ;
4087+
4088+ cb->setText (String (numChannelsColourSpread), dontSendNotification);
4089+ }
4090+
4091+ setNumColourSeriesSteps (numChannelsColourSpread);
40604092 }
4061- else
4093+ else if (cb == colourPatternSelection)
40624094 {
4063- numChannelsColourSpread = cb->getText ().getIntValue ();
4064- if (numChannelsColourSpread < 1 ) numChannelsColourSpread = 1 ;
4065- else if (numChannelsColourSpread > 16 ) numChannelsColourSpread = 16 ;
4066-
4067- cb->setText (String (numChannelsColourSpread), dontSendNotification);
4095+ setColourPattern ((ColourPattern)(cb->getSelectedId () - 1 ));
40684096 }
4069-
4070- setNumColourSeriesSteps (numChannelsColourSpread);
40714097 calculateColourSeriesFromBaseHue ();
40724098 lfpDisplay->setColors ();
40734099// canvas->fullredraw = true;
@@ -4108,17 +4134,48 @@ int LfpMonochromaticColourScheme::getNumColourSeriesSteps()
41084134
41094135const Colour LfpMonochromaticColourScheme::getColourForIndex (int index) const
41104136{
4111- // std::cout << "getting colour for channel " << index << std::endl;
4112- return colourList[(int (index/colourGrouping)) % colourList.size ()];
4137+ int colourIdx = (int (index/colourGrouping) % numColourChannels);
4138+
4139+ // adjust for oscillating patterns
4140+ if (colourPattern == DOWN_UP || colourPattern == UP_DOWN)
4141+ {
4142+ int mid = numColourChannels / 2 ;
4143+ if (colourIdx > mid)
4144+ {
4145+ if (numColourChannels % 2 == 0 )
4146+ colourIdx = numColourChannels - colourIdx;
4147+ else
4148+ colourIdx = (numColourChannels - colourIdx) * 2 - 1 ;
4149+ }
4150+ else if (numColourChannels % 2 != 0 )
4151+ {
4152+ colourIdx *= 2 ;
4153+ }
4154+ }
4155+
4156+ // invert if the pattern is UP or UP_DOWN
4157+ if (colourPattern == UP)
4158+ colourIdx = (numColourChannels - 1 ) - colourIdx;
4159+ else if (colourPattern == UP_DOWN)
4160+ colourIdx = (colourList.size () - 1 ) - colourIdx;
4161+
4162+ return colourList[colourIdx];
41134163}
41144164
41154165void LfpMonochromaticColourScheme::calculateColourSeriesFromBaseHue ()
41164166{
41174167 colourList.clear ();
4118- for (int i = 0 ; i < numColourChannels; ++i)
4168+
4169+ int coloursToCalculate = numColourChannels;
4170+
4171+ if (numColourChannels % 2 == 0 && (colourPattern == DOWN_UP || colourPattern == UP_DOWN))
4172+ {
4173+ coloursToCalculate = coloursToCalculate / 2 + 1 ;
4174+ }
4175+
4176+ for (int i = 0 ; i < coloursToCalculate; ++i)
41194177 {
4120- float saturation = 1 - (i / float (numColourChannels + 1 ));
4178+ float saturation = 1 - (i / float (coloursToCalculate + 1 ));
41214179 colourList.add (baseHue.withMultipliedSaturation (saturation));
4122- // std::cout << colourList[i].toString() << std::endl;
41234180 }
41244181}
0 commit comments