static function string($buttonrecord, $opts = array()) { $text = ''; $buttonHasBlendMode = $buttonrecord['ButtonHasBlandMode']; $buttonHasFilterList = $buttonrecord['ButtonHasFilterList']; $text .= "HasBlandMode:" . $buttonrecord['ButtonHasBlandMode'] . ' HasFilterList:' . $buttonrecord['ButtonHasFilterList'] . "\n\t\t"; foreach (array('StateHitTest', 'StateDown', 'StateOver', 'StateUp') as $label) { $text .= $label . ':' . $buttonrecord['Button' . $label] . ' '; } $text .= "\n\t\t"; $text .= "CharacterID:{$buttonrecord['CharacterID']} PlaceDepth:{$buttonrecord['PlaceDepth']}"; $text .= "\n"; $opts['indent']++; $text .= IO_SWF_Type_MATRIX::string($buttonrecord['PlaceMatrix'], $opts) . "\n"; if ($opts['tagCode'] == 34) { // DefineButton2 $text .= "\t\tColorTransform:" . IO_SWF_Type_CXFORMWITHALPHA::string($buttonrecord['ColorTransform']) . ' '; } else { $text .= 'ColorTransform:' . IO_SWF_Type_CXFORM::string($buttonrecord['ColorTransform']) . ' '; } if ($opts['tagCode'] == 34 && $opts['Version'] >= 8) { // DefineButton2 & SWF8 later if ($buttonHasFilterList == 1) { $text .= 'FilterList:' . IO_SWF_Type_FILTERLIST::string($buttonrecord['FilterList']) . "\n"; } if ($buttonHasBlendMode == 1) { $text .= 'BlendMode:' . $buttonrecord['BlendMode'] . "\n"; } } return $text; }
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(); }