struct RGBA {
double r, g, b, a;
RGBA() { }
RGBA(const RGBA& c) : r(c.r), g(c.g), b(c.b), a(c.a) {}
RGBA(double _r, double _g, double _b, double _a=1.0) :
r(_r), g(_g), b(_b), a(_a) {}
RGBA(unsigned long c) {
a = (c & 0xff) / 255.0;
r = ((c >> 8) & 0xff) / 255.0;
g = ((c >> 16) & 0xff) / 255.0;
b = ((c >> 24) & 0xff) / 255.0;
}
RGBA(const nsAString& str) {
a = 1.0;
// if aString[0] is a #, parse it as hex
// if aString[0] is a letter, parse it as a color name
// if aString[0] is a number, parse it loosely as hex
}
const nsAString& hex() const {
}
};