source = $source; } /** * @throws EncoderException */ public function encode(): string { $graphicControlExtension = $this->source->getGraphicControlExtension(); $colorTable = $this->source->getColorTable(); $plainTextExtension = $this->source->getPlainTextExtension(); return implode('', [ implode('', array_map( fn(ApplicationExtension $extension): string => $extension->encode(), $this->source->getApplicationExtensions(), )), implode('', array_map( fn(CommentExtension $extension): string => $extension->encode(), $this->source->getCommentExtensions(), )), $plainTextExtension ? $plainTextExtension->encode() : '', $graphicControlExtension ? $graphicControlExtension->encode() : '', $this->source->getImageDescriptor()->encode(), $colorTable ? $colorTable->encode() : '', $this->source->getImageData()->encode(), ]); } }