colors.cpp   [plain text]


#include "StringDict.h"
#include <map>
#include <stdio.h>
#include <stdlib.h>
#include "colors.h"
using namespace std;

typedef struct hsbcolor_t {
	char			*name;
	unsigned char	h,s,b;
} hsbcolor_t;

#include "../../tools/src/colortbl.h"

typedef map<DString,Color> named_colors;
named_colors g_namedColors;
void initNamed() {
    for(unsigned int i = 0; i<sizeof(color_lib)/sizeof(hsbcolor_t); ++i)
        g_namedColors[color_lib[i].name] = Color(color_lib[i].h/255.0f,color_lib[i].s/255.0f,color_lib[i].b/255.0f);
}
Color findColor(DString s) {
    if(g_namedColors.empty())
        initNamed();
    named_colors::iterator ci = g_namedColors.find(s);
    if(ci==g_namedColors.end())
        throw ColorNotFound(s);
    return ci->second;
}