X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fgdi%2Fgpixmap.h;fp=lib%2Fgdi%2Fgpixmap.h;h=202cd01d7c0e2971c1d076c58c36fe94d52f1022;hp=87fb5029906511780c5a31436c580b4500f6972e;hb=059fdda03072b1be0d67a525f20284df68a84a3c;hpb=927892fd15874451b09b5d5c280d5f4b335ea383 diff --git a/lib/gdi/gpixmap.h b/lib/gdi/gpixmap.h index 87fb502..202cd01 100644 --- a/lib/gdi/gpixmap.h +++ b/lib/gdi/gpixmap.h @@ -18,6 +18,23 @@ struct gRGB gRGB(unsigned long val): b(val&0xFF), g((val>>8)&0xFF), r((val>>16)&0xFF), a((val>>24)&0xFF) // ARGB { } + gRGB(const char *colorstring) + { + unsigned long val = 0; + if (colorstring) + { + for (int i = 0; i < 8; i++) + { + if (i) val <<= 4; + if (!colorstring[i]) break; + val |= (colorstring[i]) & 0x0f; + } + } + b = val&0xFF; + g = (val>>8)&0xFF; + r = (val>>16)&0xFF; + a = (val>>24)&0xFF; + } gRGB(): b(0), g(0), r(0), a(0) { } @@ -56,6 +73,22 @@ struct gRGB { return (b == c.b) && (g == c.g) && (r == c.r) && (a == c.a); } + bool operator != (const gRGB &c) const + { + return (b != c.b) || (g != c.g) || (r != c.r) || (a != c.a); + } + operator const std::string () const + { + unsigned long val = (a<<24)|(r<<16)|(g<<8)|b; + std::string escapecolor = "\\c"; + escapecolor.resize(10); + for (int i = 9; i >= 2; i--) + { + escapecolor[i] = 0x40 | (val & 0xf); + val >>= 4; + } + return escapecolor; + } }; #ifndef SWIG