Skip to content

Commit 3e6f64c

Browse files
committed
Add color scheme gradient options
2 parents ccd340e + bf8455e commit 3e6f64c

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
@@ -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

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

40464067
void LfpMonochromaticColourScheme::sliderValueChanged(Slider *sl)
40474068
{
40484069
swatchHue = Colour::fromHSV(sl->getValue(), 1, 1, 1);
4049-
// calculateColourSeriesFromBaseHue();
4050-
// lfpDisplay->setColors();
40514070
repaint(colourSwatchRect);
40524071
}
40534072

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

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

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

Source/Plugins/LfpDisplayNodeAlpha/LfpDisplayCanvas.h

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

995995

996996
#pragma mark - LfpMonochromaticColourScheme -
997+
enum ColourPattern
998+
{
999+
DOWN = 0,
1000+
UP,
1001+
DOWN_UP,
1002+
UP_DOWN
1003+
};
1004+
9971005
class LfpMonochromaticColourScheme : public LfpChannelColourScheme,
9981006
public ComboBox::Listener,
9991007
public Slider::Listener
@@ -1016,21 +1024,28 @@ class LfpMonochromaticColourScheme : public LfpChannelColourScheme,
10161024
void setBaseHue(Colour base);
10171025
const Colour getBaseHue() const;
10181026

1027+
void setColourPattern(ColourPattern newPattern) { colourPattern = newPattern; }
1028+
ColourPattern getColourPattern() { return colourPattern; }
1029+
10191030
void setNumColourSeriesSteps(int numSteps);
10201031
int getNumColourSeriesSteps();
10211032

10221033
virtual const Colour getColourForIndex(int index) const override;
10231034

10241035
private:
1025-
bool isBlackAndWhite;
1036+
bool isBlackAndWhite; // Not used yet
10261037
Colour baseHue;
10271038
Colour swatchHue;
10281039
Array<Colour> colourList;
10291040

1041+
ColourPattern colourPattern;
1042+
10301043
ScopedPointer<Label> numChannelsLabel;
10311044
ScopedPointer<ComboBox> numChannelsSelection;
10321045
ScopedPointer<Label> baseHueLabel;
10331046
ScopedPointer<Slider> baseHueSlider;
1047+
ScopedPointer<Label> colourPatternLabel;
1048+
ScopedPointer<ComboBox> colourPatternSelection;
10341049

10351050
Rectangle<int> colourSwatchRect;
10361051

0 commit comments

Comments
 (0)