コード例 #1
0
ファイル: FrameLabel.php プロジェクト: yoya/IO_SWF
 function buildContent($tagCode, $opts = array())
 {
     $writer = new IO_Bit();
     IO_SWF_Type_String::build($writer, $this->_label);
     return $writer->output();
 }
コード例 #2
0
ファイル: EditText.php プロジェクト: yoya/IO_SWF
 function buildContent($tagCode, $opts = array())
 {
     $writer = new IO_Bit();
     $writer->putUI16LE($this->CharacterID);
     IO_SWF_Type_RECT::build($writer, $this->Bounds);
     // ----
     $hasText = is_null($this->InitialText) ? 0 : 1;
     $hasTextColor = is_null($this->TextColor) ? 0 : 1;
     $hasMaxLength = is_null($this->MaxLength) ? 0 : 1;
     $hasFont = is_null($this->FontID) ? 0 : 1;
     $hasFontClass = is_null($this->FontClass) ? 0 : 1;
     $hasLayout = is_null($this->Align) ? 0 : 1;
     // ----
     $writer->byteAlign();
     $writer->putUIBit($hasText);
     $writer->putUIBit($this->WordWrap);
     $writer->putUIBit($this->Multiline);
     $writer->putUIBit($this->Password);
     $writer->putUIBit($this->ReadOnly);
     $writer->putUIBit($hasTextColor);
     $writer->putUIBit($hasMaxLength);
     $writer->putUIBit($hasFont);
     // ----
     $writer->putUIBit($hasFontClass);
     $writer->putUIBit($this->AutoSize);
     $writer->putUIBit($hasLayout);
     $writer->putUIBit($this->NoSelect);
     $writer->putUIBit($this->Border);
     $writer->putUIBit($this->WasStatic);
     $writer->putUIBit($this->HTML);
     $writer->putUIBit($this->UseOutlines);
     if ($hasFont) {
         $writer->putUI16LE($this->FontID);
     }
     if ($hasFontClass) {
         IO_SWF_Type_String::build($writer, $this->FontClass);
     }
     if ($hasFont) {
         $writer->putUI16LE($this->FontHeight);
     }
     if ($hasTextColor) {
         IO_SWF_Type_RGBA::build($writer, $this->TextColor);
     }
     if ($hasMaxLength) {
         $writer->putUI16LE($this->MaxLength);
     }
     if ($hasLayout) {
         $writer->putUI8($this->Align);
         $writer->putUI16LE($this->LeftMargin);
         $writer->putUI16LE($this->RightMargin);
         $writer->putUI16LE($this->Indent);
         $writer->putSI16LE($this->Leading);
     }
     IO_SWF_Type_String::build($writer, $this->VariableName);
     if ($hasText) {
         IO_SWF_Type_String::build($writer, $this->InitialText);
     }
     return $writer->output();
 }
