gigawidgets 0.3.55
A wxWidgets-style UI library for the Arduino Giga Display Shield.
 
Loading...
Searching...
No Matches
color.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include <cinttypes>
5#include <cmath>
6
7namespace ui {
8
13typedef uint16_t color_t;
14
20constexpr float clampColor(const float color) {
21 return (0.f > color) ? 0.f : ((1.f < color) ? 1.f : color);
22}
23
31constexpr color_t color(const float red, const float green, const float blue) {
32 return (((uint8_t)(clampColor(red) * 0xff) & 0xF8) << 8) | (((uint8_t)(clampColor(green) * 0xff) & 0xFC) << 3) | ((uint8_t)(clampColor(blue) * 0xff) >> 3);
33}
34
42constexpr color_t rgb(const uint8_t red, const uint8_t green, const uint8_t blue) {
43 return ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | (blue >> 3);
44}
45
53color_t hsv(const int hue, const float saturation, const float value);
54
62void hsvComponents(color_t color, int &hue, float &saturation, float &value);
63
71void colorComponents(color_t color, float &red, float &green, float &blue);
72
80color_t blend(color_t color1, color_t color2, float ratio = 0.5f);
81
85enum {
87 COLOR_WHITE = 0xffff,
89 COLOR_BLACK = 0x0000,
90
91 // Mid-range colors
92
94 COLOR_GRAY = 0x7bef,
96 COLOR_RED = 0xe000,
98 COLOR_ORANGE = 0xfbe0,
100 COLOR_YELLOW = 0xffe0,
102 COLOR_GREEN = 0x07e0,
104 COLOR_CYAN = 0x07ff,
106 COLOR_BLUE = 0x001f,
108 COLOR_PURPLE = 0x381f,
111
112 // Light colors
113
129 COLOR_PINK = 0xfd3f,
130};
131
132} // namespace ui
color_t hsv(const int hue, const float saturation, const float value)
Convert HSV color components into an RGB565 value.
constexpr color_t color(const float red, const float green, const float blue)
Convert normalized color components into an RGB565 value.
Definition color.hpp:31
void colorComponents(color_t color, float &red, float &green, float &blue)
Split an RGB565 color value into normalized components.
color_t blend(color_t color1, color_t color2, float ratio=0.5f)
Blend two colors, preserving apparent brightness.
constexpr float clampColor(const float color)
Clamp a normalized color component inside 0 and 1, inclusive.
Definition color.hpp:20
uint16_t color_t
An RGB565 color value. 5 bits red, 6 bits green, 5 bits blue.
Definition color.hpp:13
void hsvComponents(color_t color, int &hue, float &saturation, float &value)
Convert an RGB565 value into HSV color components.
@ COLOR_PINK
Definition color.hpp:129
@ COLOR_CYAN
Definition color.hpp:104
@ COLOR_ORANGE
Definition color.hpp:98
@ COLOR_BLACK
Definition color.hpp:89
@ COLOR_YELLOW
Definition color.hpp:100
@ COLOR_LIGHT_RED
Definition color.hpp:117
@ COLOR_LIGHT_BLUE
Definition color.hpp:127
@ COLOR_MAGENTA
Definition color.hpp:110
@ COLOR_LIGHT_GRAY
Definition color.hpp:115
@ COLOR_GRAY
Definition color.hpp:94
@ COLOR_PURPLE
Definition color.hpp:108
@ COLOR_LIGHT_CYAN
Definition color.hpp:125
@ COLOR_WHITE
Definition color.hpp:87
@ COLOR_LIGHT_YELLOW
Definition color.hpp:121
@ COLOR_GREEN
Definition color.hpp:102
@ COLOR_BLUE
Definition color.hpp:106
@ COLOR_LIGHT_GREEN
Definition color.hpp:123
@ COLOR_RED
Definition color.hpp:96
@ COLOR_LIGHT_ORANGE
Definition color.hpp:119
constexpr color_t rgb(const uint8_t red, const uint8_t green, const uint8_t blue)
Convert single-byte color components into an RGB565 value.
Definition color.hpp:42