こちらのトゥート拝見したのですが、アンドゥを木構造で管理する発想はとても面白いですね!
私は趣味でソフトフェア開発をしている者なのですが、こちらの内容について僭越ながら私の意見も置いておきます。
まず、既存のソフトウェアの実装についての考察ですが、多くのソフトは図2の実装が近いと思います。
しかし、UNDO後のDRAWの動作については図とは少し違い、4番目のACTIONが追加されるときに1~3番目のACTIONについては破棄される動作になる実装が多いと考えています。(実際私が開発するソフトウェアではそのようにしています)
これは4番目のACTIONが追加されるときに1~3のACTIONが(リストで管理する場合)利用されなくなることが確定するためです。
また、すべてのアンドゥ状態を保存する点についてはメモリ使用量の問題もあります。
ペイントソフトでは多くの場合ACTIONには、描画前と描画後の画像データを含めると思われますが、それを際限なく保存してしまうとメモリ使用量も増えてしまうので、基本的にACTIONのスタックには上限が設けられています。
対策としては古いACTION同士についてはマージして容量を減らすことで保存できるACTIONを増やすことができそうです。
すでにご存知の内容でしたら失礼しました。
特別鉄軌隊なんてなかった、いいね?
#ミストレ生放送