Beispiel #1
0
 function buildContent($tagCode, $opts = array())
 {
     $writer = new IO_Bit();
     $writer->putUI16LE($this->SoundId);
     // ----
     $writer->putUIBits($this->SoundFormat, 4);
     $writer->putUIBits($this->SoundRate, 2);
     $writer->putUIBit($this->SoundSize);
     // ---
     $writer->putUI32LE($this->SoundSampleCount);
     $writer->putData($this->SoundData);
     return $writer->output();
 }
Beispiel #2
0
 function buildContent($tagCode, $opts = array())
 {
     $writer = new IO_Bit();
     $writer->putUIBit($this->Reserved);
     $writer->putUIBit($this->UseDirectBlit);
     $writer->putUIBit($this->UseGPU);
     $writer->putUIBit($this->HasMetadata);
     $writer->putUIBit($this->ActionScript3);
     $writer->putUIBits($this->Reserved2, 2);
     $writer->putUIBit($this->UseNetwork);
     $writer->putUIBits($this->Reserved3, 24);
     return $writer->output();
 }
Beispiel #3
0
 function buildContent($tagCode, $opts = array())
 {
     $writer = new IO_Bit();
     $writer->putUI16LE($this->_buttonId);
     $opts['tagCode'] = $tagCode;
     if ($tagCode == 34) {
         // DefineButton2
         $writer->putUIBits($this->_reservedFlags, 7);
         $writer->putUIBit($this->_trackAsMenu);
         list($offset_actionOffset, $dummy) = $writer->getOffset();
         $writer->putUI16LE(0);
         // dummy;
     }
     foreach ($this->_characters as $character) {
         IO_SWF_Type_BUTTONRECORD::build($writer, $character, $opts);
     }
     $writer->putUI8(0);
     // terminater of button record
     if ($tagCode == 34) {
         // DefineButton2
         $actions = array();
         if (is_null($this->_actions) === false) {
             list($offset_buttonCondition, $dummy) = $writer->getOffset();
             $writer->setUI16LE($offset_buttonCondition - $offset_actionOffset, $offset_actionOffset);
             foreach ($this->_actions as $idx => $action) {
                 if (isset($this->_actions[$idx + 1]) === false) {
                     $opts['lastAction'] = true;
                 } else {
                     $opts['lastAction'] = false;
                 }
                 IO_SWF_Type_BUTTONCONDACTION::build($writer, $action, $opts);
             }
         }
     } else {
         foreach ($this->_actions as $action) {
             IO_SWF_Type_Action::build($writer, $action);
         }
         $writer->putUI8(0);
         // terminator of actions
     }
     return $writer->output();
 }
Beispiel #4
0
 function buildContent($tagCode, $opts = array())
 {
     $writer = new IO_Bit();
     $writer->putUI16LE($this->FontID);
     //
     $fontFlagsHasLayout = is_null($this->FontAscent) ? 0 : 1;
     //
     $writer->putUIBit($fontFlagsHasLayout);
     $writer->putUIBit($this->FontFlagsShiftJIS);
     $writer->putUIBit($this->FontFlagsSmallText);
     $writer->putUIBit($this->FontFlagsANSI);
     $writer->putUIBit($this->FontFlagsWideOffsets);
     $writer->putUIBit($this->FontFlagsWideCodes);
     $writer->putUIBit($this->FontFlagsItalic);
     $writer->putUIBit($this->FontFlagsBold);
     IO_SWF_Type_LANGCODE::build($writer, $this->LanguageCode);
     $fontNameLen = strlen($this->FontName);
     $writer->putUI8($fontNameLen);
     $writer->putData($this->FontName);
     $numGlyphs = count($this->OffsetTable);
     $writer->putUI16LE($numGlyphs);
     if ($numGlyphs === 0) {
         return $writer->output();
         // no glyphs field.
     }
     list($startOfOffsetTable, $dummy) = $writer->getOffset();
     $startOfOffsetTable2 = array();
     if ($this->FontFlagsWideOffsets) {
         foreach ($this->OffsetTable as $idx => $offset) {
             list($startOfOffsetTables[$idx], $dummy) = $writer->getOffset();
             $writer->putUI32LE(0);
             // dummy
         }
     } else {
         foreach ($this->OffsetTable as $idx => $offset) {
             list($startOfOffsetTables[$idx], $dummy) = $writer->getOffset();
             $writer->putUI16LE(0);
             // dummy
         }
     }
     list($startOfcodeTableOffset, $dummy) = $writer->getOffset();
     if ($this->FontFlagsWideOffsets) {
         $writer->putUI32LE(0);
         // dummy
     } else {
         $writer->putUI16LE(0);
         // dummy
     }
     $opts['fillStyleCount'] = 1;
     $opts['lineStyleCount'] = 0;
     foreach ($this->GlyphShapeTable as $idx => $glyphShape) {
         list($startOfGlyphShape, $dummy) = $writer->getOffset();
         if ($this->FontFlagsWideOffsets) {
             $writer->setUI32LE($startOfGlyphShape - $startOfOffsetTable, $startOfOffsetTables[$idx]);
         } else {
             $writer->setUI16LE($startOfGlyphShape - $startOfOffsetTable, $startOfOffsetTables[$idx]);
         }
         IO_SWF_Type_SHAPE::build($writer, $glyphShape, $opts);
         $writer->byteAlign();
     }
     //
     list($startOfCodeTable, $dummy) = $writer->getOffset();
     $codeTableOffset = $startOfCodeTable - $startOfOffsetTable;
     if ($this->FontFlagsWideOffsets) {
         $writer->setUI32LE($codeTableOffset, $startOfcodeTableOffset);
     } else {
         $writer->setUI16LE($codeTableOffset, $startOfcodeTableOffset);
     }
     if ($this->FontFlagsWideCodes) {
         foreach ($this->CodeTable as $c) {
             $writer->putUI16LE($c);
         }
     } else {
         foreach ($this->CodeTable as $c) {
             $writer->putUI8($c);
         }
     }
     if ($fontFlagsHasLayout) {
         $writer->putSI16LE($this->FontAscent);
         $writer->putSI16LE($this->FontDescent);
         $writer->putSI16LE($this->FontLeading);
         foreach ($this->FontAdvanceTable as $fontAdvance) {
             $writer->putSI16LE($fontAdvance);
         }
         foreach ($this->FontBoundsTable as $fontBounds) {
             IO_SWF_TYPE_RECT::build($writer, $fontBounds);
         }
         if (is_null($this->FontKerningTable)) {
             $writer->putUI16LE(0);
         } else {
             $kerningCount = count($this->FontKerningTable);
             $writer->putUI16LE($kerningCount);
             $opts['FontFlagsWideCodes'] = $this->FontFlagsWideCodes;
             foreach ($this->FontKerningTable as $fontKerning) {
                 IO_SWF_TYPE_KERNINGRECORD::build($writer, $fontKerning, $opts);
             }
         }
     }
     return $writer->output();
 }