Add document undo history tests
This commit is contained in:
@@ -15,6 +15,8 @@ constexpr std::uint32_t max_canvas_dimension = 131072;
|
||||
constexpr std::uint32_t max_layer_count = 1024;
|
||||
constexpr std::uint32_t max_frame_count = 100000;
|
||||
constexpr std::uint32_t min_frame_duration_ms = 1;
|
||||
constexpr std::size_t min_document_history_entries = 2;
|
||||
constexpr std::size_t max_document_history_entries = 10000;
|
||||
|
||||
struct DocumentConfig {
|
||||
std::uint32_t width = 0;
|
||||
@@ -64,4 +66,26 @@ private:
|
||||
std::vector<AnimationFrame> frames_;
|
||||
};
|
||||
|
||||
class DocumentHistory {
|
||||
public:
|
||||
[[nodiscard]] static pp::foundation::Result<DocumentHistory> create(
|
||||
CanvasDocument initial_document,
|
||||
std::size_t max_entries = 256);
|
||||
|
||||
[[nodiscard]] const CanvasDocument& current() const noexcept;
|
||||
[[nodiscard]] std::size_t size() const noexcept;
|
||||
[[nodiscard]] std::size_t current_index() const noexcept;
|
||||
[[nodiscard]] bool can_undo() const noexcept;
|
||||
[[nodiscard]] bool can_redo() const noexcept;
|
||||
|
||||
[[nodiscard]] pp::foundation::Status apply(CanvasDocument next_document);
|
||||
[[nodiscard]] pp::foundation::Status undo() noexcept;
|
||||
[[nodiscard]] pp::foundation::Status redo() noexcept;
|
||||
|
||||
private:
|
||||
std::size_t max_entries_ = 0;
|
||||
std::size_t current_index_ = 0;
|
||||
std::vector<CanvasDocument> entries_;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user