function parseContent($tagCode, $content, $opts = array()) { $reader = new IO_Bit(); $reader->input($content); switch ($tagCode) { case 4: // PlaceObject $this->_characterId = $reader->getUI16LE(); $this->_depth = $reader->getUI16LE(); $this->_matrix = IO_SWF_Type_MATRIX::parse($reader); if ($reader->hasNextData()) { // optional $this->_colorTransform = IO_SWF_Type_CXFORM::parse($reader); } break; case 26: // PlaceObject2 // placeFlag $this->_placeFlagHasClipActions = $reader->getUIBit(); $this->_placeFlagHasClipDepth = $reader->getUIBit(); $this->_placeFlagHasName = $reader->getUIBit(); $this->_placeFlagHasRatio = $reader->getUIBit(); $this->_placeFlagHasColorTransform = $reader->getUIBit(); $this->_placeFlagHasMatrix = $reader->getUIBit(); $this->_placeFlagHasCharacter = $reader->getUIBit(); $this->_placeFlagMove = $reader->getUIBit(); // $this->_depth = $reader->getUI16LE(); if ($this->_placeFlagHasCharacter) { $this->_characterId = $reader->getUI16LE(); } if ($this->_placeFlagHasMatrix) { $this->_matrix = IO_SWF_Type_MATRIX::parse($reader); } if ($this->_placeFlagHasColorTransform) { $this->_colorTransform = IO_SWF_Type_CXFORMWITHALPHA::parse($reader); } if ($this->_placeFlagHasRatio) { $this->_ratio = $reader->getUI16LE(); } if ($this->_placeFlagHasName) { $this->_name = IO_SWF_Type_String::parse($reader); } if ($this->_placeFlagHasClipDepth) { $this->_clipDepth = $reader->getUI16LE(); } if ($this->_placeFlagHasClipActions) { $this->_clipActions = IO_SWF_Type_CLIPACTIONS::parse($reader, $opts); } break; } return true; }
function parseContent($tagCode, $content, $opts = array()) { $reader = new IO_Bit(); $reader->input($content); $this->CharacterID = $reader->getUI16LE(); $this->Bounds = IO_SWF_Type_RECT::parse($reader); // ---- $reader->byteAlign(); $hasText = $reader->getUIBit(); $this->WordWrap = $reader->getUIBit(); $this->Multiline = $reader->getUIBit(); $this->Password = $reader->getUIBit(); $this->ReadOnly = $reader->getUIBit(); $hasTextColor = $reader->getUIBit(); $hasMaxLength = $reader->getUIBit(); $hasFont = $reader->getUIBit(); // ---- $hasFontClass = $reader->getUIBit(); $this->AutoSize = $reader->getUIBit(); $hasLayout = $reader->getUIBit(); $this->NoSelect = $reader->getUIBit(); $this->Border = $reader->getUIBit(); $this->WasStatic = $reader->getUIBit(); $this->HTML = $reader->getUIBit(); $this->UseOutlines = $reader->getUIBit(); if ($hasFont) { $this->FontID = $reader->getUI16LE(); } if ($hasFontClass) { $this->FontClass = IO_SWF_Type_String::parse($reader); } if ($hasFont) { $this->FontHeight = $reader->getUI16LE(); } if ($hasTextColor) { $this->TextColor = IO_SWF_Type_RGBA::parse($reader); } if ($hasMaxLength) { $this->MaxLength = $reader->getUI16LE(); } if ($hasLayout) { $this->Align = $reader->getUI8(); $this->LeftMargin = $reader->getUI16LE(); $this->RightMargin = $reader->getUI16LE(); $this->Indent = $reader->getUI16LE(); $this->Leading = $reader->getSI16LE(); } $this->VariableName = IO_SWF_Type_String::parse($reader); if ($hasText) { $this->InitialText = IO_SWF_Type_String::parse($reader); } }
function parseContent($tagCode, $content, $opts = array()) { $reader = new IO_Bit(); $reader->input($content); $this->_label = IO_SWF_Type_String::parse($reader); }
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; }