function buildContent($tagCode, $opts = array()) { $writer = new IO_Bit(); IO_SWF_Type_String::build($writer, $this->_label); return $writer->output(); }
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(); }
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(); }
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; }