- restaurades les paletes amb la ordenacio original

- afegida opció de reordenar les paletes automaticament per luminositat o paregut a la paleta d'spectrum
This commit is contained in:
2026-04-02 07:59:30 +02:00
parent 3bd13b72cd
commit 015a9cc4e1
32 changed files with 595 additions and 354 deletions

View File

@@ -333,12 +333,12 @@ static auto cmd_driver(const std::vector<std::string>& args) -> std::string {
return "Driver: " + driver_lower + " (restart)";
}
// PALETTE NEXT/PREV/<name>
// PALETTE NEXT/PREV/SORT/DEFAULT/<name>
static auto cmd_palette(const std::vector<std::string>& args) -> std::string {
const auto palName = []() -> std::string {
return Screen::get()->getPalettePrettyName();
};
if (args.empty()) { return "usage: palette [next|prev|<name>]"; }
if (args.empty()) { return "usage: palette [next|prev|sort [original|luminance|spectrum]|default|<name>]"; }
if (args[0] == "NEXT") {
Screen::get()->nextPalette();
return "Palette: " + palName();
@@ -347,6 +347,26 @@ static auto cmd_palette(const std::vector<std::string>& args) -> std::string {
Screen::get()->previousPalette();
return "Palette: " + palName();
}
if (args[0] == "DEFAULT") {
Screen::get()->setPaletteByName(Defaults::Video::PALETTE_NAME);
return "Palette: " + palName();
}
if (args[0] == "SORT") {
if (args.size() == 1) {
Screen::get()->nextPaletteSortMode();
return "Palette sort: " + Screen::get()->getPaletteSortModeName();
}
if (args[1] == "ORIGINAL") {
Screen::get()->setPaletteSortMode(PaletteSortMode::ORIGINAL);
} else if (args[1] == "LUMINANCE") {
Screen::get()->setPaletteSortMode(PaletteSortMode::LUMINANCE);
} else if (args[1] == "SPECTRUM") {
Screen::get()->setPaletteSortMode(PaletteSortMode::SPECTRUM);
} else {
return "Unknown sort mode. Use: original, luminance, spectrum";
}
return "Palette sort: " + Screen::get()->getPaletteSortModeName();
}
if (!Screen::get()->setPaletteByName(args[0])) {
std::string arg_lower = args[0];
std::ranges::transform(arg_lower, arg_lower.begin(), ::tolower);
@@ -815,7 +835,7 @@ void CommandRegistry::registerHandlers() {
// Proveedores de completions dinámicas
// PALETTE: NEXT, PREV + nombres de paletas disponibles (UPPERCASE)
dynamic_providers_["PALETTE"] = []() -> std::vector<std::string> {
std::vector<std::string> result = {"NEXT", "PREV"};
std::vector<std::string> result = {"NEXT", "PREV", "SORT", "DEFAULT"};
if (Screen::get() != nullptr) {
for (const auto& name : Screen::get()->getPaletteNames()) {
result.push_back(toUpper(name));