Exemplo n.º 1
0
Arquivo: SWF.php Projeto: yoya/IO_SWF
 function build()
 {
     $writer_head = new IO_Bit();
     $writer = new IO_Bit();
     /* SWF Header */
     $writer_head->putData($this->_headers['Signature']);
     $writer_head->putUI8($this->_headers['Version']);
     $writer_head->putUI32LE($this->_headers['FileLength']);
     /* SWF Movie Header */
     IO_SWF_Type_RECT::build($writer, $this->_headers['FrameSize']);
     $writer->byteAlign();
     $writer->putUI16LE($this->_headers['FrameRate']);
     $writer->putUI16LE($this->_headers['FrameCount']);
     /* SWF Tags */
     foreach ($this->_tags as $idx => $tag) {
         $tagData = $tag->build();
         if ($tagData != false) {
             $writer->putData($tagData);
         } else {
             throw new IO_SWF_Exception("tag build failed (tag idx={$idx})");
         }
     }
     list($fileLength, $bit_offset_dummy) = $writer->getOffset();
     $fileLength += 8;
     // swf header
     $this->_headers['FileLength'] = $fileLength;
     $writer_head->setUI32LE($fileLength, 4);
     if ($this->_headers['Signature'][0] == 'C') {
         return $writer_head->output() . gzcompress($writer->output());
     }
     return $writer_head->output() . $writer->output();
 }