|
@@ -49,6 +49,7 @@ uint32_t Color::to_argb32() const {
|
|
|
}
|
|
|
|
|
|
uint32_t Color::to_abgr32() const {
|
|
|
+
|
|
|
uint32_t c = (uint8_t)Math::round(a * 255);
|
|
|
c <<= 8;
|
|
|
c |= (uint8_t)Math::round(b * 255);
|
|
@@ -73,6 +74,45 @@ uint32_t Color::to_rgba32() const {
|
|
|
return c;
|
|
|
}
|
|
|
|
|
|
+uint64_t Color::to_abgr64() const {
|
|
|
+
|
|
|
+ uint64_t c = (uint16_t)Math::round(a * 65535);
|
|
|
+ c <<= 16;
|
|
|
+ c |= (uint16_t)Math::round(b * 65535);
|
|
|
+ c <<= 16;
|
|
|
+ c |= (uint16_t)Math::round(g * 65535);
|
|
|
+ c <<= 16;
|
|
|
+ c |= (uint16_t)Math::round(r * 65535);
|
|
|
+
|
|
|
+ return c;
|
|
|
+}
|
|
|
+
|
|
|
+uint64_t Color::to_argb64() const {
|
|
|
+
|
|
|
+ uint64_t c = (uint16_t)Math::round(a * 65535);
|
|
|
+ c <<= 16;
|
|
|
+ c |= (uint16_t)Math::round(r * 65535);
|
|
|
+ c <<= 16;
|
|
|
+ c |= (uint16_t)Math::round(g * 65535);
|
|
|
+ c <<= 16;
|
|
|
+ c |= (uint16_t)Math::round(b * 65535);
|
|
|
+
|
|
|
+ return c;
|
|
|
+}
|
|
|
+
|
|
|
+uint64_t Color::to_rgba64() const {
|
|
|
+
|
|
|
+ uint64_t c = (uint16_t)Math::round(r * 65535);
|
|
|
+ c <<= 16;
|
|
|
+ c |= (uint16_t)Math::round(g * 65535);
|
|
|
+ c <<= 16;
|
|
|
+ c |= (uint16_t)Math::round(b * 65535);
|
|
|
+ c <<= 16;
|
|
|
+ c |= (uint16_t)Math::round(a * 65535);
|
|
|
+
|
|
|
+ return c;
|
|
|
+}
|
|
|
+
|
|
|
float Color::get_h() const {
|
|
|
|
|
|
float min = MIN(r, g);
|
|
@@ -200,6 +240,19 @@ Color Color::hex(uint32_t p_hex) {
|
|
|
return Color(r, g, b, a);
|
|
|
}
|
|
|
|
|
|
+Color Color::hex64(uint64_t p_hex) {
|
|
|
+
|
|
|
+ float a = (p_hex & 0xFFFF) / 65535.0;
|
|
|
+ p_hex >>= 16;
|
|
|
+ float b = (p_hex & 0xFFFF) / 65535.0;
|
|
|
+ p_hex >>= 16;
|
|
|
+ float g = (p_hex & 0xFFFF) / 65535.0;
|
|
|
+ p_hex >>= 16;
|
|
|
+ float r = (p_hex & 0xFFFF) / 65535.0;
|
|
|
+
|
|
|
+ return Color(r, g, b, a);
|
|
|
+}
|
|
|
+
|
|
|
static float _parse_col(const String &p_str, int p_ofs) {
|
|
|
|
|
|
int ig = 0;
|