Paletas
Funciones
Palette* | palette_create (...) |
Palette* | palette_optimal (...) |
Palette* | palette_cga2 (...) |
Palette* | palette_ega4 (void) |
Palette* | palette_rgb8 (void) |
Palette* | palette_gray1 (void) |
Palette* | palette_gray2 (void) |
Palette* | palette_gray4 (void) |
Palette* | palette_gray8 (void) |
void | palette_destroy (...) |
uint32_t | palette_size (...) |
color_t* | palette_colors (...) |
Una paleta no es más que una lista de colores relacionada, normalmente, con un Pixel Buffer indexado (Figura 1). Su principal utilidad es ahorrar espacio en la representación de imágenes, ya que cada pixel se codifica mediante un índice de 1, 2, 4 u 8 bits en lugar del color real donde son necesarios 24 o 32 bits. Por esta razón lo habitual es tener paletas de 2, 4, 16 o 256 colores.
- Utiliza palette_create para crear un paleta.
- Utiliza palette_colors para acceder a los elementos.

1. Paleta predefinida
Tenemos varias paletas predefinidas tanto en color (Figura 2) como en tonos de gris (Figura 3). La paleta RGB8 se ha creado combinando 8 tonos de rojo (3bits), 8 tonos de verde (3bits) y 4 tonos de azul (2bits). Esto es así porque el ojo humano distingue mucho menos la variación del azul que de los otros dos colores.
- Utiliza palette_rgb8 y similares para crear una paleta de color.
- Utiliza palette_gray4 y similares para crear una paleta en tonos de gris.


2. Paleta óptima
Normalmente las imágenes RGB utilizan 8 bits para cada canal, lo que supone 16.777.216 colores diferentes, muchos más de los que puede distinguir el ojo humano (Figura 4). Para optimizar el espacio que ocupa la imagen, con la menor pérdida posible, se calcula la paleta óptima mediante algoritmos de cuantificación del color (Figura 5). Esto contrasta con el uso de una paleta genérica, donde la pérdida de calidad es evidente ya que es posible que muchos colores no se utilicen al ser muy diferentes a los requeridos (Figura 6).
- Utiliza palette_optimal para obtener la paleta óptima de una imagen RGB.



palette_create ()
Crea una paleta.
Palette* palette_create(const uint32_t size);
size | El número de colores. |
Retorna
La paleta. El contenido inicial es indeterminado. Editar con palette_colors.
palette_optimal ()
Crea una paleta de colores óptima, aplicando algoritmos de cuantificación del color.
Palette* palette_optimal(const uint32_t width, const uint32_t height, const pixformat_t format, const byte_t *data, const uint32_t size);
width | El ancho en píxeles de la imagen. |
height | El alto en píxeles de la imagen. |
format | |
data | Búfer con la información de color de los píxeles. |
size | Número de colores en la paleta resultante. |
Retorna
La paleta.
Observaciones
palette_cga2 ()
Crea la paleta de 4 colores (2 bits) de las tarjetas CGA.
Palette* palette_cga2(const bool_t mode, const bool_t intense);
mode |
|
intense |
|
Retorna
La paleta.
Observaciones
palette_ega4 ()
Crea la paleta por defecto de las tarjetas EGA (16 colores, 4 bits).
Palette* palette_ega4(void);
Retorna
La paleta.
Observaciones
palette_rgb8 ()
Crea la paleta de por defecto RGB de 8 bits. Los colores combinan 8 tonos de rojo, 8 de verde y 4 de azul.
Palette* palette_rgb8(void);
Retorna
La paleta.
Observaciones
palette_gray1 ()
Crea una paleta de 2 tonos de gris (1 bit). Negro (0) y blanco (1).
Palette* palette_gray1(void);
Retorna
La paleta.
Observaciones
palette_gray2 ()
Crea una paleta de 4 tonos de gris (2 bit). Negro (0), blanco (3).
Palette* palette_gray2(void);
Retorna
La paleta.
Observaciones
palette_gray4 ()
Crea una paleta de 16 tonos de gris (4 bit). Negro (0), blanco (15).
Palette* palette_gray4(void);
Retorna
La paleta.
Observaciones
palette_gray8 ()
Crea una paleta de 256 tonos de gris (8 bit). Negro (0), blanco (255).
Palette* palette_gray8(void);
Retorna
La paleta.
Observaciones
palette_destroy ()
Destruye la paleta.
void palette_destroy(Palette**);
La paleta. Será puesto a |
palette_size ()
Retorna el número de colores de la paleta.
uint32_t palette_size(Palette*);
La paleta. |
Retorna
El número de colores.
palette_colors ()
Obtiene la lista de colores.
color_t* palette_colors(Palette*);
La paleta. |
Retorna
Colores. El tamaño del array viene dado por palette_size.
Observaciones
El búfer es de lectura/escritura.