diff --git a/src/AColor.cpp b/src/AColor.cpp index 097ad04ba..f45847215 100644 --- a/src/AColor.cpp +++ b/src/AColor.cpp @@ -638,85 +638,108 @@ void AColor::DarkMIDIChannel(wxDC * dc, int channel /* 1 - 16 */ ) unsigned char AColor::gradient_pre[ColorGradientTotal][2][gradientSteps][3]; void AColor::PreComputeGradient() { - { - if (!gradient_inited) { - gradient_inited = 1; + if (gradient_inited) return; + gradient_inited = 1; - for (int selected = 0; selected < ColorGradientTotal; selected++) - for (int grayscale = 0; grayscale <= 1; grayscale++) { - float r, g, b; + for (int selected = 0; selected < ColorGradientTotal; selected++) { + const int gsteps = 4; + float gradient[gsteps + 1][3]; + theTheme.Colour( clrSpectro1 ) = theTheme.Colour( clrUnselected ); + theTheme.Colour( clrSpectro1Sel ) = theTheme.Colour( clrSelected ); + int clrFirst = (selected == ColorGradientUnselected ) ? clrSpectro1 : clrSpectro1Sel; + for(int j=0;j<(gsteps+1);j++){ + wxColour c = theTheme.Colour( clrFirst+j ); + gradient[ j] [0] = c.Red()/255.0; + gradient[ j] [1] = c.Green()/255.0; + gradient[ j] [2] = c.Blue()/255.0; + } - int i; - for (i=0; i