Get a Distinctive Color from a Set of Colors

// GetIndexedRGBColor(colorIndex, red, green, blue)
// Given an index from 0 to 15, returns a color as r, g and b.
// colorIndex is an input. red, green and blue are outputs.
// Example:
// Function Test()
//  Variable i
//  for(i=0; i<10; i+=1)
//      Variable red, green, blue
//      GetColor(i, red, green, blue)
//      Printf "%d: red=%d, green=%d, blue=%d\r", red, green, blue
//  endfor
// End
Function GetIndexedRGBColor(colorIndex, red, green, blue)
    Variable colorIndex
    Variable &red, &green, &blue                // Outputs

    Variable numColors = 16                 // Number of colors in the following switch
   
    colorIndex = mod(colorIndex, numColors)         // Wrap around if necessary
    switch(colorIndex)
        case 0:     // Time wave
            red = 0; green = 0; blue = 0;                               // Black
            break
           
        case 1:
            red = 65535; green = 16385; blue = 16385;           // Red
            break
           
        case 2:
            red = 2; green = 39321; blue = 1;                       // Green
            break
           
        case 3:
            red = 0; green = 0; blue = 65535;                       // Blue
            break
           
        case 4:
            red = 39321; green = 1; blue = 31457;                   // Purple
            break
           
        case 5:
            red = 39321; green = 39321; blue = 39321;           // Gray
            break
           
        case 6:
            red = 65535; green = 32768; blue = 32768;           // Salmon
            break
           
        case 7:
            red = 0; green = 65535; blue = 0;                       // Lime
            break
           
        case 8:
            red = 16385; green = 65535; blue = 65535;           // Turquoise
            break
           
        case 9:
            red = 65535; green = 32768; blue = 58981;           // Light purple
            break
           
        case 10:
            red = 39321; green = 26208; blue = 1;                   // Brown
            break
           
        case 11:
            red = 52428; green = 34958; blue = 1;                   // Light brown
            break

        case 12:
            red = 65535; green = 32764; blue = 16385;           // Orange
            break

        case 13:
            red = 1; green = 52428; blue = 26586;                   // Teal
            break

        case 14:
            red = 1; green = 3; blue = 39321;                       // Dark blue
            break

        case 15:
            red = 65535; green = 49151; blue = 55704;           // Pink
            break
    endswitch
End

Forum

Support

Gallery

Igor Pro 8

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More