IO_SWF 2.2.2 をリリースしました
二回リリースしちゃいましたが、上の方の #607 が正しいです。ごめんなさい。
今回のリリースは、Shape に NewStyle が含まれる SWF に対してdeformeShape 又は rebuild を使うと壊れた SWF バイナリが生成される不具合の修正と、sliceShapeRecords メソッド(デバッグに便利です)の追加が目的です。
ChangeLog
- countShapeRecords と sliceShapeRecords メソッドを追加
- それらを利用する swfsliceshaperecords.php を追加
- SHAPE build の不具合修正
- NewStyle で FillStyles, LineStyles のどちらかしかない場合にバイナリ構築に失敗する不具合を修正
- SHAPE build のデータ整合性ケア
- NewStyle で FillStyle, LineStyle の片方しかない場合に前回の numBits を持ち越す
- ChangeStyle レコードの全 state ビットが off だった時は moveX bit を立てる。(でないと EndShape 相当になるので)
- PlaceObject2 のダンプ表示に Move フラグを追加。
今回の目玉機能
- ShapeRecords の一部を取り出す機能を入れました。
- サンプル (colorformat.swf)
- この SWF は全部の四角がひとつの SHAPE になっているので、Shape_ID だけでは分割できません。
- 引数にファイルだけ指定すると、shape_id の更に細かい単位でリストします。(ChangeStyle を境にして ShapeRecord をグルーピングしています)
yoya@sakura:~/svn/IO_SWF$ php sample/swfsliceshaperecords.php colorformat.swf shape_id: 8: [0]: FillStyle1:1 Straight:4 [1]: FillStyle1:2 Straight:4 [2]: FillStyle1:2 Straight:4 [3]: FillStyle1:2 Straight:4 [4]: FillStyle1:2 Straight:4 [5]: FillStyle1:2 Straight:4 [6]: FillStyle1:2 Straight:4
- shape_id の 0 個目から1 個目を残す指定ができます。
yoya@sakura:~/svn/IO_SWF$ php sample/swfsliceshaperecords.php ~/flash/colorformat.swf 8 0 1 > t.swf
- 結果、指定した範囲内の ShapeRecord だけ残ります。
yoya@sakura:~/svn/IO_SWF$ php sample/swfsliceshaperecords.php t.swf shape_id: 8: [0]: FillStyle1:1 Straight:4 [1]: FillStyle1:2 Straight:4