Emacs X 11rec

Emacs で x11rec もどき

どーやらInternetExplorer は mng に対応していない模様…しかも geocities には mng 形式のファイルは置けない模様…

サンプルムービー(mng)

x11rec が面白いので,調子にのって Emacs の操作ムービーを撮っていたらディスク が溢れてしまった….そこで,非力な環境(ホームディレクトリの容量がもうヤバい とか)の為に手動でパチパチ撮ったスクリーンショットを繋ぎ合せてムービーにする プログラムを作成しました.

本物の x11rec と違って gifsicle による最適化を省いているので同じフレーム数の ムービーを作るとこっちのほうがデカいのができちゃいます.しかし,一枚一枚 png に変換して撮っていくので,ムービー作成時に必要なディスク容量は少ないです.

MNG コンパイラ とかと連携できたら楽しいだろうなー.とか思いつつ. たとえば,↓のような mng コンパイラ用コードを

MHDR 320 240 10 0 0 0 0
DEFI 1 1
IHDR /tmp/x11rec/x11rec.tmp.0001.png
DEFI 2 1
IHDR /tmp/x11rec/x11rec.tmp.0002.png
DEFI 3 1
IHDR /tmp/x11rec/x11rec.tmp.0003.png
FRAM 1  \0 1 0 0 0  1
LOOP 1 0x7fffffff
MOVE 1 3 0 0 0

LOOP 2 50
MOVE 1 3 1 -1 -1
SHOW 1
ENDL 2

LOOP 2 50
MOVE 1 3 1 -1 -1
SHOW 2
ENDL 2

LOOP 2 50
MOVE 1 3 1 -1 -1
SHOW 3
ENDL 2

ENDL 1
MEND

直接書くのは厳しいという Lisp な人向けに↓のような lisp ライクな構文にすると か.IHDR の行は emacs との連携によって元になる png ファイルは全てわかってる ハズなので自動的に生成できる ような気がします

(with-mng "sample.mng"
  (headr 320 240)
  (loop *
    (move * 'absolute 0 0)
    (loop 50
      (move * 'relative -1 -1)
      (show 1))
    (loop 50
      (move * 'relative -1 -1)
      (show 2))
    (loop 50
      (move * 'relative -1 -1)
      (show 3))))

完成予定図

で,こんな感じになーと思ってます(希望).もーちょい簡易なバージョンは手元で 動いてますが,もっとまともになったら x11rec.el にでも統合しようかと計画中で す.emacs21 を使えば (show 1) とかのプレビューとかもできるかも.