Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add light theme #331

Open
wants to merge 8 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions src/Cfg.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,34 @@ int Cfg::tickRate;

const int Cfg::m_playZoneEarly = 25; // Was 25
const int Cfg::m_playZoneLate = 25;

ColorTheme Cfg::m_colorTheme;

void ColorTheme::load(BuiltInColorTheme builtInColorTheme)
{
switch (builtInColorTheme) {
case BuiltInColorTheme::Light:
menuColor = CColor(0.1, 0.6, 0.6);
menuSelectedColor = CColor(0.7, 0.7, 0.1);
staveColor = CColor(0.2, 0.2, 0.2);
staveColorDim = CColor(0.25, 0.40, 0.25); // grey
noteColor = CColor(0.0, 0.0, 0.0); // black
noteColorDim = CColor(0.4, 0.4, 0.4); // grey
playedGoodColor = CColor(0.5, 0.6, 1.0); // purple
playedBadColor = CColor(0.8, 0.3, 0.8); // orange
playedStoppedColor = CColor(1.0, 0.8, 0.0); // bright orange
backgroundColor = CColor(1.0, 1.0, 1.0); // white
barMarkerColor = CColor(0.5, 0.5, 0.5); // grey
beatMarkerColor = CColor(0.25, 0.25, 0.25); // grey
pianoGoodColor = playedGoodColor;
pianoBadColor = CColor(1.0, 0.0, 0.0);
noteNameColor = CColor(0.0, 0.0, 0.0);
playingZoneBg = CColor(0.75f, 0.75f, 1.0f);
playingZoneMiddle = CColor(0.0f, 0.0f, 0.4f);
playingZoneBorder = CColor(0.0f, 0.0f, 0.8f);
textColor = CColor(0.0, 0.0, 0.0); // black
break;
default:
*this = ColorTheme();
}
}
53 changes: 36 additions & 17 deletions src/Cfg.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,39 @@ class CColor
}
};

enum class BuiltInColorTheme {
Default,
Light,
};

struct ColorTheme
{
constexpr ColorTheme() = default;
ColorTheme &operator=(const ColorTheme &other) = default;
void load(BuiltInColorTheme builtInColorTheme);

CColor menuColor = CColor(0.1, 0.6, 0.6);
CColor menuSelectedColor = CColor(0.7, 0.7, 0.1);

CColor staveColor = CColor(0.1, 0.7, 0.1); // green
CColor staveColorDim = CColor(0.15, 0.40, 0.15); // grey
CColor noteColor = CColor(0.1, 0.9, 0.1); // green
CColor noteColorDim = CColor(0.25, 0.45, 0.25); // green
CColor playedGoodColor = CColor(0.5, 0.6, 1.0); // purple
CColor playedBadColor = CColor(0.8, 0.3, 0.8); // orange
CColor playedStoppedColor = CColor(1.0, 0.8, 0.0); // bright orange
CColor backgroundColor = CColor(0.0, 0.0, 0.0); // black
CColor barMarkerColor = CColor(0.3, 0.25, 0.25); // grey
CColor beatMarkerColor = CColor(0.25, 0.2, 0.2); // grey
CColor pianoGoodColor = playedGoodColor;
CColor pianoBadColor = CColor(1.0, 0.0, 0.0);
CColor noteNameColor = CColor(1.0, 1.0, 1.0);
CColor playingZoneBg = CColor(0.0f, 0.0f, 0.3f);
CColor playingZoneMiddle = CColor(0.0f, 0.0f, 0.8f);
CColor playingZoneBorder = CColor(0.0f, 0.0f, 0.6f);
CColor textColor = CColor(1.0f, 1.0f, 1.0f);
};

/*!
* @brief Contains all the configuration Information.
*/
Expand All @@ -89,23 +122,8 @@ class Cfg
static int chordNoteGap() {return 10;} // all notes in a cord must be spaced less than this a gap
static int chordMaxLength() {return 20;} // the max time between the start and end of a cord

static CColor menuColor() {return CColor(0.1, 0.6, 0.6);}
static CColor menuSelectedColor(){return CColor(0.7, 0.7, 0.1);}

