@@ -1248,7 +1248,7 @@ void LfpDisplayOptions::resized()
12481248 lfpDisplay->getColourSchemePtr ()->setBounds (colourSchemeOptionLabel->getX (),
12491249 colourSchemeOptionLabel->getBottom (),
12501250 200 ,
1251- 100 );
1251+ 120 );
12521252 }
12531253}
12541254
@@ -2055,6 +2055,7 @@ LfpDisplay::LfpDisplay(LfpDisplayCanvas* c, Viewport* v)
20552055// colorScheme = new LfpDefaultColourScheme();
20562056 colourSchemeList.add (new LfpDefaultColourScheme (this , canvas));
20572057 colourSchemeList.add (new LfpMonochromaticColourScheme (this , canvas));
2058+ colourSchemeList.add (new LfpGradientColourScheme (this , canvas));
20582059
20592060 activeColourScheme = 0 ;
20602061
@@ -4159,3 +4160,131 @@ void LfpMonochromaticColourScheme::calculateColourSeriesFromBaseHue()
41594160 colourList.add (baseHue.withMultipliedSaturation (saturation));
41604161 }
41614162}
4163+
4164+
4165+
4166+ #pragma mark - LfpGradientColourScheme
4167+
4168+ LfpGradientColourScheme::LfpGradientColourScheme (LfpDisplay * display, LfpDisplayCanvas * canvas)
4169+ : LfpMonochromaticColourScheme(display, canvas)
4170+ {
4171+ setName (" Gradient" );
4172+
4173+ baseHueLabel->setName (" baseHueA" );
4174+ baseHueLabel->setText (" Hue A" , dontSendNotification);
4175+
4176+ baseHueLabelB = new Label (" baseHueB" , " Hue B" );
4177+ baseHueLabelB->setFont (Font (" Default" , 13 .0f , Font::plain));
4178+ baseHueLabelB->setColour (Label::textColourId, Colour (100 , 100 , 100 ));
4179+ addAndMakeVisible (baseHueLabelB);
4180+
4181+ baseHueSliderB = new Slider;
4182+ baseHueSliderB->setRange (0 , 1 );
4183+ baseHueSliderB->setValue (0.5 );
4184+ baseHueSliderB->setTextBoxStyle (Slider::NoTextBox, false , 0 , 0 );
4185+ baseHueSliderB->addListener (this );
4186+ addAndMakeVisible (baseHueSliderB);
4187+
4188+ baseHueSliderB->addMouseListener (this , true );
4189+
4190+ baseHueB = Colour::fromHSV (0.5 , 1.0 , 1.0 , 1.0 );
4191+ swatchHueB = baseHueB;
4192+
4193+ calculateColourSeriesFromBaseHue ();
4194+ }
4195+
4196+ void LfpGradientColourScheme::paint (Graphics &g)
4197+ {
4198+ g.setColour (swatchHue);
4199+ g.fillRect (colourSwatchRect);
4200+
4201+ g.setColour (swatchHueB);
4202+ g.fillRect (colourSwatchRectB);
4203+ }
4204+
4205+ void LfpGradientColourScheme::resized ()
4206+ {
4207+ numChannelsLabel->setBounds (0 , 5 , 120 , 25 );
4208+ numChannelsSelection->setBounds (numChannelsLabel->getRight (),
4209+ numChannelsLabel->getY (),
4210+ 60 ,
4211+ 25 );
4212+
4213+ baseHueLabel->setBounds (0 , numChannelsLabel->getBottom (), 35 , 25 );
4214+ baseHueSlider->setBounds (baseHueLabel->getRight (),
4215+ baseHueLabel->getY (),
4216+ numChannelsSelection->getRight () - baseHueLabel->getRight () - 20 ,
4217+ 25 );
4218+
4219+ colourSwatchRect.setBounds (baseHueSlider->getRight () + 5 , baseHueSlider->getY () + 5 , 15 , baseHueSlider->getHeight () - 10 );
4220+
4221+ baseHueLabelB->setBounds (0 , baseHueLabel->getBottom (), 35 , 25 );
4222+ baseHueSliderB->setBounds (baseHueLabelB->getRight (),
4223+ baseHueLabelB->getY (),
4224+ numChannelsSelection->getRight () - baseHueLabelB->getRight () - 20 ,
4225+ 25 );
4226+
4227+ colourSwatchRectB.setBounds (baseHueSliderB->getRight () + 5 , baseHueSliderB->getY () + 5 , 15 , baseHueSliderB->getHeight () - 10 );
4228+
4229+ colourPatternLabel->setBounds (0 , baseHueLabelB->getBottom (), 80 , 25 );
4230+ colourPatternSelection->setBounds (colourPatternLabel->getRight (),
4231+ colourPatternLabel->getY (),
4232+ numChannelsSelection->getRight () - colourPatternLabel->getRight (),
4233+ 25 );
4234+ }
4235+
4236+ void LfpGradientColourScheme::sliderValueChanged (Slider *sl)
4237+ {
4238+ if (sl == baseHueSlider)
4239+ {
4240+ swatchHue = Colour::fromHSV (sl->getValue (), 1 , 1 , 1 );
4241+ repaint (colourSwatchRect);
4242+ }
4243+ else
4244+ {
4245+ swatchHueB = Colour::fromHSV (sl->getValue (), 1 , 1 , 1 );
4246+ repaint (colourSwatchRectB);
4247+ }
4248+ }
4249+
4250+ void LfpGradientColourScheme::mouseUp (const MouseEvent &e)
4251+ {
4252+ if (e.originalComponent == baseHueSlider)
4253+ {
4254+ if (swatchHue.getARGB () != baseHue.getARGB ())
4255+ {
4256+ baseHue = swatchHue;
4257+ calculateColourSeriesFromBaseHue ();
4258+ lfpDisplay->setColors ();
4259+ canvas->redraw ();
4260+ }
4261+ }
4262+ else
4263+ {
4264+ if (swatchHueB.getARGB () != baseHueB.getARGB ())
4265+ {
4266+ baseHueB = swatchHueB;
4267+ calculateColourSeriesFromBaseHue ();
4268+ lfpDisplay->setColors ();
4269+ canvas->redraw ();
4270+ }
4271+ }
4272+ }
4273+
4274+ void LfpGradientColourScheme::calculateColourSeriesFromBaseHue ()
4275+ {
4276+ colourList.clear ();
4277+
4278+ int coloursToCalculate = numColourChannels;
4279+
4280+ if (numColourChannels % 2 == 0 && (colourPattern == DOWN_UP || colourPattern == UP_DOWN))
4281+ {
4282+ coloursToCalculate = coloursToCalculate / 2 + 1 ;
4283+ }
4284+
4285+ for (int i = 0 ; i < coloursToCalculate; ++i)
4286+ {
4287+ float hue = (baseHueB.getHue () - baseHue.getHue ()) * i / float (coloursToCalculate - 1 );
4288+ colourList.add (baseHue.withRotatedHue (hue));
4289+ }
4290+ }
0 commit comments