Reputation: 339
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
Reputation: 210928
You need a array of CColor
to 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