feat: Add color names to color picker view
This commit is contained in:
parent
273573ce68
commit
1ff4d76ae7
2333
plugins/builtin/romfs/assets/common/color_names.json
Normal file
2333
plugins/builtin/romfs/assets/common/color_names.json
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,14 +1,11 @@
|
|||||||
#include <hex/api/content_registry.hpp>
|
#include <hex/api/content_registry.hpp>
|
||||||
#include <hex/api/imhex_api.hpp>
|
|
||||||
|
|
||||||
#include <hex/helpers/http_requests.hpp>
|
#include <hex/helpers/http_requests.hpp>
|
||||||
#include <hex/helpers/utils.hpp>
|
#include <hex/helpers/utils.hpp>
|
||||||
#include <hex/helpers/fmt.hpp>
|
#include <hex/helpers/fmt.hpp>
|
||||||
#include <hex/helpers/literals.hpp>
|
|
||||||
#include <hex/helpers/fs.hpp>
|
|
||||||
#include <hex/api/localization.hpp>
|
#include <hex/api/localization.hpp>
|
||||||
|
|
||||||
#include <hex/ui/view.hpp>
|
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
@ -20,15 +17,13 @@
|
|||||||
#include <content/tools_entries.hpp>
|
#include <content/tools_entries.hpp>
|
||||||
|
|
||||||
#include <imgui.h>
|
#include <imgui.h>
|
||||||
#include <implot.h>
|
|
||||||
|
|
||||||
#include <hex/ui/imgui_imhex_extensions.h>
|
#include <hex/ui/imgui_imhex_extensions.h>
|
||||||
#include <content/popups/popup_notification.hpp>
|
|
||||||
#include <nlohmann/json.hpp>
|
#include <nlohmann/json.hpp>
|
||||||
|
#include <romfs/romfs.hpp>
|
||||||
|
|
||||||
#include <wolv/io/file.hpp>
|
#include <wolv/io/file.hpp>
|
||||||
#include <wolv/utils/guards.hpp>
|
|
||||||
#include <wolv/net/socket_client.hpp>
|
|
||||||
#include <wolv/net/socket_server.hpp>
|
#include <wolv/net/socket_server.hpp>
|
||||||
|
|
||||||
namespace hex::plugin::builtin {
|
namespace hex::plugin::builtin {
|
||||||
@ -75,7 +70,7 @@ namespace hex::plugin::builtin {
|
|||||||
|
|
||||||
ImGui::TableNextColumn();
|
ImGui::TableNextColumn();
|
||||||
|
|
||||||
const auto colorName = hex::format("{}{}{}{}", bitValues[0].name, bitValues[1].name, bitValues[2].name, bitValues[3].name);
|
const auto colorFormatName = hex::format("{}{}{}{}", bitValues[0].name, bitValues[1].name, bitValues[2].name, bitValues[3].name);
|
||||||
|
|
||||||
// Draw color bit count sliders
|
// Draw color bit count sliders
|
||||||
{
|
{
|
||||||
@ -133,7 +128,7 @@ namespace hex::plugin::builtin {
|
|||||||
ImGui::NewLine();
|
ImGui::NewLine();
|
||||||
|
|
||||||
// Draw color name below sliders
|
// Draw color name below sliders
|
||||||
ImGui::TextFormatted("{}", colorName);
|
ImGui::TextFormatted("{}", colorFormatName);
|
||||||
|
|
||||||
ImGui::PopStyleVar();
|
ImGui::PopStyleVar();
|
||||||
|
|
||||||
@ -189,8 +184,8 @@ namespace hex::plugin::builtin {
|
|||||||
return hex::format("#{0:0{1}X}", hexValue, bitCount / 4);
|
return hex::format("#{0:0{1}X}", hexValue, bitCount / 4);
|
||||||
});
|
});
|
||||||
|
|
||||||
drawValue(colorName.c_str(), [&] {
|
drawValue(colorFormatName.c_str(), [&] {
|
||||||
return hex::format("{}({}, {}, {}, {})", colorName, intColor[0], intColor[1], intColor[2], intColor[3]);
|
return hex::format("{}({}, {}, {}, {})", colorFormatName, intColor[0], intColor[1], intColor[2], intColor[3]);
|
||||||
});
|
});
|
||||||
|
|
||||||
drawValue("Vector4f", [&] {
|
drawValue("Vector4f", [&] {
|
||||||
@ -201,6 +196,40 @@ namespace hex::plugin::builtin {
|
|||||||
return hex::format("{{ {}%, {}%, {}%, {}% }}", u32(floatColor[0] * 100), u32(floatColor[1] * 100), u32(floatColor[2] * 100), u32(floatColor[3] * 100));
|
return hex::format("{{ {}%, {}%, {}%, {}% }}", u32(floatColor[0] * 100), u32(floatColor[1] * 100), u32(floatColor[2] * 100), u32(floatColor[3] * 100));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
drawValue("Color Name", [&] -> std::string {
|
||||||
|
const static auto ColorTable = [] {
|
||||||
|
auto colorMap = nlohmann::json::parse(romfs::get("assets/common/color_names.json").string()).get<std::map<std::string, std::string>>();
|
||||||
|
|
||||||
|
std::map<u8, std::map<u8, std::map<u8, std::string>>> result;
|
||||||
|
for (const auto &[colorValue, colorName] : colorMap) {
|
||||||
|
result
|
||||||
|
[hex::parseHexString(colorValue.substr(0, 2))[0]]
|
||||||
|
[hex::parseHexString(colorValue.substr(2, 2))[0]]
|
||||||
|
[hex::parseHexString(colorValue.substr(4, 2))[0]] = colorName;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}();
|
||||||
|
|
||||||
|
const auto r = pickedColor[0] * 0xFF;
|
||||||
|
const auto g = pickedColor[1] * 0xFF;
|
||||||
|
const auto b = pickedColor[2] * 0xFF;
|
||||||
|
|
||||||
|
auto gTable = ColorTable.lower_bound(r);
|
||||||
|
if (gTable == ColorTable.end())
|
||||||
|
return "???";
|
||||||
|
|
||||||
|
auto bTable = gTable->second.lower_bound(g);
|
||||||
|
if (bTable == gTable->second.end())
|
||||||
|
return "???";
|
||||||
|
|
||||||
|
auto name = bTable->second.lower_bound(b);
|
||||||
|
if (name == bTable->second.end())
|
||||||
|
return "???";
|
||||||
|
|
||||||
|
return name->second;
|
||||||
|
});
|
||||||
|
|
||||||
ImGui::EndTable();
|
ImGui::EndTable();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user