yaze 0.2.0
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
snes_color.h
Go to the documentation of this file.
1#ifndef YAZE_APP_GFX_SNES_COLOR_H_
2#define YAZE_APP_GFX_SNES_COLOR_H_
3
4#include <cstdint>
5#include <vector>
6
7#include "incl/snes_color.h"
8#include "imgui/imgui.h"
9
10namespace yaze {
11namespace app {
12namespace gfx {
13
14constexpr int NumberOfColors = 3143;
15
17uint16_t ConvertRGBtoSNES(const snes_color& color);
18uint16_t ConvertRGBtoSNES(const ImVec4& color);
19
20std::vector<snes_color> Extract(const char* data, unsigned int offset,
21 unsigned int palette_size);
22
23std::vector<char> Convert(const std::vector<snes_color>& palette);
24
25constexpr uint8_t kColorByteMax = 255;
26constexpr float kColorByteMaxF = 255.f;
27
38class SnesColor {
39 public:
40 SnesColor() : rgb_(0.f, 0.f, 0.f, 0.f), snes_(0), rom_color_({0, 0, 0}) {}
41 explicit SnesColor(const ImVec4 val) : rgb_(val) {
42 snes_color color;
43 color.red = val.x / kColorByteMax;
44 color.green = val.y / kColorByteMax;
45 color.blue = val.z / kColorByteMax;
46 snes_ = ConvertRGBtoSNES(color);
47 }
48 explicit SnesColor(const uint16_t val) : snes_(val) {
49 snes_color color = ConvertSNEStoRGB(val);
50 rgb_ = ImVec4(color.red, color.green, color.blue, 0.f);
51 }
52 explicit SnesColor(const snes_color val)
53 : rgb_(val.red, val.green, val.blue, kColorByteMaxF),
54 snes_(ConvertRGBtoSNES(val)),
55 rom_color_(val) {}
56
57 SnesColor(uint8_t r, uint8_t g, uint8_t b) {
58 rgb_ = ImVec4(r, g, b, kColorByteMaxF);
59 snes_color color;
60 color.red = r;
61 color.green = g;
62 color.blue = b;
63 snes_ = ConvertRGBtoSNES(color);
64 rom_color_ = color;
65 }
66
67 ImVec4 rgb() const { return rgb_; }
68
69 void set_rgb(const ImVec4 val) {
70 rgb_.x = val.x / kColorByteMax;
71 rgb_.y = val.y / kColorByteMax;
72 rgb_.z = val.z / kColorByteMax;
73 snes_color color;
74 color.red = val.x;
75 color.green = val.y;
76 color.blue = val.z;
77 rom_color_ = color;
78 snes_ = ConvertRGBtoSNES(color);
79 modified = true;
80 }
81
82 void set_snes(uint16_t val) {
83 snes_ = val;
85 rgb_ = ImVec4(col.red, col.green, col.blue, 0.f);
86 modified = true;
87 }
88
89 snes_color rom_color() const { return rom_color_; }
90 uint16_t snes() const { return snes_; }
91 bool is_modified() const { return modified; }
92 bool is_transparent() const { return transparent; }
93 void set_transparent(bool t) { transparent = t; }
94 void set_modified(bool m) { modified = m; }
95
96 private:
97 ImVec4 rgb_;
98 uint16_t snes_;
100 bool modified = false;
101 bool transparent = false;
102};
103
104SnesColor ReadColorFromRom(int offset, const uint8_t* rom);
105
106SnesColor GetCgxColor(uint16_t color);
107std::vector<SnesColor> GetColFileData(uint8_t* data);
108
109} // namespace gfx
110} // namespace app
111} // namespace yaze
112
113#endif // YAZE_APP_GFX_SNES_COLOR_H_
SNES Color container.
Definition snes_color.h:38
snes_color rom_color() const
Definition snes_color.h:89
SnesColor(const snes_color val)
Definition snes_color.h:52
void set_transparent(bool t)
Definition snes_color.h:93
SnesColor(const ImVec4 val)
Definition snes_color.h:41
void set_rgb(const ImVec4 val)
Definition snes_color.h:69
SnesColor(uint8_t r, uint8_t g, uint8_t b)
Definition snes_color.h:57
void set_modified(bool m)
Definition snes_color.h:94
SnesColor(const uint16_t val)
Definition snes_color.h:48
uint16_t snes() const
Definition snes_color.h:90
void set_snes(uint16_t val)
Definition snes_color.h:82
bool is_transparent() const
Definition snes_color.h:92
constexpr float kColorByteMaxF
Definition snes_color.h:26
SnesColor GetCgxColor(uint16_t color)
Definition snes_color.cc:80
uint16_t ConvertRGBtoSNES(const snes_color &color)
Definition snes_color.cc:34
SnesColor ReadColorFromRom(int offset, const uint8_t *rom)
Definition snes_color.cc:49
constexpr int NumberOfColors
Definition snes_color.h:14
std::vector< SnesColor > GetColFileData(uint8_t *data)
Definition snes_color.cc:90
snes_color ConvertSNEStoRGB(uint16_t color_snes)
Definition snes_color.cc:20
std::vector< char > Convert(const std::vector< snes_color > &palette)
Definition snes_color.cc:70
constexpr uint8_t kColorByteMax
Definition snes_color.h:25
std::vector< snes_color > Extract(const char *data, unsigned int offset, unsigned int palette_size)
Definition snes_color.cc:59
Definition common.cc:21
Primitive of 16-bit RGB SNES color.
Definition snes_color.h:13
uint16_t green
Definition snes_color.h:16
uint16_t red
Definition snes_color.h:14
uint16_t blue
Definition snes_color.h:15