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 constexpr SnesColor()
41 : rgb_({0.f, 0.f, 0.f, 0.f}), snes_(0), rom_color_({0, 0, 0}) {}
42
43 constexpr explicit SnesColor(const ImVec4 val) : rgb_(val) {
44 snes_color color;
45 color.red = val.x / kColorByteMax;
46 color.green = val.y / kColorByteMax;
47 color.blue = val.z / kColorByteMax;
48 snes_ = ConvertRgbToSnes(color);
49 }
50
51 constexpr explicit SnesColor(const uint16_t val) : snes_(val) {
52 snes_color color = ConvertSnesToRgb(val);
53 rgb_ = ImVec4(color.red, color.green, color.blue, 0.f);
54 }
55
56 explicit SnesColor(const snes_color val)
57 : rgb_(val.red, val.green, val.blue, kColorByteMaxF),
59 rom_color_(val) {}
60
61 constexpr SnesColor(uint8_t r, uint8_t g, uint8_t b) {
62 rgb_ = ImVec4(r, g, b, kColorByteMaxF);
63 snes_color color;
64 color.red = r;
65 color.green = g;
66 color.blue = b;
67 snes_ = ConvertRgbToSnes(color);
68 rom_color_ = color;
69 }
70
71 void set_rgb(const ImVec4 val);
72 void set_snes(uint16_t val);
73
74 constexpr ImVec4 rgb() const { return rgb_; }
75 constexpr snes_color rom_color() const { return rom_color_; }
76 constexpr uint16_t snes() const { return snes_; }
77 constexpr bool is_modified() const { return modified; }
78 constexpr bool is_transparent() const { return transparent; }
79 constexpr void set_transparent(bool t) { transparent = t; }
80 constexpr void set_modified(bool m) { modified = m; }
81
82 private:
83 ImVec4 rgb_;
84 uint16_t snes_;
86 bool modified = false;
87 bool transparent = false;
88};
89
90SnesColor ReadColorFromRom(int offset, const uint8_t* rom);
91
92SnesColor GetCgxColor(uint16_t color);
93std::vector<SnesColor> GetColFileData(uint8_t* data);
94
95} // namespace gfx
96} // namespace yaze
97
98#endif // YAZE_APP_GFX_SNES_COLOR_H_
SNES Color container.
Definition snes_color.h:38
constexpr snes_color rom_color() const
Definition snes_color.h:75
constexpr void set_modified(bool m)
Definition snes_color.h:80
constexpr ImVec4 rgb() const
Definition snes_color.h:74
constexpr SnesColor(const ImVec4 val)
Definition snes_color.h:43
constexpr bool is_transparent() const
Definition snes_color.h:78
snes_color rom_color_
Definition snes_color.h:85
constexpr SnesColor(const uint16_t val)
Definition snes_color.h:51
constexpr bool is_modified() const
Definition snes_color.h:77
constexpr SnesColor(uint8_t r, uint8_t g, uint8_t b)
Definition snes_color.h:61
SnesColor(const snes_color val)
Definition snes_color.h:56
constexpr void set_transparent(bool t)
Definition snes_color.h:79
constexpr SnesColor()
Definition snes_color.h:40
void set_snes(uint16_t val)
constexpr uint16_t snes() const
Definition snes_color.h:76
void set_rgb(const ImVec4 val)
Contains classes for handling graphical data.
Definition bitmap.cc:18
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