primer commit
This commit is contained in:
94
source/utils/color.hpp
Normal file
94
source/utils/color.hpp
Normal file
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
* @file color.hpp
|
||||
* @brief Gestión de colores de la paleta Amstrad CPC
|
||||
*/
|
||||
|
||||
#ifndef COLOR_HPP
|
||||
#define COLOR_HPP
|
||||
|
||||
#include <SDL2/SDL_stdinc.h>
|
||||
|
||||
#include <string>
|
||||
|
||||
/**
|
||||
* @class Color
|
||||
* @brief Clase para gestionar los colores de la paleta Amstrad CPC
|
||||
*
|
||||
* La paleta del Amstrad CPC tiene 27 colores únicos organizados en un sistema
|
||||
* de 3 niveles de intensidad (0, 128, 255) para cada componente RGB.
|
||||
*/
|
||||
class Color {
|
||||
public:
|
||||
/**
|
||||
* @enum Cpc
|
||||
* @brief Índices de los colores de la paleta Amstrad CPC
|
||||
*
|
||||
* Los nombres corresponden a los colores oficiales documentados por Amstrad.
|
||||
* El índice 0 está reservado para transparencia.
|
||||
*/
|
||||
enum class Cpc : Uint8 {
|
||||
// Transparente (índice 0)
|
||||
TRANSPARENT = 0,
|
||||
|
||||
// Negros y azules (R=0)
|
||||
BLACK = 1, // 0, 0, 0
|
||||
BLUE = 2, // 0, 0, 128
|
||||
BRIGHT_BLUE = 3, // 0, 0, 255
|
||||
|
||||
// Rojos y magentas (G=0)
|
||||
RED = 4, // 128, 0, 0
|
||||
MAGENTA = 5, // 128, 0, 128
|
||||
MAUVE = 6, // 128, 0, 255
|
||||
BRIGHT_RED = 7, // 255, 0, 0
|
||||
PURPLE = 8, // 255, 0, 128
|
||||
BRIGHT_MAGENTA = 9, // 255, 0, 255
|
||||
|
||||
// Verdes y cianes (R=0, G>0)
|
||||
GREEN = 10, // 0, 128, 0
|
||||
CYAN = 11, // 0, 128, 128
|
||||
SKY_BLUE = 12, // 0, 128, 255
|
||||
|
||||
// Amarillos y blancos medios (G=128)
|
||||
YELLOW = 13, // 128, 128, 0
|
||||
WHITE = 14, // 128, 128, 128
|
||||
PASTEL_BLUE = 15, // 128, 128, 255
|
||||
|
||||
// Naranjas y rosas (R=255, G=128)
|
||||
ORANGE = 16, // 255, 128, 0
|
||||
PINK = 17, // 255, 128, 128
|
||||
PASTEL_MAGENTA = 18, // 255, 128, 255
|
||||
|
||||
// Verdes brillantes (G=255)
|
||||
BRIGHT_GREEN = 19, // 0, 255, 0
|
||||
SEA_GREEN = 20, // 0, 255, 128
|
||||
BRIGHT_CYAN = 21, // 0, 255, 255
|
||||
|
||||
// Limas y pasteles verdes (G=255)
|
||||
LIME = 22, // 128, 255, 0
|
||||
PASTEL_GREEN = 23, // 128, 255, 128
|
||||
PASTEL_CYAN = 24, // 128, 255, 255
|
||||
|
||||
// Amarillos brillantes y blancos (R=255, G=255)
|
||||
BRIGHT_YELLOW = 25, // 255, 255, 0
|
||||
PASTEL_YELLOW = 26, // 255, 255, 128
|
||||
BRIGHT_WHITE = 27 // 255, 255, 255
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Obtiene el índice de paleta de un color CPC
|
||||
* @param color Color del enum Cpc
|
||||
* @return Índice de paleta (Uint8)
|
||||
*/
|
||||
static constexpr auto index(Cpc color) -> Uint8 {
|
||||
return static_cast<Uint8>(color);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Convierte un nombre de color (string) a índice de paleta
|
||||
* @param name Nombre del color en minúsculas (ej: "cyan", "bright_blue")
|
||||
* @return Índice de paleta, o 1 (BLACK) si no se encuentra
|
||||
*/
|
||||
static auto fromString(const std::string& name) -> Uint8;
|
||||
};
|
||||
|
||||
#endif // COLOR_HPP
|
||||
Reference in New Issue
Block a user