Skip to content

Commit baa6098

Browse files
committed
Add simple two color gradient coloring scheme
1 parent bf8455e commit baa6098

2 files changed

Lines changed: 160 additions & 3 deletions

File tree

Source/Plugins/LfpDisplayNodeAlpha/LfpDisplayCanvas.cpp

Lines changed: 130 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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+
}

Source/Plugins/LfpDisplayNodeAlpha/LfpDisplayCanvas.h

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1032,7 +1032,7 @@ class LfpMonochromaticColourScheme : public LfpChannelColourScheme,
10321032

10331033
virtual const Colour getColourForIndex(int index) const override;
10341034

1035-
private:
1035+
protected:
10361036
bool isBlackAndWhite; // Not used yet
10371037
Colour baseHue;
10381038
Colour swatchHue;
@@ -1049,7 +1049,35 @@ class LfpMonochromaticColourScheme : public LfpChannelColourScheme,
10491049

10501050
Rectangle<int> colourSwatchRect;
10511051

1052-
void calculateColourSeriesFromBaseHue();
1052+
virtual void calculateColourSeriesFromBaseHue();
1053+
};
1054+
1055+
#pragma mark - LfpGradientColourScheme
1056+
1057+
class LfpGradientColourScheme : public LfpMonochromaticColourScheme
1058+
{
1059+
public:
1060+
1061+
LfpGradientColourScheme(LfpDisplay*, LfpDisplayCanvas*);
1062+
1063+
void paint(Graphics &) override;
1064+
void resized() override;
1065+
1066+
void sliderValueChanged(Slider *sl) override;
1067+
void mouseUp(const MouseEvent &e) override;
1068+
1069+
void setLerpToHue(Colour c);
1070+
Colour getLerpToHue();
1071+
1072+
private:
1073+
Colour baseHueB;
1074+
Colour swatchHueB;
1075+
Rectangle<int> colourSwatchRectB;
1076+
1077+
ScopedPointer<Label> baseHueLabelB;
1078+
ScopedPointer<Slider> baseHueSliderB;
1079+
1080+
void calculateColourSeriesFromBaseHue() override;
10531081
};
10541082

10551083
};

0 commit comments

Comments
 (0)