function dump($opts = array()) { if (empty($opts['hexdump']) === false) { $bitio = new IO_Bit(); $bitio->input($this->_swfdata); } /* SWF Header */ echo 'Signature: ' . $this->_headers['Signature'] . PHP_EOL; echo 'Version: ' . $this->_headers['Version'] . PHP_EOL; echo 'FileLength: ' . $this->_headers['FileLength'] . PHP_EOL; echo 'FrameSize: ' . IO_SWF_Type_RECT::string($this->_headers['FrameSize']) . "\n"; echo 'FrameRate: ' . $this->_headers['FrameRate'] / 0x100 . PHP_EOL; echo 'FrameCount: ' . $this->_headers['FrameCount'] . PHP_EOL; if (empty($opts['hexdump']) === false) { $bitio->hexdump(0, $this->_header_size); $opts['bitio'] =& $bitio; // for tag } $opts['indent'] = 0; /* SWF Tags */ echo 'Tags:' . PHP_EOL; foreach ($this->_tags as $tag) { self::parseTagContent($tag, $opts); } $frame_num = 1; $sprite_tags = array(); for ($i = 0; $i < count($this->_tags); $i++) { $tag = $this->_tags[$i]; switch ($tag->code) { case 39: // Sprite $sprite_tags[] = $tag; break; case 12: // Action // Action case 59: // InitAction self::dumpActionTag($tag, $frame_num, $opts); break; case 1: // ShowFrame $frame_num++; break; case 43: // FrameLabel $tag->dump(); break; default: break; } } foreach ($sprite_tags as $tag) { self::dumpSpriteTag($tag, $opts); } }
function dump($opts = array()) { if (empty($opts['hexdump']) === false) { $bitio = new IO_Bit(); $bitio->input($this->_mididata); } echo "HEADER:\n"; foreach ($this->header['header'] as $key => $value) { echo " {$key}: {$value}\n"; } if (empty($opts['hexdump']) === false) { $bitio->hexdump(0, $this->header['length'] + 8); } $xfkaraoke_with_track = $this->tracks; if ($this->xfkaraoke !== null) { $xfkaraoke_with_track["karaoke"] = $this->xfkaraoke; $xfkaraoke_with_track["karaoke"]["track"] = $this->xfkaraoke["xfkaraoke"]; } foreach ($xfkaraoke_with_track as $idx => $track) { $scaleCharactors = array('C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'); echo "TRACK[{$idx}]:\n"; if (empty($opts['hexdump']) === false) { $bitio->hexdump($track['_offset'], 8); } foreach ($track['track'] as $idx2 => $chunk) { if (empty($opts['measure']) === false) { $deltaTime = $chunk['DeltaTime']; $this->_timeInMeasure -= $deltaTime; // XXX if ($this->_timeInMeasure <= 0) { echo "=== Measure:{$this->_measureSeqno}\n"; $this->_timeInMeasure = $this->header['header']['Division'] * $this->_measure1 * (4 / $this->_measure2); $this->_measureSeqno++; } } echo " [{$idx2}]:"; foreach ($chunk as $key => $value) { switch ($key) { case 'EventType': if ($value < 0xf) { $eventname = $this->event_name[$value]; } else { if (isset($chunk['SystemEx'])) { $eventname = "System Exclusive"; } elseif (isset($chunk['SystemExCont'])) { $eventname = "System Exclusive Cont"; } elseif (isset($chunk['MetaEventType'])) { $eventname = "Meta Event"; } else { $eventname = "Unknown"; } } echo " {$key}:{$value}({$eventname}),"; break; case 'MetaEventType': $meta_event_type = $value; if (isset($this->meta_event_name[$value])) { $eventname = $this->meta_event_name[$value]; echo " {$key}:{$value}({$eventname}),"; } else { echo " {$key}:{$value},"; } break; case 'ControllerType': $typename = $this->controller_type_name[$value]; echo " {$key}:{$value}({$typename}),"; break; case 'SystemEx': case 'SystemExCont': case 'MetaEventData': echo " {$key}:"; $dataLen = strlen($value); if ($key === 'MetaEventData') { switch ($meta_event_type) { case 0x5: // Lyric echo mb_convert_encoding($value, "UTF-8", "SJIS"); break; case 0x7: // Cue Point echo $value; break; case 0x58: // time signature $measure1 = ord($value[0]); $measure2 = pow(2, ord($value[1])); echo "{$measure1}/{$measure2}"; $this->_measure1 = $measure1; $this->_measure2 = $measure2; break; default: break; } } echo "("; for ($i = 0; $i < $dataLen; $i++) { printf("%02x", ord($value[$i])); } echo ")"; if ($key === 'SystemEx') { echo "\n"; $sysex = new IO_MIDI_SysEx(); $sysex->dumpPayload($value); } break; case 'NoteNumber': $noteoct = floor($value / 12); $notekey = $scaleCharactors[$value % 12]; echo " {$key}:{$value}({$notekey}{$noteoct}),"; break; default: if ($key[0] !== '_' || empty($opts['verbose']) === false) { echo " {$key}:{$value},"; } break; } } echo "\n"; if (empty($opts['hexdump']) === false) { $bitio->hexdump($chunk['_offset'], $chunk['_length']); } } } }
function dump($opts = array()) { if (empty($opts['hexdump']) === false) { $bitio = new IO_Bit(); $bitio->input($this->_swfdata); } /* SWF Header */ echo 'Signature: ' . $this->_headers['Signature'] . PHP_EOL; echo 'Version: ' . $this->_headers['Version'] . PHP_EOL; echo 'FileLength: ' . $this->_headers['FileLength'] . PHP_EOL; echo 'FrameSize: ' . IO_SWF_Type_RECT::string($this->_headers['FrameSize']) . "\n"; echo 'FrameRate: ' . $this->_headers['FrameRate'] / 0x100 . PHP_EOL; echo 'FrameCount: ' . $this->_headers['FrameCount'] . PHP_EOL; if (empty($opts['hexdump']) === false) { $bitio->hexdump(0, $this->_header_size); $opts['bitio'] =& $bitio; // for tag } $opts['indent'] = 0; /* SWF Tags */ if ($this->_headers['Version'] < 6) { ob_start('mb_convert_encoding_from_sjis'); } echo 'Tags:' . PHP_EOL; foreach ($this->_tags as $tag) { try { $tag->dump($opts); } catch (IO_Bit_Exception $e) { echo "(tag dump failed) {$e}\n"; } if ($this->_headers['Version'] < 6) { ob_flush(); } } }