feat: init palettes with default colorscheme to avoid messed up UI

This commit is contained in:
2025-12-17 09:50:14 +03:00
parent 5bb8a687ea
commit e6bac8e220
7 changed files with 114 additions and 64 deletions

View File

@@ -1,7 +1,10 @@
#ifndef CLRSYNC_CORE_PALETTE_COLOR_KEYS_HPP
#define CLRSYNC_CORE_PALETTE_COLOR_KEYS_HPP
#include <cstddef>
#include <cstdint>
#include <iterator>
#include <unordered_map>
#include <string>
namespace clrsync::core
{
@@ -72,5 +75,67 @@ constexpr const char* COLOR_KEYS[] = {
};
constexpr size_t NUM_COLOR_KEYS = std::size(COLOR_KEYS);
inline const std::unordered_map<std::string, uint32_t> DEFAULT_COLORS = {
{"background", 0x1e1e1eff},
{"on_background", 0xd4d4d4ff},
{"surface", 0x252526ff},
{"on_surface", 0xe8e8e8ff},
{"surface_variant", 0x2d2d30ff},
{"on_surface_variant", 0xccccccff},
{"border_focused", 0x007accff},
{"border", 0x3e3e42ff},
{"foreground", 0xccccccff},
{"cursor", 0xaeafadff},
{"accent", 0x0e639cff},
{"success", 0x4ec9b0ff},
{"info", 0x4fc1ffff},
{"warning", 0xdcdcaaff},
{"error", 0xf48771ff},
{"on_success", 0x000000ff},
{"on_info", 0x000000ff},
{"on_warning", 0x000000ff},
{"on_error", 0xffffffff},
{"editor_background", 0x1e1e1eff},
{"editor_command", 0xd7ba7dff},
{"editor_comment", 0x6a9955ff},
{"editor_disabled", 0x808080ff},
{"editor_emphasis", 0x569cd6ff},
{"editor_error", 0xf44747ff},
{"editor_inactive", 0x858585ff},
{"editor_line_number", 0x858585ff},
{"editor_link", 0x3794ffff},
{"editor_main", 0xd4d4d4ff},
{"editor_selected", 0x264f78ff},
{"editor_selection_inactive", 0x3a3d41ff},
{"editor_string", 0xce9178ff},
{"editor_success", 0x89d185ff},
{"editor_warning", 0xcca700ff},
{"base00", 0x181818ff},
{"base01", 0x282828ff},
{"base02", 0x383838ff},
{"base03", 0x585858ff},
{"base04", 0xb8b8b8ff},
{"base05", 0xd8d8d8ff},
{"base06", 0xe8e8e8ff},
{"base07", 0xf8f8f8ff},
{"base08", 0xab4642ff},
{"base09", 0xdc9656ff},
{"base0A", 0xf7ca88ff},
{"base0B", 0xa1b56cff},
{"base0C", 0x86c1b9ff},
{"base0D", 0x7cafc2ff},
{"base0E", 0xba8bafff},
{"base0F", 0xa16946ff},
};
} // namespace clrsync::core
#endif

View File

@@ -5,6 +5,7 @@
#include <unordered_map>
#include <core/palette/color.hpp>
#include <core/palette/color_keys.hpp>
namespace clrsync::core
{
@@ -37,8 +38,15 @@ class palette
{
return it->second;
}
static color default_color{};
return default_color;
auto default_it = DEFAULT_COLORS.find(key);
if (default_it != DEFAULT_COLORS.end())
{
static color default_color;
default_color.set(default_it->second);
return default_color;
}
static color empty_color{};
return empty_color;
}
const std::unordered_map<std::string, color> &colors() const

View File

@@ -26,13 +26,25 @@ template <typename FileType> class palette_file
if (!m_file->parse())
return false;
m_palette.set_name(m_file->get_string_value("general", "name"));
for (const auto &color_key : COLOR_KEYS)
{
auto it = DEFAULT_COLORS.find(color_key);
if (it != DEFAULT_COLORS.end())
{
m_palette.set_color(color_key, core::color(it->second));
}
}
for (const auto &color_key : COLOR_KEYS)
{
auto color_str = m_file->get_string_value("colors", color_key);
core::color color{0x000000FF};
if (!color_str.empty())
{
core::color color;
color.from_hex_string(color_str);
m_palette.set_color(color_key, color);
m_palette.set_color(color_key, color);
}
}
return true;
}