Skip to content

Color Table

The-Nice-One edited this page Jul 25, 2026 · 5 revisions

Stores RGBA color values that can be referenced by pixmap data.

Use Cases

  • Pixmap palettes - When linked to a Pixmap Table, provides the color palette for indexed pixel data.
  • Color storage - Can store color sets independently for other purposes.

Table Structure

Identifier

  • Value: 0x03

Modifier Flags

Bit Name Description
0 use_color_type Each record includes a color_type field indicating the color mutability type.
1-7 Reserved for future use.

Flag Details

  • use_color_type: When disabled, the default color type is dynamic. The rendering engine may change the RGBA color to support features such as, but not limited to; text color, and/or palette theming.

Configuration Flags

Bit Name Description
0 use_constant_alpha All colors in this table share the same alpha value.
1-7 Reserved for future use.

Configuration Values

Name Type Condition Description
constant_alpha u8 If use_constant_alpha is enabled. The alpha channel value applied to all colors in this table.

Table Links

Bit Name Description
0-7 Reserved for future use.

The Color Table links to no other table. The byte is still written, as 0x00.

Record Fields

Each record contains the following fields in order:

Field Type Condition Description
color_type u8 If use_color_type modifier is enabled. Color Type value (0 = Dynamic, 1 = Absolute).
alpha u8 If constant_alpha configuration is not set Alpha channel value (0 = fully transparent, 255 = fully opaque).
red u8 Always present Red channel value.
green u8 Always present Green channel value.
blue u8 Always present Blue channel value.

Record Layout Examples

Example 1: Minimal record

No modifier flags, and use_constant_alpha enabled so the table supplies alpha.

Byte Field Binary Hex Description
1 red 11111111 FF Red = 255
2 green 00000000 00 Green = 0
3 blue 10101010 AA Blue = 170

Result: rgb(255, 0, 170), a magenta taking its alpha from constant_alpha.

Example 2: With custom alpha

use_constant_alpha is not set, so every record carries its own alpha.

Byte Field Binary Hex Description
1 alpha 10000000 80 Alpha = 128, roughly 50%
2 red 11111111 FF Red = 255
3 green 11111111 FF Green = 255
4 blue 11111111 FF Blue = 255

Result: rgba(255, 255, 255, 128), a 50% transparent white.

Example 3: With all optional fields

use_color_type enabled and no constant_alpha set.

Byte Field Binary Hex Description
1 color_type 00000001 01 1 = Absolute
2 alpha 11111111 FF Alpha = 255, fully opaque
3 red 00000000 00 Red = 0
4 green 00000000 00 Green = 0
5 blue 00000000 00 Blue = 0

Result: rgba(0, 0, 0, 255), an absolute black that a renderer should not recolor.

Complete Table Example

The following byte sequence defines a two-entry palette with a shared alpha, one dynamic color and one absolute color:

Bytes Binary Hex Description
1 00000011 03 Table identifier for Color Table
2 00000001 01 Modifier flags: use_color_type enabled
3 00000001 01 Configuration flags: use_constant_alpha enabled
4 11111111 FF constant_alpha = 255, fully opaque
5 00000000 00 Table links: none set
6 00000010 02 Record count = 2 colors
7 00000000 00 Color 0: color_type = 0 (Dynamic)
8 00000000 00 Color 0: red = 0
9 00000000 00 Color 0: green = 0
10 00000000 00 Color 0: blue = 0
11 00000001 01 Color 1: color_type = 1 (Absolute)
12 11111111 FF Color 1: red = 255
13 11111111 FF Color 1: green = 255
14 11111111 FF Color 1: blue = 255

Clone this wiki locally