89 lines
2.6 KiB
Markdown
89 lines
2.6 KiB
Markdown
# Display -- Color
|
|
|
|
Source: `build/generated/display/color.h` (generated at build time)
|
|
|
|
---
|
|
|
|
## Overview
|
|
|
|
`color.h` is a generated header. It is not hand-edited -- the source
|
|
lives in the CMake generator that produces it from platform configuration.
|
|
Include it via `"display/color.h"`.
|
|
|
|
---
|
|
|
|
## Types
|
|
|
|
```c
|
|
typedef float_t colorchannelf_t; // float channel [0.0, 1.0]
|
|
typedef uint8_t colorchannel8_t; // 8-bit channel [0, 255]
|
|
|
|
typedef struct { colorchannelf_t r, g, b; } color3f_t;
|
|
typedef struct { colorchannelf_t r, g, b, a; } color4f_t;
|
|
typedef struct { colorchannel8_t r, g, b; } color3b_t;
|
|
typedef struct { colorchannel8_t r, g, b, a; } color4b_t;
|
|
|
|
typedef color4b_t color_t; // default: RGBA uint8
|
|
```
|
|
|
|
`color_t` is always `color4b_t` -- four `uint8_t` channels.
|
|
Most engine APIs (text rendering, UI, mesh vertices) take `color_t`.
|
|
|
|
---
|
|
|
|
## Constructors
|
|
|
|
```c
|
|
color3f(r, g, b) // float RGB
|
|
color4f(r, g, b, a) // float RGBA
|
|
color3b(r, g, b) // uint8 RGB
|
|
color4b(r, g, b, a) // uint8 RGBA
|
|
color(r, g, b, a) // alias for color4b
|
|
colorHex(0xRRGGBBAA) // unpack 32-bit hex into color4b
|
|
```
|
|
|
|
---
|
|
|
|
## Predefined constants
|
|
|
|
Each named colour comes in four variants: `_4B` (uint8 RGBA, default),
|
|
`_3B` (uint8 RGB), `_4F` (float RGBA), `_3F` (float RGB). The bare
|
|
name (e.g. `COLOR_BLACK`) always resolves to the `_4B` variant.
|
|
|
|
| Constant | RGBA (uint8) |
|
|
|----------|-------------|
|
|
| `COLOR_BLACK` | 0, 0, 0, 255 |
|
|
| `COLOR_WHITE` | 255, 255, 255, 255 |
|
|
| `COLOR_RED` | 255, 0, 0, 255 |
|
|
| `COLOR_GREEN` | 0, 255, 0, 255 |
|
|
| `COLOR_BLUE` | 0, 0, 255, 255 |
|
|
| `COLOR_YELLOW` | 255, 255, 0, 255 |
|
|
| `COLOR_CYAN` | 0, 255, 255, 255 |
|
|
| `COLOR_MAGENTA` | 255, 0, 255, 255 |
|
|
| `COLOR_ORANGE` | 255, 165, 0, 255 |
|
|
| `COLOR_PURPLE` | 127, 0, 127, 255 |
|
|
| `COLOR_GRAY` | 127, 127, 127, 255 |
|
|
| `COLOR_LIGHT_GRAY` | 191, 191, 191, 255 |
|
|
| `COLOR_DARK_GRAY` | 63, 63, 63, 255 |
|
|
| `COLOR_BROWN` | 153, 102, 51, 255 |
|
|
| `COLOR_PINK` | 255, 191, 204, 255 |
|
|
| `COLOR_LIME` | 191, 255, 0, 255 |
|
|
| `COLOR_NAVY` | 0, 0, 127, 255 |
|
|
| `COLOR_TEAL` | 0, 127, 127, 255 |
|
|
| `COLOR_CORNFLOWER_BLUE` | 99, 147, 237, 255 |
|
|
| `COLOR_TRANSPARENT` | 0, 0, 0, 0 |
|
|
| `COLOR_TRANSPARENT_WHITE` | 255, 255, 255, 0 |
|
|
| `COLOR_TRANSPARENT_BLACK` | 0, 0, 0, 0 |
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
- `color_t` uses premultiplied-friendly `uint8_t` channels for
|
|
compatibility with both OpenGL texture uploads and GX on Dolphin.
|
|
- For shader uniforms that expect float colours, convert manually:
|
|
`(float_t)col.r / 255.0f` etc.
|
|
- The `COLOR_SCRIPT` macro is a C string containing the JS Color class
|
|
static methods. It is concatenated into the embedded JS runtime
|
|
during module init (see `.claude/script.md`).
|