polybar-dwm/include/utils/color.hpp

52 lines
1.1 KiB
C++
Raw Normal View History

#pragma once
2017-01-24 11:37:19 +00:00
#include <cstdlib>
#include "common.hpp"
2016-11-19 05:22:44 +00:00
POLYBAR_NS
struct rgba {
/**
* Color value in the form ARGB or A000 depending on the type
*/
uint32_t m_value;
2017-01-19 04:38:42 +00:00
/**
* NONE marks this instance as invalid. If such a color is encountered, it
* should be treated as if no color was set.
*
* ALPHA_ONLY is used for color strings that only have an alpha channel (#AA)
* these kinds should be combined with another color that has RGB channels
* before they are used to render anything.
*/
enum color_type { NONE, ARGB, ALPHA_ONLY } m_type{NONE};
2017-01-19 04:38:42 +00:00
explicit rgba();
explicit rgba(uint32_t value, color_type type = ARGB);
explicit rgba(string hex);
operator string() const;
operator uint32_t() const;
bool operator==(const rgba& other) const;
double a() const;
double r() const;
double g() const;
double b() const;
uint8_t a_int() const;
uint8_t r_int() const;
uint8_t g_int() const;
uint8_t b_int() const;
bool has_color() const;
void apply_alpha(rgba other);
2017-01-19 04:38:42 +00:00
};
namespace color_util {
string simplify_hex(string hex);
} // namespace color_util
2016-11-19 05:22:44 +00:00
POLYBAR_NS_END