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; }
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; }