static function parse(&$reader, $opts = array()) { $tagCode = $opts['tagCode']; $fillStyles = array(); // FillStyle $fillStyleCount = $reader->getUI8(); if ($tagCode > 2 && $fillStyleCount == 0xff) { // DefineShape2 以降は 0xffff サイズまで扱える $fillStyleCount = $reader->getUI16LE(); } for ($i = 0; $i < $fillStyleCount; $i++) { $fillStyles[] = IO_SWF_Type_FILLSTYLE::parse($reader, $opts); } return $fillStyles; }
static function parse(&$reader, $opts = array()) { $tagCode = $opts['tagCode']; $isMorph = $tagCode == 46 || $tagCode == 84; $lineStyle = array(); if ($isMorph === false) { $lineStyle['Width'] = $reader->getUI16LE(); if ($tagCode == 83) { // DefineShape4 $lineStyle['StartCapStyle'] = $reader->getUIBits(2); $lineStyle['JoinStyle'] = $reader->getUIBits(2); $lineStyle['HasFillFlag'] = $reader->getUIBit(); $lineStyle['NoHScaleFlag'] = $reader->getUIBit(); $lineStyle['NoVScaleFlag'] = $reader->getUIBit(); $lineStyle['PixelHintingFlag'] = $reader->getUIBit(); // ---- $lineStyle['(Reserved)'] = $reader->getUIBits(5); $lineStyle['NoClose'] = $reader->getUIBit(); $lineStyle['EndCapStyle'] = $reader->getUIBits(2); if ($lineStyle['JoinStyle'] == 2) { $lineStyle['MiterLimitFactor'] = $reader->getUI16LE(); } } if ($tagCode < 32) { // DefineShape1,2 $lineStyle['Color'] = IO_SWF_Type_RGB::parse($reader); } else { if ($tagCode == 32) { // DefineShape3 $lineStyle['Color'] = IO_SWF_Type_RGBA::parse($reader); } else { // DefineShape4 if ($lineStyle['HasFillFlag'] == 0) { $lineStyle['Color'] = IO_SWF_Type_RGBA::parse($reader); } else { $lineStyle['FillType'] = IO_SWF_Type_FILLSTYLE::parse($reader, $opts); } } } } else { $lineStyle['StartWidth'] = $reader->getUI16LE(); $lineStyle['EndWidth'] = $reader->getUI16LE(); $lineStyle['StartColor'] = IO_SWF_Type_RGBA::parse($reader); $lineStyle['EndColor'] = IO_SWF_Type_RGBA::parse($reader); } return $lineStyle; }