Mercurial > molko
diff src/color.h @ 11:d1cdb90d9558
core: implement color manipulation, closes #2446
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 07 Jan 2020 20:41:11 +0100 |
parents | |
children | 8f6a1ffb1ebe |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/color.h Tue Jan 07 20:41:11 2020 +0100 @@ -0,0 +1,74 @@ +/* + * color.h -- basic color routines + * + * Copyright (c) 2020 David Demelier <markand@malikania.fr> + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef MOLKO_COLOR_H +#define MOLKO_COLOR_H + +/** + * \file color.h + * \brief Basic color routines. + */ + +/** + * Get red component of hexadecimal color. + * + * \param c the hexadecimal color + * \return the red component + */ +#define COLOR_R(c) (c >> 24 & 0xff) + +/** + * Get green component of hexadecimal color. + * + * \param c the hexadecimal color + * \return the green component + */ +#define COLOR_G(c) (c >> 16 & 0xff) + +/** + * Get blue component of hexadecimal color. + * + * \param c the hexadecimal color + * \return the blue component + */ +#define COLOR_B(c) (c >> 8 & 0xff) + +/** + * Get alpha component of hexadecimal color. + * + * \param c the hexadecimal color + * \return the alpha component + */ +#define COLOR_A(c) (c & 0xff) + +/** + * Convert individual RGBA components into a hexadecimal color. + * + * \param r the red component + * \param g the green component + * \param b the blue component + * \param a the alpha component + * \return the hexadecimal color + */ +#define COLOR_HEX(r, g, b, a) \ + (r << 24 & 0xff000000 | \ + g << 16 & 0x00ff0000 | \ + b << 8 & 0x0000ff00 | \ + a & 0x000000ff) + +#endif /* !MOLKO_COLOR_H */