Exemplo n.º 1
0
 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);
     }
 }
Exemplo n.º 2
0
 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']);
             }
         }
     }
 }
Exemplo n.º 3
0
Arquivo: SWF.php Projeto: yoya/IO_SWF
 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();
         }
     }
 }