primer commit

This commit is contained in:
2025-11-23 11:44:31 +01:00
commit 6ada29eaf8
613 changed files with 484459 additions and 0 deletions

94
source/utils/color.hpp Normal file
View 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