package com.lemenzo.gallery.editor;

import java.util.ArrayDeque;

/** Bounded in-memory edit history. Bitmaps are never stored. */
public final class EditHistory {
    private static final int MAX = 40;
    private final ArrayDeque<EditState> undo = new ArrayDeque<>();
    private final ArrayDeque<EditState> redo = new ArrayDeque<>();

    public void checkpoint(EditState state) {
        if (state == null) return;
        undo.addLast(state);
        while (undo.size() > MAX) undo.removeFirst();
        redo.clear();
    }

    public EditState undo(EditState current) {
        if (undo.isEmpty()) return null;
        if (current != null) redo.addLast(current);
        return undo.removeLast();
    }

    public EditState redo(EditState current) {
        if (redo.isEmpty()) return null;
        if (current != null) undo.addLast(current);
        return redo.removeLast();
    }

    public boolean canUndo() { return !undo.isEmpty(); }
    public boolean canRedo() { return !redo.isEmpty(); }
    public void clear() { undo.clear(); redo.clear(); }
}
