From 86f38ca5457ee07d9c9ffb51f0a9ea139b78e580 Mon Sep 17 00:00:00 2001 From: Nik Date: Fri, 30 Sep 2022 14:52:30 +0200 Subject: [PATCH] includes/type: Added new color types --- includes/type/color.pat | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 includes/type/color.pat diff --git a/includes/type/color.pat b/includes/type/color.pat new file mode 100644 index 0000000..da06247 --- /dev/null +++ b/includes/type/color.pat @@ -0,0 +1,43 @@ +#pragma once + +#include + +namespace type { + + struct RGBA8 { + u8 r, g, b, a; + } [[sealed, format("type::impl::format_color")]]; + + bitfield RGB565 { + r : 5; + g : 6; + b : 5; + } [[sealed, format("type::impl::format_color")]]; + + bitfield RGBA4 { + r : 4; + g : 4; + b : 4; + a : 4; + } [[sealed, format("type::impl::format_color")]]; + + namespace impl { + + fn format_color(ref auto color) { + if (!std::core::has_member(color, "a")) { + return std::format("#{0:02X}{1:02X}{2:02X} | rgb({0}, {1}, {2})", + color.r, + color.g, + color.b); + } else { + return std::format("#{0:02X}{1:02X}{2:02X}{3:02X} | rgba({0}, {1}, {2}, {3})", + color.r, + color.g, + color.b, + color.a); + } + }; + + } + +} \ No newline at end of file