yaze 0.2.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
color.h
Go to the documentation of this file.
1#ifndef YAZE_GUI_COLOR_H
2#define YAZE_GUI_COLOR_H
3
4#if defined(__clang__)
5#include <format>
6#endif
7#include <string>
8
9#include "absl/status/status.h"
11#include "imgui/imgui.h"
12
13namespace yaze {
14namespace gui {
15
16struct Color {
17 float red;
18 float blue;
19 float green;
20 float alpha;
21};
22
23inline ImVec4 ConvertColorToImVec4(const Color &color) {
24 return ImVec4(color.red, color.green, color.blue, color.alpha);
25}
26
27inline std::string ColorToHexString(const Color &color) {
28#if defined(__clang__)
29 return std::format(
30 "{:02X}{:02X}{:02X}{:02X}", static_cast<int>(color.red * 255),
31 static_cast<int>(color.green * 255), static_cast<int>(color.blue * 255),
32 static_cast<int>(color.alpha * 255));
33#else
34 return absl::StrFormat("%02X%02X%02X%02X", static_cast<int>(color.red * 255),
35 static_cast<int>(color.green * 255),
36 static_cast<int>(color.blue * 255),
37 static_cast<int>(color.alpha * 255));
38#endif
39}
40
41// A utility function to convert an SnesColor object to an ImVec4 with
42// normalized color values
43ImVec4 ConvertSnesColorToImVec4(const gfx::SnesColor &color);
44
45// A utility function to convert an ImVec4 to an SnesColor object
46gfx::SnesColor ConvertImVec4ToSnesColor(const ImVec4 &color);
47
48// The wrapper function for ImGui::ColorButton that takes a SnesColor reference
49IMGUI_API bool SnesColorButton(absl::string_view id, gfx::SnesColor &color,
50 ImGuiColorEditFlags flags = 0,
51 const ImVec2 &size_arg = ImVec2(0, 0));
52
53IMGUI_API bool SnesColorEdit4(absl::string_view label, gfx::SnesColor *color,
54 ImGuiColorEditFlags flags = 0);
55
56absl::Status DisplayPalette(gfx::SnesPalette &palette, bool loaded);
57
58absl::Status DisplayEditablePalette(gfx::SnesPalette &palette,
59 const std::string &title = "",
60 bool show_color_picker = false,
61 int colors_per_row = 8,
62 ImGuiColorEditFlags flags = 0);
63
64void SelectablePalettePipeline(uint64_t &palette_id, bool &refresh_graphics,
65 gfx::SnesPalette &palette);
66
67} // namespace gui
68} // namespace yaze
69
70#endif
SNES Color container.
Definition snes_color.h:38
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Graphical User Interface (GUI) components for the application.
Definition canvas.cc:17
ImVec4 ConvertColorToImVec4(const Color &color)
Definition color.h:23
IMGUI_API bool SnesColorButton(absl::string_view id, gfx::SnesColor &color, ImGuiColorEditFlags flags, const ImVec2 &size_arg)
Definition color.cc:23
ImVec4 ConvertSnesColorToImVec4(const gfx::SnesColor &color)
Definition color.cc:10
void SelectablePalettePipeline(uint64_t &palette_id, bool &refresh_graphics, gfx::SnesPalette &palette)
Definition color.cc:127
absl::Status DisplayEditablePalette(gfx::SnesPalette &palette, const std::string &title, bool show_color_picker, int colors_per_row, ImGuiColorEditFlags flags)
Definition color.cc:170
IMGUI_API bool SnesColorEdit4(absl::string_view label, gfx::SnesColor *color, ImGuiColorEditFlags flags)
Definition color.cc:40
std::string ColorToHexString(const Color &color)
Definition color.h:27
absl::Status DisplayPalette(gfx::SnesPalette &palette, bool loaded)
Definition color.cc:54
gfx::SnesColor ConvertImVec4ToSnesColor(const ImVec4 &color)
Definition color.cc:19
Main namespace for the application.
Definition controller.cc:18
float alpha
Definition color.h:20
float green
Definition color.h:19