BuGUI
BUtton Grid User Interface
Loading...
Searching...
No Matches
color.hpp
1#pragma once
2#include "common.hpp"
3
4#include <concepts>
5#include <type_traits>
6
7namespace bugui
8{
9template <typename... Args>
10concept has_color = (std::is_aggregate_v<class Args::color>
11 || ...);
12
13EMPTY_ENUM_CHECK(live_127_palette)
14EMPTY_ENUM_CHECK(red_green_palette)
15
16template <typename Tp>
17concept has_color_palette = (array_like<decltype
18 (Tp::color::palette())>
19 || live_127_palette_empty_enum
20 <class Tp::color>
21 || red_green_palette_empty_enum
22 <class Tp::color>);
23
24template <typename Tp>
25concept hex_color_palette = requires
26{
27 { Tp::color::palette()[0].first }
28 -> std::same_as<unsigned long&>;
29};
30
31template <typename Tp>
33 <decltype(Tp::color_t::blinking_channel())>
34 || !is_void
35 <decltype(Tp::color_t::blinking_id())>;
36
37template <typename Tp>
39 <decltype(Tp::color_t::pulsing_channel())>
40 || !is_void
41 <decltype(Tp::color_t::pulsing_id())>;
42
43template <typename Tp>
45 <decltype(Tp::color_t::blinking_offset())>;
46
47template <typename Tp>
49 <decltype(Tp::color_t::pulsing_offset())>;
50
51template <typename Tp>
54
55template <typename Tp>
57 || !is_void<decltype(Tp::color::pulsing_id())>;
58
59} // namespace bugui
Definition common.hpp:26
Definition color.hpp:56
Definition color.hpp:17
Definition color.hpp:10
Definition color.hpp:38
Definition color.hpp:48
Definition color.hpp:25
Definition common.hpp:19
Generic colour class holding RGBA coloour values. The blinking and pulsing states indicate discrete o...
Definition color.hpp:14