culi0x
culi0x

Reputation: 339

Fill enum with RBGA values

I want to fill my enum with RBGA values. For example:

enum Colors
{
    COLOR_BLACK,
    COLOR_WHITE,
    COLOR_RED,
    COLOR_GREEN,
    COLOR_DARKBLUE,
};

Colors[COLOR_BLACK] = CColor(0.0f, 0.0f, 0.0f, 1.0f);

My question is: In which way do I have to declare CColor to be able to fill my enum with 4 floats?

Upvotes: 1

Views: 73

Answers (1)

Rabbid76
Rabbid76

Reputation: 210928

You need a array of CColorto do so:

struct CColor
{
    CColor( float r, float g, float b, float a )
        : red(r), green(g), blue(b), alpha(a) {}
    float red, green, blue, alpha;
};

enum Colors
{
    COLOR_BLACK,
    COLOR_WHITE,
    COLOR_RED,
    COLOR_GREEN,
    COLOR_DARKBLUE,
};

CColor mycolors[] = {
    CColor(0.0f, 0.0f, 0.0f, 1.0f), // COLOR_BLACK
    CColor(1.0f, 1.0f, 1.0f, 1.0f), // COLOR_WHITE
    CColor(1.0f, 0.0f, 0.0f, 1.0f), // COLOR_RED
    CColor(0.0f, 1.0f, 0.0f, 1.0f), // COLOR_GREEN
    CColor(0.0f, 0.0f, 1.0f, 1.0f)  // COLOR_DARKBLUE
};

CColor GetColor( Colors col ) { return mycolors[col]; }

CColor red = GetColor(COLOR_RED);

This works, because enums have ascending numbers, starting with 0.

Upvotes: 3

Related Questions