コード例 #3
0
ファイル: Place.php プロジェクト: yoya/IO_SWF
 function buildContent($tagCode, $opts = array())
 {
     $writer = new IO_Bit();
     switch ($tagCode) {
         case 4:
             // PlaceObject
             $this->_characterId = $writer->getUI16LE();
             $this->_depth = $writer->getUI16LE();
             $this->_matrix = IO_SWF_Type_MATRIX::parse($writer);
             if ($writer->hasNextData()) {
                 // optional
                 $this->_colorTransform = IO_SWF_Type_CXFORM::parse($writer);
             }
             break;
         case 26:
             // PlaceObject2
             //
             if (is_null($this->_characterId) === false) {
                 $this->_placeFlagHasCharacter = 1;
             } else {
                 $this->_placeFlagHasCharacter = 0;
             }
             if (is_null($this->_matrix) === false) {
                 $this->_placeFlagHasMatrix = 1;
             } else {
                 $this->_placeFlagHasMatrix = 0;
             }
             if (is_null($this->_colorTransform) === false) {
                 $this->_placeFlagHasColorTransform = 1;
             } else {
                 $this->_placeFlagHasColorTransform = 0;
             }
             if (is_null($this->_ratio) === false) {
                 $this->_placeFlagHasRatio = 1;
             } else {
                 $this->_placeFlagHasRatio = 0;
             }
             if (is_null($this->_name) === false) {
                 $this->_placeFlagHasName = 1;
             } else {
                 $this->_placeFlagHasName = 0;
             }
             if (is_null($this->_clipDepth) === false) {
                 $this->_placeFlagHasClipDepth = 1;
             } else {
                 $this->_placeFlagHasClipDepth = 0;
             }
             if (is_null($this->_clipActions) === false) {
                 $this->_placeFlagHasClipActions = 1;
             } else {
                 $this->_placeFlagHasClipActions = 0;
             }
             // placeFlag
             $writer->putUIBit($this->_placeFlagHasClipActions);
             $writer->putUIBit($this->_placeFlagHasClipDepth);
             $writer->putUIBit($this->_placeFlagHasName);
             $writer->putUIBit($this->_placeFlagHasRatio);
             $writer->putUIBit($this->_placeFlagHasColorTransform);
             $writer->putUIBit($this->_placeFlagHasMatrix);
             $writer->putUIBit($this->_placeFlagHasCharacter);
             $writer->putUIBit($this->_placeFlagMove);
             //
             $writer->putUI16LE($this->_depth);
             if ($this->_placeFlagHasCharacter) {
                 $writer->putUI16LE($this->_characterId);
             }
             if ($this->_placeFlagHasMatrix) {
                 IO_SWF_Type_MATRIX::build($writer, $this->_matrix);
             }
             if ($this->_placeFlagHasColorTransform) {
                 IO_SWF_Type_CXFORMWITHALPHA::build($writer, $this->_colorTransform);
             }
             if ($this->_placeFlagHasRatio) {
                 $writer->putUI16LE($this->_ratio);
             }
             if ($this->_placeFlagHasName) {
                 IO_SWF_Type_String::build($writer, $this->_name);
             }
             if ($this->_placeFlagHasClipDepth) {
                 $writer->putUI16LE($this->_clipDepth);
             }
             if ($this->_placeFlagHasClipActions) {
                 IO_SWF_Type_CLIPACTIONS::build($writer, $this->_clipActions, $opts);
             }
             break;
     }
     return $writer->output();
 }
