Exemple #1
0
 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;
 }
Exemple #2
0
 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;
 }