yaze 0.2.2
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 <snes.h>
5
6#include <cstdint>
7#include <vector>
8
9#include "imgui/imgui.h"
10
11namespace yaze {
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),
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 yaze
111
112#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 ImVec4 val)
Definition snes_color.h:41
bool is_transparent() const
Definition snes_color.h:92
snes_color rom_color_
Definition snes_color.h:99
bool is_modified() const
Definition snes_color.h:91
void set_transparent(bool t)
Definition snes_color.h:93
ImVec4 rgb() const
Definition snes_color.h:67
SnesColor(const snes_color val)
Definition snes_color.h:52
SnesColor(uint8_t r, uint8_t g, uint8_t b)
Definition snes_color.h:57
SnesColor(const uint16_t val)
Definition snes_color.h:48
void set_snes(uint16_t val)
Definition snes_color.h:82
void set_rgb(const ImVec4 val)
Definition snes_color.h:69
uint16_t snes() const
Definition snes_color.h:90
void set_modified(bool m)
Definition snes_color.h:94
Contains classes for handling graphical data.
Definition bitmap.cc:16
std::vector< snes_color > Extract(const char *data, unsigned int offset, unsigned int palette_size)
Definition snes_color.cc:58
uint16_t ConvertRgbToSnes(const snes_color &color)
Definition snes_color.cc:33
std::vector< char > Convert(const std::vector< snes_color > &palette)
Definition snes_color.cc:69
SnesColor ReadColorFromRom(int offset, const uint8_t *rom)
Definition snes_color.cc:48
snes_color ConvertSnesToRgb(uint16_t color_snes)
Definition snes_color.cc:19
constexpr int NumberOfColors
Definition snes_color.h:14
constexpr float kColorByteMaxF
Definition snes_color.h:26
constexpr uint8_t kColorByteMax
Definition snes_color.h:25
SnesColor GetCgxColor(uint16_t color)
Definition snes_color.cc:79
std::vector< SnesColor > GetColFileData(uint8_t *data)
Definition snes_color.cc:89
Main namespace for the application.
Definition controller.cc:18
Primitive of 16-bit RGB SNES color.
Definition snes.h:14
uint16_t green
Definition snes.h:17
uint16_t red
Definition snes.h:15
uint16_t blue
Definition snes.h:16