コード例 #4
0
ファイル: Action.php プロジェクト: yoya/IO_SWF
 static function parse(&$reader, $opts = array())
 {
     $action = array();
     $code = $reader->getUI8();
     $action['Code'] = $code;
     if ($code >= 0x80) {
         $length = $reader->getUI16LE();
         $action['Length'] = $length;
         switch ($code) {
             case 0x81:
                 // ActionGotoFrame
                 $action['Frame'] = $reader->getUI16LE();
                 break;
             case 0x83:
                 // ActionGetURL
                 $data = $reader->getData($length);
                 $strs = explode("", $data, 2 + 1);
                 $action['UrlString'] = $strs[0];
                 $action['TargetString'] = $strs[1];
                 break;
             case 0x88:
                 // ActionConstantPool
                 $count = $reader->getUI16LE();
                 $action['Count'] = $count;
                 $data = $reader->getData($length - 2);
                 $strs = explode("", $data, $count + 1);
                 $action['ConstantPool'] = array_splice($strs, 0, $count);
                 break;
             case 0x8a:
                 // ActionWaitForFrame
                 $action['Frame'] = $reader->getUI16LE();
                 $action['SkipCount'] = $reader->getUI8();
                 break;
             case 0x8b:
                 // ActionSetTarget
                 $data = $reader->getData($length);
                 $strs = explode("", $data, 1 + 1);
                 $action['TargetName'] = $strs[0];
                 break;
             case 0x8c:
                 // ActionSetTarget
                 $data = $reader->getData($length);
                 $strs = explode("", $data, 1 + 1);
                 $action['Label'] = $strs[0];
                 break;
             case 0x8d:
                 // ActionWaitForFrame2
                 $action['Frame'] = $reader->getUI16LE();
                 $action['SkipCount'] = $reader->getUI8();
                 break;
             case 0x8e:
                 // ActionDefineFunction2
                 $action['FunctionName'] = $reader->getDataUntil("");
                 $action['NumParams'] = $numParams = $reader->getUI16LE();
                 $action['RegisterCount'] = $reader->getUI8();
                 //
                 $action['PreloadParentFlag'] = $reader->getUIBit();
                 $action['PreloadBootFlag'] = $reader->getUIBit();
                 $action['SuppressSuperFlag'] = $reader->getUIBit();
                 $action['PreloadSuperFlag'] = $reader->getUIBit();
                 $action['SuppressArgumentsFlag'] = $reader->getUIBit();
                 $action['PreloadArgumentsFlag'] = $reader->getUIBit();
                 $action['SuppressThisFlag'] = $reader->getUIBit();
                 $action['PreloadThisFlag'] = $reader->getUIBit();
                 //
                 $action['(Reserve)'] = $reader->getUIBits(7);
                 $action['PreloadGlobalFlag'] = $reader->getUIBit();
                 //
                 $parameters = array();
                 for ($i = 0; $i < $numParams; $i++) {
                     $registerParam = array();
                     $registerParam['Register'] = $reader->getUI8();
                     $registerParam['ParamName'] = $reader->getDataUntil("");
                     $parameters[] = $registerParam;
                 }
                 $action['Parameters'] = $parameters;
                 $action['codeSize'] = $reader->getUI16LE();
                 break;
             case 0x96:
                 // ActionPush
                 $data = $reader->getData($length);
                 $values = array();
                 $values_reader = new IO_Bit();
                 $values_reader->input($data);
                 while ($values_reader->hasNextData()) {
                     $value = array();
                     $type = $values_reader->getUI8();
                     $value['Type'] = $type;
                     switch ($type) {
                         case 0:
                             // STRING
                             $value['String'] = IO_SWF_Type_String::parse($values_reader);
                             break;
                         case 1:
                             // Float
                             $value['Float'] = IO_SWF_Type_Float::parse($values_reader);
                             break;
                         case 2:
                             // null
                             $value['null'] = null;
                             break;
                         case 3:
                             // undefined
                             $value['undefined'] = null;
                             break;
                         case 4:
                             // RegisterNumber
                             $value['RegisterNumber'] = $values_reader->getUI8();
                             break;
                         case 5:
                             // Boolean
                             $value['Boolean'] = $values_reader->getUI8();
                             break;
                         case 6:
                             // Double
                             $value['Double'] = IO_SWF_Type_Double::parse($values_reader);
                             break;
                         case 7:
                             // Integer
                             $value['Integer'] = $values_reader->getUI32LE();
                             break;
                         case 8:
                             // Constant8
                             $value['Constant8'] = $values_reader->getUI8();
                             break;
                         case 9:
                             // Constant16
                             $value['Constant16'] = $values_reader->getUI16LE();
                             break;
                         default:
                             throw new IO_SWF_Exception("Illegal ActionPush value's type({$type})");
                     }
                     $values[] = $value;
                 }
                 $action['Values'] = $values;
                 break;
             case 0x99:
                 // ActionJump
                 $action['BranchOffset'] = $reader->getSI16LE();
                 break;
             case 0x9a:
                 // ActionGetURL2
                 //                $action['SendVarsMethod'] = $reader->getUIBits(2);
                 //                $action['(Reserved)'] = $reader->getUIBits(4);
                 //                $action['LoadTargetFlag'] = $reader->getUIBit();
                 //                $action['LoadVariablesFlag'] = $reader->getUIBit();
                 // swf_file_format_spec_v10 bug, field reverse.
                 $action['LoadVariablesFlag'] = $reader->getUIBit();
                 $action['LoadTargetFlag'] = $reader->getUIBit();
                 $action['(Reserved)'] = $reader->getUIBits(4);
                 $action['SendVarsMethod'] = $reader->getUIBits(2);
                 break;
             case 0x9d:
                 // ActionIf
                 $action['Offset'] = $reader->getSI16LE();
                 break;
             case 0x9f:
                 // ActionGotoFrame2
                 $action['(Reserved)'] = $reader->getUIBits(6);
                 $sceneBiasFlag = $reader->getUIBit();
                 $action['SceneBiasFlag'] = $sceneBiasFlag;
                 $action['PlayFlag'] = $reader->getUIBit();
                 if ($sceneBiasFlag == 1) {
                     $action['SceneBias'] = $reader->getUI16LE();
                 }
                 break;
             default:
                 if ($length > 0) {
                     $action['Data'] = $reader->getData($length);
                 }
                 break;
         }
     }
     return $action;
 }