1#ifndef YAZE_APP_EDITOR_GRAPHICS_UI_SCRATCH_GRAPHICS_SCRATCH_VIEW_H_
2#define YAZE_APP_EDITOR_GRAPHICS_UI_SCRATCH_GRAPHICS_SCRATCH_VIEW_H_
22 std::function<absl::StatusOr<usage_preview::PreviewImage>(
31 std::string library_path =
"");
33 std::string
GetId()
const override {
return "graphics.scratch"; }
42 void Draw(
bool* p_open)
override;
49 absl::Status
ImportBin(
const std::string& path,
int bpp,
size_t offset,
52 absl::Status
ExportBin(
const std::string& path);
54 absl::Status
SwapColorIds(
const std::vector<ScratchColorIdTarget>& targets,
55 const ColorIdPermutation& permutation);
64 std::function<absl::Status(
const std::string&)> validator) {
82 std::optional<GraphicsScratchLibrary>
stroke_;
111 std::map<std::tuple<std::string, uint64_t, int>, std::vector<uint8_t>>
120 :
draw_(std::move(draw)) {}
121 std::string
GetId()
const override {
return "graphics.scratch"; }
Shared state between GraphicsEditor panel components.
void SetExportValidator(std::function< absl::Status(const std::string &)> validator)
void SetAssociatedPreview(std::string label, ScratchPreviewCallback callback)
std::string GetId() const override
Unique identifier for this panel.
void DrawAssociatedPreview()
absl::Status PrepareCommand()
float GetPreferredWidth() const override
Get preferred width for this panel (optional)
friend struct ScratchSpritePreviewTestPeer
bool HasPendingChanges() const
void DrawPixels(GraphicsScratchAsset &asset)
uint64_t preview_asset_id_
void Draw(bool *p_open) override
Draw the panel content.
std::string GetIcon() const override
Material Design icon for this panel.
std::optional< GraphicsScratchLibrary > stroke_
std::function< absl::Status(const std::string &) export_validator_)
gui::Canvas preview_canvas_
void SetApplyValidator(std::function< absl::Status(uint16_t)> validator)
absl::Status CaptureSheet()
GraphicsScratchLibrary library_
absl::Status ImportBin(const std::string &path, int bpp, size_t offset, const gfx::SnesPalette &palette={})
ScratchPreviewCallback preview_callback_
WindowPresentationPolicy GetPresentationPolicy() const override
How this content is hosted and advertised by workspace chrome.
void SetStatus(absl::Status status)
const GraphicsScratchLibrary & library() const
void DrawColorIdSwap(const GraphicsScratchAsset &selected)
absl::Status SwapColorIds(const std::vector< ScratchColorIdTarget > &targets, const ColorIdPermutation &permutation)
std::string loaded_bytes_
void RefreshPublishedBaselines()
gfx::Bitmap preview_bitmap_
absl::Status ApplyToSheet()
bool HasActiveStroke() const
~GraphicsScratchView() override
int GetPriority() const override
Get display priority for menu ordering.
std::string GetEditorCategory() const override
Editor category this panel belongs to.
std::string GetDisplayName() const override
Human-readable name shown in menus and title bars.
GraphicsScratchAsset * Selected()
GraphicsScratchView(GraphicsEditorState *state, UndoManager *history, std::string library_path="")
friend struct GraphicsScratchBinTestPeer
std::optional< uint64_t > preview_hash_
GraphicsEditorState * state_
absl::Status Record(GraphicsScratchLibrary before)
absl::Status ExportBin(const std::string &path)
std::map< std::tuple< std::string, uint64_t, int >, std::vector< uint8_t > > published_chunks_
std::string preview_error_
std::function< absl::Status(uint16_t)> apply_validator_
std::string preview_label_
WindowPresentationPolicy GetPresentationPolicy() const override
How this content is hosted and advertised by workspace chrome.
GraphicsScratchWindow(std::function< void()> draw)
float GetPreferredWidth() const override
Get preferred width for this panel (optional)
std::string GetDisplayName() const override
Human-readable name shown in menus and title bars.
std::string GetIcon() const override
Material Design icon for this panel.
void Draw(bool *) override
Draw the panel content.
int GetPriority() const override
Get display priority for menu ordering.
std::function< void()> draw_
std::string GetEditorCategory() const override
Editor category this panel belongs to.
std::string GetId() const override
Unique identifier for this panel.
Manages undo/redo stacks for a single editor.
Base interface for all logical window content components.
Represents a bitmap image optimized for SNES ROM hacking.
Represents a palette of colors for the Super Nintendo Entertainment System (SNES).
Modern, robust canvas for drawing and manipulating graphics.
Editors are the view controllers for the application.
std::function< absl::StatusOr< usage_preview::PreviewImage >( const GraphicsScratchAsset &)> ScratchPreviewCallback
static WindowPresentationPolicy OptionalPopOut()