<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
 >

  <channel rdf:about="http://sourceforge.jp/projects/swfed/wiki/!feeds/list">
    <title>SWF Editor for PHP Wiki</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/!feeds/list</link>
    <description>
      SourceForge.jp Wiki pages for SWF Editor for PHP project.    </description>
        <dc:date>2012-02-11T05:11:21+09:00</dc:date>
        <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replacePNGData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceBitmapData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.purgeUselessContents" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/ChangeLog" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceMovieClip" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceActionStrings" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setActionVariables" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/FAQ" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceShapeData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getShapeData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setShapeAdjustMode" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setCompressLevel" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.rebuild" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceGIFData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceJpegData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceMLDData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getSoundData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getBitmapSize" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getPNGData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegAlpha" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.isBitmapTagData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.isShapeTagData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceTagDataByCID" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagDataByCID" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setHeaderInfo" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getHeaderInfo" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.output" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getEditString" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceEditString" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagData" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagList" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagDetail" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.swfInfo" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.input" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.applyShapeMatrixFactor" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.applyShapeRectFactor" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/giflib" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/FrontPage" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWF" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag%2FLossless" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/jpeglib" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/JPEG" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/libpng" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/swfed" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWF%2FJPEG" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag%2FJPEG" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/swfed/wiki/Policy" />
              </rdf:Seq>
    </items>
  </channel>

      <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replacePNGData">
    <title>SWFEditor.replacePNGData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replacePNGData</link>
    <dc:identifier>SWFEditor.replacePNGData</dc:identifier>
    <dc:date>2012-02-11T05:11:21+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function replacePNGData($image_id, $pngdata, $opts = array()) 

= 説明 =

SWF バイナリ中の画像を PNG で差し替えます。

= 引数 =

 * int $image_id (SWF 内のコンテンツ毎にふられた ID)
 * string $pngdata (PN]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function replacePNGData($image_id, $pngdata, $opts = array()) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の画像を PNG で差し替えます。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $image_id (SWF 内のコンテンツ毎にふられた ID)
</li><li>string $pngdata (PNG ファイルのデータ)
</li><li>mixed $opts = array('without_converting' =&gt; true/false, 'rgb15' =&gt; true/false);
<ul><li>without_converting は 0.49 以前のと同じ機能です。省略時は false です。
*rgb15 は RNG24 が渡された場合に 15bit color として保存します。省略時は false です。
</li></ul></li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replacePNGData</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$pngdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>透明度つき PNG 画像にも対応しています。
</li><li>パレット形式にも対応します。
</li><li>16bit bpp(R,G,B 各々が16bit)PNGは未対応です。要望があれば対応します。(SWF 的に 8 bit or 5bit しか対応してないので、結局、8bit に落としますが)
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacepngdata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacepngdata.php</a>
</li><li><a href="http://git.sourceforge.jp/view?p=swfed/swfed.git;a=blob;f=src/tests/bitmap004.phpt" class="external" rel="nofollow">http://git.sourceforge.jp/view?p=swfed/swfed.git;a=blob;f=src/tests/bitmap004.phpt</a>
</li><li><a href="http://d.hatena.ne.jp/yoya/20120210/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20120210/swfed</a> (rgb15)
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getPNGData">SWFEditor.getPNGData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setShapeAdjustMode">SWFEditor.setShapeAdjustMode</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceBitmapData">SWFEditor.replaceBitmapData</a></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceBitmapData">
    <title>SWFEditor.replaceBitmapData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceBitmapData</link>
    <dc:identifier>SWFEditor.replaceBitmapData</dc:identifier>
    <dc:date>2012-02-11T05:11:14+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function replaceBitmapData($image_cond, $bitmapdata, $alphadata = null, $opts = array()) 

※ 0.42 から対応。

= 説明 =

SWF バイナリ中の画像をビットマップ画像(JPEG,PNG,GIF の3種に対応)で差し替えます。

SWF バイ]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function replaceBitmapData($image_cond, $bitmapdata, $alphadata = null, $opts = array()) 
</li></ul><p>※ 0.42 から対応。
</p><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の画像をビットマップ画像(JPEG,PNG,GIF の3種に対応)で差し替えます。
</p><p>SWF バイナリ中の差し替えたい画像を(image_id 以外にも)画像の縦横サイズや色(RGB)といった条件でも指定出来ます。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int or mixed $image_cond (SWF 内のコンテンツ毎にふられた ID、又は画像サイズと色の組み合わせ)
<ul><li>int の場合は image_id
</li><li>mixed の場合は width, height, red, green, blue (任意のパラメータを省略可能)の連想配列。
</li></ul></li><li>string $bitmapdata (ビットマップ画像ファイルのデータ)
</li><li>string $alphadata (透明度情報。この引数は省略可能)
</li><li>boolean $without_converting or mixed $opts; (オプション指定, この引数は省略可能) swfed-0.49 以降から使えます。
</li><li> boolean $without_converting
<ul><li>これが true の場合、(SWFv8 以降の仕様に則っとり) PNG/JPEG/GIF のデータを変換せずに <a href="http://sourceforge.jp/projects/swfed/wiki/JpegTag">JpegTag</a> に格納します。
</li></ul></li><li>mixed $opts = array('without_converting' =&gt; true/false, 'rgb15' =&gt; true/false);
<ul><li>without_converting は 0.49 以前のと同じ機能です。省略時は false です。
*rgb15 は RNG24 が渡された場合に 15bit color として保存します。省略時は false です。
</li></ul></li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><h2 id="h2-.E4.BE.8B1.28image_id.29">例1(image_id)</h2><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">$image_id&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">7</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceBitmapData</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$bitmapdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><ul><li>image_id 7 番の画像を $bitmapdata の画像に差し替える。
</li></ul><h2 id="h2-.E4.BE.8B2.28image_cond.29">例2(image_cond)</h2><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">$image_cond&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'width'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">100</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'red'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">255</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceBitmapData</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_cond</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$bitmapdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><p>* 横幅 100 で RGB の R が 255位の画像を $bitmapdata の画像に差し替える
</p><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>色指定は SWF 内に Lossless(PNG か GIF)で入っている画像のみ対象です。(JPEG は対象外)
</li><li>色は単色の画像を使って下さい。(今は左上のピクセルを参照しますが、変わる可能性があります)
</li><li>色指定する場合、SWF 内の Lossless 画像の zlib 圧縮を解くので、処理が重た目です。
</li><li>色でも画像サイズでも良い場合は、なるべく画像サイズで指定する事をお勧めします。
</li><li>色は±10の誤差を許容する判定をします。(実際、Adobe CS Flash で埋めた際に2～5程度の誤差が生じる事があるので)
</li><li>複数の画像が条件に合致した場合は、どれか一つだけ画像が入れ替わります。
</li><li>でないと、SWF の初めの方で条件に合致する画像があっても、全部の画像をチェックしなければならず。意図的にサボってます。
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacebitmapdata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacebitmapdata.php</a>
</li><li><a href="http://git.sourceforge.jp/view?p=swfed/swfed.git;a=blob;f=src/tests/bitmap004.phpt" class="external" rel="nofollow">http://git.sourceforge.jp/view?p=swfed/swfed.git;a=blob;f=src/tests/bitmap004.phpt</a>
</li><li><a href="http://d.hatena.ne.jp/yoya/20110623/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20110623/swfed</a>
</li><li><a href="http://d.hatena.ne.jp/yoya/20120210/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20120210/swfed</a> (rgb15)
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceJpegData">SWFEditor.replaceJpegData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replacePNGData">SWFEditor.replacePNGData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceGIFData">SWFEditor.replaceGIFData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setShapeAdjustMode">SWFEditor.setShapeAdjustMode</a></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.purgeUselessContents">
    <title>SWFEditor.purgeUselessContents</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.purgeUselessContents</link>
    <dc:identifier>SWFEditor.purgeUselessContents</dc:identifier>
    <dc:date>2012-02-11T05:01:58+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function purgeUselessContents() 

= 説明 =

SWF バイナリ中で参照されないコンテンツ(今のところ画像のみ)を削除します。

 * 本メソッドを使う場合は swfed-0.52 以降を推奨します。(0.51 以前は、ボタンに紐づく画像が削除され、かつボタンが押せなくなる不具合がありました)

