fix palette update pointer semantics
This commit is contained in:
@@ -71,13 +71,6 @@ absl::Status GfxGroupEditor::Update() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ImGui::BeginTabItem("Palettes")) {
|
if (ImGui::BeginTabItem("Palettes")) {
|
||||||
gui::InputHexByte("Selected Paletteset", &selected_paletteset_);
|
|
||||||
if (selected_paletteset_ >= 71) {
|
|
||||||
selected_paletteset_ = 71;
|
|
||||||
}
|
|
||||||
rom()->resource_label()->SelectableLabelWithNameEdit(
|
|
||||||
false, "paletteset", "0x" + std::to_string(selected_paletteset_),
|
|
||||||
"Paletteset " + std::to_string(selected_paletteset_));
|
|
||||||
DrawPaletteViewer();
|
DrawPaletteViewer();
|
||||||
ImGui::EndTabItem();
|
ImGui::EndTabItem();
|
||||||
}
|
}
|
||||||
@@ -227,6 +220,7 @@ void DrawPaletteFromPaletteGroup(gfx::SnesPalette &palette) {
|
|||||||
auto popup_id = absl::StrCat("Palette", n);
|
auto popup_id = absl::StrCat("Palette", n);
|
||||||
|
|
||||||
// Small icon of the color in the palette
|
// Small icon of the color in the palette
|
||||||
|
|
||||||
if (gui::SnesColorButton(popup_id, palette[n],
|
if (gui::SnesColorButton(popup_id, palette[n],
|
||||||
ImGuiColorEditFlags_NoAlpha |
|
ImGuiColorEditFlags_NoAlpha |
|
||||||
ImGuiColorEditFlags_NoPicker |
|
ImGuiColorEditFlags_NoPicker |
|
||||||
@@ -239,6 +233,14 @@ void DrawPaletteFromPaletteGroup(gfx::SnesPalette &palette) {
|
|||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
void GfxGroupEditor::DrawPaletteViewer() {
|
void GfxGroupEditor::DrawPaletteViewer() {
|
||||||
|
gui::InputHexByte("Selected Paletteset", &selected_paletteset_);
|
||||||
|
if (selected_paletteset_ >= 71) {
|
||||||
|
selected_paletteset_ = 71;
|
||||||
|
}
|
||||||
|
rom()->resource_label()->SelectableLabelWithNameEdit(
|
||||||
|
false, "paletteset", "0x" + std::to_string(selected_paletteset_),
|
||||||
|
"Paletteset " + std::to_string(selected_paletteset_));
|
||||||
|
|
||||||
uint8_t &dungeon_main_palette_val =
|
uint8_t &dungeon_main_palette_val =
|
||||||
rom()->paletteset_ids[selected_paletteset_][0];
|
rom()->paletteset_ids[selected_paletteset_][0];
|
||||||
uint8_t &dungeon_spr_pal_1_val =
|
uint8_t &dungeon_spr_pal_1_val =
|
||||||
@@ -248,7 +250,7 @@ void GfxGroupEditor::DrawPaletteViewer() {
|
|||||||
uint8_t &dungeon_spr_pal_3_val =
|
uint8_t &dungeon_spr_pal_3_val =
|
||||||
rom()->paletteset_ids[selected_paletteset_][3];
|
rom()->paletteset_ids[selected_paletteset_][3];
|
||||||
|
|
||||||
gui::InputHexByte("Dungeon Main", &selected_paletteset_);
|
gui::InputHexByte("Dungeon Main", &dungeon_main_palette_val);
|
||||||
|
|
||||||
rom()->resource_label()->SelectableLabelWithNameEdit(
|
rom()->resource_label()->SelectableLabelWithNameEdit(
|
||||||
false, kPaletteGroupNames[PaletteCategory::kDungeons].data(),
|
false, kPaletteGroupNames[PaletteCategory::kDungeons].data(),
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ absl::Status PaletteEditor::Update() {
|
|||||||
TableHeadersRow();
|
TableHeadersRow();
|
||||||
TableNextRow();
|
TableNextRow();
|
||||||
TableNextColumn();
|
TableNextColumn();
|
||||||
if (gui::SnesColorEdit4("Color Picker", current_color_,
|
if (gui::SnesColorEdit4("Color Picker", ¤t_color_,
|
||||||
ImGuiColorEditFlags_NoAlpha)) {
|
ImGuiColorEditFlags_NoAlpha)) {
|
||||||
// TODO: Implement new update color function
|
// TODO: Implement new update color function
|
||||||
}
|
}
|
||||||
@@ -204,13 +204,13 @@ absl::Status PaletteEditor::DrawPaletteGroup(int category) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
auto palette_group_name = kPaletteGroupNames[category];
|
auto palette_group_name = kPaletteGroupNames[category];
|
||||||
gfx::PaletteGroup palette_group =
|
gfx::PaletteGroup* palette_group =
|
||||||
*rom()->palette_group().get_group(palette_group_name.data());
|
rom()->mutable_palette_group()->get_group(palette_group_name.data());
|
||||||
const auto size = palette_group.size();
|
const auto size = palette_group->size();
|
||||||
|
|
||||||
static bool edit_color = false;
|
static bool edit_color = false;
|
||||||
for (int j = 0; j < size; j++) {
|
for (int j = 0; j < size; j++) {
|
||||||
gfx::SnesPalette* palette = palette_group.mutable_palette(j);
|
gfx::SnesPalette* palette = palette_group->mutable_palette(j);
|
||||||
auto pal_size = palette->size();
|
auto pal_size = palette->size();
|
||||||
|
|
||||||
for (int n = 0; n < pal_size; n++) {
|
for (int n = 0; n < pal_size; n++) {
|
||||||
@@ -230,12 +230,6 @@ absl::Status PaletteEditor::DrawPaletteGroup(int category) {
|
|||||||
if (BeginPopupContextItem(popup_id.c_str())) {
|
if (BeginPopupContextItem(popup_id.c_str())) {
|
||||||
RETURN_IF_ERROR(HandleColorPopup(*palette, category, j, n))
|
RETURN_IF_ERROR(HandleColorPopup(*palette, category, j, n))
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (gui::SnesColorEdit4(popup_id.c_str(), (*palette)[n],
|
|
||||||
// palette_button_flags)) {
|
|
||||||
// EditColorInPalette(*palette, n);
|
|
||||||
// }
|
|
||||||
|
|
||||||
PopID();
|
PopID();
|
||||||
}
|
}
|
||||||
SameLine();
|
SameLine();
|
||||||
@@ -249,7 +243,7 @@ absl::Status PaletteEditor::DrawPaletteGroup(int category) {
|
|||||||
absl::Status PaletteEditor::HandleColorPopup(gfx::SnesPalette& palette, int i,
|
absl::Status PaletteEditor::HandleColorPopup(gfx::SnesPalette& palette, int i,
|
||||||
int j, int n) {
|
int j, int n) {
|
||||||
auto col = gfx::ToFloatArray(palette[n]);
|
auto col = gfx::ToFloatArray(palette[n]);
|
||||||
if (gui::SnesColorEdit4("Edit Color", palette[n], color_popup_flags)) {
|
if (gui::SnesColorEdit4("Edit Color", &palette[n], color_popup_flags)) {
|
||||||
// TODO: Implement new update color function
|
// TODO: Implement new update color function
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ void Bitmap::Create(int width, int height, int depth, const Bytes &data) {
|
|||||||
SDL_Surface_Deleter());
|
SDL_Surface_Deleter());
|
||||||
surface_->pixels = pixel_data_;
|
surface_->pixels = pixel_data_;
|
||||||
GrayscalePalette(surface_->format->palette);
|
GrayscalePalette(surface_->format->palette);
|
||||||
|
active_ = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bitmap::CreateTexture(SDL_Renderer *renderer) {
|
void Bitmap::CreateTexture(SDL_Renderer *renderer) {
|
||||||
@@ -312,17 +313,17 @@ absl::Status Bitmap::ApplyPalette(const SnesPalette &palette) {
|
|||||||
|
|
||||||
for (int i = 0; i < palette.size(); ++i) {
|
for (int i = 0; i < palette.size(); ++i) {
|
||||||
ASSIGN_OR_RETURN(gfx::SnesColor pal_color, palette.GetColor(i));
|
ASSIGN_OR_RETURN(gfx::SnesColor pal_color, palette.GetColor(i));
|
||||||
if (pal_color.is_transparent()) {
|
// if (pal_color.is_transparent()) {
|
||||||
sdlPalette->colors[i].r = 0;
|
// sdlPalette->colors[i].r = 0;
|
||||||
sdlPalette->colors[i].g = 0;
|
// sdlPalette->colors[i].g = 0;
|
||||||
sdlPalette->colors[i].b = 0;
|
// sdlPalette->colors[i].b = 0;
|
||||||
sdlPalette->colors[i].a = 0;
|
// sdlPalette->colors[i].a = 0;
|
||||||
} else {
|
// } else {
|
||||||
sdlPalette->colors[i].r = pal_color.rgb().x;
|
sdlPalette->colors[i].r = pal_color.rgb().x;
|
||||||
sdlPalette->colors[i].g = pal_color.rgb().y;
|
sdlPalette->colors[i].g = pal_color.rgb().y;
|
||||||
sdlPalette->colors[i].b = pal_color.rgb().z;
|
sdlPalette->colors[i].b = pal_color.rgb().z;
|
||||||
sdlPalette->colors[i].a = pal_color.rgb().w;
|
sdlPalette->colors[i].a = pal_color.rgb().w;
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_LockSurface(surface_.get());
|
SDL_LockSurface(surface_.get());
|
||||||
|
|||||||
@@ -31,10 +31,10 @@ std::vector<char> Convert(const std::vector<snes_color>& palette);
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief SNES Color container
|
* @brief SNES Color container
|
||||||
*
|
*
|
||||||
* Used for displaying the color to the screen and writing
|
* Used for displaying the color to the screen and writing
|
||||||
* the color to the Rom file in the correct format.
|
* the color to the Rom file in the correct format.
|
||||||
*
|
*
|
||||||
* SNES colors may be represented in one of three formats:
|
* SNES colors may be represented in one of three formats:
|
||||||
* - Color data from the rom in a snes_color struct
|
* - Color data from the rom in a snes_color struct
|
||||||
* - Color data for displaying to the UI via ImVec4
|
* - Color data for displaying to the UI via ImVec4
|
||||||
|
|||||||
Reference in New Issue
Block a user