@@ -1248,7 +1248,7 @@ void LfpDisplayOptions::resized()
12481248 lfpDisplay->getColourSchemePtr ()->setBounds (colourSchemeOptionLabel->getX (),
12491249 colourSchemeOptionLabel->getBottom (),
12501250 200 ,
1251- 60 );
1251+ 100 );
12521252 }
12531253}
12541254
@@ -1472,7 +1472,7 @@ void LfpDisplayOptions::comboBoxChanged(ComboBox* cb)
14721472 lfpDisplay->getColourSchemePtr ()->setBounds (colourSchemeOptionLabel->getX (),
14731473 colourSchemeOptionLabel->getBottom (),
14741474 200 ,
1475- 60 );
1475+ 100 );
14761476 addAndMakeVisible (lfpDisplay->getColourSchemePtr ());
14771477 }
14781478
@@ -3876,8 +3876,9 @@ const Colour LfpDefaultColourScheme::getColourForIndex(int index) const
38763876#pragma mark - LfpMonochromaticColorScheme
38773877
38783878LfpMonochromaticColourScheme::LfpMonochromaticColourScheme (LfpDisplay* display, LfpDisplayCanvas* canvas)
3879- : LfpChannelColourScheme(8 , display, canvas)
3880- , isBlackAndWhite(false )
3879+ : LfpChannelColourScheme (8 , display, canvas)
3880+ , isBlackAndWhite (false )
3881+ , colourPattern (DOWN_UP)
38813882{
38823883 setName (" Monochromatic" );
38833884
@@ -3909,6 +3910,20 @@ LfpMonochromaticColourScheme::LfpMonochromaticColourScheme(LfpDisplay* display,
39093910
39103911 baseHueSlider->addMouseListener (this , true );
39113912
3913+
3914+ colourPatternLabel = new Label (" colourPatternLabel" , " Pattern" );
3915+ colourPatternLabel->setFont (Font (" Default" , 13 .0f , Font::plain));
3916+ colourPatternLabel->setColour (Label::textColourId, Colour (100 , 100 , 100 ));
3917+ addAndMakeVisible (colourPatternLabel);
3918+
3919+ StringArray colourPatternSelectionOptions = {" Down" , " Up" , " Down-Up" , " Up-Down" };
3920+ colourPatternSelection = new ComboBox (" colourPatternSelection" );
3921+ colourPatternSelection->addItemList (colourPatternSelectionOptions, 1 );
3922+ colourPatternSelection->setEditableText (false );
3923+ colourPatternSelection->addListener (this );
3924+ colourPatternSelection->setSelectedId (colourPattern + 1 , dontSendNotification);
3925+ addAndMakeVisible (colourPatternSelection);
3926+
39123927 baseHue = Colour::fromHSV (0 , 1 , 1 , 1 );
39133928 swatchHue = baseHue;
39143929
@@ -3929,41 +3944,52 @@ void LfpMonochromaticColourScheme::resized()
39293944 60 ,
39303945 25 );
39313946
3932- baseHueLabel->setBounds (0 , numChannelsLabel->getBottom () + 10 , 35 , 25 );
3947+ baseHueLabel->setBounds (0 , numChannelsLabel->getBottom (), 35 , 25 );
39333948 baseHueSlider->setBounds (baseHueLabel->getRight (),
39343949 baseHueLabel->getY (),
39353950 numChannelsSelection->getRight () - baseHueLabel->getRight () - 20 ,
39363951 25 );
39373952
39383953 colourSwatchRect.setBounds (baseHueSlider->getRight () + 5 , baseHueSlider->getY () + 5 , 15 , baseHueSlider->getHeight () - 10 );
39393954
3955+ colourPatternLabel->setBounds (0 , baseHueLabel->getBottom (), 80 , 25 );
3956+ colourPatternSelection->setBounds (colourPatternLabel->getRight (),
3957+ colourPatternLabel->getY (),
3958+ numChannelsSelection->getRight () - colourPatternLabel->getRight (),
3959+ 25 );
3960+
39403961}
39413962
39423963void LfpMonochromaticColourScheme::sliderValueChanged (Slider *sl)
39433964{
39443965 swatchHue = Colour::fromHSV (sl->getValue (), 1 , 1 , 1 );
3945- // calculateColourSeriesFromBaseHue();
3946- // lfpDisplay->setColors();
39473966 repaint (colourSwatchRect);
39483967}
39493968
39503969void LfpMonochromaticColourScheme::comboBoxChanged (ComboBox *cb)
39513970{
3952- int numChannelsColourSpread = 0 ;
3953- if (cb->getSelectedId ())
3971+ if (cb == numChannelsSelection)
39543972 {
3955- numChannelsColourSpread = cb->getText ().getIntValue ();
3973+ int numChannelsColourSpread = 0 ;
3974+ if (cb->getSelectedId ())
3975+ {
3976+ numChannelsColourSpread = cb->getText ().getIntValue ();
3977+ }
3978+ else
3979+ {
3980+ numChannelsColourSpread = cb->getText ().getIntValue ();
3981+ if (numChannelsColourSpread < 1 ) numChannelsColourSpread = 1 ;
3982+ else if (numChannelsColourSpread > 16 ) numChannelsColourSpread = 16 ;
3983+
3984+ cb->setText (String (numChannelsColourSpread), dontSendNotification);
3985+ }
3986+
3987+ setNumColourSeriesSteps (numChannelsColourSpread);
39563988 }
3957- else
3989+ else if (cb == colourPatternSelection)
39583990 {
3959- numChannelsColourSpread = cb->getText ().getIntValue ();
3960- if (numChannelsColourSpread < 1 ) numChannelsColourSpread = 1 ;
3961- else if (numChannelsColourSpread > 16 ) numChannelsColourSpread = 16 ;
3962-
3963- cb->setText (String (numChannelsColourSpread), dontSendNotification);
3991+ setColourPattern ((ColourPattern)(cb->getSelectedId () - 1 ));
39643992 }
3965-
3966- setNumColourSeriesSteps (numChannelsColourSpread);
39673993 calculateColourSeriesFromBaseHue ();
39683994 lfpDisplay->setColors ();
39693995// canvas->fullredraw = true;
@@ -4004,17 +4030,48 @@ int LfpMonochromaticColourScheme::getNumColourSeriesSteps()
40044030
40054031const Colour LfpMonochromaticColourScheme::getColourForIndex (int index) const
40064032{
4007- // std::cout << "getting colour for channel " << index << std::endl;
4008- return colourList[(int (index/colourGrouping)) % colourList.size ()];
4033+ int colourIdx = (int (index/colourGrouping) % numColourChannels);
4034+
4035+ // adjust for oscillating patterns
4036+ if (colourPattern == DOWN_UP || colourPattern == UP_DOWN)
4037+ {
4038+ int mid = numColourChannels / 2 ;
4039+ if (colourIdx > mid)
4040+ {
4041+ if (numColourChannels % 2 == 0 )
4042+ colourIdx = numColourChannels - colourIdx;
4043+ else
4044+ colourIdx = (numColourChannels - colourIdx) * 2 - 1 ;
4045+ }
4046+ else if (numColourChannels % 2 != 0 )
4047+ {
4048+ colourIdx *= 2 ;
4049+ }
4050+ }
4051+
4052+ // invert if the pattern is UP or UP_DOWN
4053+ if (colourPattern == UP)
4054+ colourIdx = (numColourChannels - 1 ) - colourIdx;
4055+ else if (colourPattern == UP_DOWN)
4056+ colourIdx = (colourList.size () - 1 ) - colourIdx;
4057+
4058+ return colourList[colourIdx];
40094059}
40104060
40114061void LfpMonochromaticColourScheme::calculateColourSeriesFromBaseHue ()
40124062{
40134063 colourList.clear ();
4014- for (int i = 0 ; i < numColourChannels; ++i)
4064+
4065+ int coloursToCalculate = numColourChannels;
4066+
4067+ if (numColourChannels % 2 == 0 && (colourPattern == DOWN_UP || colourPattern == UP_DOWN))
4068+ {
4069+ coloursToCalculate = coloursToCalculate / 2 + 1 ;
4070+ }
4071+
4072+ for (int i = 0 ; i < coloursToCalculate; ++i)
40154073 {
4016- float saturation = 1 - (i / float (numColourChannels + 1 ));
4074+ float saturation = 1 - (i / float (coloursToCalculate + 1 ));
40174075 colourList.add (baseHue.withMultipliedSaturation (saturation));
4018- // std::cout << colourList[i].toString() << std::endl;
40194076 }
40204077}
0 commit comments