From 547fe6a908c2f777cf47e29b234ab8164f5edb60 Mon Sep 17 00:00:00 2001 From: Sam Hocevar Date: Wed, 8 Jan 2014 11:23:47 +0000 Subject: [PATCH] color: utility functions to convert vec3 colors to hex strings. --- src/Makefile.am | 1 + src/image/color/color.cpp | 45 +++++++++++++++++++++++++++++++++++++ src/lol/image/color.h | 10 ++++++++- src/lolcore.vcxproj | 1 + src/lolcore.vcxproj.filters | 3 +++ 5 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/image/color/color.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 9d80c1a1..427b3b2c 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -110,6 +110,7 @@ liblolcore_sources = \ image/codec/ios-image.cpp \ image/codec/dummy-image.cpp \ image/color/cie1931.cpp \ + image/color/color.cpp \ \ loldebug.h \ debug/fps.cpp debug/fps.h debug/lines.cpp \ diff --git a/src/image/color/color.cpp b/src/image/color/color.cpp new file mode 100644 index 00000000..ba9ea517 --- /dev/null +++ b/src/image/color/color.cpp @@ -0,0 +1,45 @@ +// +// Lol Engine +// +// Copyright: (c) 2010-2014 Sam Hocevar +// This program is free software; you can redistribute it and/or +// modify it under the terms of the Do What The Fuck You Want To +// Public License, Version 2, as published by Sam Hocevar. See +// http://www.wtfpl.net/ for more details. +// + +#if defined HAVE_CONFIG_H +# include "config.h" +#endif + +#include "core.h" + +namespace lol +{ + +String Color::HexString4Bpp(vec3 c) +{ + uvec3 c2 = (uvec3)(clamp(c, 0.f, 1.f) * 255.0f); + return String::Printf("%01x%01x%01x", c2.r, c2.g, c2.b); +} + +String Color::HexString4Bpp(vec4 c) +{ + uvec4 c2 = (uvec4)(clamp(c, 0.f, 1.f) * 255.0f); + return String::Printf("%01x%1x%01x%01x", c2.r, c2.g, c2.b, c2.a); +} + +String Color::HexString8Bpp(vec3 c) +{ + uvec3 c2 = (uvec3)(clamp(c, 0.f, 1.f) * 255.0f); + return String::Printf("%02x%02x%02x", c2.r, c2.g, c2.b); +} + +String Color::HexString8Bpp(vec4 c) +{ + uvec4 c2 = (uvec4)(clamp(c, 0.f, 1.f) * 255.0f); + return String::Printf("%02x%2x%02x%02x", c2.r, c2.g, c2.b, c2.a); +} + +} /* namespace lol */ + diff --git a/src/lol/image/color.h b/src/lol/image/color.h index bc1ee49f..2a7923e6 100644 --- a/src/lol/image/color.h +++ b/src/lol/image/color.h @@ -1,7 +1,7 @@ // // Lol Engine // -// Copyright: (c) 2010-2013 Sam Hocevar +// Copyright: (c) 2010-2014 Sam Hocevar // This program is free software; you can redistribute it and/or // modify it under the terms of the Do What The Fuck You Want To // Public License, Version 2, as published by Sam Hocevar. See @@ -277,6 +277,14 @@ public: * Convert a wavelength into an xyY fully saturated colour. */ static vec3 WavelengthToCIExyY(float nm); + + /* + * Convert colors to hex strings. + */ + static String HexString4Bpp(vec3 c); + static String HexString4Bpp(vec4 c); + static String HexString8Bpp(vec3 c); + static String HexString8Bpp(vec4 c); }; } /* namespace lol */ diff --git a/src/lolcore.vcxproj b/src/lolcore.vcxproj index 64f3724e..538d2754 100644 --- a/src/lolcore.vcxproj +++ b/src/lolcore.vcxproj @@ -145,6 +145,7 @@ + diff --git a/src/lolcore.vcxproj.filters b/src/lolcore.vcxproj.filters index 893166dc..3eaae1ce 100644 --- a/src/lolcore.vcxproj.filters +++ b/src/lolcore.vcxproj.filters @@ -291,6 +291,9 @@ image\color + + image\color + math