static CColor staveColor() {return CColor(0.1, 0.7, 0.1);} // green
static CColor staveColorDim() {return CColor(0.15, 0.40, 0.15);} // grey
static CColor noteColor() {return CColor(0.1, 0.9, 0.1);} // green
static CColor noteColorDim() {return CColor(0.25, 0.45, 0.25);} // green
//static CColor playedGoodColor() {return CColor(0.6, 0.6, 1.0);} // grey
static CColor playedGoodColor() {return CColor(0.5, 0.6, 1.0);} // purple 0.6, 0.6, 1.0
static CColor playedBadColor() {return CColor(0.8, 0.3, 0.8);} // orange 0.7, 0.0, 0.0
static CColor playedStoppedColor() {return CColor(1.0, 0.8, 0.0);} // bright orange
static CColor backgroundColor() {return CColor(0.0, 0.0, 0.0);} // black
static CColor barMarkerColor() {return CColor(0.3, 0.25, 0.25);} // grey
static CColor beatMarkerColor() {return CColor(0.25, 0.2, 0.2);} // grey
static CColor pianoGoodColor() {return playedGoodColor();}
static CColor pianoBadColor() {return CColor(1.0, 0.0, 0.0);}
static CColor noteNameColor() {return CColor(1.0, 1.0, 1.0);}
static const ColorTheme &colorTheme() { return m_colorTheme; }
static void loadColorTheme(BuiltInColorTheme builtInColorTheme) { m_colorTheme.load(builtInColorTheme); }

static void setDefaults() {
#ifdef _WIN32
Expand Down Expand Up @@ -148,6 +166,7 @@ class Cfg
static int m_appX, m_appY, m_appWidth, m_appHeight;
static const int m_playZoneEarly;
static const int m_playZoneLate;
static ColorTheme m_colorTheme;
};

#endif //__CFG_H__
12 changes: 6 additions & 6 deletions src/Conductor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -647,7 +647,7 @@ void CConductor::pianistInput(CMidiEvent inputNote)
else
pianistTiming = NOT_USED;
m_scoreWin->setPlayedNoteColor(inputNote.note(),
(!m_followPlayingTimeOut)? Cfg::playedGoodColor():Cfg::playedBadColor(),
(!m_followPlayingTimeOut)? Cfg::colorTheme().playedGoodColor : Cfg::colorTheme().playedBadColor,
m_chordDeltaTime, pianistTiming);

