Skip to content

Commit 44b456b

Browse files
committed
Add colour gradient options
1 parent 410c996 commit 44b456b

2 files changed

Lines changed: 96 additions & 24 deletions

File tree

Source/Plugins/LfpDisplayNodeAlpha/LfpDisplayCanvas.cpp

Lines changed: 80 additions & 23 deletions
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-
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

38783878
LfpMonochromaticColourScheme::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

39423963
void LfpMonochromaticColourScheme::sliderValueChanged(Slider *sl)
39433964
{
39443965
swatchHue = Colour::fromHSV(sl->getValue(), 1, 1, 1);
3945-
// calculateColourSeriesFromBaseHue();
3946-
// lfpDisplay->setColors();
39473966
repaint(colourSwatchRect);
39483967
}
39493968

39503969
void 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

40054031
const 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

40114061
void 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
}

Source/Plugins/LfpDisplayNodeAlpha/LfpDisplayCanvas.h

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -983,6 +983,14 @@ class LfpDefaultColourScheme : public LfpChannelColourScheme
983983

984984

985985
#pragma mark - LfpMonochromaticColourScheme -
986+
enum ColourPattern
987+
{
988+
DOWN = 0,
989+
UP,
990+
DOWN_UP,
991+
UP_DOWN
992+
};
993+
986994
class LfpMonochromaticColourScheme : public LfpChannelColourScheme,
987995
public ComboBox::Listener,
988996
public Slider::Listener
@@ -1005,21 +1013,28 @@ class LfpMonochromaticColourScheme : public LfpChannelColourScheme,
10051013
void setBaseHue(Colour base);
10061014
const Colour getBaseHue() const;
10071015

1016+
void setColourPattern(ColourPattern newPattern) { colourPattern = newPattern; }
1017+
ColourPattern getColourPattern() { return colourPattern; }
1018+
10081019
void setNumColourSeriesSteps(int numSteps);
10091020
int getNumColourSeriesSteps();
10101021

10111022
virtual const Colour getColourForIndex(int index) const override;
10121023

10131024
private:
1014-
bool isBlackAndWhite;
1025+
bool isBlackAndWhite; // Not used yet
10151026
Colour baseHue;
10161027
Colour swatchHue;
10171028
Array<Colour> colourList;
10181029

1030+
ColourPattern colourPattern;
1031+
10191032
ScopedPointer<Label> numChannelsLabel;
10201033
ScopedPointer<ComboBox> numChannelsSelection;
10211034
ScopedPointer<Label> baseHueLabel;
10221035
ScopedPointer<Slider> baseHueSlider;
1036+
ScopedPointer<Label> colourPatternLabel;
1037+
ScopedPointer<ComboBox> colourPatternSelection;
10231038

10241039
Rectangle<int> colourSwatchRect;
10251040

0 commit comments

Comments
 (0)