= 引数]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function purgeUselessContents() 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中で参照されないコンテンツ(今のところ画像のみ)を削除します。
</p><ul><li>本メソッドを使う場合は swfed-0.52 以降を推奨します。(0.51 以前は、ボタンに紐づく画像が削除され、かつボタンが押せなくなる不具合がありました)
</li></ul><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>無し
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>今のところ無し
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">purgeUselessContents</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>replaceMovieClip で上書きしたシンボルが使っていたコンテンツは大抵、ゴミになる(何処からも参照されない)ので、purgeUselessContents で SWF サイズを減らす事を推奨します。
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceMovieClip">SWFEditor.replaceMovieClip</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/ChangeLog">
    <title>ChangeLog</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/ChangeLog</link>
    <dc:identifier>ChangeLog</dc:identifier>
    <dc:date>2012-02-11T04:55:29+09:00</dc:date>
        <description>
      <![CDATA[[[PageOutline]]

= TODO =

要望を頂いた項目は優先度が上がるかもしれません。

== 次回予定 ==

* replaceMovieClip の第二引数に Button を含んだ SWF を渡すと Button が機能しなくなる事のある不具合修正。
 * CharacterId (image_id や sprite_id 等)に NULL や 0 を渡し]]>
    </description>
    <content:encoded>
      <![CDATA[<div class="pageoutline"><div class="pageoutline-title"><div class="action"><button type="button" onClick="javascript:togglePageOutline(this)"><img src="//static.sourceforge.jp/wiki/images/icons/roll-up.gif" border="0"></button></div>Outline</div><ol><li><a href="#h1-TODO">TODO</a>
<ol><li><a href="#h2-.E6.AC.A1.E5.9B.9E.E4.BA.88.E5.AE.9A">次回予定</a>
</li><li><a href="#h2-.E5.84.AA.E5.85.88.E5.BA.A6.E9.AB.98.E3.82.81">優先度高め</a>
</li><li><a href="#h2-.E5.84.AA.E5.85.88.E5.BA.A6.E4.BD.8E.E3.82.81.20or.20.E3.83.A9.E3.82.A4.E3.83.95.E3.83.AF.E3.83.BC.E3.82.AF">優先度低め or ライフワーク</a>
</li><li><a href="#h2-.E7.A0.94.E7.A9.B6.E4.B8.AD">研究中</a>
</li><li><a href="#h2-.E6.87.B8.E5.BF.B5">懸念</a>
</li></ol></li><li><a href="#h1-trunk">trunk</a>
<ol><li><a href="#h2-.E6.96.B0.E6.A9.9F.E8.83.BD.2F.E5.A4.89.E6.9B.B4">新機能/変更</a>
</li><li><a href="#h2-.E4.B8.8D.E5.85.B7.E5.90.88.E4.BF.AE.E6.AD.A3">不具合修正</a>
</li><li><a href="#h2-.E4.BF.9D.E7.95.99">保留</a>
</li><li><a href="#h2-.E6.B2.A1">没</a>
</li></ol></li><li><a href="#h1-0.52">0.52</a>
<ol><li><a href="#h2-.E6.96.B0.E6.A9.9F.E8.83.BD">新機能</a>
</li><li><a href="#h2-.E4.B8.8D.E5.85.B7.E5.90.88.E4.BF.AE.E6.AD.A3-2">不具合修正</a>
</li></ol></li><li><a href="#h1-0.51">0.51</a>
</li><li><a href="#h1-0.50">0.50</a>
<ol><li><a href="#h2-.E4.B8.8D.E5.85.B7.E5.90.88">不具合</a>
</li></ol></li><li><a href="#h1-0.49">0.49</a>
</li><li><a href="#h1-0.48">0.48</a>
</li><li><a href="#h1-0.47">0.47</a>
</li><li><a href="#h1-0.46">0.46</a>
</li><li><a href="#h1-0.45">0.45</a>
</li><li><a href="#h1-0.44">0.44</a>
</li><li><a href="#h1-0.43">0.43</a>
</li><li><a href="#h1-0.42">0.42</a>
</li><li><a href="#h1-0.41">0.41</a>
</li><li><a href="#h1-0.40">0.40</a>
<ol><li><a href="#h2-.E6.96.B0.E6.A9.9F.E8.83.BD-2">新機能</a>
</li><li><a href="#h2-.E4.B8.8D.E5.85.B7.E5.90.88.E4.BF.AE.E6.AD.A3-3">不具合修正</a>
</li></ol></li><li><a href="#h1-0.39">0.39</a>
</li><li><a href="#h1-0.38">0.38</a>
<ol><li><a href="#h2-.E4.B8.8D.E5.85.B7.E5.90.88-2">不具合</a>
</li></ol></li><li><a href="#h1-0.37">0.37</a>
</li><li><a href="#h1-0.36">0.36</a>
</li><li><a href="#h1-0.35">0.35</a>
</li><li><a href="#h1-0.34">0.34</a>
<ol><li><a href="#h2-.E6.A9.9F.E8.83.BD">機能</a>
</li><li><a href="#h2-.E4.B8.8D.E5.85.B7.E5.90.88.E4.BF.AE.E6.AD.A3-4">不具合修正</a>
</li><li><a href="#h2-.E4.B8.8D.E5.85.B7.E5.90.88-3">不具合</a>
</li></ol></li><li><a href="#h1-0.33">0.33</a>
</li><li><a href="#h1-0.32">0.32</a>
</li><li><a href="#h1-0.31">0.31</a>
</li><li><a href="#h1-0.30">0.30</a>
</li><li><a href="#h1-0.29">0.29</a>
</li><li><a href="#h1-0.28">0.28</a>
</li><li><a href="#h1-0.27">0.27</a>
</li><li><a href="#h1-0.26.20.28NG.29">0.26 (NG)</a>
</li><li><a href="#h1-0.25">0.25</a>
</li><li><a href="#h1-0.24">0.24</a>
</li><li><a href="#h1-0.23">0.23</a>
</li><li><a href="#h1-0.22.20.28NG.29">0.22 (NG)</a>
</li><li><a href="#h1-0.21">0.21</a>
</li><li><a href="#h1-0.20">0.20</a>
</li><li><a href="#h1-0.19">0.19</a>
</li><li><a href="#h1-0.18">0.18</a>
</li><li><a href="#h1-0.17">0.17</a>
</li><li><a href="#h1-0.16">0.16</a>
</li><li><a href="#h1-0.15">0.15</a>
</li><li><a href="#h1-0.14">0.14</a>
</li><li><a href="#h1-0.13">0.13</a>
</li><li><a href="#h1-0.12">0.12</a>
</li><li><a href="#h1-0.11">0.11</a>
</li><li><a href="#h1-0.10">0.10</a>
</li><li><a href="#h1-0.09">0.09</a>
</li><li><a href="#h1-0.08">0.08</a>
</li><li><a href="#h1-0.07">0.07</a>
</li><li><a href="#h1-0.06">0.06</a>
</li><li><a href="#h1-0.05">0.05</a>
</li><li><a href="#h1-0.04">0.04</a>
</li><li><a href="#h1-0.03">0.03</a>
</li><li><a href="#h1-0.02">0.02</a>
</li><li><a href="#h1-0.01">0.01</a>
</li><li><a href="#h1-2008.2F07.2F23">2008/07/23</a>
</li><li><a href="#h1-2008.2F06.2F03">2008/06/03</a>
</li><li><a href="#h1-2008.2F05.2F14">2008/05/14</a>
</li><li><a href="#h1-2008.2F04.2F13">2008/04/13</a>
</li><li><a href="#h1-2008.2F04.2F11">2008/04/11</a>
</li><li><a href="#h1-2008.2F04.2F07">2008/04/07</a>
</li><li><a href="#h1-2008.2F04.2F02">2008/04/02</a>
</li><li><a href="#h1-2008.2F04.2F01">2008/04/01</a>
</li><li><a href="#h1-2008.2F03.2F31">2008/03/31</a>
</li></ol></div>
<h1 id="h1-TODO">TODO</h1><p>要望を頂いた項目は優先度が上がるかもしれません。
</p><h2 id="h2-.E6.AC.A1.E5.9B.9E.E4.BA.88.E5.AE.9A">次回予定</h2><p>* replaceMovieClip の第二引数に Button を含んだ SWF を渡すと Button が機能しなくなる事のある不具合修正。
</p><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/CharacterId">CharacterId</a> (image_id や sprite_id 等)に NULL や 0 を渡した時に、PHP  の警告(Notice ? Error ? Warn ?)を発する機能
</li><li>purgeUselessContents で画像からの変換で作成したボタンが機能しなくなる不具合を修正 (ボタンが参照する画像を誤って削ってしまい、副次的な作用でボタンイベントも動かなくなります)
</li><li>replaceActionStrings の文字列書き換え対象にボタンアクション内の文字列も追加。
</li></ul><h2 id="h2-.E5.84.AA.E5.85.88.E5.BA.A6.E9.AB.98.E3.82.81">優先度高め</h2><ul><li>setFrameRate((float) $rate);
</li><li>setBackgroundColor($red, $green, $blue);
</li><li>purgeUselessContents で音声にリンクしたボタンが機能しなくなる不具合を修正。(不具合報告は受けていませんが、<a href="http://sourceforge.jp/projects/swfed/wiki/DefineButtonSound">DefineButtonSound</a> の仕様を考慮していないので、対処が必要)
</li><li>deformeShape($shape_id) メソッドの追加。
</li><li>insertMovieClip($target, $frame_num, $name, $x, $y, $matrix = array())
</li><li>insertTagData($seqno, $tagdata);
</li></ul><h2 id="h2-.E5.84.AA.E5.85.88.E5.BA.A6.E4.BD.8E.E3.82.81.20or.20.E3.83.A9.E3.82.A4.E3.83.95.E3.83.AF.E3.83.BC.E3.82.AF">優先度低め or ライフワーク</h2><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/DefineShape4">DefineShape4</a> の parse に失敗する事のある不具合を修正する。(babyprincess top.swf で発見)
</li><li>getFrameCountInfo(); の実装
=&gt; array('min' =&gt;..., 'max'=&gt;..., 'lcm'=&gt;..., 'list'=&gt;...)
</li><li>getMovieClip の実装
</li><li>replaceShapeColor($shape_id, $old_color, $new_color);
</li></ul><div class="indent"><div class="indent"><div class="indent">${old|new}_color = array('red' =&gt; ..., 'green' =&gt; ..., 'blue' =&gt; ...), <em>);
</em></div></div></div><ul><li>setBackgroundColor($red, $green, $blue);
</li></ul><ul><li>get(Jpeg|PNG|GIF)Data の premultiplied mode の指定
</li><li>エラーの整理 (なるべく PHP 側にエラーを出す、PHP 側で補足出来るエラーは debug モードに閉じ込める)
</li><li>コードの整理 (swf_tag_remove(swf, tag), swf_tag_append(swf, prev, tag, next) にまとめる)
</li><li>JPEG replace 時に strip (不要なセグメント削除)
</li><li>replacePNG の bpp=16 対応。(bpp=8 に落とすだけ)
</li><li>標準エラーをなるべく PHP の警告へ移す。(debugモードを作る)
</li><li>replacePNG で 15bit以下のcolor を扱う時に format=4 で処理する
</li><li>replaceActionVaribles(array(key =&gt; value, key2 =&gt; value2, ...)) の実装 ＜ replaceActionStrings を作ったけど、思ったより使いにくかった。。。
</li></ul><h2 id="h2-.E7.A0.94.E7.A9.B6.E4.B8.AD">研究中</h2><ul><li>configure で gif, png 取りこめない場合の警告を分かり易くする (config.m4 で出来る？)
</li><li>Windows の公式 PHP や WAMPP で使えるように。(PHP のソース毎 build するのは可能)
</li><li>MP3 入れ替え。(<a href="http://sourceforge.jp/projects/swfed/wiki/DefineSound">DefineSound</a> の nsampling の算出方法が分からない)
</li><li>フォントの抽出/入れ替え (<a href="http://sourceforge.jp/projects/swfed/wiki/DefineFont">DefineFont</a>)
</li></ul><h2 id="h2-.E6.87.B8.E5.BF.B5">懸念</h2><h1 id="h1-trunk">trunk</h1><h2 id="h2-.E6.96.B0.E6.A9.9F.E8.83.BD.2F.E5.A4.89.E6.9B.B4">新機能/変更</h2><p>* replacePNGData に rgb15 オプションを追加しました。PNG24 の R,B,G を各々 5bit にする事で画像サイズを 2/3 に落と背ます。減色と組み合わせてお使い下さい。
</p><h2 id="h2-.E4.B8.8D.E5.85.B7.E5.90.88.E4.BF.AE.E6.AD.A3">不具合修正</h2><p>* purgeUselessContents で画像を割り当てたボタンが機能しなくなる不具合を修正しました。 (ボタンが参照する画像を誤って削ってしまい、画像が表示出来なくなり、かつ、その副次的な作用でボタンが反応しなくなっていました)
</p><h2 id="h2-.E4.BF.9D.E7.95.99">保留</h2><h2 id="h2-.E6.B2.A1">没</h2><ul><li>replaceMovieClip で合成した SWF 同士で重複する depth をずらす処理を入れました。 ＜ sprite 内で depth が正しければ OK のはずなのでボツ。
</li></ul><h1 id="h1-0.52">0.52</h1><h2 id="h2-.E6.96.B0.E6.A9.9F.E8.83.BD">新機能</h2><ul><li>replacePNGData と replaceBitmapData に rgb15 オプションを追加しました。PNG24 を渡した場合、R,B,G を各々 5bit で保存する事で画像サイズを減らします。減色と組み合わせてお使い下さい。
</li></ul><h2 id="h2-.E4.B8.8D.E5.85.B7.E5.90.88.E4.BF.AE.E6.AD.A3-2">不具合修正</h2><ul><li>purgeUselessContents で画像を割り当てたボタンが機能しなくなる不具合を修正しました。 (ボタンが参照する画像を誤って削ってしまい、画像が表示出来なくなり、かつ、ボタンが反応しなくなっていました)
</li></ul><h1 id="h1-0.51">0.51</h1><ul><li>getPNGData, convertBitmapDataToJpegTag にて、パレット形式(format=3)の Lossless 画像から透明度情報が抜け落ちた PNG が生成される不具合を修正しました。
<ul><li>この不具合では透明のはずの場所が黒く表示されます。 
</li></ul></li></ul><h1 id="h1-0.50">0.50</h1><ul><li>convertBitmapDataToJpegTag を実装しました
<ul><li>SWF 内の Lossless 画像を PNG に変換して <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2 として格納し直します。
</li></ul></li><li>getEditString  の不具合修正
<ul><li>initial_text が入っていない時に seg.fault 発生
</li><li>variable_name が先頭部分文字列一致で取得出来てしまう (本来は完全文字列一致)
</li></ul></li><li>replaceGifData (又は replaceBitmapData で GIF 画像を渡した時)
<ul><li>setAdjustMode を指定してこれらの関数を使った時に、意図しない動きをする不具合を修正しました。
</li></ul></li></ul><h2 id="h2-.E4.B8.8D.E5.85.B7.E5.90.88">不具合</h2><ul><li>palette 形式の Lossless を PNG に変換すると透明度の情報が抜け落ちます。 (0.51 で修正しました)
</li></ul><h1 id="h1-0.49">0.49</h1><ul><li>replaceBitmapData の機能拡張
<ul><li>第四引数に (boolean) $without_converting を追加しました。これを true にすると (SWFv8 以降の仕様に則り) PNG/GIF/JPEG を変換せずに <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2 に格納します。
</li><li>(携帯の Flash Player では表示できないので、特殊な場合以外使わないで下さい)
</li></ul></li></ul><h1 id="h1-0.48">0.48</h1><ul><li>input をしない、または失敗した後に、setActionVariables を実行すると Seg.fault する不具合を修正しました。
</li><li>libpng 1.40 対応。png_check_sig が削除されたので png_sig_cmp を使うようにしました。
</li></ul><h1 id="h1-0.47">0.47</h1><ul><li>setActionVariables, replaceActionStrings に文字列以外の型の値を渡すと、Seg.fault する不具合を修正しました。
</li><li>Windows SDK でコンパイル出来るようにしました。参考) <a href="http://d.hatena.ne.jp/yoya/20110810/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20110810/swfed</a>
</li><li>ビット処理を幾分か高速化しました。
</li><li>www/～ の解析ツールでベクター画像一覧が MacOSX で表示できなかった問題を修正しました。 
</li></ul><h1 id="h1-0.46">0.46</h1><ul><li>replaceJpegData に渡す JPEG データの EOI の後に表示と無関係なデータが続く場合に処理を諦める不具合を修正しました。(偽装ツール等で変換した JPEG 等が相当します)
<ul><li>SWF の JPEG 処理で SOS,RST の後ろは並び替えが不要なので、SOS,RST と EOI はひとかたまりで処理します。
</li><li>但し、データの最後が EOI でない場合は、今まで通り EOI まで走査して、その後ろに不正なデータがある場合は無い物として処理します。
</li></ul></li><li>getPNGData で取得した画像に不適当なガンマ値がつく問題を修正。
<ul><li>getPNGData で取得した画像が本来より明るいor(稀に)位画像に変わる事がありました。
</li></ul></li><li>処理の高速化
<ul><li>JPEG 変換と CID 取得処理を改造。bitstream もわずかに改善
</li></ul></li></ul><h1 id="h1-0.45">0.45</h1><ul><li>replaceTagContentsByCID の後、高確率で sef.fault が発生する不具合を修正しました。
</li></ul><h1 id="h1-0.44">0.44</h1><ul><li>replaceActionStrings で 1つの Push 命令で複数の値を扱うバイトコードに対応しました。&gt; yoshikids さん thx!
</li><li>configure で libpng と giflib を必須にしました。(今までオプション扱いでした)
<ul><li>configure で giflib, libpng が見つからない場合にエラー停止します。(今までは警告のみ)
</li></ul></li></ul><h1 id="h1-0.43">0.43</h1><p>memory leak 修正対応のリリースです。
</p><ul><li>replaceActionStrings や (<a href="http://sourceforge.jp/projects/swfed/wiki/DoAction">DoAction</a> タグがある時に) rebuild を呼ぶと (output 時に) memory leak する不具合を修正しました。
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/DoAction">DoAction</a> タグのバイナリ再構築で free 抜けがあった為です。上記メソッドを読んだ回数 × (24 byte + malloc の管理領域 + 構造体の隙間) 分 leak します。
</li><li>replaceShapeData の引数で(0.37 以前の形式を含め) 0.38 以降の正しい Shapeデータ形式以外を渡すと memory leak する不具合を修正しました。
</li></ul><h1 id="h1-0.42">0.42</h1><ul><li>replaceBitmapData を実装しました。
</li><li>画像 replace 系メソッドの高機能版です。(1)JPEG/PNG/GIF いずれを渡しても大丈夫です。(2) サイズや色の組み合わせの条件で入れ替える画像を指定出来ます。
<ul><li>replaceBitmapData($condition, $bitmapdata, <a href="http://sourceforge.jp/projects/swfed/wiki/%24jpegalphadata">$jpegalphadata</a>);
</li></ul></li></ul><div class="indent">例1) $condition = array('width' =&gt; ..., 'height' =&gt; ...);
例2) $condition = array('red' =&gt; ..., 'green' =&gt; ..., 'blue' =&gt; ...);
</div><h1 id="h1-0.41">0.41</h1><ul><li>replaceActionString (<a href="http://sourceforge.jp/projects/swfed/wiki/ActionScript">ActionScript</a> 中の文字列を入れ替える)
<ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/ActionScript2">ActionScript2</a>.0 の文字列(変数名やリテラル等)を書き換えます。
</li><li>(ラベルは未対応です。要望があれば対応します)
</li></ul></li></ul><h1 id="h1-0.40">0.40</h1><h2 id="h2-.E6.96.B0.E6.A9.9F.E8.83.BD-2">新機能</h2><ul><li>www の dump ツールにビットマップ画像のみ表示するモードを追加しました。
</li></ul><h2 id="h2-.E4.B8.8D.E5.85.B7.E5.90.88.E4.BF.AE.E6.AD.A3-3">不具合修正</h2><ul><li>replaceMovieClip で合成した2つの SWF の CID が合わせて 256 個以上の時に、正しく表示できない不具合を修正しました。
</li><li>www の dump ツールのアップロードのファイルサイズ制限に ini の設定を反映させました。(今までは決め打ち表示なので正しくないです)
</li></ul><h1 id="h1-0.39">0.39</h1><ul><li>getShapeData, getTagData でメモリリークする問題を修正しました。
</li><li>printTagData($tagdata) メソッドを実装しました。
</li><li>小さいサイズに realloc して先頭ポインタが変わる場合に対応出来ていない不具合に対処しました。(稀ですが seg.fault の可能性がありました)
</li></ul><h1 id="h1-0.38">0.38</h1><ul><li>getShapeData/replaceShapeData で扱うデータ形式を 0.37 までと 0.38 以降で変更しました。以前の shape データは使えませんので、ご注意下さい。
</li></ul><ul><li>replaceMovieClip でビットマップを張り付けたモーフィング画像を渡すと、表示がおかしくなる不具合を修正しました。
</li><li>removeTag($seqno) を実装しました。 (デバッグや解析用に便利です)
</li></ul><ul><li>replaceShapeData で入れ替え元と後の tag code が異なると正しく動作しない不具合を修正しました。(0.37 以前で get で取得した shape データは replace で利用しないで下さい)
</li><li>rebuild メソッドが実質機能していなかったのを修正しました。
</li><li>同じオブジェクトで input を複数回呼ぶとメモリリークする不具合を修正しました。
</li></ul><h2 id="h2-.E4.B8.8D.E5.85.B7.E5.90.88-2">不具合</h2><ul><li>getShapeData, getTagData を使う度にメモリリークします。0.39 で修正します。
</li></ul><h1 id="h1-0.37">0.37</h1><ul><li>replaceMovieClip インスタンス名指定のターゲットパス形式対応。0.36 では A/B のシンボルを B 指定で入れ替えられましたが、0.37 からは A/B 形式で指定して下さい。
</li><li>getTagDataByCID($cid) replaceTagDataByCID($cid, $tagdata), を実装しました。 (replaceShapeData の代わりに使って下さい)
</li><li>isShapeTagData($tagdata), isBitmapTagData($tagdata) メソッドを実装しました。
</li><li>rebuild メソッドを実装しました。データ編集の有無に関わらずバイナリを再構築します。(サイズがわずかに増減する事があります。処理は重た目です)
</li></ul><ul><li>replaceTagData は tag_code&amp;length フィールドを含む形式を受け付けるようにしました。(getTagData が返すデータ形式に合わせる為)
</li><li>swfInfo で表示するベクター画像の曲線座標の誤りを修正しました。
</li></ul><h1 id="h1-0.36">0.36</h1><ul><li>replaceMovieClip から unused_cid_purge の機能を削除しました。 &gt; purgeUselessContents メソッドが代わりになります。
</li><li>purgeUselessContents の実装 (unused_cid_purge フラグの代わりで、かつこのフラグに合った制限事項は解消してます)
</li><li>replaceMovieClip でシンボル内のインスタンス名指定で入れ替え出来るようにしました。
</li><li>replaceMovieClip で version8 移行のベクター画像データ(<a href="http://sourceforge.jp/projects/swfed/wiki/DefineShape4">DefineShape4</a>, <a href="http://sourceforge.jp/projects/swfed/wiki/DefineMorphShape2">DefineMorphShape2</a>)がある場合に壊れた SWF が生成される不具合を修正しました。
</li></ul><ul><li>複数の画像をグループ化したグラフィックシンボルがある場合の不具合に対応しました。
</li></ul><h1 id="h1-0.35">0.35</h1><ul><li>replaceMovieClip で上書きするシンボルから参照されるデータを削除するようにしました。引数指定で削除しない指示も可能です。
</li><li>setCompressLevel メソッドを追加しました。(主に、PNG/GIF 入れ替えの圧縮率に影響します)
</li><li>(get|set)<a href="http://sourceforge.jp/projects/swfed/wiki/HeaderInfo">HeaderInfo</a> を拡張しました。<a href="http://sourceforge.jp/projects/swfed/wiki/FrameRect">FrameRect</a> に対応しました。(x_min, y_min, x_max, y_max をキーに指定します)
</li></ul><h1 id="h1-0.34">0.34</h1><h2 id="h2-.E6.A9.9F.E8.83.BD">機能</h2><ul><li>replaceMovieClip で上書きするシンボルから参照されるデータを削除するようにしました。
</li><li>replaceMovieClip で合成した swf 同士で depth が重複させない処理を無効化しました。(意味が無いので)
</li></ul><h2 id="h2-.E4.B8.8D.E5.85.B7.E5.90.88.E4.BF.AE.E6.AD.A3-4">不具合修正</h2><ul><li>replaceMovieClip で上書きするシンボルから参照されるデータを削除する処理が機能していませんでした。
</li><li>replaceMovieClip の合成結果に JPEGTables が2つ入る事のある不具合を修正しました。
</li><li>replaceMovieClip の第２引数にシンボルを含むSWFデータを渡した時に表示がおかしくなる不具合を修正しました。
</li><li>setShapeAdjustMode で SHAPE_BITMAP_MATRIX_RESCALE が機能しなくなっていた不具合を修正しました。 (0.32 でデグレード)
</li><li>zlib compress でサイズが増える場合に対応しました。(*1.001+12 byte のマージンを追加)
</li></ul><h2 id="h2-.E4.B8.8D.E5.85.B7.E5.90.88-3">不具合</h2><ul><li>この機能が動いていませんでした → replaceMovieClip で上書きするシンボルから参照されるデータを削除するようにしました。
</li></ul><h1 id="h1-0.33">0.33</h1><div class="indent">0.32 同様実験リリースです。安定版はもう少しお待ち下さい。
</div><ul><li>replaceMovieClip で合成した SWF 同士で重複する CID をずらす処理について、<a href="http://sourceforge.jp/projects/swfed/wiki/MovieClip">MovieClip</a> が nest した場合にも対応しました。
</li><li>replaceMovieClip で合成した SWF 同士で重複する depth をずらす処理を入れました。(実験的に入れています、必要なければ削除)
</li><li>0.32 で getShapeIdListByBitmapRef が機能しなくなっていたので修正しました。(undefined symbol: swf_tag_shape_bitmap_get_cid の警告が出ます)
</li><li>applyShapeRectFactor, applyShapeMatrixFactor で移動距離が1/20で動作する不具合を修正しました。
</li><li>replaceTagData で seg.fault する事がある不具合を修正しました。
</li><li>形式のおかしい tag を処理する際に seg.fault する事がある不具合を修正しました。
</li></ul><h1 id="h1-0.32">0.32</h1><div class="indent">今回、大量にコードを書き換えた為、品質的に不安があります。
replaceMovieClip を試す目的以外では 0.31 以前をお使い下さい。
</div><ul><li>replaceMovieClip を実装しました。(実験レベルです)
</li><li>setActionVariables を呼びすぎると <a href="http://sourceforge.jp/projects/swfed/wiki/ActionScript">ActionScript</a> が動かなくなる問題を修正しました。
</li></ul><h1 id="h1-0.31">0.31</h1><ul><li>Web(swfed/www)で表示する画像一覧に SHAPE の画像を追加。(bitmap を張る shape は未対応)
</li><li>getTagDetail, swfInfo, replaceShapeData の何れかを呼んだ後で getShapeData を呼ぶと正しくないデータが取れるのを修正。
</li></ul><h1 id="h1-0.30">0.30</h1><ul><li>透明色を含まない GIF89a を replaceGIFData に渡した場合に、colortable 256個目の色が透明になる不具合を修正しました。
</li></ul><h1 id="h1-0.29">0.29</h1><div class="indent">( php -i で 0.28 と表示されます。済みません…)
</div><ul><li>getShapeData, replaceShapeData を実装しました。
</li><li>getTagContentsByCID, replaceTagContentsByCID を実装しました。
</li></ul><ul><li>詳細はこちらをご覧ください。↓
</li></ul><p><a href="http://d.hatena.ne.jp/yoya/20110203/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20110203/swfed</a>
</p><h1 id="h1-0.28">0.28</h1><ul><li>稀に Seg.fault で落ちる不具合を修正。(環境によっては高い確率で落ちる) 
<ul><li>JPEG タグを含む SWF を入れ替えたり dump したりする処理で、意図しない free が動いていた。
</li></ul></li></ul><h1 id="h1-0.27">0.27</h1><ul><li>0.26 の不具合修正リリース
</li></ul><h1 id="h1-0.26.20.28NG.29">0.26 (NG)</h1><div class="indent">(不具合が含まれます。0.27 以降をお使いください)
</div><ul><li>setActionVariables($params) : <a href="http://sourceforge.jp/projects/swfed/wiki/ActionScript">ActionScript</a>変数を初期化する機能
<ul><li> <a href="http://faces.jp/2008/08/flash_1.html" class="external" rel="nofollow">http://faces.jp/2008/08/flash_1.html</a>
</li></ul></li><li>replacePNGData に透明度付きPNGを渡した際に、意図しない色が透明になる事がある不具合を修正。
<ul><li>tRNS から透明度情報を読む際に、１つ大目にカン違いしていて余計に１色分透明にしていました。
</li></ul></li></ul><h1 id="h1-0.25">0.25</h1><ul><li>replaceJpegData に GIF を渡すとPHPごと落ちる事がある不具合を
</li></ul><h1 id="h1-0.24">0.24</h1><ul><li>getShapeIdListByBitmapRef($image_id) : image_id を指す Shapeタグ一覧取得
</li><li>getBitmapSize($image_id) : image_id に対応する画像の縦横サイズを得る
</li><li>replacePNGdata で JPEGタグの image_id を指定した時にたまにPHPごと落ちる不具合の修正
</li></ul><p>その他
</p><ul><li>php -i で SWF Editor のバージョンを確認できるようにしました。(今までなくて済みません)
</li></ul><p>詳細はこちらをご覧ください。↓
</p><ul><li><a href="http://d.hatena.ne.jp/yoya/20101101/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20101101/swfed</a>
</li></ul><h1 id="h1-0.23">0.23</h1><ul><li>サイズの異なる画像で入れ替えた場合に枠に合わない問題に、(JPEG に加えて) GIF, PNG にも対応しました。
</li><li>replaceJPEGData, replaceGIFData, replacePNGdata の3つで有効な、setShapeAdjustMode メソッドを実装しました。
</li></ul><p>使い方は、0.22 の(JPEG のみ有効だった)adjustShapeBitmap と同じです。
</p><p>尚、adjustShapeBitmap メソッドは削除しました。(名前が分かりにくいので、setShapeAdjustMode に変更)
</p><p>詳細はこちらをご覧ください。↓
</p><ul><li><a href="http://d.hatena.ne.jp/yoya/20101027/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20101027/swfed</a>
</li></ul><h1 id="h1-0.22.20.28NG.29">0.22 (NG)</h1><p>(adjustShapeBitmap は setShapeAdjustMode に改名しました。0.23 以降をお使い下さい)
</p><p>サイズの異なる画像で入れ替えた場合に
枠と合わず表示が変になる問題への対応です。
</p><ul><li>applyShapeRectFactor がまともに動作するようになりました
</li><li>applyShapeMatrixFactor のメモリリークを修正しました。
</li></ul><p>adjustShapeBitmap を実装しました。(replaceJPEGData のみ対応)
</p><ul><li>以下の３つの選択肢があります。
</li><li>SWFEditor::SHAPE_BITMAP_RECT_RESIZE
</li><li>SWFEditor::SHAPE_BITMAP_MATRIX_RESCALE
</li><li>SWFEditor::SHAPE_BITMAP_TYPE_TILLED
</li></ul><p>詳細はこちらをご覧ください。↓
</p><ul><li><a href="http://d.hatena.ne.jp/yoya/20101027/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20101027/swfed</a>
</li></ul><h1 id="h1-0.21">0.21</h1><p>新機能
</p><ul><li>applyShapeMatrixFactor メソッドを追加しました。
</li><li>画像の(枠内)スケール/回転/移動のツールです。
</li><li>applyShapeRectFactor メソッドを追加しました (こちらはまだ実験的な機能です)
</li><li>画像の枠のスケール/移動のツールです 
</li></ul><p>不具合修正
</p><ul><li>bpp = 8 未満の GIF で入れ替えができない不具合を修正しました。
</li><li>スレッドセーフを要求する環境でコンパイル出来ない問題を修正しました
</li></ul><p>その他
</p><ul><li>swfInfo の表示を色々改良
</li><li>swfInfo に <a href="http://sourceforge.jp/projects/swfed/wiki/DefineShape1">DefineShape1</a>,2,3 <a href="http://sourceforge.jp/projects/swfed/wiki/DefineMorphShape">DefineMorphShape</a> の詳細表示を追加
</li><li>Lossless の処理を少し高速化 (恐らく効果は誤差範囲ですが…)
</li></ul><h1 id="h1-0.20">0.20</h1><p>* method 名が global function としても見える不具合を修正しました。
</p><h1 id="h1-0.19">0.19</h1><ul><li>getEditString で正しい長さの文字列を取得できない問題を修正しました (変数名より長い文字列だと途中で切れていました)
</li><li> libpng, giflib がリンクできない事のある不具合を対処しました
</li><li> getTagData を実装しました
</li><li>swfInfo で <a href="http://sourceforge.jp/projects/swfed/wiki/DefineSprite">DefineSprite</a> の中身を表示させました
</li><li> print 表示の細かい変更を行いました (TWIPS からpixel に単位変更等)
</li><li>エラーメッセージを幾つか改良しました
</li></ul><h1 id="h1-0.18">0.18</h1><h1 id="h1-0.17">0.17</h1><h1 id="h1-0.16">0.16</h1><h1 id="h1-0.15">0.15</h1><h1 id="h1-0.14">0.14</h1><h1 id="h1-0.13">0.13</h1><h1 id="h1-0.12">0.12</h1><h1 id="h1-0.11">0.11</h1><h1 id="h1-0.10">0.10</h1><h1 id="h1-0.09">0.09</h1><h1 id="h1-0.08">0.08</h1><ul><li>replacePNGData で 256 full に使った palette 画像で一色変わる不具合を修正。
</li></ul><h1 id="h1-0.07">0.07</h1><ul><li>replaceMLDData 実装。
</li></ul><h1 id="h1-0.06">0.06</h1><ul><li>getSoundData  実装。
</li></ul><h1 id="h1-0.05">0.05</h1><ul><li>swfInfo の dump 対象に <a href="http://sourceforge.jp/projects/swfed/wiki/DefineSound">DefineSound</a> を追加
</li></ul><h1 id="h1-0.04">0.04</h1><ul><li>Lossless format=3 PNG 吸い出しのメモリリーク修正
</li></ul><h1 id="h1-0.03">0.03</h1><ul><li>Lossless format=3 を PNGとして吸い出す機能対応
</li></ul><h1 id="h1-0.02">0.02</h1><ul><li>Lossless format=5 を PNGとして吸い出す機能対応
</li></ul><h1 id="h1-0.01">0.01</h1><ul><li>sourceforge.jp での initial release
</li></ul><h1 id="h1-2008.2F07.2F23">2008/07/23</h1><ul><li>tar ball で公開
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/DefineLossless">DefineLossless</a> format =3 (palette)不具合修正
</li></ul><p>＝2008/07/22 =
</p><ul><li>DefineJPEG  の入れ替えで正しくない chunk の並びが入る不具合を修正。DefineJPEG2,3 対応時のデグレード
<ul><li><a href="http://diary.awm.jp/~yoya/?20080722#200807220" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080722#200807220</a>
</li></ul></li></ul><h1 id="h1-2008.2F06.2F03">2008/06/03</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/DoAction">DoAction</a> の対応コード追加
<ul><li><a href="http://diary.awm.jp/~yoya/?20080603#200806030" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080603#200806030</a>
</li></ul></li></ul><h1 id="h1-2008.2F05.2F14">2008/05/14</h1><ul><li>replaceJpegData  の DefineJPEG3(alpha データ)対応。
<ul><li><a href="http://diary.awm.jp/~yoya/?20080514#200805140" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080514#200805140</a>
</li></ul></li></ul><h1 id="h1-2008.2F04.2F13">2008/04/13</h1><ul><li>getJpegData で抽出した画像がビューアで表示出来ない不具合を修正
<ul><li><a href="http://diary.awm.jp/~yoya/?20080413#200804130" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080413#200804130</a>
</li></ul></li></ul><h1 id="h1-2008.2F04.2F11">2008/04/11</h1><ul><li>getTagDetail
<ul><li><a href="http://diary.awm.jp/~yoya/?20080411#200804110" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080411#200804110</a>
</li></ul></li></ul><h1 id="h1-2008.2F04.2F07">2008/04/07</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/DefineEditText">DefineEditText</a> dump 対応
<ul><li><a href="http://diary.awm.jp/~yoya/?20080407#200804070" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080407#200804070</a>
</li></ul></li></ul><div class="indent">
</div><h1 id="h1-2008.2F04.2F02">2008/04/02</h1><ul><li>DefineJPEG2, DefineJPEG3 dump 対応
<ul><li><a href="http://diary.awm.jp/~yoya/?20080402#200804020" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080402#200804020</a>
</li></ul></li></ul><h1 id="h1-2008.2F04.2F01">2008/04/01</h1><ul><li>CWS 対応
<ul><li><a href="http://diary.awm.jp/~yoya/?20080401#200804010" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080401#200804010</a>
</li></ul></li></ul><h1 id="h1-2008.2F03.2F31">2008/03/31</h1><ul><li>initial release 〜 dump と JPEG画像入れ替え (DefineJPEG のみ, 2,3 未対応)
<ul><li> <a href="http://diary.awm.jp/~yoya/?20080331#200803311" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080331#200803311</a></li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceMovieClip">
    <title>SWFEditor.replaceMovieClip</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceMovieClip</link>
    <dc:identifier>SWFEditor.replaceMovieClip</dc:identifier>
    <dc:date>2012-02-11T03:27:05+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function replaceMovieClip($instance_name, $swfdata, $unused_cid_purge = true) 

