Exemplo n.º 1
0
 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;
 }
Exemplo n.º 2
0
 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);
     }
 }
Exemplo n.º 3
0
 function parseContent($tagCode, $content, $opts = array())
 {
     $reader = new IO_Bit();
     $reader->input($content);
     $this->_label = IO_SWF_Type_String::parse($reader);
 }
Exemplo n.º 4
0
 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;
 }