From 4e37e7a54f541ec8561b11eab9c94b1c25f9c12d Mon Sep 17 00:00:00 2001 From: lisyarus Date: Tue, 29 Sep 2020 19:20:02 +0300 Subject: [PATCH] Add common generic colors --- libs/gfx/include/psemek/gfx/color.hpp | 46 +++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/libs/gfx/include/psemek/gfx/color.hpp b/libs/gfx/include/psemek/gfx/color.hpp index 958ece9f..f289cca7 100644 --- a/libs/gfx/include/psemek/gfx/color.hpp +++ b/libs/gfx/include/psemek/gfx/color.hpp @@ -35,4 +35,50 @@ namespace psemek::gfx return to_coloru8(geom::lerp(to_colorf(c0), to_colorf(c1), t)); } + struct generic_color + { + geom::vector c; + + auto as_color_rgb() const + { + return to_coloru8(geom::vector{c[0], c[1], c[2]}); + } + + auto as_color_rgba() const + { + return to_coloru8(c); + } + + operator color_rgb() const + { + return as_color_rgb(); + } + + operator color_rgba() const + { + return as_color_rgba(); + } + + operator geom::vector() const + { + return geom::vector{c[0], c[1], c[2]}; + } + + operator geom::vector() const + { + return c; + } + }; + + static const generic_color white {{1.f, 1.f, 1.f, 1.f}}; + static const generic_color black {{0.f, 0.f, 0.f, 1.f}}; + + static const generic_color red {{1.f, 0.f, 0.f, 1.f}}; + static const generic_color green {{0.f, 1.f, 0.f, 1.f}}; + static const generic_color blue {{0.f, 0.f, 1.f, 1.f}}; + + static const generic_color cyan {{0.f, 1.f, 1.f, 1.f}}; + static const generic_color magenta{{1.f, 0.f, 1.f, 1.f}}; + static const generic_color yellow {{1.f, 1.f, 0.f, 1.f}}; + }