1#ifndef YAZE_APP_EDITOR_TILE16EDITOR_H
2#define YAZE_APP_EDITOR_TILE16EDITOR_H
9#include "absl/status/status.h"
18#include "imgui/imgui.h"
45 std::array<uint8_t, 0x200>& all_tiles_types);
87 absl::Status
BatchEdit(
const std::vector<int>& tile_ids,
88 const std::function<
void(
int)>& operation);
143 if (palette.
size() >= 256) {
145 util::logf(
"Tile16 editor received complete overworld palette with %zu colors", palette.
size());
147 util::logf(
"Warning: Received incomplete palette with %zu colors", palette.
size());
155 util::logf(
"Failed to load tile8 graphics with new palette: %s", status.message().data());
157 util::logf(
"Successfully loaded tile8 graphics with complete overworld palette");
161 util::logf(
"Tile16 editor palette coordination complete");
The Rom class is used to load, save, and modify Rom data.
Allows the user to view and edit in game palettes.
Popup window to edit Tile16 data.
absl::Status SaveTile16ToScratchSpace(int slot)
Tile16Editor(Rom *rom, gfx::Tilemap *tile16_blockset)
gfx::Bitmap current_gfx_bmp_
absl::Status LoadLayoutFromScratch(int slot)
std::chrono::steady_clock::time_point last_edit_time_
util::NotifyValue< uint32_t > notify_tile16
absl::Status CyclePalette(bool forward=true)
absl::Status BatchEdit(const std::vector< int > &tile_ids, const std::function< void(int)> &operation)
absl::Status ClearTile16()
absl::Status FillTile16WithTile8(int tile8_id)
gfx::Tilemap * tile16_blockset_
bool map_blockset_loaded_
bool live_preview_enabled_
PaletteEditor palette_editor_
gfx::Tile16 current_tile16_data_
absl::Status SaveTile16ToROM()
absl::Status ApplyPaletteToAll(uint8_t palette_id)
int current_palette_group_
int GetActualPaletteSlotForCurrentTile16() const
absl::Status AutoTileTile16()
std::array< uint8_t, 0x200 > all_tiles_types_
absl::Status RegenerateTile16BitmapFromROM()
absl::Status DiscardChanges()
bool show_palette_settings_
uint8_t palette_normalization_mask_
absl::Status PasteTile16FromClipboard()
absl::Status SaveLayoutToScratch(int slot)
bool show_palette_preview_
absl::Status LoadTile16FromScratchSpace(int slot)
int GetPaletteSlotForSheet(int sheet_index) const
int GetActualPaletteSlot(int palette_button, int sheet_index) const
std::vector< UndoState > undo_stack_
absl::Status FlipTile16Horizontal()
gfx::SnesPalette palette_
absl::Status UpdateTile16Edit()
gfx::SnesPalette overworld_palette_
absl::Status Initialize(const gfx::Bitmap &tile16_blockset_bmp, const gfx::Bitmap ¤t_gfx_bmp, std::array< uint8_t, 0x200 > &all_tiles_types)
absl::Status UpdateBlockset()
bool auto_normalize_pixels_
void EnableLivePreview(bool enable)
absl::Status SetCurrentTile(int id)
absl::Status UpdateTile8Palette(int tile8_id)
absl::Status RefreshTile16Blockset()
absl::Status ValidateTile16Data()
void DrawManualTile8Inputs()
gfx::Bitmap clipboard_tile16_
std::array< gfx::Bitmap, 4 > scratch_space_
absl::Status RefreshAllPalettes()
void DrawPaletteSettings()
std::vector< UndoState > redo_stack_
absl::Status UpdateOverworldTilemap()
absl::Status RotateTile16()
gfx::Bitmap preview_tile16_
gui::Canvas tile16_edit_canvas_
absl::Status CommitChangesToBlockset()
std::array< LayoutScratch, 4 > layout_scratch_
absl::Status UpdateROMTile16Data()
gui::Canvas blockset_canvas_
gui::Canvas tile8_source_canvas_
bool IsTile16Valid(int tile_id) const
gfx::Tile16 * GetCurrentTile16Data()
gfx::Bitmap tile16_blockset_bmp_
absl::Status ApplyToSelection(const std::function< void(int)> &operation)
std::vector< gfx::Bitmap > current_gfx_individual_
absl::Status CommitChangesToOverworld()
absl::Status UpdateBlocksetBitmap()
absl::Status DrawToCurrentTile16(ImVec2 pos, const gfx::Bitmap *source_tile=nullptr)
absl::Status UpdateLivePreview()
absl::Status PreviewPaletteChange(uint8_t palette_id)
absl::Status CopyTile16ToClipboard(int tile_id)
absl::Status ClearScratchSpace(int slot)
int selection_start_tile_
gui::Table tile_edit_table_
std::function< absl::Status()> on_changes_committed_
static constexpr size_t kMaxUndoStates_
int GetSheetIndexForTile8(int tile8_id) const
absl::Status FlipTile16Vertical()
gfx::Bitmap current_tile16_bmp_
std::array< bool, 4 > scratch_space_used_
absl::Status PickTile8FromTile16(const ImVec2 &position)
std::vector< int > selected_tiles_
void set_palette(const gfx::SnesPalette &palette)
util::NotifyValue< uint8_t > notify_palette
void set_on_changes_committed(std::function< absl::Status()> callback)
Represents a bitmap image optimized for SNES ROM hacking.
Shared graphical context across editors.
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Tile composition of four 8x8 tiles.
Modern, robust canvas for drawing and manipulating graphics.
A class to manage a value that can be modified and notify when it changes.
constexpr int kTile16PixelCount
constexpr int kTile8PixelCount
constexpr int kTile16CanvasSize
constexpr int kTilesheetEditorHeight
constexpr int kTile16Size
constexpr int kNumScratchSlots
constexpr int kTile8CanvasHeight
constexpr int kNumPalettes
constexpr int kTilesheetEditorWidth
constexpr int kTilesheetHeight
constexpr int kTilesheetWidth
void logf(const absl::FormatSpec< Args... > &format, Args &&... args)
Main namespace for the application.
std::array< std::array< int, 8 >, 8 > tile_layout
Tilemap structure for SNES tile-based graphics management.