1#ifndef YAZE_APP_EDITOR_MUSIC_UNDO_ACTIONS_H_
2#define YAZE_APP_EDITOR_MUSIC_UNDO_ACTIONS_H_
8#include "absl/status/status.h"
9#include "absl/strings/str_format.h"
36 absl::Status
Undo()
override {
39 return absl::OutOfRangeError(
40 absl::StrFormat(
"Song %d out of range",
song_index_));
43 return absl::OkStatus();
46 absl::Status
Redo()
override {
49 return absl::OutOfRangeError(
50 absl::StrFormat(
"Song %d out of range",
song_index_));
53 return absl::OkStatus();
57 return absl::StrFormat(
"Edit song %d",
song_index_);
62 size_t usage =
sizeof(*this);
64 for (
const auto& track : seg.tracks) {
69 for (
const auto& track : seg.tracks) {
Undoable action for edits to a music song.
zelda3::music::MusicBank * music_bank_
zelda3::music::MusicSong before_snapshot_
size_t MemoryUsage() const override
Approximate memory footprint for budget enforcement.
absl::Status Undo() override
MusicSongEditAction(int song_index, zelda3::music::MusicSong before_snapshot, zelda3::music::MusicSong after_snapshot, zelda3::music::MusicBank *music_bank)
absl::Status Redo() override
zelda3::music::MusicSong after_snapshot_
std::string Description() const override
Human-readable description (e.g., "Paint 12 tiles on map 5")
Abstract base for all undoable actions (Command pattern)
Manages the collection of songs, instruments, and samples from a ROM.
MusicSong * GetSong(int index)
Get a song by index.
A complete song composed of segments.
std::vector< MusicSegment > segments
A single event in a music track (note, command, or control).