Exemple #1
0
 static function build(&$writer, $fillStyles, $opts = array())
 {
     $tagCode = $opts['tagCode'];
     $fillStyleCount = count($fillStyles);
     if ($fillStyleCount < 0xff) {
         $writer->putUI8($fillStyleCount);
     } else {
         $writer->putUI8(0xff);
         if ($tagCode > 2) {
             $writer->putUI16LE($fillStyleCount);
         } else {
             $fillStyleCount = 0xff;
             // DefineShape(1)
         }
     }
     foreach ($fillStyles as $fillStyle) {
         IO_SWF_Type_FILLSTYLE::build($writer, $fillStyle, $opts);
     }
     return true;
 }
Exemple #2
0
 static function build(&$writer, $lineStyle, $opts = array())
 {
     $tagCode = $opts['tagCode'];
     $isMorph = $tagCode == 46 || $tagCode == 84;
     if ($isMorph === false) {
         $writer->putUI16LE($lineStyle['Width']);
         if ($tagCode == 83) {
             // DefineShape4
             $writer->putUIBits($lineStyle['StartCapStyle'], 2);
             $writer->putUIBits($lineStyle['JoinStyle'], 2);
             $writer->putUIBit($lineStyle['HasFillFlag']);
             $writer->putUIBit($lineStyle['NoHScaleFlag']);
             $writer->putUIBit($lineStyle['NoVScaleFlag']);
             $writer->putUIBit($lineStyle['PixelHintingFlag']);
             // ----
             $writer->putUIBits(0, 5);
             //Reserved
             $writer->putUIBit($lineStyle['NoClose']);
             $writer->putUIBits($lineStyle['EndCapStyle'], 2);
             if ($lineStyle['JoinStyle'] == 2) {
                 $writer->putUI16LE($lineStyle['MiterLimitFactor']);
             }
         }
         if ($tagCode < 32) {
             // DefineShape1,2
             IO_SWF_Type_RGB::build($writer, $lineStyle['Color']);
         } else {
             if ($tagCode == 32) {
                 // DefineShape3
                 IO_SWF_Type_RGBA::build($writer, $lineStyle['Color']);
             } else {
                 // DefineShape4
                 if ($lineStyle['HasFillFlag'] == 0) {
                     IO_SWF_Type_RGBA::build($writer, $lineStyle['Color']);
                 } else {
                     IO_SWF_Type_FILLSTYLE::build($writer, $lineStyle['FillType'], $opts);
                 }
             }
         }
     } else {
         $writer->putUI16LE($lineStyle['StartWidth']);
         $writer->putUI16LE($lineStyle['EndWidth']);
         IO_SWF_Type_RGBA::build($writer, $lineStyle['StartColor']);
         IO_SWF_Type_RGBA::build($writer, $lineStyle['EndColor']);
     }
     return true;
 }