if (validatePianistChord() == true)
Expand Down Expand Up @@ -688,7 +688,7 @@ void CConductor::pianistInput(CMidiEvent inputNote)
else // Hitting bad notes within the zone (so register them)
{
// Register the wrong note in the ratings calculation (if not as missed notes, I don't believe it's factored in)
missedNotesColor(Cfg::pianoBadColor());
missedNotesColor(Cfg::colorTheme().pianoBadColor);
m_rating.lateNotes(m_wantedChord.length() - m_goodPlayedNotes.length());
setEventBits(EVENT_BITS_forceRatingRedraw);
fetchNextChord(); // Skip through the wrong note and continue to the next
Expand All @@ -704,7 +704,7 @@ void CConductor::pianistInput(CMidiEvent inputNote)
else
pianistTiming = NOT_USED;
m_scoreWin->setPlayedNoteColor(inputNote.note(),
(!m_followPlayingTimeOut)? Cfg::playedGoodColor():Cfg::playedBadColor(),
(!m_followPlayingTimeOut)? Cfg::colorTheme().playedGoodColor : Cfg::colorTheme().playedBadColor,
m_chordDeltaTime, pianistTiming);

if (validatePianistChord() == true)
Expand Down Expand Up @@ -747,7 +747,7 @@ void CConductor::pianistInput(CMidiEvent inputNote)

if (hasNote)
m_scoreWin->setPlayedNoteColor(inputNote.note(),
(!m_followPlayingTimeOut)? Cfg::noteColor():Cfg::playedStoppedColor(),
(!m_followPlayingTimeOut)? Cfg::colorTheme().noteColor:Cfg::colorTheme().playedStoppedColor,
m_chordDeltaTime);

outputSavedNotesOff();
Expand Down Expand Up @@ -852,7 +852,7 @@ void CConductor::followPlaying()
{
if (m_chordDeltaTime > m_cfg_playZoneLate )
{
missedNotesColor(Cfg::playedStoppedColor());
missedNotesColor(Cfg::colorTheme().playedStoppedColor);
fetchNextChord();
m_rating.lateNotes(m_wantedChord.length() - m_goodPlayedNotes.length());
setEventBits( EVENT_BITS_forceRatingRedraw);
Expand Down Expand Up @@ -932,7 +932,7 @@ void CConductor::realTimeEngine(qint64 mSecTicks)
m_rating.lateNotes(m_wantedChord.length() - m_goodPlayedNotes.length());
setEventBits( EVENT_BITS_forceRatingRedraw);

missedNotesColor(Cfg::playedStoppedColor());
missedNotesColor(Cfg::colorTheme().playedStoppedColor);
findImminentNotesOff();
// Don't keep any saved notes off if there are no notes down
if (m_piano->pianistAllNotesDown() == 0)
Expand Down
55 changes: 29 additions & 26 deletions src/Draw.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,9 @@ void CDraw::drawStaveExtentsion(CSymbol symbol, float x, int noteWidth, bool pl
whichPart_t hand = symbol.getStavePos().getHand();

if (playable)
drColor(Cfg::staveColor());
drColor(Cfg::colorTheme().staveColor);
else
drColor(Cfg::staveColorDim());
drColor(Cfg::colorTheme().staveColorDim);

glLineWidth (Cfg::staveThickness());
glBegin(GL_LINES);
Expand Down Expand Up @@ -135,7 +135,7 @@ void CDraw::drawNoteName(int midiNote, float x, float y, int type)

staveLookup_t item = CStavePos::midiNote2Name(midiNote);

drColor(Cfg::noteNameColor());
drColor(Cfg::colorTheme().noteNameColor);

glLineWidth (1.0);

Expand Down Expand Up @@ -365,7 +365,7 @@ void CDraw::checkAccidental(CSymbol symbol, float x, float y)

if (accidental != 0)
{
//drColor (Cfg::lineColor());
//drColor (Cfg::colorTheme().lineColor);
if (accidental == 1)
drawSymbol(CSymbol(PB_SYMBOL_sharp, symbol.getStavePos()), x - xGap, y);
else if (accidental == -1)
Expand All @@ -384,7 +384,7 @@ bool CDraw::drawNote(CSymbol* symbol, float x, float y, CSlot* slot, CColor colo
//ppLogTrace("PB_SYMBOL_noteHead x %f y %f", x, y);
if (!CChord::isNotePlayable(symbol->getNote(), 0))
{
color = Cfg::noteColorDim();
color = Cfg::colorTheme().noteColorDim;
playable = false;
}
drawStaveExtentsion(*symbol, x, 16, playable);
Expand Down Expand Up @@ -471,15 +471,16 @@ bool CDraw::drawNote(CSymbol* symbol, float x, float y, CSlot* slot, CColor colo

void CDraw::drawSymbol(CSymbol symbol, float x, float y, CSlot* slot)
{
const auto &colorTheme = Cfg::colorTheme();
CColor color = symbol.getColor();
bool playable = true;

if (m_displayHand != symbol.getHand() && m_displayHand != PB_PART_both)
{
if (color == Cfg::noteColor())
color = Cfg::noteColorDim();
if (color == Cfg::staveColor())
color = Cfg::staveColorDim();
if (color == colorTheme.noteColor)
color = colorTheme.noteColorDim;
if (color == colorTheme.staveColor)
color = colorTheme.staveColorDim;
playable = false;
}

Expand Down Expand Up @@ -597,15 +598,15 @@ void CDraw::drawSymbol(CSymbol symbol, float x, float y, CSlot* slot)
//ppLogTrace("PB_SYMBOL_noteHead x %f y %f", x, y);
if (!CChord::isNotePlayable(symbol.getNote(), 0))
{
color = Cfg::noteColorDim();
color = Cfg::colorTheme().noteColorDim;
playable = false;
}
drawStaveExtentsion(symbol, x, 16, playable);

// See forum post at link below from PianoBooster forum user Kory.
// http://piano-booster.2625608.n2.nabble.com/Pianobooster-port-to-arm-linux-or-Android-td7572459.html
// http://piano-booster.2625608.n2.nabble.com/Pianobooster-port-to-arm-linux-or-Android-td7572459.html#a7572676
if (m_settings->coloredNotes() && color == Cfg::noteColor()) //KORY added
if (m_settings->coloredNotes() && color == colorTheme.noteColor) //KORY added
{
int note = symbol.getNote() % MIDI_OCTAVE;
switch (note)
Expand Down Expand Up @@ -681,7 +682,7 @@ void CDraw::drawSymbol(CSymbol symbol, float x, float y, CSlot* slot)

case PB_SYMBOL_drum:
if (!CChord::isNotePlayable(symbol.getNote(), 0))
color = Cfg::noteColorDim();
color = colorTheme.noteColorDim;
drColor(color);
glLineWidth (3.0f);
glBegin(GL_LINES);
Expand Down Expand Up @@ -744,24 +745,24 @@ void CDraw::drawSymbol(CSymbol symbol, float x, float y, CSlot* slot)
case PB_SYMBOL_barLine:
x += BEAT_MARKER_OFFSET * HORIZONTAL_SPACING_FACTOR; // the beat markers where entered early so now move them correctly
glLineWidth (4.0f);
drColor ((m_displayHand == PB_PART_left) ? Cfg::staveColorDim() : Cfg::staveColor());
drColor ((m_displayHand == PB_PART_left) ? colorTheme.staveColorDim : colorTheme.staveColor);
oneLine(x, CStavePos(PB_PART_right, 4).getPosYRelative(), x, CStavePos(PB_PART_right, -4).getPosYRelative());
drColor ((m_displayHand == PB_PART_right) ? Cfg::staveColorDim() : Cfg::staveColor());
drColor ((m_displayHand == PB_PART_right) ? colorTheme.staveColorDim : colorTheme.staveColor);
oneLine(x, CStavePos(PB_PART_left, 4).getPosYRelative(), x, CStavePos(PB_PART_left, -4).getPosYRelative());
break;

case PB_SYMBOL_barMarker:
x += BEAT_MARKER_OFFSET * HORIZONTAL_SPACING_FACTOR; // the beat markers where entered early so now move them correctly
glLineWidth (5.0f);
drColor(Cfg::barMarkerColor());
drColor(colorTheme.barMarkerColor);
oneLine(x, CStavePos(PB_PART_right, m_beatMarkerHeight).getPosYRelative(), x, CStavePos(PB_PART_left, -m_beatMarkerHeight).getPosYRelative());
glDisable (GL_LINE_STIPPLE);
break;

case PB_SYMBOL_beatMarker:
x += BEAT_MARKER_OFFSET * HORIZONTAL_SPACING_FACTOR; // the beat markers where entered early so now move them correctly
glLineWidth (4.0);
drColor(Cfg::beatMarkerColor());
drColor(colorTheme.beatMarkerColor);
oneLine(x, CStavePos(PB_PART_right, m_beatMarkerHeight).getPosYRelative(), x, CStavePos(PB_PART_left, -m_beatMarkerHeight).getPosYRelative());
glDisable (GL_LINE_STIPPLE);
break;
Expand All @@ -772,14 +773,14 @@ void CDraw::drawSymbol(CSymbol symbol, float x, float y, CSlot* slot)
float bottomY = CStavePos(PB_PART_left, -m_beatMarkerHeight).getPosY();
float early = static_cast<float>(Cfg::playZoneEarly()) * HORIZONTAL_SPACING_FACTOR;
float late = static_cast<float>(Cfg::playZoneLate()) * HORIZONTAL_SPACING_FACTOR;
//glColor3f (0.7f, 1.0f, 0.7f);
glColor3f (0.0f, 0.0f, 0.3f);
drColor(colorTheme.playingZoneBg);
glRectf(x-late, topY, x + early, bottomY);
glLineWidth (2.0f);
glColor3f (0.0f, 0.0f, 0.8f);
drColor(colorTheme.playingZoneMiddle);
oneLine(x, topY, x, bottomY );
glLineWidth (1.0f);
glColor3f (0.0f, 0.0f, 0.6f);
glColor3f (1.0f, 0.0f, 0.6f);
drColor(colorTheme.playingZoneBorder);
oneLine(x-late, topY, x-late, bottomY );
oneLine(x+early, topY, x+early, bottomY );
}
Expand Down Expand Up @@ -840,7 +841,8 @@ void CDraw::drawStaves(float startX, float endX)
glLineWidth (Cfg::staveThickness());

/* select color for all lines */
drColor ((m_displayHand != PB_PART_left) ? Cfg::staveColor() : Cfg::staveColorDim());
const auto &colorTheme = Cfg::colorTheme();
drColor ((m_displayHand != PB_PART_left) ? colorTheme.staveColor : colorTheme.staveColorDim);
glBegin(GL_LINES);

for (i = -4; i <= 4; i+=2 )
Expand All @@ -849,7 +851,7 @@ void CDraw::drawStaves(float startX, float endX)
glVertex2f (startX, pos.getPosY());
glVertex2f (endX, pos.getPosY());
}
drColor ((m_displayHand != PB_PART_right) ? Cfg::staveColor() : Cfg::staveColorDim());
drColor ((m_displayHand != PB_PART_right) ? colorTheme.staveColor : colorTheme.staveColorDim);
for (i = -4; i <= 4; i+=2 )
{
CStavePos pos = CStavePos(PB_PART_left, i);
Expand All @@ -866,6 +868,7 @@ void CDraw::drawKeySignature(int key)
static constexpr int flatLookUpRight[] = { 0, 3,-1, 2,-2, 1,-3};
static constexpr int flatLookUpLeft[] = {-2, 1,-3, 0,-4,-1,-5};
static constexpr float gapX = 11.0f;
const auto &colorTheme = Cfg::colorTheme();
CStavePos pos;

if (key == NOT_USED)
Expand All @@ -878,13 +881,13 @@ void CDraw::drawKeySignature(int key)
{
if (i < arraySize(sharpLookUpRight))
{
drColor ((m_displayHand != PB_PART_left) ? Cfg::noteColor() : Cfg::noteColorDim());
drColor ((m_displayHand != PB_PART_left) ? colorTheme.noteColor : colorTheme.noteColorDim);
pos = CStavePos(PB_PART_right, sharpLookUpRight[i]);
drawSymbol( CSymbol(PB_SYMBOL_sharp, pos), Cfg::keySignatureX() + gapX * static_cast<float>(i) );
}
if (i < arraySize(sharpLookUpLeft))
{
drColor ((m_displayHand != PB_PART_right) ? Cfg::noteColor() : Cfg::noteColorDim());
drColor ((m_displayHand != PB_PART_right) ? colorTheme.noteColor : colorTheme.noteColorDim);
pos = CStavePos(PB_PART_left, sharpLookUpLeft[i]);
drawSymbol( CSymbol(PB_SYMBOL_sharp, pos), Cfg::keySignatureX() + gapX * static_cast<float>(i) );
}
Expand All @@ -894,13 +897,13 @@ void CDraw::drawKeySignature(int key)
{
if (i < arraySize(flatLookUpRight))
{
drColor ((m_displayHand != PB_PART_left) ? Cfg::noteColor() : Cfg::noteColorDim());
drColor ((m_displayHand != PB_PART_left) ? colorTheme.noteColor : colorTheme.noteColorDim);
pos = CStavePos(PB_PART_right, flatLookUpRight[i]);
drawSymbol( CSymbol(PB_SYMBOL_flat, pos), Cfg::keySignatureX() + gapX * static_cast<float>(i) );
}
if (i < arraySize(flatLookUpLeft))
{
drColor ((m_displayHand != PB_PART_right) ? Cfg::noteColor() : Cfg::noteColorDim());
drColor ((m_displayHand != PB_PART_right) ? colorTheme.noteColor : colorTheme.noteColorDim);
pos = CStavePos(PB_PART_left, flatLookUpLeft[i]);
drawSymbol( CSymbol(PB_SYMBOL_flat, pos), Cfg::keySignatureX() + gapX * static_cast<float>(i) );
}
Expand Down
Loading