※ 0.33 で実装。0.40 以降を推奨。

= 説明 =

SWF バイナリ中の MovieClip を渡した SWF で差し替えます。

= 引数 =

 * string]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function replaceMovieClip($instance_name, $swfdata, $unused_cid_purge = true) 
</li></ul><p>※ 0.33 で実装。0.40 以降を推奨。
</p><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の <a href="http://sourceforge.jp/projects/swfed/wiki/MovieClip">MovieClip</a> を渡した SWF で差し替えます。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>string $instance_name (<a href="http://sourceforge.jp/projects/swfed/wiki/MovieClip">MovieClip</a> を指定するインスタンス名 = tellTarget で指定する文字列)
<ul><li>0.37 からターゲットパスで指定出来ます。A の中に B のインスタンスがある場合は、A/B のように指定して下さい。
</li></ul></li><li>string $swfdata (SWF ファイルのデータ)
</li><li>boolean $unused_cid_purge (0.35 のみ。3.36 以降は無視して false 扱いにします) purgeUselessContents メソッドを使って下さい。
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceMovieClip</span><span style="color: #007700">(</span><span style="color: #0000BB">$instance_name</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$swfdata_movieclip</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">purgeUselessContents</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.88.B6.E9.99.90.E4.BA.8B.E9.A0.85">制限事項</h1><ul><li>テンプレート SWF と差し替え SWF で(<a href="http://sourceforge.jp/projects/swfed/wiki/ActionScript">ActionScript</a>から)お互いを指し示すターゲット名は、絶対パス指定を用いる事をお勧めします。差し替え SWF の制御タグを <a href="http://sourceforge.jp/projects/swfed/wiki/MovieClip">MovieClip</a> の中にくるむ為、root からの階層が期待したものと異なる可能性があります。
</li></ul><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>replaceMovieClip は入れ替え元MCが参照していた画像データを削除しません(他の場所からも共有している可能性がある為)。
<ul><li>入れ替えた結果 SWF の何処からも参照されなくなった画像データは purgeUselessContents で削除できます。output の直前に一度だけ purgeUselessContents を呼ぶ事を推奨します。
</li><li>replaceMovieClip の第二引数に Button を含んだ SWF を渡した場合には Button が機能しなくなる事があります。(修正予定です)
</li></ul></li></ul><ul><li>0.37 まで、ビットマップ画像のモーフィングを含むシンボルを挿入した場合に、正しく表示できない不具合がありました。
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://d.hatena.ne.jp/yoya/20110319/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20110319/swfed</a>
</li><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacemovieclip.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacemovieclip.php</a>
</li><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/src/tests/movieclip003.phpt" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/src/tests/movieclip003.phpt</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.purgeUselessContents">SWFEditor.purgeUselessContents</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">
    <title>SWFEditor</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor</link>
    <dc:identifier>SWFEditor</dc:identifier>
    <dc:date>2011-11-09T03:19:36+09:00</dc:date>
        <description>
      <![CDATA[class SWFEditor

= i/o =
 * function [SWFEditor.input input](string $swddata)
 * function [SWFEditor.output output]()

= dump  =
 * function [SWFEditor.swfInfo swfInfo]()
 * function [SWFEdito]]>
    </description>
    <content:encoded>
      <![CDATA[<p>class SWFEditor
</p><h1 id="h1-i.2Fo">i/o</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.input">input</a>(string $swddata)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.output">output</a>()
</li></ul><h1 id="h1-dump">dump</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.swfInfo">swfInfo</a>()
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagList">getTagList</a>()
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagDetail">getTagDetail</a>(int $seqno)
</li></ul><h1 id="h1-header">header</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getHeaderInfo">getHeaderInfo</a>()
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setHeaderInfo">setHeaderInfo</a>(mixed $header_info)
</li></ul><h1 id="h1-tag">tag</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagData">getTagData</a>(int $seqno)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagDataByCID">getTagDataByCID</a>(int $cid)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceTagDataByCID">replaceTagDataByCID</a>(int $cid, string $data)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagContentsByCID">getTagContentsByCID</a>(int $cid)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceTagContentsByCID">replaceTagContentsByCID</a>(int $cid, string $data)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.isShapeTagData">isShapeTagData</a>(string $data)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.isBitmapTagData">isBitmapTagData</a>(string $data)
</li></ul><h1 id="h1-sprite">sprite</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceMovieClip">replaceMovieClip</a>(string instance_name, string $swfdata, boolean $unused_cid_purge = true)
</li></ul><h1 id="h1-shape">shape</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getShapeData">getShapeData</a>(int $shape_id)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceShapeData">replaceShapeData</a>(int $shape_id, string $shapedata)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.applyShapeMatrixFactor">applyShapeMatrixFactor</a>(int $shape_id, float $scale_x, float $scale_y, float $radian, int $trans_x, int $tranx_y)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.applyShapeRectFactor">applyShapeRectFactor</a>(int $shape_id, float $scale_x, float $scale_y, int $trans_x, int $tranx_y)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setShapeAdjustMode">setShapeAdjustMode</a>(int $mode)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getShapeIdListByBitmapRef">getShapeIdListByBitmapRef</a>(int $image_id)
</li></ul><h1 id="h1-image">image</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceBitmapData">replaceBitmapData</a>(mixed $image_cond, string $bitmapdata, string $alphadata = null, boolean $without_converting = false)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegData">getJpegData</a>(int $image_id)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegAlpha">getJpegAlpha</a>(int $image_id)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceJpegData">replaceJpegData</a>(int $image_id, string $jpegdata, string $alphadata = null)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getPNGData">getPNGData</a>(int $image_id)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replacePNGData">replacePNGData</a>(int $image_id, string $pngdata)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceGIFData">replaceGIFData</a>(int $image_id, string $gifdata)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getBitmapSize">getBitmapSize</a>(int $image_id)
</li></ul><h1 id="h1-text">text</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getEditString">getEditString</a>({string $variable_name|int $edit_id})
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceEditString">replaceEditString</a>({string $variable_name|int $edit_id}, string $text)
</li></ul><h1 id="h1-sound">sound</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getSoundData">getSoundData</a>(int $sound_id)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceMLDData">replaceMLDData</a>(int $sound_id, string $mlddata)
</li></ul><h1 id="h1-action">action</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setActionVariables">setActionVariables</a>(array $vars)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceActionStrings">replaceActionStrings</a>(array $vars)
</li></ul><h1 id="h1-misc">misc</h1><ul><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setCompressLevel">setCompressLevel</a>(integer $level)
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.purgeUselessContents">purgeUselessContents</a>()
</li><li>function <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.rebuild">rebuild</a>()
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceActionStrings">
    <title>SWFEditor.replaceActionStrings</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceActionStrings</link>
    <dc:identifier>SWFEditor.replaceActionStrings</dc:identifier>
    <dc:date>2011-11-03T02:15:24+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function replaceActionStrings(array $params) 

※ 0.41 から対応。

= 説明 =

SWF バイナリ中の ActionScript2.0 の文字列を書き換えます。
変数名や文字列リテラルが対象です。

= 引数 =

 * array $params (入れ替え前の文字列と後の文字]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function replaceActionStrings(array $params) 
</li></ul><p>※ 0.41 から対応。
</p><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の <a href="http://sourceforge.jp/projects/swfed/wiki/ActionScript2">ActionScript2</a>.0 の文字列を書き換えます。
変数名や文字列リテラルが対象です。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>array $params (入れ替え前の文字列と後の文字列の連想配列)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$params&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'http://example.com/'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'http://pwiki.awm.jp/~yoya/'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'default_param'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'foobaa_param'<br /></span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceActionStrings</span><span style="color: #007700">(</span><span style="color: #0000BB">$params</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.88.B6.E9.99.90.E4.BA.8B.E9.A0.85">制限事項</h1><ul><li>今のところ、ボタンのクリップアクション内の文字列は書き換えません。(要望があれば対応します)
</li><li>今のところ、ラベルは書き換えません。(要望があれば対応します)
</li></ul><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>文字列エンコーディングは処理しません。自前で変換して下さい。
</li><li>尚、Flash ver 6 以降は UTF-8 ですが、Flash Lite は ver 4 相当なので CP932(SJIS-Win)エンコーディングです。
</li><li>あくまで文字列 replace 機能なので、変数名を指定しても中身(その変数に対応する値)を書き換える事はできません。(変数名自体が書き換わります)
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/ActionScript3">ActionScript3</a>.0 は対象外です。(要望があれば前向きに善処します)
</li><li>0.47 からどの型で値を渡しても文字列として変数の値がセットされるようになりました。(0.46 以前では文字列以外を渡すと、意図しない動作をするだけでなく、seg.fault する可能性もありました)
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://d.hatena.ne.jp/yoya/20110609/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20110609/swfed</a>
</li><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplaceactionstrings.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplaceactionstrings.php</a>
</li><li><a href="http://labs.gree.jp/blog/2011/07/3259/" class="external" rel="nofollow">http://labs.gree.jp/blog/2011/07/3259/</a> 「(b) Bytecode 中の文字列を入れ替える 」
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setActionVariables">SWFEditor.setActionVariables</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceEditString">SWFEditor.replaceEditString</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setActionVariables">
    <title>SWFEditor.setActionVariables</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setActionVariables</link>
    <dc:identifier>SWFEditor.setActionVariables</dc:identifier>
    <dc:date>2011-11-03T02:15:07+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function setActionVariables(array $vars) 

= 説明 =

SWF バイナリ中の ActionScript の変数を初期化します。
具体的には 1 frame 目の ActionByteCode の先頭に変数代入イメージを埋め込みます。
その為、1frame 目に戻ると変数が再初期化される事に注意して下]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function setActionVariables(array $vars) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の <a href="http://sourceforge.jp/projects/swfed/wiki/ActionScript">ActionScript</a> の変数を初期化します。
具体的には 1 frame 目の <a href="http://sourceforge.jp/projects/swfed/wiki/ActionByteCode">ActionByteCode</a> の先頭に変数代入イメージを埋め込みます。
その為、1frame 目に戻ると変数が再初期化される事に注意して下さい。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>array $vars (変数名と初期値の連想配列)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$params&nbsp;</span><span style="color: #007700">=&nbsp;array(<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'my_name'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'yoya'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">'my_home'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'http://pwiki.awm.jp/~yoya/'</span><span style="color: #007700">,<br />);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setActionVariables</span><span style="color: #007700">(</span><span style="color: #0000BB">$params</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>文字列エンコーディングは処理しません。自前で変換して下さい。
</li><li>尚、Flash ver 6 以降は UTF-8 ですが、Flash Lite は ver 4 相当なので CP932(SJIS-Win)エンコーディングです。
</li><li>0.47 からどの型で値を渡しても文字列として変数の値がセットされるようになりました。(0.46 以前では文字列以外を渡すと、意図しない動作をするだけでなく、seg.fault する可能性もありました)
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://d.hatena.ne.jp/yoya/20101201" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20101201</a>
</li><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfsetactionvariables.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfsetactionvariables.php</a>
</li><li><a href="http://labs.gree.jp/blog/2011/07/3259/" class="external" rel="nofollow">http://labs.gree.jp/blog/2011/07/3259/</a> 「(a) Bytecode の頭に代入イメージを付加する」
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceActionStrings">SWFEditor.replaceActionStrings</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/FAQ">
    <title>FAQ</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/FAQ</link>
    <dc:identifier>FAQ</dc:identifier>
    <dc:date>2011-08-31T12:13:34+09:00</dc:date>
        <description>
      <![CDATA[[[PageOutline]]

= SWFEditor って？

 * Flash の実行ファイル SWF を書き換える為の PHP extension です。主に Flash Lite を想定しています。
 * 初め、SWFReader と SWFWriter で分けて作っていたのですが、両方の機能を持つ意味で SWFEditor という名前にしました。

= 何が出来るのか
]]>
    </description>
    <content:encoded>
      <![CDATA[<div class="pageoutline"><div class="pageoutline-title"><div class="action"><button type="button" onClick="javascript:togglePageOutline(this)"><img src="//static.sourceforge.jp/wiki/images/icons/roll-up.gif" border="0"></button></div>Outline</div><ol><li><a href="#h1-SWFEditor.20.E3.81.A3.E3.81.A6.EF.BC.9F">SWFEditor って？</a>
</li><li><a href="#h1-.E4.BD.95.E3.81.8C.E5.87.BA.E6.9D.A5.E3.82.8B.E3.81.AE.E3.81.8B">何が出来るのか</a>
</li><li><a href="#h1-.E7.94.9F.E6.88.90.E3.81.95.E3.82.8C.E3.81.9F.20SWF.20.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6">生成された SWF について</a>
<ol><li><a href="#h2-.E4.BD.95.E3.82.82.E5.85.A5.E3.82.8C.E6.9B.BF.E3.81.88.E3.81.A6.E3.81.AA.E3.81.84.E3.81.AE.E3.81.AB.E3.82.B5.E3.82.A4.E3.82.BA.E3.81.8C.E5.A4.89.E3.82.8F.E3.82.8A.E3.81.BE.E3.81.99">何も入れ替えてないのにサイズが変わります</a>
</li><li><a href="#h2-JPEG.20.E3.82.92.E5.9F.8B.E3.82.81.E8.BE.BC.E3.82.93.E3.81.A0.E5.A0.B4.E6.89.80.E3.81.8C.E8.B5.A4.E3.81.8F.E8.A1.A8.E7.A4.BA.E3.81.95.E3.82.8C.E3.82.8B">JPEG を埋め込んだ場所が赤く表示される</a>
</li><li><a href="#h2-.E9.80.8F.E6.98.8E.E5.BA.A6.E6.8C.87.E5.AE.9A.E3.81.8C.E7.84.A1.E8.A6.96.E3.81.95.E3.82.8C.E3.82.8B">透明度指定が無視される</a>
</li></ol></li><li><a href="#h1-.E7.89.B9.E5.AE.9A.E3.81.AE.E6.A9.9F.E8.83.BD.E3.81.8C.E5.8B.95.E3.81.8B.E3.81.AA.E3.81.84">特定の機能が動かない</a>
<ol><li><a href="#h2-PNG.20.E3.82.84.20GIF.20.E3.81.AB.E9.96.A2.E9.80.A3.E3.81.99.E3.82.8B.E6.A9.9F.E8.83.BD.E3.81.8C.E5.8B.95.E3.81.8B.E3.81.AA.E3.81.84.20.280.43.20.E3.81.BE.E3.81.A7.29">PNG や GIF に関連する機能が動かない (0.43 まで)</a>
</li></ol></li><li><a href="#h1-.E5.87.A6.E7.90.86.E3.81.8C.E9.87.8D.E3.81.9F.E3.81.84">処理が重たい</a>
<ol><li><a href="#h2-input.20.E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.8C.E9.87.8D.E3.81.9F.E3.81.84">input メソッドが重たい</a>
</li></ol></li><li><a href="#h1-Segmentation.20fault.20.E3.81.8C.E8.B5.B7.E3.81.8D.E3.82.8B">Segmentation fault が起きる</a>
</li><li><a href="#h1-build.20.E5.87.BA.E6.9D.A5.E3.81.BE.E3.81.9B.E3.82.93">build 出来ません</a>
<ol><li><a href="#h2-checking.20for.20the.20location.20of.20libpng....20configure.3A.20error.3A.20swfed.20support.20requires.20.280.44.20.E4.BB.A5.E9.99.8D.29">checking for the location of libpng... configure: error: swfed support requires (0.44 以降)</a>
</li></ol></li><li><a href="#h1-.E4.BB.96.E3.81.AE.E3.83.84.E3.83.BC.E3.83.AB.E3.81.A7.E8.89.AF.E3.81.8F.E3.81.AA.E3.81.84.EF.BC.9F">他のツールで良くない？</a>
<ol><li><a href="#h2-swfmill.20.E4.BD.BF.E3.81.88.E3.81.B0.E3.82.88.E3.81.8F.E3.81.AA.E3.81.84.EF.BC.9F">swfmill 使えばよくない？</a>
</li><li><a href="#h2-ming.20.E4.BD.BF.E3.81.88.E3.81.B0.E3.82.88.E3.81.8F.E3.81.AA.E3.81.84.EF.BC.9F">ming 使えばよくない？</a>
</li></ol></li></ol></div>
<h1 id="h1-SWFEditor.20.E3.81.A3.E3.81.A6.EF.BC.9F">SWFEditor って？</h1><ul><li>Flash の実行ファイル SWF を書き換える為の PHP extension です。主に Flash Lite を想定しています。
</li><li>初め、SWFReader と SWFWriter で分けて作っていたのですが、両方の機能を持つ意味で SWFEditor という名前にしました。
</li></ul><h1 id="h1-.E4.BD.95.E3.81.8C.E5.87.BA.E6.9D.A5.E3.82.8B.E3.81.AE.E3.81.8B">何が出来るのか</h1><ul><li>SWF を解析したい
<ul><li>swfInfo をお使い下さい。
</li><li>swfed-*.tar.gz に含まれる www を利用するのもお勧めです。こんなのが作れます。 &gt;  
</li></ul></li></ul><p><a href="http://awm.jp/~yoya/php/swfed/" class="external" rel="nofollow">http://awm.jp/~yoya/php/swfed/</a>
</p><ul><li>画像を入れ替えたい。
<ul><li>replaceBitmapData 又は、replace{JPEG|PNG|GIF}Data をお使い下さい
</li></ul></li></ul><ul><li>変数を渡したい
<ul><li>setActionVariables か replaceActionStrings をお使い下さい。
</li></ul></li></ul><ul><li>ダイナミックテキストの文字を変えたい
<ul><li>replaceEditText をお使い下さい。
</li></ul></li></ul><ul><li>音声を入れ替えたい
<ul><li>replaceMLDData をお使い下さい。(MLD, SMAF に対応してます。mp3 は今のところ未対応)
</li></ul></li></ul><ul><li>アニメーションを入れ替えたい
<ul><li>replaceMovieClip をお使い下さい。
</li></ul></li></ul><ul><li>その他の機能や詳細については Wiki のメソッド一覧(<a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a>)をご覧下さい。
</li></ul><h1 id="h1-.E7.94.9F.E6.88.90.E3.81.95.E3.82.8C.E3.81.9F.20SWF.20.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6">生成された SWF について</h1><h2 id="h2-.E4.BD.95.E3.82.82.E5.85.A5.E3.82.8C.E6.9B.BF.E3.81.88.E3.81.A6.E3.81.AA.E3.81.84.E3.81.AE.E3.81.AB.E3.82.B5.E3.82.A4.E3.82.BA.E3.81.8C.E5.A4.89.E3.82.8F.E3.82.8A.E3.81.BE.E3.81.99">何も入れ替えてないのにサイズが変わります</h2><ul><li>Zlib の圧縮レベルによって変わります
</li><li>ツールによっては無駄にサイズを使う事があります
<ul><li><a href="http://twitter.com/yoya/status/43241717050253312" class="external" rel="nofollow">http://twitter.com/yoya/status/43241717050253312</a>
</li></ul></li><li>逆にツールによって本来必要なサイズが削られてる事もあって(Player によって表示出来たり出来なかったり)、swfed が補正した結果サイズが増える可能性もあります。
</li></ul><h2 id="h2-JPEG.20.E3.82.92.E5.9F.8B.E3.82.81.E8.BE.BC.E3.82.93.E3.81.A0.E5.A0.B4.E6.89.80.E3.81.8C.E8.B5.A4.E3.81.8F.E8.A1.A8.E7.A4.BA.E3.81.95.E3.82.8C.E3.82.8B">JPEG を埋め込んだ場所が赤く表示される</h2><ul><li>プログレッシブ JPEG は未対応なので、そうでないか確認して下さい。(SWF 自体が対応していないので、埋め込む場合はプログレッシブ外しの変換をする必要がある)
</li><li>元々表示出来ない JPEG を渡しても赤くなります。
</li></ul><h2 id="h2-.E9.80.8F.E6.98.8E.E5.BA.A6.E6.8C.87.E5.AE.9A.E3.81.8C.E7.84.A1.E8.A6.96.E3.81.95.E3.82.8C.E3.82.8B">透明度指定が無視される</h2><ul><li>透明画像は5枚までしか透過しないので、重ねすぎていないかご確認を。(Flash Lite Player の機能制限)
</li></ul><h1 id="h1-.E7.89.B9.E5.AE.9A.E3.81.AE.E6.A9.9F.E8.83.BD.E3.81.8C.E5.8B.95.E3.81.8B.E3.81.AA.E3.81.84">特定の機能が動かない</h1><h2 id="h2-PNG.20.E3.82.84.20GIF.20.E3.81.AB.E9.96.A2.E9.80.A3.E3.81.99.E3.82.8B.E6.A9.9F.E8.83.BD.E3.81.8C.E5.8B.95.E3.81.8B.E3.81.AA.E3.81.84.20.280.43.20.E3.81.BE.E3.81.A7.29">PNG や GIF に関連する機能が動かない (0.43 まで)</h2><ul><li>php -i で各々の対応状況が出ます。no support と出る場合は configure 実行時に PNG や GIF のライブラリを認識出来ていません。ライブラリが存在する場合はオプションをディレクトリを指定してビルドし直して下さい。
</li></ul><h1 id="h1-.E5.87.A6.E7.90.86.E3.81.8C.E9.87.8D.E3.81.9F.E3.81.84">処理が重たい</h1><h2 id="h2-input.20.E3.83.A1.E3.82.BD.E3.83.83.E3.83.89.E3.81.8C.E9.87.8D.E3.81.9F.E3.81.84">input メソッドが重たい</h2><ul><li>input メソッドは tag 毎に chunk 分割してるだけなので、ファイルI/Oを疑った方が良いです。例えば同じディレクトリに大量のファイルがあるとか、HDD の寿命が切れそうだとか。
</li></ul><h1 id="h1-Segmentation.20fault.20.E3.81.8C.E8.B5.B7.E3.81.8D.E3.82.8B">Segmentation fault が起きる</h1><ul><li>swfed 以外の extension や PHP 自体の build に問題がある事もあるので、swfed.so を外しても発生するか確認して下さい。
</li><li>再現する SWF とプログラムを作者に送れば、なる早で治します。こちらの手元で再現出来ないと時間がかかりますが。。
</li></ul><h1 id="h1-build.20.E5.87.BA.E6.9D.A5.E3.81.BE.E3.81.9B.E3.82.93">build 出来ません</h1><h2 id="h2-checking.20for.20the.20location.20of.20libpng....20configure.3A.20error.3A.20swfed.20support.20requires.20.280.44.20.E4.BB.A5.E9.99.8D.29">checking for the location of libpng... configure: error: swfed support requires (0.44 以降)</h2><ul><li>libpng をインストールして下さい。debian や centos なら libpng-dev のようなパッケージがあります。
</li></ul><h1 id="h1-.E4.BB.96.E3.81.AE.E3.83.84.E3.83.BC.E3.83.AB.E3.81.A7.E8.89.AF.E3.81.8F.E3.81.AA.E3.81.84.EF.BC.9F">他のツールで良くない？</h1><h2 id="h2-swfmill.20.E4.BD.BF.E3.81.88.E3.81.B0.E3.82.88.E3.81.8F.E3.81.AA.E3.81.84.EF.BC.9F">swfmill 使えばよくない？</h2><ul><li>swfmill はコマンドラインツール。swfed は PHP extension
<ul><li>外部コマンドとして exec するとか、daemon 化して通信するとか工夫が必要
</li><li>なので、Web で晒して大量にアクセスされる状況で使うと負荷が厳しそう
</li></ul></li><li>swfmill は何でも書き換えられそうだけど、swfed は画像とテキストしか処理出来ない
</li><li>SWF と XML との相互変換なので重たそう
</li><li>でも、XML に落とす前の内部データ形式があるはずなので、そことの php binding が出来ると swfed の存在意義はなくなりそうｗ
</li><li><a href="http://labo.e-2.co.jp/data/php-study33-swfmill-php.pdf" class="external" rel="nofollow">http://labo.e-2.co.jp/data/php-study33-swfmill-php.pdf</a> ←これ、よさそうですね ＾＾；
</li></ul><h2 id="h2-ming.20.E4.BD.BF.E3.81.88.E3.81.B0.E3.82.88.E3.81.8F.E3.81.AA.E3.81.84.EF.BC.9F">ming 使えばよくない？</h2><ul><li>ming は一から構築するもの。swfed は一部だけ差し替えるもの
</li><li>ming に loadSWFfile のような機能が付いたら swfed の存在意義は殆ど無くなりますｗ
<ul><li>loadSWFfile 機能をつけようとした事はありますが、枝場の修正では無理そうなので諦めました
</li><li>画像入れ替えしか考えてなかった当時としては over spec でしたし
</li></ul></li><li>swfed の方が設計上は必要な処理が少ないのでパフォーマンスに有利そうだけど…
<ul><li>ming は実装の出来が良いので、実際に測定して比較する必要があります (CPU,memory両方の観点で)
</li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceShapeData">
    <title>SWFEditor.replaceShapeData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceShapeData</link>
    <dc:identifier>SWFEditor.replaceShapeData</dc:identifier>
    <dc:date>2011-06-28T21:27:28+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function replaceShapeData($shape_id, $shapedata) 

※ 0.38 からタグのヘッダ情報毎入れ替えるようにしました。

※ 0.37 以前のデータを受理する fallback 処理はありますが、できるだけ 0.38 以降で getShapeDataで取得したデータを扱うようにして下さい。fallbac]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function replaceShapeData($shape_id, $shapedata) 
</li></ul><p>※ 0.38 からタグのヘッダ情報毎入れ替えるようにしました。
</p><p>※ 0.37 以前のデータを受理する fallback 処理はありますが、できるだけ 0.38 以降で getShapeDataで取得したデータを扱うようにして下さい。fallback の際に swf_object_replace_shapedata: fallback to read old shape data が error_log に出力されます。
</p><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中のベクター画像を差し替えます。
</p><p>※ 制限事項の問題により、しばらく非推奨となります。 &gt; (get|replace)<a href="http://sourceforge.jp/projects/swfed/wiki/TagDataBy">TagDataBy</a>CID と isBitmapTag を用意します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $shape_id (SWF 内のコンテンツ毎にふられた ID)
</li><li>string $shapedata (SHAPE の生データ。getShapeData で取得出来ます)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceShapeData</span><span style="color: #007700">(</span><span style="color: #0000BB">$shape_id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$shapedata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>0.38 から getShapeData でタグヘッダ情報毎取得するようにして、そのデータ形式で replace するようにしました。
</li><li>0.37 以前の getShapeData で取得したデータも受理しますが、なるべく 0.38 以降の形式に合わせて下さい。
</li></ul><h1 id="h1-.E5.88.B6.E9.99.90.E4.BA.8B.E9.A0.85">制限事項</h1><ul><li>0.37 までの制限事項
</li><li>Shape入れ替え元と後の tag 種(Shape or Shape2 or Shape3)が異なる場合に問題になります。
</li><li>Shape(無印)のひな型 SWF に Shape2 を差し込むと失敗する事が多いです。(修正予定) その逆は恐らく問題ないはず…
</li><li>Shape(無印), Shape2 のひな型 SWFに Shape3 、もしくはその逆で差し替えると問題になります。(API から考えなおす必要あり…)
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplaceshapedata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplaceshapedata.php</a>
</li><li><a href="http://d.hatena.ne.jp/yoya/20110203/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20110203/swfed</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getShapeData">SWFEditor.getShapeData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getShapeData">
    <title>SWFEditor.getShapeData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getShapeData</link>
    <dc:identifier>SWFEditor.getShapeData</dc:identifier>
    <dc:date>2011-06-24T15:03:57+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getShapeData($shape_id) 

※ 0.38 からタグのヘッダ情報毎取得するよう変更しました。

= 説明 =

SWF バイナリ中のベクター情報を取り出します。

= 引数 =

 * int $shape_id (SWF 内のコンテンツ毎にふられた ID)
= 戻り値 =

 * stri]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getShapeData($shape_id) 
</li></ul><p>※ 0.38 からタグのヘッダ情報毎取得するよう変更しました。
</p><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中のベクター情報を取り出します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $shape_id (SWF 内のコンテンツ毎にふられた ID)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>string $shapedata (or boolean false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getShapeData</span><span style="color: #007700">(</span><span style="color: #0000BB">$shape_id</span><span style="color: #007700">);<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetshapedata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetshapedata.php</a>
</li><li><a href="http://d.hatena.ne.jp/yoya/20110203/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20110203/swfed</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceShapeData">SWFEditor.replaceShapeData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagData">SWFEditor.getTagData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setShapeAdjustMode">
    <title>SWFEditor.setShapeAdjustMode</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setShapeAdjustMode</link>
    <dc:identifier>SWFEditor.setShapeAdjustMode</dc:identifier>
    <dc:date>2011-06-24T02:12:31+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function setShapeAdjustMode(int $mode) 

= 説明 =

このメソッドでモードを指定しておくと、その後の replaceJpegData, replacePNGData, replaceGIFData
での画像差し替え時に、モードに応じて画像と表示枠が合うように、画像サイズまたは表示枠の調整を行います。
]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function setShapeAdjustMode(int $mode) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>このメソッドでモードを指定しておくと、その後の replaceJpegData, replacePNGData, replaceGIFData
での画像差し替え時に、モードに応じて画像と表示枠が合うように、画像サイズまたは表示枠の調整を行います。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $mode (画像表示枠調整モード)
</li></ul><ul><li>$mode には以下に選択肢があります。
<pre> SWFEditor::SHAPE_BITMAP_NONE - 調整しない (未指定と同じ挙動)
 SWFEditor::SHAPE_BITMAP_MATRIX_RESCALE - 枠の大きさを変えず画像のスケールで調整
 SWFEditor::SHAPE_BITMAP_RECT_RESIZE - 画像の大きさに合わせて枠のサイズ変更
 SWFEditor::SHAPE_BITMAP_TYPE_TILLED - 画像をタイル状に表示
</pre></li></ul><p>具体例がこちらの記事にあります。↓
</p><ul><li><a href="http://d.hatena.ne.jp/yoya/20101027/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20101027/swfed</a>
</li><li>adjustShapeBitmap を setShapeAdjustMode に読み替えて下さい
</li><li>当時は JPEG のみでしたが、今は PNG/GIF にも対応しています。
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$obj&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setShapeAdjustMode</span><span style="color: #007700">(</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">::</span><span style="color: #0000BB">SHAPE_BITMAP_RECT_RESIZE</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">//&nbsp;$obj-&gt;setShapeAdjustMode(SWFEditor::SHAPE_BITMAP_MATRIX_RESCALE);<br />//&nbsp;$obj-&gt;setShapeAdjustMode(SWFEditor::SHAPE_BITMAP_TYPE_TILLED);<br /></span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceJpegData</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$jpegdata</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /><br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>入れ替えてない画像まで、一緒にスケール変換される事のある不具合があります。SWF 的に複数の画像の変換行列を共通で持つ事があり、この問題を避けるのは難しいです。行列を分解すればよいのですが。困る人がいたら頑張ってみるので連絡下さい。
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacejpegdata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacejpegdata.php</a>
</li><li><a href="http://d.hatena.ne.jp/yoya/20101027/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20101027/swfed</a> (adjustShapeBitmap を setShapeAdjustMode に読み替えて下さい)
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceBitmapData">SWFEditor.replaceBitmapData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceJpegData">SWFEditor.replaceJpegData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replacePNGData">SWFEditor.replacePNGData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceGIFData">SWFEditor.replaceGIFData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setCompressLevel">
    <title>SWFEditor.setCompressLevel</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setCompressLevel</link>
    <dc:identifier>SWFEditor.setCompressLevel</dc:identifier>
    <dc:date>2011-06-23T13:44:55+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function setCompressLevel($level) 

※ 0.35 から対応。

= 説明 =

SWF バイナリを再構成する際の zlib 圧縮レベルを変更します。(デフォルトは 6)


= 引数 =

 * int level  (0:無圧縮, 1:スピード重視, 2～8, 9:圧縮率重視)

= 戻り値 ]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function setCompressLevel($level) 
</li></ul><p>※ 0.35 から対応。
</p><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリを再構成する際の zlib 圧縮レベルを変更します。(デフォルトは 6)
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int level  (0:無圧縮, 1:スピード重視, 2～8, 9:圧縮率重視)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>今の所未定義
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setCompressLevel</span><span style="color: #007700">(</span><span style="color: #0000BB">9</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replacePNGData</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$pngdata</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;PNG&nbsp;や&nbsp;GIF&nbsp;入れ替え<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>SWF 内で zlib 圧縮する場所全てに効果があります。v0.35 の時点では PNG/GIF 入れ替え、JPEG alpha 圧縮や CWS 圧縮が対応します。
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.rebuild">SWFEditor.rebuild</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.rebuild">
    <title>SWFEditor.rebuild</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.rebuild</link>
    <dc:identifier>SWFEditor.rebuild</dc:identifier>
    <dc:date>2011-06-23T13:43:41+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function rebuild() 

= 説明 =

SWF バイナリデータを解釈して再構築します。(主にデバッグ用)

= 引数 =

 * (無し)

= 戻り値 =

 * boolean $result (true:成功, false:失敗)

= 使用例 =

{{{ code php
&lt;?php
$]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function rebuild() 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリデータを解釈して再構築します。(主にデバッグ用)
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>(無し)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗)
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swfdata&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">"test.swf"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">rebuild</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.input">SWFEditor.input</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.output">SWFEditor.output</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setCompressLevel">SWFEditor.setCompressLevel</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceGIFData">
    <title>SWFEditor.replaceGIFData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceGIFData</link>
    <dc:identifier>SWFEditor.replaceGIFData</dc:identifier>
    <dc:date>2011-06-23T13:39:47+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function replaceGIFData($image_id, $gifdata) 

= 説明 =

SWF バイナリ中の画像を GIF で差し替えます。

= 引数 =

 * int $image_id (SWF 内のコンテンツ毎にふられた ID)
 * string $gifdata (GIF ファイルのデータ)

= ]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function replaceGIFData($image_id, $gifdata) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の画像を GIF で差し替えます。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $image_id (SWF 内のコンテンツ毎にふられた ID)
</li><li>string $gifdata (GIF ファイルのデータ)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceGIFData</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$gifdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>透過GIFにも対応しています。
</li><li>GIF アニメーションを渡した場合は一コマ目の画像を適用します。
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacegifdata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacegifdata.php</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setShapeAdjustMode">SWFEditor.setShapeAdjustMode</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceBitmapData">SWFEditor.replaceBitmapData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceJpegData">
    <title>SWFEditor.replaceJpegData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceJpegData</link>
    <dc:identifier>SWFEditor.replaceJpegData</dc:identifier>
    <dc:date>2011-06-23T13:39:11+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function replaceJpegData($image_id, $jpegdata, $alphadata = null) 

= 説明 =

SWF バイナリ中の画像を JPEG で差し替えます。

= 引数 =

 * int $image_id (SWF 内のコンテンツ毎にふられた ID)
 * string $jpegda]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function replaceJpegData($image_id, $jpegdata, $alphadata = null) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の画像を JPEG で差し替えます。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $image_id (SWF 内のコンテンツ毎にふられた ID)
</li><li>string $jpegdata (JPEG ファイルのデータ)
</li><li>string $alphadata (透明度情報。この引数は省略可能)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">)<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceJpegData</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$jpegdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacejpegdata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacejpegdata.php</a>
</li><li><a href="http://d.hatena.ne.jp/yoya/20080514" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20080514</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegData">SWFEditor.getJpegData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegAlpha">SWFEditor.getJpegAlpha</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setShapeAdjustMode">SWFEditor.setShapeAdjustMode</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceBitmapData">SWFEditor.replaceBitmapData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceMLDData">
    <title>SWFEditor.replaceMLDData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceMLDData</link>
    <dc:identifier>SWFEditor.replaceMLDData</dc:identifier>
    <dc:date>2011-06-21T17:10:27+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function replaceMLDData($sound_id, $mlddata) 

= 説明 =

SWF バイナリ中の音声を MLD/SMAF データで差し替えます。

= 引数 =

 * int $sound_id (SWF 内のコンテンツ毎にふられた ID)
 * string $mlddata (MLD ファイルのデー]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function replaceMLDData($sound_id, $mlddata) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の音声を MLD/SMAF データで差し替えます。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $sound_id (SWF 内のコンテンツ毎にふられた ID)
</li><li>string $mlddata (MLD ファイルのデータ、SMAF も可)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceMLDData</span><span style="color: #007700">(</span><span style="color: #0000BB">$sound_id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$mlddata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacemlddata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplacemlddata.php</a>
</li><li><a href="http://d.hatena.ne.jp/yoya/20080813/" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20080813/</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getSoundData">
    <title>SWFEditor.getSoundData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getSoundData</link>
    <dc:identifier>SWFEditor.getSoundData</dc:identifier>
    <dc:date>2011-06-21T17:10:14+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getSoundData(int $sound_id) 

= 説明 =

SWF バイナリ中の音声データを取り出します。

= 引数 =

 * int $sound_id (SWF 内のコンテンツ毎にふられた ID)

= 戻り値 =

 * string $sounddata (or boolean fals]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getSoundData(int $sound_id) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の音声データを取り出します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $sound_id (SWF 内のコンテンツ毎にふられた ID)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>string $sounddata (or boolean false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getSoundData</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">);<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetsounddata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetsounddata.php</a>
</li><li><a href="http://d.hatena.ne.jp/yoya/20080811/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20080811/swfed</a>
</li></ul><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>MP3 でも MLD でも SMAF でも取り出せます。
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceMLDData">SWFEditor.replaceMLDData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getBitmapSize">
    <title>SWFEditor.getBitmapSize</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getBitmapSize</link>
    <dc:identifier>SWFEditor.getBitmapSize</dc:identifier>
    <dc:date>2011-06-21T17:09:42+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getBitmapSize(int $image_id)

= 説明 =

SWF 中のビットマップ画像のサイズを取得します。

= 引数 =

 * $image_id (SWF 内のコンテンツ毎にふられた ID) 

= 戻り値 =

 * mixed array(&#039;width&#039; =&gt;]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getBitmapSize(int $image_id)
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF 中のビットマップ画像のサイズを取得します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>$image_id (SWF 内のコンテンツ毎にふられた ID) 
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>mixed array('width' =&gt; ..., 'height' =&gt; ...)
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />foreach&nbsp;(</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getBitmapSize</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_id</span><span style="color: #007700">)&nbsp;as&nbsp;</span><span style="color: #0000BB">$key&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$value</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #0000BB">$image_id</span><span style="color: #DD0000">&nbsp;=&gt;&nbsp;width:</span><span style="color: #0000BB">$width</span><span style="color: #DD0000">&nbsp;height:</span><span style="color: #0000BB">$height</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />}<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetbitmapsize.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetbitmapsize.php</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.applyShapeMatrixFactor">SWFEditor.applyShapeMatrixFactor</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.applyShapeRectFactor">SWFEditor.applyShapeRectFactor</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getPNGData">
    <title>SWFEditor.getPNGData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getPNGData</link>
    <dc:identifier>SWFEditor.getPNGData</dc:identifier>
    <dc:date>2011-06-21T17:09:11+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getPNGData($image_id) 

= 説明 =

SWF バイナリ中の PNG データを取り出します。

= 引数 =

 * int $image_id (SWF 内のコンテンツ毎にふられた ID)

= 戻り値 =

 * string $pngdata (or boolean false:失敗)]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getPNGData($image_id) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の PNG データを取り出します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $image_id (SWF 内のコンテンツ毎にふられた ID)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>string $pngdata (or boolean false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getPNGData</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_id</span><span style="color: #007700">);<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetpngdata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetpngdata.php</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replacePNGData">SWFEditor.replacePNGData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegAlpha">
    <title>SWFEditor.getJpegAlpha</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegAlpha</link>
    <dc:identifier>SWFEditor.getJpegAlpha</dc:identifier>
    <dc:date>2011-06-21T17:08:48+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getJpegAlpha($image_id) 

= 説明 =

SWF バイナリ中の JPEG 透明度情報を取り出します。

= 引数 =

 * int $image_id (SWF 内のコンテンツ毎にふられた ID)

= 戻り値 =

 * string $alphadata (or boolean fa]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getJpegAlpha($image_id) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の JPEG 透明度情報を取り出します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $image_id (SWF 内のコンテンツ毎にふられた ID)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>string $alphadata (or boolean false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getJpegAlpha</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_id</span><span style="color: #007700">);<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetjpegalphadata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetjpegalphadata.php</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegData">SWFEditor.getJpegData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceJpegData">SWFEditor.replaceJpegData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegData">
    <title>SWFEditor.getJpegData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegData</link>
    <dc:identifier>SWFEditor.getJpegData</dc:identifier>
    <dc:date>2011-06-21T17:08:35+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getJpegData($image_id) 

= 説明 =

SWF バイナリ中の JPEG データを取り出します。(透明度は含みません)

= 引数 =

 * int $image_id (SWF 内のコンテンツ毎にふられた ID)

= 戻り値 =

 * string $jpegdata (or boo]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getJpegData($image_id) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中の JPEG データを取り出します。(透明度は含みません)
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $image_id (SWF 内のコンテンツ毎にふられた ID)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>string $jpegdata (or boolean false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getJpegData</span><span style="color: #007700">(</span><span style="color: #0000BB">$image_id</span><span style="color: #007700">);<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetjpegdata.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetjpegdata.php</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceJpegData">SWFEditor.replaceJpegData</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getJpegAlpha">SWFEditor.getJpegAlpha</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.isBitmapTagData">
    <title>SWFEditor.isBitmapTagData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.isBitmapTagData</link>
    <dc:identifier>SWFEditor.isBitmapTagData</dc:identifier>
    <dc:date>2011-06-21T17:07:02+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function isBitmapTagData($tagdata) 

= 説明 =

タグが DefineBits 系(DefineBitsJPEG, DefineBitsLossless)であるのかチェックする。

= 引数 =

 * int $tagdata (タグのバイナリデータ)

= 戻り値 =

 * boolea]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function isBitmapTagData($tagdata) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>タグが <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a> 系(<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG, <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBitsLossless">DefineBitsLossless</a>)であるのかチェックする。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $tagdata (タグのバイナリデータ)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean true(<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a> 系タグと判断) or false(それ以外)
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />foreach&nbsp;(</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTagList</span><span style="color: #007700">()&nbsp;as&nbsp;</span><span style="color: #0000BB">$seqno&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$tagInfo</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tagdata&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTagData</span><span style="color: #007700">(</span><span style="color: #0000BB">$seqno</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">isBitmapTagData</span><span style="color: #007700">(</span><span style="color: #0000BB">$tagdata</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">file_put_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">"</span><span style="color: #0000BB">$seqno</span><span style="color: #DD0000">.bits"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$tagdata</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>先頭ヘッダの番号を読んでタグの種類を判断します。
</li><li>バイナリデータの整合性まではチェックしません。
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagList">SWFEditor.getTagList</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagData">SWFEditor.getTagData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.isShapeTagData">
    <title>SWFEditor.isShapeTagData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.isShapeTagData</link>
    <dc:identifier>SWFEditor.isShapeTagData</dc:identifier>
    <dc:date>2011-06-21T17:06:45+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function isShapeTagData($tagdata) 

= 説明 =

タグが DefineShape 系であるのかチェックする。

= 引数 =

 * int $tagdata (タグのバイナリデータ)

= 戻り値 =

 * boolean true(DefineShape 系タグと判断) or false(]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function isShapeTagData($tagdata) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>タグが <a href="http://sourceforge.jp/projects/swfed/wiki/DefineShape">DefineShape</a> 系であるのかチェックする。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $tagdata (タグのバイナリデータ)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean true(<a href="http://sourceforge.jp/projects/swfed/wiki/DefineShape">DefineShape</a> 系タグと判断) or false(それ以外)
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />foreach&nbsp;(</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTagList</span><span style="color: #007700">()&nbsp;as&nbsp;</span><span style="color: #0000BB">$seqno&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$tagInfo</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">$tagdata&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTagData</span><span style="color: #007700">(</span><span style="color: #0000BB">$seqno</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">isShapeTagData</span><span style="color: #007700">(</span><span style="color: #0000BB">$tagdata</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">file_put_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">"</span><span style="color: #0000BB">$seqno</span><span style="color: #DD0000">.shape"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$tagdata</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>先頭ヘッダの番号を読んでタグの種類を判断します。
</li><li>バイナリデータの整合性まではチェックしません。
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagList">SWFEditor.getTagList</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagData">SWFEditor.getTagData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceTagDataByCID">
    <title>SWFEditor.replaceTagDataByCID</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceTagDataByCID</link>
    <dc:identifier>SWFEditor.replaceTagDataByCID</dc:identifier>
    <dc:date>2011-06-21T17:05:57+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function replaceTagDataByCID($cid, $tagdata) 

= 説明 =

SWF バイナリ中のコンテンツタグデータを差し替えます。


= 引数 =

 * int $cid (SWF 内のコンテンツ毎にふられた ID)
 * string $tagdata (タグデータ。getTagDataByCI]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function replaceTagDataByCID($cid, $tagdata) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中のコンテンツタグデータを差し替えます。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $cid (SWF 内のコンテンツ毎にふられた ID)
</li><li>string $tagdata (タグデータ。getTagDataByCID で取得出来ます)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceTagDataByCID</span><span style="color: #007700">(</span><span style="color: #0000BB">$cid</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$tagdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/src/tests/tag002.phpt" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/src/tests/tag002.phpt</a>
</li><li><a href="http://d.hatena.ne.jp/yoya/20110401/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20110401/swfed</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagDataByCID">SWFEditor.getTagDataByCID</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagDataByCID">
    <title>SWFEditor.getTagDataByCID</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagDataByCID</link>
    <dc:identifier>SWFEditor.getTagDataByCID</dc:identifier>
    <dc:date>2011-06-21T17:05:29+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getTagDataByCID($cid) 

= 説明 =

SWF バイナリ中のコンテンツタグデータを取り出します。

= 引数 =

 * int $cid (SWF 内のコンテンツ毎にふられた ID)

= 戻り値 =

 * string $tagdata (or boolean false:失敗) 
]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getTagDataByCID($cid) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中のコンテンツタグデータを取り出します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $cid (SWF 内のコンテンツ毎にふられた ID)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>string $tagdata (or boolean false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTagDataByCID</span><span style="color: #007700">(</span><span style="color: #0000BB">$cid</span><span style="color: #007700">);<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://d.hatena.ne.jp/yoya/20110401/swfed" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20110401/swfed</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceTagDataByCID">SWFEditor.replaceTagDataByCID</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setHeaderInfo">
    <title>SWFEditor.setHeaderInfo</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setHeaderInfo</link>
    <dc:identifier>SWFEditor.setHeaderInfo</dc:identifier>
    <dc:date>2011-06-21T17:05:06+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function setHeaderInfo(mixed $header_info)

注) 0.35 で (x,y)_(min,max) のキーも対応予定。

= 説明 =

SWF のヘッダを書き換えます。以下のキーに対応します。

 * boolean compress,
 * int version
 * int x_min, ]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function setHeaderInfo(mixed $header_info)
</li></ul><p>注) 0.35 で (x,y)_(min,max) のキーも対応予定。
</p><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF のヘッダを書き換えます。以下のキーに対応します。
</p><ul><li>boolean compress,
</li><li>int version
</li><li>int x_min, y_min, x_max, y_max (0.35 から) 
</li></ul><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int array();
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>今の所未定義
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$info&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'compress'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">false</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">setHeeaderInfo</span><span style="color: #007700">(</span><span style="color: #0000BB">$info</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;CWS&nbsp;を&nbsp;FWS&nbsp;に変換して出力<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>frame_rate も要望があれば対応します。
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfsetheaderinfo.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfsetheaderinfo.php</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getHeaderInfo">SWFEditor.getHeaderInfo</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getHeaderInfo">
    <title>SWFEditor.getHeaderInfo</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getHeaderInfo</link>
    <dc:identifier>SWFEditor.getHeaderInfo</dc:identifier>
    <dc:date>2011-06-21T17:03:19+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getHeaderInfo()

= 説明 =

SWF のヘッダを取得します。

 * boolean compress (CWS の時に true, FWS の時は false)
 * int version
 * int x_min, y_min, x_max, y_max (0.35 から) 

= 引数 =]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getHeaderInfo()
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF のヘッダを取得します。
</p><ul><li>boolean compress (CWS の時に true, FWS の時は false)
</li><li>int version
</li><li>int x_min, y_min, x_max, y_max (0.35 から) 
</li></ul><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>無し
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>mixed $header_info;
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />foreach&nbsp;(</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getHeeaderInfo</span><span style="color: #007700">()&nbsp;as&nbsp;</span><span style="color: #0000BB">$key&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$value</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #0000BB">$key</span><span style="color: #DD0000">=</span><span style="color: #0000BB">$value</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />}<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>frame_rate も要望があれば対応します。
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetheaderinfo.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgetheaderinfo.php</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.setHeaderInfo">SWFEditor.setHeaderInfo</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.output">
    <title>SWFEditor.output</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.output</link>
    <dc:identifier>SWFEditor.output</dc:identifier>
    <dc:date>2011-06-21T17:02:48+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function output() 

= 説明 =

SWF バイナリデータを
SWFEditor クラス中のデータから構築した SWF データを取得します。

= 引数 =

 * (無し)

= 戻り値 =

 * string $swfdata (SWFバイナリデータ、エラー時は FALSE が返ります)

= 使用例]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function output() 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリデータを
SWFEditor クラス中のデータから構築した SWF データを取得します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>(無し)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>string $swfdata (SWFバイナリデータ、エラー時は FALSE が返ります)
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swfdata&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">"test.swf"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #FF8000">//&nbsp;(やりたい事)&nbsp;//<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.input">SWFEditor.input</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getEditString">
    <title>SWFEditor.getEditString</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getEditString</link>
    <dc:identifier>SWFEditor.getEditString</dc:identifier>
    <dc:date>2011-06-21T16:57:12+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getEditString({string $variable_name|int $edit_id}) 

= 説明 =

SWF バイナリ中のテキストツールで張り付けた文字列を取り出します。

= 引数 =

 * string $variable_name or int $edit_id
   * $variable]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getEditString({string $variable_name|int $edit_id}) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中のテキストツールで張り付けた文字列を取り出します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>string $variable_name or int $edit_id
<ul><li>$variable_name (テキストツールで設定した変数名)
</li><li>$edit_id (SWF 内のコンテンツ毎にふられた ID)
</li></ul></li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>string $editstring (or boolean false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getEditString</span><span style="color: #007700">(</span><span style="color: #DD0000">'foo'</span><span style="color: #007700">);<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgeteditstring.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfgeteditstring.php</a>
</li></ul><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>文字列エンコーディングは処理しません。自前で変換して下さい。
<ul><li>Flash ver 6 以降は UTF-8 ですが、Flash Lite は ver 4 相当なので CP932(SJIS-Win)エンコーディングです。
</li></ul></li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceEditString">SWFEditor.replaceEditString</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceEditString">
    <title>SWFEditor.replaceEditString</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceEditString</link>
    <dc:identifier>SWFEditor.replaceEditString</dc:identifier>
    <dc:date>2011-06-21T16:56:57+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function replaceEditString({string $variable_name| int $edit_id}, string $text)

= 説明 =

SWF バイナリ中のテキストツールで張り付けたテキストを差し替えます。

= 引数 =

 *  string $variable_name or int $edi]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function replaceEditString({string $variable_name| int $edit_id}, string $text)
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中のテキストツールで張り付けたテキストを差し替えます。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li> string $variable_name or int $edit_id 
<ul><li>$variable_name (テキストツールで設定した変数名)
</li><li>$edit_id (SWF 内のコンテンツ毎にふられた ID)
</li></ul></li><li>string $text (テキスト文字列)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceEditString</span><span style="color: #007700">(</span><span style="color: #0000BB">$variable_name</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$text</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">header</span><span style="color: #007700">(</span><span style="color: #DD0000">'Content-type:&nbsp;application/x-shockwave-flash'</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E6.B3.A8.E6.84.8F">注意</h1><ul><li>文字列エンコーディングは処理しません。自前で変換して下さい。
</li><li>尚、Flash ver 6 以降は UTF-8 ですが、Flash Lite は ver 4 相当なので CP932(SJIS-Win)エンコーディングです。
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplaceeditstring.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplaceeditstring.php</a>
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getEditString">SWFEditor.getEditString</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.replaceActionStrings">SWFEditor.replaceActionStrings</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagData">
    <title>SWFEditor.getTagData</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagData</link>
    <dc:identifier>SWFEditor.getTagData</dc:identifier>
    <dc:date>2011-06-21T16:40:28+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getTagData($seqno) 

= 説明 =

SWF バイナリ中のタグデータを取り出します。

= 引数 =

 * int $seqno (SWF 中の何番目の tag か。0 数えで)

= 戻り値 =

 * string $tagdata (or boolean false:失敗) 

= ]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getTagData($seqno) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中のタグデータを取り出します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $seqno (SWF 中の何番目の tag か。0 数えで)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>string $tagdata (or boolean false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />foreach&nbsp;(</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTagList</span><span style="color: #007700">()&nbsp;as&nbsp;</span><span style="color: #0000BB">$seqno&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$tagInfo</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">file_put_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">"</span><span style="color: #0000BB">$seqno</span><span style="color: #DD0000">.tag"</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTagData</span><span style="color: #007700">(</span><span style="color: #0000BB">$seqno</span><span style="color: #007700">));<br />}<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>(Sprite タグ中のタグは指定できません)
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagList">SWFEditor.getTagList</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagList">
    <title>SWFEditor.getTagList</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagList</link>
    <dc:identifier>SWFEditor.getTagList</dc:identifier>
    <dc:date>2011-06-21T16:40:10+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getTagList() 

= 説明 =

SWF バイナリ中のタグ一覧を取得します。

= 引数 =

 * 無し

= 戻り値 =

 * array($tag[, $tag2[, $tag3, ...]]); (or boolean false:失敗) 

= 使用例 =

{{{ code php]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getTagList() 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリ中のタグ一覧を取得します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>無し
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>array($tag<a href="http://sourceforge.jp/projects/swfed/wiki/%2C">$tag2[, $tag3, ...</a>]); (or boolean false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br />foreach&nbsp;(</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">getTagList</span><span style="color: #007700">()&nbsp;as&nbsp;</span><span style="color: #0000BB">$seqno&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$tagInfo</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$tagInfo</span><span style="color: #007700">);<br />}<br /></span>
</span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>戻り値のタグ情報にはタグコードと長さ位の情報しか入っていません。
</li><li>もう少し細かい情報を知りたい場合は、getTagDetail をご利用下さい。
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagDetail">SWFEditor.getTagDetail</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagData">SWFEditor.getTagData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagDetail">
    <title>SWFEditor.getTagDetail</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagDetail</link>
    <dc:identifier>SWFEditor.getTagDetail</dc:identifier>
    <dc:date>2011-06-21T16:38:51+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function getTagDetail($seqno) 

= 説明 =

SWF タグの少し細かい情報を取得します。


= 引数 =

 * int $seqno (SWF 中の何番目の tag か。0 数えで)

= 戻り値 =

 * mixed (...); (or boolean false:失敗) 

= 使]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function getTagDetail($seqno) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF タグの少し細かい情報を取得します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $seqno (SWF 中の何番目の tag か。0 数えで)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>mixed (...); (or boolean false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
$swf&nbsp;=&nbsp;new&nbsp;SWFEditor();<br />$swf-&gt;input($swfdata);<br />foreach&nbsp;($swf-&gt;getTagList()&nbsp;as&nbsp;$seqno&nbsp;=&gt;&nbsp;$tagInfo)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;var_dump($tagInfo);<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(empty($tagInfo['detail'])&nbsp;===&nbsp;false)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var_dump($swf-&gt;getTagDetail($seqno));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span>
</code></div><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>(Sprite タグ中のタグは指定できません)
</li></ul><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagList">SWFEditor.getTagList</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.getTagData">SWFEditor.getTagData</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.swfInfo">
    <title>SWFEditor.swfInfo</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.swfInfo</link>
    <dc:identifier>SWFEditor.swfInfo</dc:identifier>
    <dc:date>2011-04-08T10:27:05+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function swfInfo() 

= 説明 =

SWF の解析結果を標準出力(STDOUT)に出力します。

= 引数 =

 * (無し)

= 戻り値 =

 * (無し)

= 使用例 =

{{{ code php
&lt;?php
$swfdata = file_get_contents(&quot;]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function swfInfo() 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF の解析結果を標準出力(STDOUT)に出力します。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>(無し)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>(無し)
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swfdata&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">"test.swf"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">swfInfo</span><span style="color: #007700">();<br /></span>
</span>
</code></div><p>* 実行結果
</p><pre>magic=CWS  version=6  file_length=2902016
 rect=(0, 0)-(800, 545) (f_size=15)
frame_rate=30.0  frame_count=1183
[0] tag=SetBackgroundColor(9)  length=3
[1] tag=JPEGTables(8)  length=574
    jpeg_data_size=574
＜略＞
</pre><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfdump.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfdump.php</a>
</li></ul><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><ul><li>表示フォーマットは変更される可能性があります。常に改善中です。
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.input">
    <title>SWFEditor.input</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.input</link>
    <dc:identifier>SWFEditor.input</dc:identifier>
    <dc:date>2011-03-25T11:43:02+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function input(string $swddata) 

= 説明 =

SWF バイナリデータを SWFEditor クラスの中に取り込みます。

= 引数 =

 * string $swfdata (SWFバイナリデータ)

= 戻り値 =

 * boolean $result (true:成功, false:失敗]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function input(string $swddata) 
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>SWF バイナリデータを SWFEditor クラスの中に取り込みます。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>string $swfdata (SWFバイナリデータ)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗)
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swfdata&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">file_get_contents</span><span style="color: #007700">(</span><span style="color: #DD0000">"test.swf"</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//&nbsp;(やりたい事)&nbsp;//<br /></span>
</span>
</code></div><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.output">SWFEditor.output</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.applyShapeMatrixFactor">
    <title>SWFEditor.applyShapeMatrixFactor</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.applyShapeMatrixFactor</link>
    <dc:identifier>SWFEditor.applyShapeMatrixFactor</dc:identifier>
    <dc:date>2011-01-24T10:18:59+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function applyShapeMatrixFactor($shape_id, $scale_x, $scale_y, $rotate_rad, $trans_x, $trans_y)

= 説明 =

シェイプに張り付ける画像のスケール/回転/移動に対して操作を行います。

= 引数 =

 * int $shape_id (操作対]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function applyShapeMatrixFactor($shape_id, $scale_x, $scale_y, $rotate_rad, $trans_x, $trans_y)
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>シェイプに張り付ける画像のスケール/回転/移動に対して操作を行います。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $shape_id (操作対象 SHAPE の ID)
</li><li>int $scale_x, $scale_y (X 方向、Y 方向に対して現在の倍率から更に何倍するかを指定します)
</li><li>float $rotate_rad (回転を指定します。単位は radian です) ※ 実験段階です。機能が変わる可能性があります
</li><li>int $trans_x, $trans_y (X 方向、Y 方向に対して現在の移動から更にどの位ずらすかを指定します)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$obj&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">applyShapeMatrixFactor</span><span style="color: #007700">(</span><span style="color: #0000BB">$shape_id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">M_PI</span><span style="color: #007700">/</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;(表示倍率を縦横２倍ずつ拡げて、1/4&nbsp;回転する)<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E6.B3.A8.E6.84.8F">注意</h1><p>引数 $rotate_rad に対する処理結果があまり実用的でないので、機能が変わる可能性があります。
(0, 0)原点に対する回転なので 180 度回転すると見えなくなりますし… 普通画像の中心に対して回転するのを期待するかなと…
</p><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfapplyshapematrix.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfapplyshapematrix.php</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWFEditor.applyShapeRectFactor">
    <title>SWFEditor.applyShapeRectFactor</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWFEditor.applyShapeRectFactor</link>
    <dc:identifier>SWFEditor.applyShapeRectFactor</dc:identifier>
    <dc:date>2011-01-24T10:08:04+09:00</dc:date>
        <description>
      <![CDATA[ * class [SWFEditor] function applyShapeRectFactor($shape_id, $scale_x, $scale_y, $trans_x, $trans_y)

= 説明 =

シェイプの描画枠のサイズ/位置に対して操作を行います。


= 引数 =

 * int $shape_id (操作対象 SHAPE の ID)
 * int]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li>class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> function applyShapeRectFactor($shape_id, $scale_x, $scale_y, $trans_x, $trans_y)
</li></ul><h1 id="h1-.E8.AA.AC.E6.98.8E">説明</h1><p>シェイプの描画枠のサイズ/位置に対して操作を行います。
</p><h1 id="h1-.E5.BC.95.E6.95.B0">引数</h1><ul><li>int $shape_id (操作対象 SHAPE の ID)
</li><li>int $scale_x, $scale_y (X 方向、Y 方向に対して現在のサイズから更に何倍するかを指定します)
</li><li>int $trans_x, $trans_y (X 方向、Y 方向に対して現在の位置からどの位ずらすかを指定します)
</li></ul><h1 id="h1-.E6.88.BB.E3.82.8A.E5.80.A4">戻り値</h1><ul><li>boolean $result (true:成功, false:失敗) 
</li></ul><h1 id="h1-.E4.BD.BF.E7.94.A8.E4.BE.8B">使用例</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$obj&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">applyShapeRectFactor</span><span style="color: #007700">(</span><span style="color: #0000BB">$shape_id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;(表示枠を縦横２倍ずつ拡げる)<br /></span><span style="color: #007700">echo&nbsp;</span><span style="color: #0000BB">$obj</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfapplyshaperect.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfapplyshaperect.php</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/giflib">
    <title>giflib</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/giflib</link>
    <dc:identifier>giflib</dc:identifier>
    <dc:date>2011-01-11T19:32:33+09:00</dc:date>
        <description>
      <![CDATA[http://pwiki.awm.jp/~yoya/?giflib
]]>
    </description>
    <content:encoded>
      <![CDATA[<p><a href="http://pwiki.awm.jp/~yoya/?giflib" class="external" rel="nofollow">http://pwiki.awm.jp/~yoya/?giflib</a>
</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/FrontPage">
    <title>FrontPage</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/FrontPage</link>
    <dc:identifier>FrontPage</dc:identifier>
    <dc:date>2011-01-03T21:01:13+09:00</dc:date>
        <description>
      <![CDATA[詳しくは&darr;こちら。
 * http://pwiki.awm.jp/~yoya/?swfed

[[PageOutline]]

= 紹介

 * SWFファイル内のコンテンツを入れ替える PHP extension です
   * SWFファイル内の画像やテキストを入れ替えられます
   * タグで分解した結果の dump も出来ます
   * ABC asm/dis]]>
    </description>
    <content:encoded>
      <![CDATA[<p>詳しくは↓こちら。
</p><ul><li><a href="http://pwiki.awm.jp/~yoya/?swfed" class="external" rel="nofollow">http://pwiki.awm.jp/~yoya/?swfed</a>
</li></ul><div class="pageoutline"><div class="pageoutline-title"><div class="action"><button type="button" onClick="javascript:togglePageOutline(this)"><img src="//static.sourceforge.jp/wiki/images/icons/roll-up.gif" border="0"></button></div>Outline</div><ol><li><a href="#h1-.E7.B4.B9.E4.BB.8B">紹介</a>
</li><li><a href="#h1-.E6.A9.9F.E8.83.BD">機能</a>
</li><li><a href="#h1-.E5.8B.95.E4.BD.9C.E7.92.B0.E5.A2.83">動作環境</a>
</li><li><a href="#h1-.E3.83.97.E3.83.AD.E3.82.B0.E3.83.A9.E3.83.A0">プログラム</a>
</li><li><a href="#h1-API">API</a>
</li><li><a href="#h1-.E3.83.87.E3.83.A2">デモ</a>
</li><li><a href="#h1-.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89">ダウンロード</a>
</li><li><a href="#h1-.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">インストール</a>
</li><li><a href="#h1-.E3.83.AA.E3.83.AA.E3.83.BC.E3.82.B9.E3.83.A1.E3.83.A2">リリースメモ</a>
</li><li><a href="#h1-.E8.AA.B2.E9.A1.8C">課題</a>
</li><li><a href="#h1-.E8.B3.87.E6.96.99">資料</a>
</li><li><a href="#h1-.E3.81.9D.E3.81.AE.E4.BB.96">その他</a>
</li></ol></div>
<h1 id="h1-.E7.B4.B9.E4.BB.8B">紹介</h1><ul><li>SWFファイル内のコンテンツを入れ替える PHP extension です
<ul><li>SWFファイル内の画像やテキストを入れ替えられます
</li><li>タグで分解した結果の dump も出来ます
</li><li>ABC asm/disasm 機能も導入中です
</li><li>音声も MP3 や MIDI 辺りのメジャーなのは対応する予定です。
</li></ul></li></ul><h1 id="h1-.E6.A9.9F.E8.83.BD">機能</h1><ul><li>ビットマップ画像をJPEG/PNG 画像で差し替え (PNG グレー形式は未対応)
</li><li>テキストボックスのテキスト入れ替え
</li><li>FWS/CWS 変換 (zlib 圧縮形式)
</li></ul><h1 id="h1-.E5.8B.95.E4.BD.9C.E7.92.B0.E5.A2.83">動作環境</h1><ul><li>Unix OS 上の PHP(5.x系) で独自 extension の追加が許される環境
</li><li>zlib, libpng, giflib を利用してます (今のところ JPEG は jpeglib 無しで力ずくに処理)
</li></ul><h1 id="h1-.E3.83.97.E3.83.AD.E3.82.B0.E3.83.A9.E3.83.A0">プログラム</h1><div class="code"><code><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$swf&nbsp;</span><span style="color: #007700">=&nbsp;new&nbsp;</span><span style="color: #0000BB">SWFEditor</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">input</span><span style="color: #007700">(</span><span style="color: #0000BB">$swfdata</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">replaceJpegData</span><span style="color: #007700">(</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$jpegdata</span><span style="color: #007700">);<br />echo&nbsp;</span><span style="color: #0000BB">$swf</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">output</span><span style="color: #007700">();<br /></span>
</span>
</code></div><ul><li>これで SWF に image_id 1 で埋まってる画像を差し替える事が出来ます。
</li></ul><ul><li>その他サンプルコード
<ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/</a>
</li></ul></li></ul><h1 id="h1-API">API</h1><p>* class <a href="http://sourceforge.jp/projects/swfed/wiki/SWFEditor">SWFEditor</a> メソッド一覧
</p><h1 id="h1-.E3.83.87.E3.83.A2">デモ</h1><ul><li><a href="http://awm.jp/~yoya/php/flash/swfdump/" class="external" rel="nofollow">http://awm.jp/~yoya/php/flash/swfdump/</a>
</li><li><a href="http://diary.awm.jp/~yoya/?20080331#200803311" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080331#200803311</a> 画像入れ替え
</li><li><a href="http://diary.awm.jp/~yoya/?20080514#200805141" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080514#200805141</a> 画像入れ替え (透明度付き)
</li><li><a href="http://diary.awm.jp/~yoya/?20101027#201010270" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20101027#201010270</a> 画像入れ替え (枠合わせ)
</li></ul><h1 id="h1-.E3.83.80.E3.82.A6.E3.83.B3.E3.83.AD.E3.83.BC.E3.83.89">ダウンロード</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/files/">http://sourceforge.jp/projects/swfed/files/</a> release
</li><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/</a> current
</li></ul><h1 id="h1-.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB">インストール</h1><ul><li>swfed-?.??.tar.gz をもってきて伸張 
</li><li>src 以下で phpize &amp; configure &amp; make
<pre>cd src
phpize
./configure
make
</pre></li><li>modules/swfed.so を php の extension dir にコピー
<pre>make install
</pre></li><li>php.ini に extension=swfed.so を追加
</li></ul><ul><li>apache 上で動かす場合
<pre>apachectl stop ; sleep 1 ; apachectl start
</pre></li></ul><h1 id="h1-.E3.83.AA.E3.83.AA.E3.83.BC.E3.82.B9.E3.83.A1.E3.83.A2">リリースメモ</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/ChangeLog">ChangeLog</a>
</li></ul><h1 id="h1-.E8.AA.B2.E9.A1.8C">課題</h1><ul><li>JPEG セグメントで不要な部分をコピーしない
</li><li>zlib 圧縮率を変更
</li><li>tag 入れ替え機能強化。(cid で指定できるように
</li><li>shape デフォルメ機能 (サイズ削減)
</li><li>shape, bitmap uniq 機能 (サイズ削減)
</li></ul><h1 id="h1-.E8.B3.87.E6.96.99">資料</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWF">SWF</a>
</li></ul><h1 id="h1-.E3.81.9D.E3.81.AE.E4.BB.96">その他</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/Policy">Policy</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/FAQ">FAQ</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWF">
    <title>SWF</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWF</link>
    <dc:identifier>SWF</dc:identifier>
    <dc:date>2010-11-02T17:21:31+09:00</dc:date>
        <description>
      <![CDATA[= 仕様

 * http://www.adobe.com/devnet/swf/ 
 **  flash_fileformat_specification.pdf

 * http://hkpr.info/flash/swf/ 和訳

= SWFバイナリ編集のススメ

 * http://labs.gree.jp/blog/2010/08/631/ 第一回 
 * http:]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.E4.BB.95.E6.A7.98">仕様</h1><ul><li><a href="http://www.adobe.com/devnet/swf/" class="external" rel="nofollow">http://www.adobe.com/devnet/swf/</a> 
**  flash_fileformat_specification.pdf
</li></ul><ul><li><a href="http://hkpr.info/flash/swf/" class="external" rel="nofollow">http://hkpr.info/flash/swf/</a> 和訳
</li></ul><h1 id="h1-SWF.E3.83.90.E3.82.A4.E3.83.8A.E3.83.AA.E7.B7.A8.E9.9B.86.E3.81.AE.E3.82.B9.E3.82.B9.E3.83.A1">SWFバイナリ編集のススメ</h1><ul><li><a href="http://labs.gree.jp/blog/2010/08/631/" class="external" rel="nofollow">http://labs.gree.jp/blog/2010/08/631/</a> 第一回 
</li><li><a href="http://labs.gree.jp/blog/2010/08/726/" class="external" rel="nofollow">http://labs.gree.jp/blog/2010/08/726/</a> 第二回
</li><li><a href="http://labs.gree.jp/blog/2010/09/782/" class="external" rel="nofollow">http://labs.gree.jp/blog/2010/09/782/</a> 第三回 (JEPG編) 
</li><li><a href="http://labs.gree.jp/blog/2010/10/1263/" class="external" rel="nofollow">http://labs.gree.jp/blog/2010/10/1263/</a> 第四回 (Lossless - GIF編) 
</li><li>第五回 (Lossless - PNG編)
</li></ul><h1 id="h1-.E8.AA.BF.E6.9F.BB">調査</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWF%2Fformat">SWF/format</a>
</li></ul><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag%2FJPEG">SWF/tag/JPEG</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag%2FLossless">SWF/tag/Lossless</a>
</li></ul>
<ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWF%2FJPEG">SWF/JPEG</a>
</li></ul><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li>SWF フォーマットの変遷からみる Flash
**  <a href="http://d.hatena.ne.jp/dayflower/20080707/1215417970" class="external" rel="nofollow">http://d.hatena.ne.jp/dayflower/20080707/1215417970</a>
</li><li><a href="http://www.be-interactive.org/works/20080126/swfassist.pdf" class="external" rel="nofollow">http://www.be-interactive.org/works/20080126/swfassist.pdf</a>
</li><li><a href="http://cpansearch.perl.org/src/WROSS/SWF-Header-0.04/lib/SWF/Header.pm" class="external" rel="nofollow">http://cpansearch.perl.org/src/WROSS/SWF-Header-0.04/lib/SWF/Header.pm</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag%2FLossless">
    <title>SWF/tag/Lossless</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag%2FLossless</link>
    <dc:identifier>SWF/tag/Lossless</dc:identifier>
    <dc:date>2010-09-28T01:56:05+09:00</dc:date>
        <description>
      <![CDATA[[SWF]

[[PageOutline]]

= (20) DefineBitsLossless

フォーマットによってパレット形式とビットマップ形式がある。
どちらも独自形式

 * 共通部分 
{{{
+--------------------------------------------------------------------+---
| tag &amp]]>
    </description>
    <content:encoded>
      <![CDATA[<p><a href="http://sourceforge.jp/projects/swfed/wiki/SWF">SWF</a>
</p><div class="pageoutline"><div class="pageoutline-title"><div class="action"><button type="button" onClick="javascript:togglePageOutline(this)"><img src="//static.sourceforge.jp/wiki/images/icons/roll-up.gif" border="0"></button></div>Outline</div><ol><li><a href="#h1-.2820.29.20DefineBitsLossless">(20) DefineBitsLossless</a>
</li><li><a href="#h1-.2836.29.20DefineBitsLossless2">(36) DefineBitsLossless2</a>
</li><li><a href="#h1-.28.E3.83.A1.E3.83.A2.29.20colormap_number">(メモ) colormap_number</a>
</li><li><a href="#h1-.28.E3.83.A1.E3.83.A2.29.20RGB.20.E3.81.A8.20A.20.E3.81.AE.E7.B5.A1.E3.81.BF">(メモ) RGB と A の絡み</a>
</li><li><a href="#h1-.28.E3.83.A1.E3.83.A2.29.20.28.28width.20.2B.203.29.20.26.20-4.29.20.2A.20height.20.E3.81.A3.E3.81.A6.EF.BC.9F">(メモ) ((width + 3) &amp; -4) * height って？</a>
</li><li><a href="#h1-.E5.8F.82.E8.80.83">参考</a>
<ol><li><a href="#h2-.E9.96.A2.E9.80.A3">関連</a>
</li></ol></li></ol></div>
<h1 id="h1-.2820.29.20DefineBitsLossless">(20) <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBitsLossless">DefineBitsLossless</a></h1><p>フォーマットによってパレット形式とビットマップ形式がある。
どちらも独自形式
</p><ul><li>共通部分 
<pre>+--------------------------------------------------------------------+---
| tag &amp; length |   length   |  image_id | format |  width  |  height | ...
|  20 ,  0x3f  |            |           |        |         |         |
+--------------------------------------------------------------------+---
&lt;-- 2 bytes --&gt;&lt;- 4 bytes -&gt;&lt;-2 bytes-&gt;&lt;-1 byte-&gt;&lt;-2 bytes-&gt;&lt;-2 bytes-&gt;
                              &lt;------------------  length ---(最後まで)
</pre></li></ul><ul><li>format 3 (GIF のようなパレット形式) 
<pre>----------------------------------------------+
 共通 |colormap_count|  (colormap &amp; indices)  |
 部分 |              |     zlib compressed    |
----------------------------------------------+
       &lt;-- 1 byte  -&gt;&lt;-- contents 残り全部  --&gt;
         RGBの順で並ぶ↓   ↑ zlib compress ↑
                    ------------------------------------------------+
                     |    colormap    |     indices                 |
                    ------------------------------------------------+
                      &lt;-- colormap --&gt;&lt;-((width + 3) &amp; -4) * height-&gt;
                          count * 3
</pre></li></ul><ul><li>format 4 (実物にお目にかかった事がないけど…) 
<pre>----------------------------------------------+
 共通 |colormap_count|  (colormap &amp; indices)  |
 部分 |              |     zlib compressed    |
----------------------------------------------+
       &lt;-- 2 bytes -&gt;&lt;-- contents 残り全部  --&gt;
                         ↑ zlib compress ↑
                    ------------------------------------------------+
                     |    colormap    |     indices                 |
                    ------------------------------------------------+
                      &lt;-- colormap --&gt;&lt;-((width + 3) &amp; -4) * height-&gt;
                          count * 2
colormap を 0RRRRRGGGGGBBBBB の 16bit (BigEndian)で表現する
</pre></li><li>format 5 (PNG のようなビットマップ形式) 
<pre>----------------------------+
 共通 |    (bitmap)         |
 部分 |   zlib compressed   |
----------------------------+
      &lt;- contents 残り全部 -&gt;
         ↑ zlib compress ↑
   -----------------------------+
   ...|        bitmap           | ← XRGB の順で並ぶ (X は padding)
   -----------------------------+
       &lt;-- width * height * 4 --&gt;
</pre></li></ul><h1 id="h1-.2836.29.20DefineBitsLossless2">(36) <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBitsLossless2">DefineBitsLossless2</a></h1><p><a href="http://sourceforge.jp/projects/swfed/wiki/DefineBitsLossless">DefineBitsLossless</a> に透明度がついたもの。
</p><ul><li>共通部分 (<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBitsLossless">DefineBitsLossless</a> と同じ) 
<pre>+--------------------------------------------------------------------+---
| tag &amp; length |   length   |  image_id | format |  width  |  height | ...
|  36 ,  0x3f  |            |           |        |         |         |
+--------------------------------------------------------------------+---
&lt;-- 2 bytes --&gt;&lt;- 4 bytes -&gt;&lt;-2 bytes-&gt;&lt;-1 byte-&gt;&lt;-2 bytes-&gt;&lt;-2 bytes-&gt;
                              &lt;------------------  length ---(最後まで)
</pre></li></ul><ul><li>format 3 (GIF のようなパレット形式) 
<pre>----------------------------------------------+
 共通 |colormap_count|  (colormap &amp; indices)  |
 部分 |              |     zlib compressed    |
----------------------------------------------+
       &lt;-- 1 byte  -&gt;&lt;-- contents 残り全部  --&gt;
      ARGBの順で並ぶ↓     ↑ zlib compress ↑
                    ------------------------------------------------+
                     |    colormap    |     indices                 |
                    ------------------------------------------------+
                      &lt;-- colormap --&gt;&lt;-((width + 3) &amp; -4) * height-&gt;
                          count * 4
</pre></li><li>format 5 (PNG のようなビットマップ形式) 
<pre>----------------------------+
 共通 |    (bitmap)         |
 部分 |   zlib compressed   |
----------------------------+
      &lt;- contents 残り全部 -&gt;
       ↑ zlib compress ↑
   -----------------------------+
   ...|        bitmap           | ← ARGB の順で並ぶ
    -----------------------------+
      &lt;-- width * height * 4 --&gt;
</pre></li></ul><h1 id="h1-.28.E3.83.A1.E3.83.A2.29.20colormap_number">(メモ) colormap_number</h1><p>colormap_number には実際に使われる色数から 1 を引いた値が入る。(つまり 0 数えのカウント)
</p><p>1byte で 1色～256色 を表したいので。(そのままだと255色までしか届かない)
</p><h1 id="h1-.28.E3.83.A1.E3.83.A2.29.20RGB.20.E3.81.A8.20A.20.E3.81.AE.E7.B5.A1.E3.81.BF">(メモ) RGB と A の絡み</h1><p>A が 0 でも 255 でもない時は、RGB はズバリ入ってなくて、A に応じて補正されてます。
<pre>          BitmapPixelData ARGB[image data size]
Array of pixel colors.
Number of entries is BitmapWidth * BitmapHeight.
The RGB data must already be multiplied by the alpha channel value.
</pre>なので、PNG 画像を <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBitsLossless2">DefineBitsLossless2</a> に落とす場合は、
PNG の (R, G, B, A) を (R*A/255, G*A/255, B*A/255, A) に変換する必要があります。 
</p><ul><li><a href="http://d.hatena.ne.jp/yoya/20090215" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20090215</a> (参考)
</li></ul><p>実行時の透明pixelの重ね合わせは以下の計算式になる 
<pre>output = alpha * foreground + (1-alpha) * background
</pre>なので、この (alpha * ) の処理を端折れるように、はじめから補正してあると。
</p><h1 id="h1-.28.E3.83.A1.E3.83.A2.29.20.28.28width.20.2B.203.29.20.26.20-4.29.20.2A.20height.20.E3.81.A3.E3.81.A6.EF.BC.9F">(メモ) ((width + 3) &amp; -4) * height って？</h1><pre>((width + 3) &amp; -4) * height
</pre><p>って何じゃらほい。という感じだけど、witdh を4の倍数で合わせるという意味 
ほら、-4 って 2 の補数だと二進数で 11(略)1100 じゃないですか。
<pre>witdh = 1 の場合 =&gt; ((1 + 3) &amp; -4) = 4 &amp; 11(略)1100 = 4
witdh = 2 の場合 =&gt; ((2 + 3) &amp; -4) = 5 &amp; 11(略)1100 = 4
witdh = 3 の場合 =&gt; ((3 + 3) &amp; -4) = 6 &amp; 11(略)1100 = 4
witdh = 4 の場合 =&gt; ((4 + 3) &amp; -4) = 7 &amp; 11(略)1100 = 4
witdh = 5 の場合 =&gt; ((5 + 3) &amp; -4) = 8 &amp; 11(略)1100 = 8
</pre>つまり、4の倍数への繰り上げ処理。Windows BMP もピクセルデータはこんな並びだし、普通。
</p><div class="indent">
</div><p>% 4 とか mod 4 とか書いても良いけど、alexref にリスペクトして、あえてそのまま。(実コードに、この演算使うと処理速そうだし)
</p><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li><a href="http://www.m2osw.com/en/swf_alexref.html#tag_definebitslossless" class="external" rel="nofollow">http://www.m2osw.com/en/swf_alexref.html#tag_definebitslossless</a>
</li></ul><h2 id="h2-.E9.96.A2.E9.80.A3">関連</h2><ul><li>GIF | PNG
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/jpeglib">
    <title>jpeglib</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/jpeglib</link>
    <dc:identifier>jpeglib</dc:identifier>
    <dc:date>2010-09-10T14:59:50+09:00</dc:date>
        <description>
      <![CDATA[フォーマット

    * フォーマット辞典JPEG編
          o http://siisise.net/jpeg.html#format
    * JPEG画像形式の概要(フォーマット)。
          o http://www.marguerite.jp/Nihongo/Labo/Image/JPEG2.html いつなくなるか分からないので一応、手元にデータ保存]]>
    </description>
    <content:encoded>
      <![CDATA[<p>フォーマット
</p><ul><li><ul><li>フォーマット辞典JPEG編
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://siisise.net/jpeg.html#format" class="external" rel="nofollow">http://siisise.net/jpeg.html#format</a>
</div></div></div></div></div><ul><li><ul><li>JPEG画像形式の概要(フォーマット)。
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.marguerite.jp/Nihongo/Labo/Image/JPEG2.html" class="external" rel="nofollow">http://www.marguerite.jp/Nihongo/Labo/Image/JPEG2.html</a> いつなくなるか分からないので一応、手元にデータ保存。
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">wget -U &quot;Mozilla 5.0&quot; -E -H -k -K -p -np -L -r \
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><a href="http://www.marguerite.jp/Nihongo/Labo/index.html" class="external" rel="nofollow">http://www.marguerite.jp/Nihongo/Labo/index.html</a>
</div></div></div></div></div></div></div></div></div><ul><li><ul><li>JPG ファイルフォーマット
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.setsuki.com/hsp/ext/jpg.htm" class="external" rel="nofollow">http://www.setsuki.com/hsp/ext/jpg.htm</a>
</div></div></div></div></div><ul><li><ul><li>JPEG Header Information
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.obrador.com/essentialjpeg/headerinfo.htm" class="external" rel="nofollow">http://www.obrador.com/essentialjpeg/headerinfo.htm</a>
</div></div></div></div></div><p>ツール
</p><ul><li><ul><li>セグメント分解
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://diary.awm.jp/~yoya/?20080415#200804151" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080415#200804151</a> (マーカー表示のみ)
o <a href="http://awm.jp/~yoya/prog/php/jpegdump.phps" class="external" rel="nofollow">http://awm.jp/~yoya/prog/php/jpegdump.phps</a> (マーカー表示のみ)
o <a href="http://awm.jp/~yoya/prog/php/jpegextract.phps" class="external" rel="nofollow">http://awm.jp/~yoya/prog/php/jpegextract.phps</a> セグメント分解保存
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">+ 実行例 &gt; <a href="http://diary.awm.jp/~yoya/?2008020&amp;to=20080203#200802031" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?2008020&amp;to=20080203#200802031</a>
</div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://awm.jp/~yoya/php/image/image_segment.php" class="external" rel="nofollow">http://awm.jp/~yoya/php/image/image_segment.php</a>
</div></div></div></div></div><p>圧縮
</p><ul><li><ul><li>JPEG画像形式の概要(圧縮アルゴリズム)。
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.marguerite.jp/Nihongo/Labo/Image/JPEG.html" class="external" rel="nofollow">http://www.marguerite.jp/Nihongo/Labo/Image/JPEG.html</a>
</div></div></div></div></div><ul><li><ul><li>画像圧縮アルゴリズム
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www2.starcat.ne.jp/%7Efussy/algo/algo8-6.htm" class="external" rel="nofollow">http://www2.starcat.ne.jp/%7Efussy/algo/algo8-6.htm</a>
</div></div></div></div></div><p>拡張 (APP1, APP2)
</p><ul><li><ul><li>Exif | DCF | DPOF
</li><li>XMP
</li><li>XICC
</li><li>CIFF
</li></ul></li></ul><p>プロテクト (COM)
</p><ul><li><ul><li>PNGとGIFとJPEGにコメントを埋め込む
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://module.jp/blog/comment_in_imagefile.html" class="external" rel="nofollow">http://module.jp/blog/comment_in_imagefile.html</a>
</div></div></div></div></div><p>特許
</p><ul><li><ul><li>JPEG特許問題
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://oku.edu.mie-u.ac.jp/~okumura/compression/jpegpat.html" class="external" rel="nofollow">http://oku.edu.mie-u.ac.jp/~okumura/compression/jpegpat.html</a>
</div></div></div></div></div><ul><li><ul><li>ForgentのJPEG特許、再審査で一部却下
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.itmedia.co.jp/news/articles/0605/27/news005.html" class="external" rel="nofollow">http://www.itmedia.co.jp/news/articles/0605/27/news005.html</a>
</div></div></div></div></div><ul><li><ul><li>その後のJPEG特許問題
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://journal.mycom.co.jp/column/hitech/040/" class="external" rel="nofollow">http://journal.mycom.co.jp/column/hitech/040/</a>
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">この1,620万ドルの半分に当たる810万ドルはForgentを通じて米大手法律事務所の
Jenkens &amp; Gilchrist(以下Jenkens)に渡ることが同報告には記されている。
</div></div></div></div></div></div><p>参考
</p><ul><li><ul><li>web用jpgファイルの考察
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.interq.or.jp/leo/d-one/jpg-exif.htm" class="external" rel="nofollow">http://www.interq.or.jp/leo/d-one/jpg-exif.htm</a>
</div></div></div></div></div><ul><li><ul><li>ツンデレサーチ！ JPEGについて調べてきたわ！
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://zapanet.info/tundere/popular/JPEG.html" class="external" rel="nofollow">http://zapanet.info/tundere/popular/JPEG.html</a>
</div></div></div></div></div><p>関連ページ
</p><ul><li><ul><li>ファイルフォーマット
</li><li>JPEG Library jpeglib
</li><li>Flash/JPEG
</li><li>JFIF</li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/JPEG">
    <title>JPEG</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/JPEG</link>
    <dc:identifier>JPEG</dc:identifier>
    <dc:date>2010-09-10T14:59:08+09:00</dc:date>
        <description>
      <![CDATA[フォーマット

    * フォーマット辞典JPEG編
          o http://siisise.net/jpeg.html#format
    * JPEG画像形式の概要(フォーマット)。
          o http://www.marguerite.jp/Nihongo/Labo/Image/JPEG2.html いつなくなるか分からないので一応、手元にデータ保存]]>
    </description>
    <content:encoded>
      <![CDATA[<p>フォーマット
</p><ul><li><ul><li>フォーマット辞典JPEG編
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://siisise.net/jpeg.html#format" class="external" rel="nofollow">http://siisise.net/jpeg.html#format</a>
</div></div></div></div></div><ul><li><ul><li>JPEG画像形式の概要(フォーマット)。
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.marguerite.jp/Nihongo/Labo/Image/JPEG2.html" class="external" rel="nofollow">http://www.marguerite.jp/Nihongo/Labo/Image/JPEG2.html</a> いつなくなるか分からないので一応、手元にデータ保存。
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">wget -U &quot;Mozilla 5.0&quot; -E -H -k -K -p -np -L -r \
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><a href="http://www.marguerite.jp/Nihongo/Labo/index.html" class="external" rel="nofollow">http://www.marguerite.jp/Nihongo/Labo/index.html</a>
</div></div></div></div></div></div></div></div></div><ul><li><ul><li>JPG ファイルフォーマット
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.setsuki.com/hsp/ext/jpg.htm" class="external" rel="nofollow">http://www.setsuki.com/hsp/ext/jpg.htm</a>
</div></div></div></div></div><ul><li><ul><li>JPEG Header Information
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.obrador.com/essentialjpeg/headerinfo.htm" class="external" rel="nofollow">http://www.obrador.com/essentialjpeg/headerinfo.htm</a>
</div></div></div></div></div><p>ツール
</p><ul><li><ul><li>セグメント分解
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://diary.awm.jp/~yoya/?20080415#200804151" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080415#200804151</a> (マーカー表示のみ)
o <a href="http://awm.jp/~yoya/prog/php/jpegdump.phps" class="external" rel="nofollow">http://awm.jp/~yoya/prog/php/jpegdump.phps</a> (マーカー表示のみ)
o <a href="http://awm.jp/~yoya/prog/php/jpegextract.phps" class="external" rel="nofollow">http://awm.jp/~yoya/prog/php/jpegextract.phps</a> セグメント分解保存
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">+ 実行例 &gt; <a href="http://diary.awm.jp/~yoya/?2008020&amp;to=20080203#200802031" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?2008020&amp;to=20080203#200802031</a>
</div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://awm.jp/~yoya/php/image/image_segment.php" class="external" rel="nofollow">http://awm.jp/~yoya/php/image/image_segment.php</a>
</div></div></div></div></div><p>圧縮
</p><ul><li><ul><li>JPEG画像形式の概要(圧縮アルゴリズム)。
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.marguerite.jp/Nihongo/Labo/Image/JPEG.html" class="external" rel="nofollow">http://www.marguerite.jp/Nihongo/Labo/Image/JPEG.html</a>
</div></div></div></div></div><ul><li><ul><li>画像圧縮アルゴリズム
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www2.starcat.ne.jp/%7Efussy/algo/algo8-6.htm" class="external" rel="nofollow">http://www2.starcat.ne.jp/%7Efussy/algo/algo8-6.htm</a>
</div></div></div></div></div><p>拡張 (APP1, APP2)
</p><ul><li><ul><li>Exif | DCF | DPOF
</li><li>XMP
</li><li>XICC
</li><li>CIFF
</li></ul></li></ul><p>プロテクト (COM)
</p><ul><li><ul><li>PNGとGIFとJPEGにコメントを埋め込む
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://module.jp/blog/comment_in_imagefile.html" class="external" rel="nofollow">http://module.jp/blog/comment_in_imagefile.html</a>
</div></div></div></div></div><p>特許
</p><ul><li><ul><li>JPEG特許問題
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://oku.edu.mie-u.ac.jp/~okumura/compression/jpegpat.html" class="external" rel="nofollow">http://oku.edu.mie-u.ac.jp/~okumura/compression/jpegpat.html</a>
</div></div></div></div></div><ul><li><ul><li>ForgentのJPEG特許、再審査で一部却下
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.itmedia.co.jp/news/articles/0605/27/news005.html" class="external" rel="nofollow">http://www.itmedia.co.jp/news/articles/0605/27/news005.html</a>
</div></div></div></div></div><ul><li><ul><li>その後のJPEG特許問題
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://journal.mycom.co.jp/column/hitech/040/" class="external" rel="nofollow">http://journal.mycom.co.jp/column/hitech/040/</a>
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">この1,620万ドルの半分に当たる810万ドルはForgentを通じて米大手法律事務所の
Jenkens &amp; Gilchrist(以下Jenkens)に渡ることが同報告には記されている。
</div></div></div></div></div></div><p>参考
</p><ul><li><ul><li>web用jpgファイルの考察
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.interq.or.jp/leo/d-one/jpg-exif.htm" class="external" rel="nofollow">http://www.interq.or.jp/leo/d-one/jpg-exif.htm</a>
</div></div></div></div></div><ul><li><ul><li>ツンデレサーチ！ JPEGについて調べてきたわ！
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://zapanet.info/tundere/popular/JPEG.html" class="external" rel="nofollow">http://zapanet.info/tundere/popular/JPEG.html</a>
</div></div></div></div></div><p>関連ページ
</p><ul><li><ul><li>ファイルフォーマット
</li><li>JPEG Library jpeglib
</li><li>Flash/JPEG
</li><li>JFIF</li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/libpng">
    <title>libpng</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/libpng</link>
    <dc:identifier>libpng</dc:identifier>
    <dc:date>2010-09-10T14:58:20+09:00</dc:date>
        <description>
      <![CDATA[ libpng

    * libpng 公式ページ
          o http://www.libpng.org/pub/png/libpng.html
    * libpng1.2.8 libpng.txt 訳
          o http://dencha.ojaru.jp/programs_07/pg_graphic_10_libpng_txt.html

yo]]>
    </description>
    <content:encoded>
      <![CDATA[<div class="indent">libpng
</div><ul><li><ul><li>libpng 公式ページ
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.libpng.org/pub/png/libpng.html" class="external" rel="nofollow">http://www.libpng.org/pub/png/libpng.html</a>
</div></div></div></div></div><ul><li><ul><li>libpng1.2.8 libpng.txt 訳
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://dencha.ojaru.jp/programs_07/pg_graphic_10_libpng_txt.html" class="external" rel="nofollow">http://dencha.ojaru.jp/programs_07/pg_graphic_10_libpng_txt.html</a>
</div></div></div></div></div><p>yoya日記
</p><ul><li><ul><li>(ファイルでなく)配列変数で PNGデータを libpng に渡す方法
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://diary.awm.jp/~yoya/?2008071&amp;to=200807141#200807141" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?2008071&amp;to=200807141#200807141</a> (hatena 同じ内容)
</div></div></div></div></div><ul><li><ul><li>libpng で PNG データを生成する
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://d.hatena.ne.jp/yoya/20080718#1216392372" class="external" rel="nofollow">http://d.hatena.ne.jp/yoya/20080718#1216392372</a>
</div></div></div></div></div><ul><li><ul><li>libpng で PALETTE 形式を扱う方法
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://diary.awm.jp/~yoya/?20080808#200808082" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080808#200808082</a>
o <a href="http://diary.awm.jp/~yoya/?20081006#200810061S1" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20081006#200810061S1</a> PNG PALETTE 形式の透明度対応
</div></div></div></div></div><p>参考
</p><ul><li><ul><li>PNGファイル　　PNG操作の準備
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://dencha.ojaru.jp/programs_07/pg_graphic_10a1.html" class="external" rel="nofollow">http://dencha.ojaru.jp/programs_07/pg_graphic_10a1.html</a>
</div></div></div></div></div><ul><li><ul><li>libpngを使ってみよう(読み込み編)
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.kcrt.net/program/uselibpng_read.html" class="external" rel="nofollow">http://www.kcrt.net/program/uselibpng_read.html</a>
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">メモリ上に読み込まれたデータからpng_structを作成しましょう
</div></div></div></div></div></div><ul><li><ul><li>pngrio.c
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://sourcejam.com/jp/libpng-1.2.10/pngrio_8c-source.html" class="external" rel="nofollow">http://sourcejam.com/jp/libpng-1.2.10/pngrio_8c-source.html</a>
</div></div></div></div></div><ul><li><ul><li>PNG利用術
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www5.cds.ne.jp/~kato/png/#" class="external" rel="nofollow">http://www5.cds.ne.jp/~kato/png/#</a>
</div></div></div></div></div><ul><li><ul><li>bKGD(背景色)チャンクを使ってアルファチャネルPNGの見栄えを改善する
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.minc.ne.jp/~konda/new/png/way01.html" class="external" rel="nofollow">http://www.minc.ne.jp/~konda/new/png/way01.html</a>
</div></div></div></div></div><ul><li><ul><li>libpng 1.0.8 について
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://wai-emu-web.hp.infoseek.co.jp/about_libpng.shtml" class="external" rel="nofollow">http://wai-emu-web.hp.infoseek.co.jp/about_libpng.shtml</a>
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">MMX対応コードのマルチスレッド動作について
</div></div></div></div></div></div><ul><li><ul><li>PNGにコメントを埋め込む <a href="http://sourceforge.jp/projects/swfed/wiki/%E7%94%BB%E5%83%8F%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB">画像ファイル</a><a href="http://sourceforge.jp/projects/swfed/wiki/Windows%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0">Windowsプログラミング</a>
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://aki.issp.u-tokyo.ac.jp/itoh/hiChangeLog/html/2007-10.html#2007-10-16-1" class="external" rel="nofollow">http://aki.issp.u-tokyo.ac.jp/itoh/hiChangeLog/html/2007-10.html#2007-10-16-1</a>
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">その不満を受けてのことだろうが、iTXtチャンクなる、
UTF-8を入れてもいいコメント領域が追加されたようだ。
</div></div></div></div></div></div><p>関連
</p><ul><li><ul><li>PNG
</li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/swfed">
    <title>swfed</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/swfed</link>
    <dc:identifier>swfed</dc:identifier>
    <dc:date>2010-09-10T14:56:37+09:00</dc:date>
        <description>
      <![CDATA[    *  メモ
          o 次回(0.21)リリースメモ
          o 次々回(0.22)リリースメモ
          o 予定機能
          o 確認予定 
    * 成果物
          o ダウンロード
          o 動作環境
          o 実験ページ
          o インストール方法
     ]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li><ul><li> メモ
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o 次回(0.21)リリースメモ
o 次々回(0.22)リリースメモ
o 予定機能
o 確認予定 
</div></div></div></div></div><ul><li><ul><li>成果物
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o ダウンロード
o 動作環境
o 実験ページ
o インストール方法
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">+ モジュールのビルド
+ モジュール(新規)設置
+ モジュール更新
+ !!! 
</div></div></div></div></div></div></div></div><ul><li><ul><li>目的
</li><li>設計
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o 仕様
</div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">+ 使用例 (サンプルコード) 
</div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o 内部仕様 (改造したい人用)
o 実装 
</div></div></div></div></div><ul><li><ul><li>日記
</li><li>課題
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o 常に
o 絶賛対応中
o 未定 
</div></div></div></div></div><ul><li><ul><li>FAQ
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o loadVariable や loadMovie でよくない？
o 何故、ming を使わないの？
o 何故、swfmill を使わないの？
o php current に swf extension があるけど？ 
</div></div></div></div></div><ul><li><ul><li>資料
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o 調査
o 参考
o 未参考
o その他 
</div></div></div></div></div><ul><li><ul><li>ユーザ様
</li><li>関連ページ 
</li></ul></li></ul><p>メモ
</p><ul><li><ul><li><a href="http://www.adobe.com/devnet/swf/" class="external" rel="nofollow">http://www.adobe.com/devnet/swf/</a> 公式 SWF仕様書
</li><li><a href="http://www.m2osw.com/swf_alexref.html" class="external" rel="nofollow">http://www.m2osw.com/swf_alexref.html</a> 非公式 SWF 解析結果
</li></ul></li></ul><p>次回(0.21)リリースメモ
</p><ul><li><ul><li>FreeBSD で Sef.fault する問題の修正
</li><li>安定化 (php binding の見直し含め)
</li><li>スレッドセーフな環境でコンパイルできない問題の修正
</li></ul></li></ul><p>次々回(0.22)リリースメモ
</p><ul><li><ul><li>ベクターデータのダンプ (<a href="http://sourceforge.jp/projects/swfed/wiki/DefineShape">DefineShape</a>)
</li><li>画像の位置/スケール変更
</li></ul></li></ul><p>予定機能
</p><ul><li><ul><li>画像の位置/スケール変更、ベクターデータの編集 (<a href="http://sourceforge.jp/projects/swfed/wiki/DefineShape">DefineShape</a>)
</li><li>フォントの抽出/入れ替え (<a href="http://sourceforge.jp/projects/swfed/wiki/DefineFont">DefineFont</a>)
</li><li>ASの定数書き換え (<a href="http://sourceforge.jp/projects/swfed/wiki/DoAction">DoAction</a>)
</li></ul></li></ul><p>確認予定
</p><ul><li><ul><li>透明度付きPNG で動作未確認部分がある。tRNS は対応済みだが RGBA 形式の処理が未確認。入れ替えは大丈夫そうだけど、吸出し処理は自信なし。。。
</li></ul></li></ul><p>成果物
ダウンロード
</p><ul><li><ul><li><a href="http://sourceforge.jp/projects/swfed/files/">http://sourceforge.jp/projects/swfed/files/</a> release
</li><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/</a> current
</li><li>利用に制限はかけません。コピーライトの名前だけ書き換えとかされたら泣きます。(；ω；)
</li></ul></li></ul><p>動作環境
</p><ul><li><ul><li>PHP5 (5.1.x, 5.2.x, 5.3.0)
</li><li>Linux, FreeBSD 不具合が見つかっています。。。, Macintosh(x86, PPC 両方)
</li></ul></li></ul><p>実験ページ
</p><ul><li><ul><li><a href="http://awm.jp/~yoya/php/swfed/index.php" class="external" rel="nofollow">http://awm.jp/~yoya/php/swfed/index.php</a> (ソースコード)
</li><li><a href="http://awm.jp/~yoya/php/flash/swfdump.php" class="external" rel="nofollow">http://awm.jp/~yoya/php/flash/swfdump.php</a>
</li></ul></li></ul><p>インストール方法
モジュールのビルド
</p><ul><li><ul><li>swfed-?.??.tar.gz をもってきて伸張
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://sourceforge.jp/projects/swfed/files/">http://sourceforge.jp/projects/swfed/files/</a>
</div></div></div></div></div><ul><li><ul><li>src 以下で phpize &amp; configure &amp; make
</li></ul></li></ul><p>cd src
phpize
./configure
make
</p><ul><li><ul><li>linux や freebsd だと php-dev 系pkg, macintosh だと Xcode といった開発用パッケージが必要です。
</li></ul></li></ul><p>モジュール(新規)設置
</p><ul><li><ul><li>modules 以下に生成される so ファイルを php の extension ディレクトリに copy
</li><li>php.ini に extension 設定追加
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent">extension=swfed.so
</div></div></div><ul><li><ul><li>apachectl graceful
</li></ul></li></ul><p>su
cp modules/swfed.so &lt;php_ext_dir&gt;/.
vi &lt;php_ini_dir&gt;/php.ini
apachectl graceful
</p><p>モジュール更新
</p><ul><li><ul><li>apachectl stop
</li><li>extension ディレクトリに so を copy
</li><li>apachectl start
</li></ul></li></ul><p>su
apachectl stop
cp modules/swfed.so &lt;php_ext_dir&gt;/.
apachectl start
</p><p>※ もし、無停止で更新する方法があれば、どなたかご教授頂けませんか。(無理な気がしてますが…)
!!!
</p><ul><li><ul><li>なぜ apache module を更新すると Segmentation fault するのか
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://dsas.blog.klab.org/archives/50972695.html" class="external" rel="nofollow">http://dsas.blog.klab.org/archives/50972695.html</a>
</div></div></div></div></div><p>cp でなく install (rm &amp; cp) なら大丈夫らしい。今度試してみよう。
目的
</p><ul><li><ul><li>Flash SWF ファイル内のコンテンツを入れ替える
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o テキストツールで貼り付けた文字列の入れ替え
o JPEG画像の入れ替え
o PNG画像の入れ替えもほぼ対応 (グレー形式は未対応)
</div></div></div></div></div><ul><li><ul><li>Adobe CS3 等で生成した SWF の必要な部分だけ PHP+swfed で書き換える事で、Flash 開発者と PHP 開発者が得意な部分に注力できます。
</li><li>最小限の処理で書き換えを行っているので、ming のように１からファイルを構成するより負荷が軽めです。軽くなるかもしれません。
</li></ul></li></ul><p>設計
</p><ul><li><ul><li>PHP extension (php 5.1.6, 5.2.5 で動作確認)
</li><li>bit stream 処理は自作 (もし良いのがあったら誰か教えて…)
</li><li>ファイル全体から tag ブロックへの分割は無条件で処理するが、tag ブロックの詳細分割は必要な時だけ行う。
</li><li>CWF (zlib 圧縮) 対応は後回し (でも、後で対応できるように) ← 対応しました-
</li><li>png に対応したので libpng が必要です。近いうち GIF 対応するので giflib も必要になりそうです。 0.15 から giflib も必要になりました。
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o 0.18 から libpng や giflib がない環境でも build 出来るようにします。但し、対応する機能は disable になります。
</div></div></div></div></div><p>仕様
</p><ul><li><ul><li>php.ini の ext 設定に swfed.so を追加
</li></ul></li></ul><ul><li><ul><li>PHP extension API (実装済)
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent">class SWFEditor {
</div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function input(string swddata) return true/false;
function output()              return string swfdata;
function swfInfo()             return ; // print swfInfo
function getTagList();
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return array(array('tag'=&gt;long,
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">'length'=&gt;long,
'detail'=&gt;bool),
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">...)
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getTagDetail(integer seqno);
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return array(...); image_id とかそれ系
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getJpegData(integer image_id)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return string jpegdata;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getJpegAlpha(integer image_id)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return string alphadata;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replaceJpegData(integer image_id, string jpegdata
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><a href="http://sourceforge.jp/projects/swfed/wiki/%2Cstring">alphadata</a>)
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getPNGData(integer image_id)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return string pngdata;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replacePNGData(integer image_id, string pngdata)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replaceGIFData(integer image_id, string gifdata)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getSoundData(integer sound_id) // getMP3Data は廃止。
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return string sounddata;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replaceMLDData(integer sound_id, string mlddata)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getEditString(string <a href="http://sourceforge.jp/projects/swfed/wiki/variable_name%7Cedit_id">variable_name|edit_id</a>)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return text;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replaceEditString(string <a href="http://sourceforge.jp/projects/swfed/wiki/variable_name%7Cedit_id">variable_name|edit_id</a>,
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">string text)
return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">※ 誤って {get|replace}<a href="http://sourceforge.jp/projects/swfed/wiki/EditTextString">EditTextString</a> と記述していました。すみません。
※ Flash ver 6 以降は UTF-8 ですが、Flash Lite は ver 4 相当なので
※ CP932(SJIS-Win)エンコーディングです。アプリ側でコード変換して下さい。
function getHeaderInfo()       return array('compress'=&gt;...,
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">'version'=&gt;...);
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function setHeaderInfo(array('compress'=&gt;..., 'version'=&gt;...))
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><ul><li><ul><li>PHP extension API (テスト中)
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">
</div></div></div></div></div></div><ul><li><ul><li>PHP extension API (開発中)
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getMovieHeaderInfo()
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return array('frame_size'=&gt;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">array('x_min' =&gt;..,'x_max' =&gt; ..,
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">'y_min' =&gt;..,'y_max' =&gt; ..);
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">'frame_rate'=&gt;...,
'frame_count'=&gt;...);
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function setMovieHeaderInfo(array('frame_size'=&gt;
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">array('x_min' =&gt;..,'x_max' =&gt; ..,
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">'y_min' =&gt;..,'y_max' =&gt; ..);
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">'frame_rate'=&gt;...,
'frame_count'=&gt;...);
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getTagData(integer seqno);
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return string tagdata;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replaceTagData(integer seqno, string tag_data, <a href="http://sourceforge.jp/projects/swfed/wiki/unsigned">short new_id</a>);
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replaceMP3Data(integer sound_id, string mp3data,
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">integer samples)
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><ul><li><ul><li>PHP extension API (未実装)
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getFontData($font_id) return $font_data;
function replaceFontData($font_id, $font_data)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replaceShapeBitmapGeometryByImageId($image_id, $x, $y, $witdh, $height);
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getSymbolSWF(string symbol_name)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return swfdata;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replaceSymbolSWF(string symbol_name, string swfdata)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getActionData(integer seqno); // 微妙
function disasmActionData(string actiondata);
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return Array(Array('op'=&gt;$code,
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">'data'=&gt;$data)
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">);
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function asmActiondata(Array(Array('op'=&gt;$code, 'data'=&gt;$data)));
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return action_data;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replaceActionData(integer seqno, string actiondata);
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function getAlphaDataFromGIFData(string gifdata)
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return alphadata;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">function replaceActionVarData(string var_name, string var_data);
</div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">return true/false;
</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><div class="indent"><div class="indent"><div class="indent">}
</div></div></div><p>使用例 (サンプルコード)
</p><ul><li><ul><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfdump.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfdump.php</a>
</li><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplaceeditstring.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfreplaceeditstring.php</a>
</li><li><a href="http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfcompress.php" class="external" rel="nofollow">http://svn.sourceforge.jp/svnroot/swfed/trunk/sample/swfcompress.php</a>
</li></ul></li></ul><p>内部仕様 (改造したい人用)
</p><ul><li><ul><li>tag ブロックの詳細データ処理 (swf_tag_～.<a href="http://sourceforge.jp/projects/swfed/wiki/hc">hc</a>)
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o create (calloc と変数初期化)
o identity (image_id,sound_id 等、数値型 id の比較)
o destropy (メンバーを辿って全部 free)
o input (データを受け取って内部構造に変換)
o output (内部構造をデータとして(mallocしつつ)出力)
o print (標準出力に内部データを渡す)
</div></div></div></div></div><ul><li><ul><li>SWF 独自型の処理 (swf_～_t)
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o parse (bitstream から内部構造に落とす)
o build (内部構造を bitstream にのせる)
</div></div></div></div></div><p>実装
</p><ul><li><ul><li>なるべく swf_{object|header|tag|...}.c 側に処理を作って、swfed.c はそこへの橋渡しに徹する。
</li><li>swf_tag_&lt;タグ名の省略形&gt;.<a href="http://sourceforge.jp/projects/swfed/wiki/hc">hc</a>
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent">swf_tag_info_table　に swf_tag_detail_handler_t の形式で関数ポインタ群を設定
-&gt; {create, identity, output, print, destroy}
</div></div></div><p>日記
</p><ul><li><ul><li>Flash SWF ファイル内 JPEG 画像入れ替えの PHP extension 完成
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://diary.awm.jp/~yoya/?20080331#200803311" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080331#200803311</a> | (hatena | i-revo mp)
</div></div></div></div></div><ul><li><ul><li>swfed replaceJpegData alpha データ対応 (画像入れ替えサンプル <a href="http://sourceforge.jp/projects/swfed/wiki/heart">heart</a>)
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://diary.awm.jp/~yoya/?20080514#200805141" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080514#200805141</a>
</div></div></div></div></div><p>課題
</p><ul><li><ul><li>Cygwin では shared 形式の extension を作れないようなので、build-in 形式の手順も作成する。buildconf してダメだったので何かやる事があるはず。config.m4 ？
</li><li>分解できるタグをもっと増やす。
</li><li>zend_mm_corrupted 問題の調査
</li></ul></li></ul><p>常に
</p><ul><li><ul><li>メモリ管理のブラッシュアップ
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o エージングに耐えられるように
o おかしな SWF を食わせてもリークしないように
</div></div></div></div></div><ul><li><ul><li>swfed.c の new_buff の処理を何とかする。
</li></ul></li></ul><p>絶賛対応中
</p><ul><li><ul><li>ベクタ画像の入れ替え。(携帯でビットマップを多用すると容量的にキツい)
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o ステージの SWF 上での扱いがよく分からない…
</div></div></div></div></div><p>未定
</p><ul><li><ul><li>Windows 対応 (ハマり中…)
</li><li>swf_tag.c の処理が冗長なので何とかする
</li></ul></li></ul><p>FAQ
loadVariable や loadMovie でよくない？
</p><ul><li><ul><li>携帯Flashではボタンを押してイベントを発生させないと、これらで通信が出来ません。なので、開いてすぐに動的なデータを使いたい。といった場合に対応できません。
</li><li>あと、初めからデータが埋まっていれば通信しなくて済みますし。(携帯は通信のコストが馬鹿にならないので)
</li></ul></li></ul><p>何故、ming を使わないの？
</p><ul><li><ul><li>ming は一から SWF ファイルを生成するツールで、既存の SWF ファイルを書き換える機能はありません。
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o 動的でなくても良いデータまで、真面目に一からビット列を構築するので、処理が勿体無いかなと。
</div></div></div></div></div><ul><li><ul><li>ming に SWF 読み込み機能を追加するのも考えましたが、全種類のタグの parse を実装するのは手間(人的にもPC的にも)すぎますし、(parse を省く為に) tag ブロックを raw データでも保存できるようにするには、ming の基本構造に手を入れる事になるので、それは無しの方向で…
</li></ul></li></ul><p>何故、swfmill を使わないの？
</p><ul><li><ul><li>swfmill で SWF ファイルを XML に落として必要部分を書き換え、SWF ファイルに戻す事でも目的は達成出来ますが、パフォーマンスを気にする環境にその処理を入れる勇気が自分には無いです。<sup></sup>;
</li></ul></li></ul><p>php current に swf extension があるけど？
</p><ul><li><ul><li>cvs の履歴を見ると2000年頃に pecl に移動したらしいのですが、pecl で検索しても見つからないし、実際に利用している例も見当たらないので、にんともかんとも…
</li></ul></li></ul><p>資料
調査
</p><ul><li><ul><li>Flash SWF バイナリ (Flash/SWF)
</li><li>PHP extension の作り方 (PHP/ext)
</li><li>zlib の使い方 (zlib)
</li><li>画像ファイル処理ライブラリ (libpng) | (giflib) | (jpeglib)
</li><li>FlashSWF alpha データ抽出@Yoya's diary
</li></ul></li></ul><p>参考
</p><ul><li><ul><li><a href="http://sswf.sourceforge.net/SWFalexref.html" class="external" rel="nofollow">http://sswf.sourceforge.net/SWFalexref.html</a>
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://www.m2osw.com/swf_alexref.html" class="external" rel="nofollow">http://www.m2osw.com/swf_alexref.html</a>
</div></div></div></div></div><ul><li><ul><li><a href="http://www.swftools.org/" class="external" rel="nofollow">http://www.swftools.org/</a>
</li></ul></li></ul><p>未参考
</p><ul><li><ul><li>SWF::Parser - SWFファイルをパース
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://perldoc.jp/docs/modules/SWF-File-0.20/Parser.pod" class="external" rel="nofollow">http://perldoc.jp/docs/modules/SWF-File-0.20/Parser.pod</a>
</div></div></div></div></div><ul><li><ul><li>SWF::Builder - SWFファイル生成
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://d.hatena.ne.jp/sfujiwara/20070618/1182172990" class="external" rel="nofollow">http://d.hatena.ne.jp/sfujiwara/20070618/1182172990</a>
</div></div></div></div></div><ul><li><ul><li>PECL swf
</li></ul></li></ul><div class="indent"><div class="indent"><div class="indent"><div class="indent"><div class="indent">o <a href="http://cvs.php.net/viewvc.cgi/pecl/swf/" class="external" rel="nofollow">http://cvs.php.net/viewvc.cgi/pecl/swf/</a>
</div></div></div></div></div><p>その他
</p><ul><li><ul><li><a href="http://sourceforge.jp/projects/swfed">http://sourceforge.jp/projects/swfed</a>
</li><li>PHPカンファレンス2008/2009LT (LT/swfed) リベンジ＆色々進捗があったので
</li><li><a href="http://labs.gree.jp/blog/2010/08/631/" class="external" rel="nofollow">http://labs.gree.jp/blog/2010/08/631/</a>
</li></ul></li></ul><p>ユーザ様 :)
</p><ul><li><ul><li><a href="http://black-tree.net/diary/?date=20090104" class="external" rel="nofollow">http://black-tree.net/diary/?date=20090104</a>
</li><li><a href="http://mateio.blog.so-net.ne.jp/2010-03-12" class="external" rel="nofollow">http://mateio.blog.so-net.ne.jp/2010-03-12</a>
</li><li><a href="http://blog.y-110.net/log/eid140.html" class="external" rel="nofollow">http://blog.y-110.net/log/eid140.html</a>
</li><li><a href="http://d.hatena.ne.jp/sasezaki/20090913/p1" class="external" rel="nofollow">http://d.hatena.ne.jp/sasezaki/20090913/p1</a>
</li></ul></li></ul><p>関連ページ
</p><ul><li><ul><li>Flash SWF バイナリ (Flash/SWF)
</li><li>PHP extension の作り方 (PHP/ext)
</li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag">
    <title>SWF/tag</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag</link>
    <dc:identifier>SWF/tag</dc:identifier>
    <dc:date>2010-09-09T14:48:38+09:00</dc:date>
        <description>
      <![CDATA[[[TitleIndex(prefix=SWF/tag/)]]
]]>
    </description>
    <content:encoded>
      <![CDATA[<ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag%2FJPEG">SWF/tag/JPEG</a>
</li><li><a href="http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag%2FLossless">SWF/tag/Lossless</a>
</li></ul>
]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWF%2FJPEG">
    <title>SWF/JPEG</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWF%2FJPEG</link>
    <dc:identifier>SWF/JPEG</dc:identifier>
    <dc:date>2010-09-09T14:46:14+09:00</dc:date>
        <description>
      <![CDATA[[SWF]

[[PageOutline]]

= はじめに

Flash SWF バイナリ内の(非可逆圧縮)画像は JPEG 形式で格納される。 
SWF フォーマットの詳細はこちら ＞ Flash/SWF/format, Flash/SWF/format/Jpeg
JPEG を格納するフォーマットは４種類あり、以下のタグで区別する 
DefineBitsJPEG(6)(&la]]>
    </description>
    <content:encoded>
      <![CDATA[<p><a href="http://sourceforge.jp/projects/swfed/wiki/SWF">SWF</a>
</p><div class="pageoutline"><div class="pageoutline-title"><div class="action"><button type="button" onClick="javascript:togglePageOutline(this)"><img src="//static.sourceforge.jp/wiki/images/icons/roll-up.gif" border="0"></button></div>Outline</div><ol><li><a href="#h1-.E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</a>
</li><li><a href="#h1-.E6.8E.A8.E6.B8.AC.28.E6.AD.B4.E5.8F.B2.E7.9A.84.E7.B5.8C.E7.B7.AF.E3.81.AE.29">推測(歴史的経緯の)</a>
</li><li><a href="#h1-.E8.AA.BF.E3.81.B9.E5.A7.8B.E3.82.81.E3.81.9F.E3.81.8D.E3.81.A3.E3.81.8B.E3.81.91">調べ始めたきっかけ</a>
</li><li><a href="#h1-.E5.82.99.E8.80.83">備考</a>
</li><li><a href="#h1-.E5.8F.82.E8.80.83">参考</a>
</li><li><a href="#h1-.E9.96.A2.E9.80.A3">関連</a>
</li></ol></div>
<h1 id="h1-.E3.81.AF.E3.81.98.E3.82.81.E3.81.AB">はじめに</h1><p>Flash SWF バイナリ内の(非可逆圧縮)画像は JPEG 形式で格納される。 
SWF フォーマットの詳細はこちら ＞ Flash/SWF/format, Flash/SWF/format/Jpeg
JPEG を格納するフォーマットは４種類あり、以下のタグで区別する 
<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG(6)(←公式には<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>), <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2(21), <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG3(35), <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG4(90)
タグ別JPEG構造
<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG は以下の２択 
JPEG のうち圧縮テーブル情報のセグメント(DQT,DHT)を、別タグ(JPEGTables)のブロックに分離する。 
尚、JPEGTables は SWF ファイル内に１つしか置けないので、圧縮テーブル情報のセグメントを抜いた <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG(2,3 も同様)は全て一つの JPEGTables を(共通で)参照する事になる。
JPEG 形式をそのまま入れて、JPEGTables は空っぽ。(仕様的には微妙な使い方)
<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2,3 は以下の二択。参考 
<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2,3 タグ内の、前半に圧縮テーブル情報を持ってきて、後半にそれ以外のセグメントを置き、各々 SOI EOI で囲む。 
この方法を取った場合、SOI, EOI マーカーが２つずつ含まれる、妙な JPEG に見える。
JPEG のうち圧縮テーブルのセグメントを、別タグ(JPEGTables)のブロックに入れて、それを参照する。(仕様的には微妙、<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG を使うべきだけど透明度つきだとどうしよもないか…) 
この場合の SOI, EOI の扱いは未調査
<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG4 の JPEG 構造は不明。恐らくは <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2,3 と同様と思われる。
付加的なデータ
<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG3 は更に、alpha channel(透明度)データが後ろに付く。 
透明度のデータを zlib 圧縮して埋めこまれる。 
マスクデータを指定してスプライト表示のように使う事が多い。(参考)
<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG4 は更に、スムージングフィルタ用の設定値が 2byte で付加される 
デブロッキングフィルタに渡すパラメータを 2byte で埋め込む 
それ以外は <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG3 と同じと思われる
その他
特殊に見える JPEG の説明はこちら。↓ (本家のサイトはアクセスできなくなっているので、cache 参考の事) 
ming について 
<a href="http://auicon.freeownhost.com/pc/dev/ming/jpeg.html" class="external" rel="nofollow">http://auicon.freeownhost.com/pc/dev/ming/jpeg.html</a> (cache) 
jpeg.c.diff の cache
</p><h1 id="h1-.E6.8E.A8.E6.B8.AC.28.E6.AD.B4.E5.8F.B2.E7.9A.84.E7.B5.8C.E7.B7.AF.E3.81.AE.29">推測(歴史的経緯の)</h1><p>根拠は殆どないけど勝手に推理。(事実と又聞きと憶測が混ざってます)
</p><p>JPEG の圧縮テーブル部分は(ほぼ?)固定なので、それ用のタグを作って(複数の JPEG 画像が)共通で参照するようにすればデータ量減るよね。 &gt; JPEGTable(圧縮テーブル) + <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG(メタデータや圧縮された画像データ) 
どちらも JPEG フォーマットの一部なので、SOI, EOI でくくっておこう
JPEGTable と <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG を合成して１つのタグにしちゃっていいんじゃないか &gt; <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2(圧縮テーブル+画像データ、情報量的には JPEG フォーマットと同等) 
JPEGTable と <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG はどちらも SOI, EOI でくくるので、それらを合成した <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2 は結果的に SOI, EOI が 2つずつになる。しかも一般的な JPEG ファイルは圧縮テーブルを真ん中らへんに配置するので、並びも異なる。(ので、そのままデータを取り出しても、ビューアで表示出来ない) 
でも、Flash Player の実装系の中には JPEGTable の SOI,EOI と <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG の SOI,EOI の両方がある前提で作られてるものが… (例えば、携帯のFlashプレイヤー)
しゃーない、JPEG フォーマットの頭に SOI,EOI を余分につけていいよ？ でないと困るよね？ 
<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2 に JPEG 画像をそのまま入れられない？ 
でも以前のフォーマットと違うよね。
しゃーない、JPEG フォーマットの頭に EOI, SOI (SOI,EOI でない事に注意) を余分につければ、その後ろ、生 JPEG でいいよ？
って事？
</p><h1 id="h1-.E8.AA.BF.E3.81.B9.E5.A7.8B.E3.82.81.E3.81.9F.E3.81.8D.E3.81.A3.E3.81.8B.E3.81.91">調べ始めたきっかけ</h1><p><a href="http://pc11.2ch.net/test/read.cgi/swf/1172599208/277-376" class="external" rel="nofollow">http://pc11.2ch.net/test/read.cgi/swf/1172599208/277-376</a> <a href="#tdef6cc3">#tdef6cc3</a> 
375 ：Now_loading...774KB：2007/06/15(金) 02:45:13 ID:t9sozzWd
&gt;&gt;345 &gt;&gt;374 
JPEGを差し替えるだけならこんな感じ。 
1)とりあえずベースとなるswfを作る。 
2)<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2を探してJPEGデータを差し替える。 
3)差し替えた<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2のRECORDHEADER内のLengthを書き換える。 
4)SWF File Headerの<a href="http://sourceforge.jp/projects/swfed/wiki/FileLength">FileLength</a>を書き換える。 
</p><p>用語やフォーマットは flash_fileformat_specification.pdf を参照。
</p><h1 id="h1-.E5.82.99.E8.80.83">備考</h1><p>SWFspec v8 以降、<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2,3(,4) は JPEG に限らず PNG や GIF のフォーマットを生のまま入れられる。 
<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBitsLossless">DefineBitsLossless</a> は独自画像フォーマットで、<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG は JPEG ファイルをほぼそのままなので、<a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2,3(,4) を選択したと思われる。 
タグ名については仕様を作った人も後悔してるらしいｗ
<a href="http://sourceforge.jp/projects/swfed/wiki/JpegTable">JpegTable</a> はこれが元？↓ 
<a href="http://www.awaresystems.be/imaging/tiff/tifftags/jpegtables.html" class="external" rel="nofollow">http://www.awaresystems.be/imaging/tiff/tifftags/jpegtables.html</a>
</p><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><p><a href="http://www.m2osw.com/en/swf_alexref.html#tag_definebitsjpeg" class="external" rel="nofollow">http://www.m2osw.com/en/swf_alexref.html#tag_definebitsjpeg</a>
</p><h1 id="h1-.E9.96.A2.E9.80.A3">関連</h1><p>JPEG フォーマット (JPEG) 
SWF Editor PHP extension (swfed) 
SWF フォーマット
</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag%2FJPEG">
    <title>SWF/tag/JPEG</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/SWF%2Ftag%2FJPEG</link>
    <dc:identifier>SWF/tag/JPEG</dc:identifier>
    <dc:date>2010-09-09T14:41:41+09:00</dc:date>
        <description>
      <![CDATA[[SWF]

[[PageOutline]]

 * 元々は JPEG データ(非可逆圧縮)を格納するタグ 
 * 妙なJPEG構造を調査した結果はこちら &rarr; Flash/JPEG
 * 転じて、JPEG, PNG, GIF を生のまま保存するタグ

= (6) DefineBitsJPEG (公式には DefineBits)
 * JPEG データが image_da]]>
    </description>
    <content:encoded>
      <![CDATA[<p><a href="http://sourceforge.jp/projects/swfed/wiki/SWF">SWF</a>
</p><div class="pageoutline"><div class="pageoutline-title"><div class="action"><button type="button" onClick="javascript:togglePageOutline(this)"><img src="//static.sourceforge.jp/wiki/images/icons/roll-up.gif" border="0"></button></div>Outline</div><ol><li><a href="#h1-.286.29.20DefineBitsJPEG.20.28.E5.85.AC.E5.BC.8F.E3.81.AB.E3.81.AF.20DefineBits.29">(6) DefineBitsJPEG (公式には DefineBits)</a>
</li><li><a href="#h1-.288.29.20JPEGTables">(8) JPEGTables</a>
</li><li><a href="#h1-.2821.29.20DefineBitsJPEG2">(21) DefineBitsJPEG2</a>
</li><li><a href="#h1-.2835.29.20DefineBitsJPEG3">(35) DefineBitsJPEG3</a>
</li><li><a href="#h1-.2890.29.20DefineBitsJPEG4">(90) DefineBitsJPEG4</a>
</li><li><a href="#h1-.E5.8F.82.E8.80.83">参考</a>
</li></ol></div>
<ul><li>元々は JPEG データ(非可逆圧縮)を格納するタグ 
</li><li>妙なJPEG構造を調査した結果はこちら → Flash/JPEG
</li><li>転じて、JPEG, PNG, GIF を生のまま保存するタグ
</li></ul><h1 id="h1-.286.29.20DefineBitsJPEG.20.28.E5.85.AC.E5.BC.8F.E3.81.AB.E3.81.AF.20DefineBits.29">(6) <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG (公式には <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>)</h1><ul><li>JPEG データが image_data にそのまま入る 
</li><li>JPEG データから圧縮用テーブルだけ抜かれたデータが入る事もある 
</li><li>その場合、圧縮用テーブルは JPEGTables タグを参照する。
<pre>+-------------------------------------------------------------+
| tag &amp; length |    length    |  image_id |     image_data    |
|  6  ,  0x3f  |              |           |                   |
+-------------------------------------------------------------+
&lt;-- 2 bytes --&gt; &lt;- 4 bytes -&gt; &lt;-2 bytes-&gt;  &lt;-contents 残り全部-&gt;
                              &lt;------------------  length ----&gt;
</pre></li></ul><h1 id="h1-.288.29.20JPEGTables">(8) JPEGTables</h1><ul><li>JPEG データの圧縮用テーブルだけ入る (SWF 中に１つのみ) 
</li><li>圧縮用テーブルが入っていない <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG から参照される。
<pre>+---------------------------------------------------+
| tag &amp; length |    length    |  encoding_tables    |
|  8     0x3f  |              |                     |
+---------------------------------------------------+
&lt;-- 2 bytes --&gt; &lt;- 4 bytes -&gt;
                              &lt;------ length ------&gt;
</pre></li></ul><h1 id="h1-.2821.29.20DefineBitsJPEG2">(21) <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2</h1><ul><li>JPEG データの圧縮テーブルに関するセグメントが encoding_tables (又は、別の tag である JPEGTables の方)に、それ以外のセグメントが image_data に入る。 
</li><li>そのまま取り出しても JPEG ファイルにはならず、セグメントを並び替える必要がある。 
</li><li>各々、SOI(Start of Image)、EOI(End of Image) マーカーでくくるので、SOI,EOI が2つある妙な JPEG に見える。 
**  参考1 -&gt; <a href="http://diary.awm.jp/~yoya/?20080203#200802031" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080203#200802031</a> 
**  参考2 -&gt; <a href="http://diary.awm.jp/~yoya/?20080203#200802033" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080203#200802033</a> 
**  参考3 -&gt; <a href="http://mp.i-revo.jp/user.php/wrckyapk/entry/7225.html" class="external" rel="nofollow">http://mp.i-revo.jp/user.php/wrckyapk/entry/7225.html</a>
</li><li>JPEG データのセグメント構造については (Flash/JPEG)参考のこと。
<pre>+-----------------------------------------+------------------------------+
| tag &amp; length |    length    |  image_id | encoding_tables | image_data |
|  21 ,  0x3f  |              |           |                              |
+------------------------------------------------------------------------+
&lt;-- 2 bytes --&gt; &lt;- 4 bytes  -&gt; &lt;-2 bytes-&gt;  &lt;---    contents 残り全部  ---&gt;
                               &lt;---------------- length ----------------&gt;
</pre></li></ul><h1 id="h1-.2835.29.20DefineBitsJPEG3">(35) <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG3</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG2 のデータに alpha channel (透明度)データが加わったもの 
</li><li>これに画像のマスク値を乗せればスプライト的な表示が可能。 
</li><li>alpha channel は zlib 圧縮して格納。伸張すると画像左上の pixel から対応する順に透明度の値(1byte)が並んでいる。 
** 参考 -&gt; <a href="http://diary.awm.jp/~yoya/?20080213#200802132" class="external" rel="nofollow">http://diary.awm.jp/~yoya/?20080213#200802132</a>
<pre>+---------------------------------------------------------------
| tag &amp; length |    length    |  image_id | offset_to_alpha | ..
|  35 ,  0x3f  |              |           |                 |
+---------------------------------------------------------------
&lt;-- 2 bytes --&gt; &lt;-  4 bytes -&gt; &lt;-2 bytes-&gt; &lt;--  4 bytes --&gt;
                               &lt;--- length (最後まで)  ---
 ---+------------------------------+-------------------+
 .. | encoding_tables | image_data |   alpha(zlib圧縮) |
 ---+------------------------------+-------------------+
     &lt;--    offse_to_alpha      --&gt; &lt;-contents 残り全部-&gt;
</pre></li></ul><h1 id="h1-.2890.29.20DefineBitsJPEG4">(90) <a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG4</h1><ul><li><a href="http://sourceforge.jp/projects/swfed/wiki/DefineBits">DefineBits</a>JPEG3 のデータに deblock_param (デブロッキングフィルタの値)データが加わったもの 
</li></ul><p>deblock_param は 2 byte
<pre>+---------------------------------------------------------------
| tag &amp; length |    length    |  image_id | offset_to_alpha | ..
|  90 ,  0x3f  |              |           |                 |
+---------------------------------------------------------------
&lt;-- 2 bytes --&gt; &lt;-  4 bytes -&gt; &lt;-2 bytes-&gt; &lt;--  4 bytes --&gt;
                               &lt;--- length (最後まで)  ---
 ---+-------------+-----------------+------------+-------------------+
 .. |deblock_param| encoding_tables | image_data |   alpha(zlib圧縮) |
 ---+-------------+-----------------+------------+-------------------+
     &lt;- 2 bytes -&gt;                               &lt;-contents 残り全部-&gt;
     &lt;------------ offset_to_alpha -------------&gt;
</pre></p><h1 id="h1-.E5.8F.82.E8.80.83">参考</h1><ul><li>Flash SWF 上の JPEG の扱い (<a href="http://sourceforge.jp/projects/swfed/wiki/SWF%2FJPEG">SWF/JPEG</a>)
</li><li><a href="http://www.m2osw.com/en/swf_alexref.html#tag_definebitsjpeg" class="external" rel="nofollow">http://www.m2osw.com/en/swf_alexref.html#tag_definebitsjpeg</a> 
</li><li><a href="http://www.m2osw.com/en/swf_alexref.html#tag_jpegtables" class="external" rel="nofollow">http://www.m2osw.com/en/swf_alexref.html#tag_jpegtables</a>
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/swfed/wiki/Policy">
    <title>Policy</title>
    <link>http://sourceforge.jp/projects/swfed/wiki/Policy</link>
    <dc:identifier>Policy</dc:identifier>
    <dc:date>2008-08-07T11:19:40+09:00</dc:date>
        <description>
      <![CDATA[= 設計ポリシー

 * たとえ柔軟性を欠いたとしても、なるべく簡単な API にする
 * 最小限の手間で本当に必要な部分だけ書き換えるように頑張る]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.E8.A8.AD.E8.A8.88.E3.83.9D.E3.83.AA.E3.82.B7.E3.83.BC">設計ポリシー</h1><ul><li>たとえ柔軟性を欠いたとしても、なるべく簡単な API にする
</li><li>最小限の手間で本当に必要な部分だけ書き換えるように頑張る</li></ul>]]>
    </content:encoded>
      </item>
    </rdf:RDF>

